@artblocks/contracts 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +11 -10
  2. package/artifacts/contracts/AdminACLV0RoyaltyRegistry.sol/AdminACLV0RoyaltyRegistry.json +193 -0
  3. package/artifacts/contracts/AdminACLV0RoyaltyRegistry.sol/IRoyaltyRegistry.json +35 -0
  4. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  5. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +2 -2
  6. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol/BytecodeStorageReaderContractV2_Web3Call.json +2 -2
  7. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +2 -2
  8. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +210 -2
  9. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +235 -20
  10. package/artifacts/contracts/GenArt721CoreV3_Curated_Flex.sol/GenArt721CoreV3_Curated_Flex.json +3197 -0
  11. package/artifacts/contracts/GenArt721CoreV3_Explorations_Flex.sol/GenArt721CoreV3_Explorations_Flex.json +3192 -0
  12. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +2 -2
  13. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +27 -2
  14. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +27 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +25 -0
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  39. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  40. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  41. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  42. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +28 -2
  43. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +239 -20
  44. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +267 -48
  45. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +27 -2
  46. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  47. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +27 -2
  48. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +25 -0
  49. package/artifacts/contracts/engine/V3/transfer-hooks/AbstractTransferHook.sol/AbstractTransferHook.json +79 -0
  50. package/artifacts/contracts/engine/V3/transfer-hooks/OwnerHistoryTransferHook.sol/OwnerHistoryTransferHook.json +315 -0
  51. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +2 -2
  52. package/artifacts/contracts/interfaces/v0.8.x/IClaimMinter.sol/IClaimMinter.json +189 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +149 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +26 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +25 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +25 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +123 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +123 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +25 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +25 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IOwnerHistoryTransferHook.sol/IOwnerHistoryTransferHook.json +299 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/ISRHooks.sol/ISRHooks.json +432 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +0 -13
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterTieredAllowV0.sol/ISharedMinterTieredAllowV0.json +94 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/ITransferHook.sol/ITransferHook.json +63 -0
  66. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  67. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +2 -2
  68. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +2 -2
  69. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  70. package/artifacts/contracts/libs/v0.8.x/ENSLib.sol/ENSLib.json +10 -0
  71. package/artifacts/contracts/libs/v0.8.x/ENSLib.sol/IUniversalResolver.json +45 -0
  72. package/artifacts/contracts/libs/v0.8.x/EnumerableSetUint16.sol/EnumerableSetUint16.json +10 -0
  73. package/artifacts/contracts/libs/v0.8.x/FeistelWalkLib.sol/FeistelWalkLib.json +10 -0
  74. package/artifacts/contracts/libs/v0.8.x/ImmutableUint16Array.sol/ImmutableUint16Array.json +10 -0
  75. package/artifacts/contracts/libs/v0.8.x/V3EngineLib.sol/V3EngineLib.json +163 -0
  76. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +2 -2
  77. package/artifacts/contracts/libs/v0.8.x/V3TransferHookLib.sol/V3TransferHookLib.json +79 -0
  78. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  79. package/artifacts/contracts/libs/v0.8.x/minter-libs/OnChainAllowlistLib.sol/OnChainAllowlistLib.json +10 -0
  80. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  81. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  82. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  83. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  84. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  85. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  86. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  87. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  88. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  89. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  90. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  91. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  92. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +2 -2
  93. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +2 -2
  94. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  95. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  96. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  97. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  98. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceOnChainAllowV0.sol/MinterSetPriceOnChainAllowV0.json +522 -0
  100. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceTieredAllowV1.sol/MinterSetPriceTieredAllowV1.json +715 -0
  103. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/MinterSlidingScaleV0.sol/MinterSlidingScaleV0.json +431 -0
  105. package/artifacts/contracts/minter-suite/Minters/one-off/ClaimMinter.sol/ClaimMinter.json +502 -0
  106. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceTieredOnChainAllowV0.sol/MinterSetPriceTieredOnChainAllowV0.json +673 -0
  107. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  108. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +6 -19
  109. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +2 -2
  110. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  111. package/artifacts/contracts/mock/ENSLibMock.sol/ENSLibMock.json +30 -0
  112. package/artifacts/contracts/mock/EnumerableSetUint16Mock.sol/EnumerableSetUint16Mock.json +146 -0
  113. package/artifacts/contracts/mock/FeistelWalkLibMock.sol/FeistelWalkLibMock.json +142 -0
  114. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  115. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  116. package/artifacts/contracts/mock/ImmutableUint16ArrayMock.sol/ImmutableUint16ArrayMock.json +89 -0
  117. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  118. package/artifacts/contracts/mock/MockGenArt721V3Core.sol/MockGenArt721V3Core.json +490 -0
  119. package/artifacts/contracts/mock/MockPMP.sol/MockPMP.json +523 -0
  120. package/artifacts/contracts/mock/MockTransferHook.sol/MockTransferHook.json +453 -0
  121. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockBatchTransferrer.json +39 -0
  122. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockForwardingERC721Receiver.json +71 -0
  123. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockSpoofingCore.json +94 -0
  124. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  125. package/artifacts/contracts/mock/ReentrancyBatchMockShared.sol/IBatchMinter.json +64 -0
  126. package/artifacts/contracts/mock/ReentrancyBatchMockShared.sol/ReentrancyBatchMockShared.json +113 -0
  127. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/MockTarget.json +74 -0
  128. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/RelayExecutorPartialRevertsTestHelper.json +138 -0
  129. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/RelayExecutorTestHelper.json +119 -0
  130. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  131. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  132. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  133. package/artifacts/contracts/relay/RelayExecutor.sol/RelayExecutor.json +101 -0
  134. package/artifacts/contracts/relay/RelayExecutorPartialReverts.sol/RelayExecutorPartialReverts.json +120 -0
  135. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverrideSplits.sol/GenArt721RoyaltyOverrideSplits.json +263 -0
  136. package/artifacts/contracts/utils/MintMulticallUtil.sol/IMinterSetPriceV5.json +40 -0
  137. package/artifacts/contracts/utils/MintMulticallUtil.sol/MintMulticallUtil.json +163 -0
  138. package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +2 -2
  139. package/artifacts/contracts/web3call/PMPV1.sol/PMPV1.json +648 -0
  140. package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +2 -2
  141. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeight.sol/InjectBlockHeight.json +83 -0
  142. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightAndArtistProjectOverrides.sol/InjectBlockHeightAndArtistProjectOverrides.json +226 -0
  143. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightAndNumOwnedProjectTokens.sol/InjectBlockHeightAndNumOwnedProjectTokens.json +182 -0
  144. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.sol/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.json +226 -0
  145. package/artifacts/contracts/web3call/augment-hooks/InjectBlockTimestamp.sol/InjectBlockTimestamp.json +83 -0
  146. package/artifacts/contracts/web3call/augment-hooks/InjectBytesPerToken.sol/InjectBytesPerToken.json +358 -0
  147. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +2 -2
  148. package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +2 -2
  149. package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +2 -2
  150. package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +2 -2
  151. package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +2 -2
  152. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +2 -2
  153. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +2 -2
  154. package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +2 -2
  155. package/artifacts/contracts/web3call/augment-hooks/SRHooks.sol/SRHooks.json +899 -0
  156. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/IGenArt721V0_Minimal.json +30 -0
  157. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/IRelic.json +35 -0
  158. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/LiftHooks.json +256 -0
  159. package/artifacts/contracts/web3call/configure-hooks/{abstractPMPConfigureHook.sol → AbstractPMPConfigureHook.sol}/AbstractPMPConfigureHook.json +1 -1
  160. package/artifacts/contracts/web3call/configure-hooks/PMPConfigureLockHook.sol/PMPConfigureLockHook.json +195 -0
  161. package/contracts/AdminACLV0RoyaltyRegistry.sol +142 -0
  162. package/contracts/DependencyRegistryV0.sol +143 -13
  163. package/contracts/GenArt721CoreV3_Curated.sol +1 -1
  164. package/contracts/GenArt721CoreV3_Curated_Flex.sol +173 -0
  165. package/contracts/GenArt721CoreV3_Explorations_Flex.sol +159 -0
  166. package/contracts/engine/V3/EngineFactoryV0.sol +20 -1
  167. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +286 -299
  168. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +292 -301
  169. package/contracts/engine/V3/transfer-hooks/AbstractTransferHook.sol +101 -0
  170. package/contracts/engine/V3/transfer-hooks/OwnerHistoryTransferHook.sol +291 -0
  171. package/contracts/generator/GenArt721GeneratorV0.sol +145 -47
  172. package/contracts/helpers/ERC1967ProxyImport.sol +5 -0
  173. package/contracts/interfaces/v0.8.x/IArtblocksRoyaltyOverride.sol +1 -1
  174. package/contracts/interfaces/v0.8.x/IClaimMinter.sol +70 -0
  175. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +95 -0
  176. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +15 -0
  177. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +21 -2
  178. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +72 -0
  179. package/contracts/interfaces/v0.8.x/IOwnerHistoryTransferHook.sol +119 -0
  180. package/contracts/interfaces/v0.8.x/ISRHooks.sol +229 -0
  181. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +0 -6
  182. package/contracts/interfaces/v0.8.x/ISharedMinterTieredAllowV0.sol +69 -0
  183. package/contracts/interfaces/v0.8.x/ITransferHook.sol +48 -0
  184. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +12 -0
  185. package/contracts/libs/v0.8.x/ENSLib.sol +85 -0
  186. package/contracts/libs/v0.8.x/EnumerableSetUint16.sol +429 -0
  187. package/contracts/libs/v0.8.x/FeistelWalkLib.sol +221 -0
  188. package/contracts/libs/v0.8.x/ImmutableUint16Array.sol +201 -0
  189. package/contracts/libs/v0.8.x/V3EngineLib.sol +490 -0
  190. package/contracts/libs/v0.8.x/V3TransferHookLib.sol +251 -0
  191. package/contracts/libs/v0.8.x/minter-libs/OnChainAllowlistLib.sol +165 -0
  192. package/contracts/minter-suite/Minters/MinterSetPriceOnChainAllowV0.sol +632 -0
  193. package/contracts/minter-suite/Minters/MinterSetPriceTieredAllowV1.sol +871 -0
  194. package/contracts/minter-suite/Minters/MinterSlidingScaleV0.sol +493 -0
  195. package/contracts/minter-suite/Minters/one-off/ClaimMinter.sol +595 -0
  196. package/contracts/minter-suite/Minters/one-off/MinterSetPriceTieredOnChainAllowV0.sol +894 -0
  197. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +59 -41
  198. package/contracts/mock/ENSLibMock.sol +25 -0
  199. package/contracts/mock/EnumerableSetUint16Mock.sol +88 -0
  200. package/contracts/mock/FeistelWalkLibMock.sol +81 -0
  201. package/contracts/mock/ImmutableUint16ArrayMock.sol +62 -0
  202. package/contracts/mock/MockGenArt721V3Core.sol +416 -0
  203. package/contracts/mock/MockPMP.sol +287 -0
  204. package/contracts/mock/MockTransferHook.sol +160 -0
  205. package/contracts/mock/MockTransferHookTestHelpers.sol +96 -0
  206. package/contracts/mock/ReentrancyBatchMockShared.sol +53 -0
  207. package/contracts/mock/RelayExecutorTestHelper.sol +44 -0
  208. package/contracts/relay/RelayExecutor.sol +61 -0
  209. package/contracts/relay/RelayExecutorPartialReverts.sol +79 -0
  210. package/contracts/royalty-registry/GenArt721RoyaltyOverrideSplits.sol +130 -0
  211. package/contracts/utils/MintMulticallUtil.sol +103 -0
  212. package/contracts/web3call/PMPV1.sol +1204 -0
  213. package/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol +1 -1
  214. package/contracts/web3call/augment-hooks/InjectBaseGasFee.sol +1 -1
  215. package/contracts/web3call/augment-hooks/InjectBlockHeight.sol +57 -0
  216. package/contracts/web3call/augment-hooks/InjectBlockHeightAndArtistProjectOverrides.sol +310 -0
  217. package/contracts/web3call/augment-hooks/InjectBlockHeightAndNumOwnedProjectTokens.sol +141 -0
  218. package/contracts/web3call/augment-hooks/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.sol +326 -0
  219. package/contracts/web3call/augment-hooks/InjectBlockTimestamp.sol +57 -0
  220. package/contracts/web3call/augment-hooks/InjectBytesPerToken.sol +279 -0
  221. package/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol +1 -1
  222. package/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol +1 -1
  223. package/contracts/web3call/augment-hooks/InjectTokenOwner.sol +1 -1
  224. package/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol +1 -1
  225. package/contracts/web3call/augment-hooks/SRHooks.sol +1722 -0
  226. package/contracts/web3call/combined-hooks/LiftHooks.sol +304 -0
  227. package/contracts/web3call/configure-hooks/{abstractPMPConfigureHook.sol → AbstractPMPConfigureHook.sol} +1 -1
  228. package/contracts/web3call/configure-hooks/PMPConfigureLockHook.sol +107 -0
  229. package/package.json +39 -24
@@ -0,0 +1,899 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SRHooks",
4
+ "sourceName": "contracts/web3call/augment-hooks/SRHooks.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "target",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "name": "AddressEmptyCode",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "implementation",
27
+ "type": "address"
28
+ }
29
+ ],
30
+ "name": "ERC1967InvalidImplementation",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [],
35
+ "name": "ERC1967NonPayable",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [],
40
+ "name": "FailedInnerCall",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "InvalidInitialization",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "NotInitializing",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [
55
+ {
56
+ "internalType": "address",
57
+ "name": "owner",
58
+ "type": "address"
59
+ }
60
+ ],
61
+ "name": "OwnableInvalidOwner",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "address",
68
+ "name": "account",
69
+ "type": "address"
70
+ }
71
+ ],
72
+ "name": "OwnableUnauthorizedAccount",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [
77
+ {
78
+ "internalType": "uint8",
79
+ "name": "bits",
80
+ "type": "uint8"
81
+ },
82
+ {
83
+ "internalType": "uint256",
84
+ "name": "value",
85
+ "type": "uint256"
86
+ }
87
+ ],
88
+ "name": "SafeCastOverflowedUintDowncast",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [],
93
+ "name": "UUPSUnauthorizedCallContext",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [
98
+ {
99
+ "internalType": "bytes32",
100
+ "name": "slot",
101
+ "type": "bytes32"
102
+ }
103
+ ],
104
+ "name": "UUPSUnsupportedProxiableUUID",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "anonymous": false,
109
+ "inputs": [
110
+ {
111
+ "indexed": false,
112
+ "internalType": "uint64",
113
+ "name": "version",
114
+ "type": "uint64"
115
+ }
116
+ ],
117
+ "name": "Initialized",
118
+ "type": "event"
119
+ },
120
+ {
121
+ "anonymous": false,
122
+ "inputs": [
123
+ {
124
+ "indexed": true,
125
+ "internalType": "address",
126
+ "name": "previousOwner",
127
+ "type": "address"
128
+ },
129
+ {
130
+ "indexed": true,
131
+ "internalType": "address",
132
+ "name": "newOwner",
133
+ "type": "address"
134
+ }
135
+ ],
136
+ "name": "OwnershipTransferred",
137
+ "type": "event"
138
+ },
139
+ {
140
+ "anonymous": false,
141
+ "inputs": [
142
+ {
143
+ "indexed": false,
144
+ "internalType": "address",
145
+ "name": "coreContractAddress",
146
+ "type": "address"
147
+ },
148
+ {
149
+ "indexed": false,
150
+ "internalType": "uint256",
151
+ "name": "coreProjectId",
152
+ "type": "uint256"
153
+ }
154
+ ],
155
+ "name": "SRHooksInitialized",
156
+ "type": "event"
157
+ },
158
+ {
159
+ "anonymous": false,
160
+ "inputs": [
161
+ {
162
+ "indexed": false,
163
+ "internalType": "address",
164
+ "name": "coreContract",
165
+ "type": "address"
166
+ },
167
+ {
168
+ "indexed": false,
169
+ "internalType": "uint256",
170
+ "name": "tokenId",
171
+ "type": "uint256"
172
+ },
173
+ {
174
+ "components": [
175
+ {
176
+ "internalType": "string",
177
+ "name": "key",
178
+ "type": "string"
179
+ },
180
+ {
181
+ "internalType": "enum IPMPV0.ParamType",
182
+ "name": "configuredParamType",
183
+ "type": "uint8"
184
+ },
185
+ {
186
+ "internalType": "bytes32",
187
+ "name": "configuredValue",
188
+ "type": "bytes32"
189
+ },
190
+ {
191
+ "internalType": "bool",
192
+ "name": "configuringArtistString",
193
+ "type": "bool"
194
+ },
195
+ {
196
+ "internalType": "string",
197
+ "name": "configuredValueString",
198
+ "type": "string"
199
+ }
200
+ ],
201
+ "indexed": false,
202
+ "internalType": "struct IPMPV0.PMPInput[]",
203
+ "name": "pmpInputs",
204
+ "type": "tuple[]"
205
+ },
206
+ {
207
+ "indexed": false,
208
+ "internalType": "address[]",
209
+ "name": "authAddresses",
210
+ "type": "address[]"
211
+ }
212
+ ],
213
+ "name": "TokenParamsConfigured",
214
+ "type": "event"
215
+ },
216
+ {
217
+ "anonymous": false,
218
+ "inputs": [
219
+ {
220
+ "indexed": true,
221
+ "internalType": "address",
222
+ "name": "coreContract",
223
+ "type": "address"
224
+ },
225
+ {
226
+ "indexed": true,
227
+ "internalType": "uint256",
228
+ "name": "tokenId",
229
+ "type": "uint256"
230
+ },
231
+ {
232
+ "indexed": false,
233
+ "internalType": "uint16[]",
234
+ "name": "tokensReceivingFrom",
235
+ "type": "uint16[]"
236
+ }
237
+ ],
238
+ "name": "TokenReceivingFromUpdated",
239
+ "type": "event"
240
+ },
241
+ {
242
+ "anonymous": false,
243
+ "inputs": [
244
+ {
245
+ "indexed": true,
246
+ "internalType": "address",
247
+ "name": "coreContract",
248
+ "type": "address"
249
+ },
250
+ {
251
+ "indexed": true,
252
+ "internalType": "uint256",
253
+ "name": "tokenId",
254
+ "type": "uint256"
255
+ },
256
+ {
257
+ "indexed": false,
258
+ "internalType": "uint16[]",
259
+ "name": "tokensSendingTo",
260
+ "type": "uint16[]"
261
+ }
262
+ ],
263
+ "name": "TokenSendingToUpdated",
264
+ "type": "event"
265
+ },
266
+ {
267
+ "anonymous": false,
268
+ "inputs": [
269
+ {
270
+ "indexed": true,
271
+ "internalType": "address",
272
+ "name": "implementation",
273
+ "type": "address"
274
+ }
275
+ ],
276
+ "name": "Upgraded",
277
+ "type": "event"
278
+ },
279
+ {
280
+ "inputs": [],
281
+ "name": "CORE_CONTRACT_ADDRESS",
282
+ "outputs": [
283
+ {
284
+ "internalType": "address",
285
+ "name": "",
286
+ "type": "address"
287
+ }
288
+ ],
289
+ "stateMutability": "view",
290
+ "type": "function"
291
+ },
292
+ {
293
+ "inputs": [],
294
+ "name": "CORE_PROJECT_ID",
295
+ "outputs": [
296
+ {
297
+ "internalType": "uint256",
298
+ "name": "",
299
+ "type": "uint256"
300
+ }
301
+ ],
302
+ "stateMutability": "view",
303
+ "type": "function"
304
+ },
305
+ {
306
+ "inputs": [],
307
+ "name": "DELEGATE_V2",
308
+ "outputs": [
309
+ {
310
+ "internalType": "contract IDelegateRegistry",
311
+ "name": "",
312
+ "type": "address"
313
+ }
314
+ ],
315
+ "stateMutability": "view",
316
+ "type": "function"
317
+ },
318
+ {
319
+ "inputs": [],
320
+ "name": "DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS",
321
+ "outputs": [
322
+ {
323
+ "internalType": "bytes32",
324
+ "name": "",
325
+ "type": "bytes32"
326
+ }
327
+ ],
328
+ "stateMutability": "view",
329
+ "type": "function"
330
+ },
331
+ {
332
+ "inputs": [],
333
+ "name": "MAX_IMAGE_DATA_LENGTH",
334
+ "outputs": [
335
+ {
336
+ "internalType": "uint256",
337
+ "name": "",
338
+ "type": "uint256"
339
+ }
340
+ ],
341
+ "stateMutability": "view",
342
+ "type": "function"
343
+ },
344
+ {
345
+ "inputs": [],
346
+ "name": "MAX_SOUND_DATA_LENGTH",
347
+ "outputs": [
348
+ {
349
+ "internalType": "uint256",
350
+ "name": "",
351
+ "type": "uint256"
352
+ }
353
+ ],
354
+ "stateMutability": "view",
355
+ "type": "function"
356
+ },
357
+ {
358
+ "inputs": [],
359
+ "name": "NUM_METADATA_SLOTS",
360
+ "outputs": [
361
+ {
362
+ "internalType": "uint256",
363
+ "name": "",
364
+ "type": "uint256"
365
+ }
366
+ ],
367
+ "stateMutability": "view",
368
+ "type": "function"
369
+ },
370
+ {
371
+ "inputs": [],
372
+ "name": "UPGRADE_INTERFACE_VERSION",
373
+ "outputs": [
374
+ {
375
+ "internalType": "string",
376
+ "name": "",
377
+ "type": "string"
378
+ }
379
+ ],
380
+ "stateMutability": "view",
381
+ "type": "function"
382
+ },
383
+ {
384
+ "inputs": [],
385
+ "name": "getGeneralPoolState",
386
+ "outputs": [
387
+ {
388
+ "internalType": "uint256",
389
+ "name": "sendGeneralTokensLength",
390
+ "type": "uint256"
391
+ },
392
+ {
393
+ "internalType": "uint256",
394
+ "name": "receiveGeneralTokensLength",
395
+ "type": "uint256"
396
+ }
397
+ ],
398
+ "stateMutability": "view",
399
+ "type": "function"
400
+ },
401
+ {
402
+ "inputs": [
403
+ {
404
+ "internalType": "uint256",
405
+ "name": "tokenNumber",
406
+ "type": "uint256"
407
+ },
408
+ {
409
+ "internalType": "uint256",
410
+ "name": "blockNumber",
411
+ "type": "uint256"
412
+ },
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "maxReceive",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "name": "getLiveData",
420
+ "outputs": [
421
+ {
422
+ "internalType": "enum ISRHooks.SendStates",
423
+ "name": "sendState",
424
+ "type": "uint8"
425
+ },
426
+ {
427
+ "internalType": "enum ISRHooks.ReceiveStates",
428
+ "name": "receiveState",
429
+ "type": "uint8"
430
+ },
431
+ {
432
+ "components": [
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "tokenNumber",
436
+ "type": "uint256"
437
+ },
438
+ {
439
+ "internalType": "address",
440
+ "name": "ownerAddress",
441
+ "type": "address"
442
+ },
443
+ {
444
+ "internalType": "bytes",
445
+ "name": "imageDataCompressed",
446
+ "type": "bytes"
447
+ },
448
+ {
449
+ "internalType": "bytes",
450
+ "name": "soundDataCompressed",
451
+ "type": "bytes"
452
+ },
453
+ {
454
+ "internalType": "string",
455
+ "name": "ownerEnsName",
456
+ "type": "string"
457
+ }
458
+ ],
459
+ "internalType": "struct ISRHooks.TokenLiveData[]",
460
+ "name": "receivedTokensGeneral",
461
+ "type": "tuple[]"
462
+ },
463
+ {
464
+ "components": [
465
+ {
466
+ "internalType": "uint256",
467
+ "name": "tokenNumber",
468
+ "type": "uint256"
469
+ },
470
+ {
471
+ "internalType": "address",
472
+ "name": "ownerAddress",
473
+ "type": "address"
474
+ },
475
+ {
476
+ "internalType": "bytes",
477
+ "name": "imageDataCompressed",
478
+ "type": "bytes"
479
+ },
480
+ {
481
+ "internalType": "bytes",
482
+ "name": "soundDataCompressed",
483
+ "type": "bytes"
484
+ },
485
+ {
486
+ "internalType": "string",
487
+ "name": "ownerEnsName",
488
+ "type": "string"
489
+ }
490
+ ],
491
+ "internalType": "struct ISRHooks.TokenLiveData[]",
492
+ "name": "receivedTokensTo",
493
+ "type": "tuple[]"
494
+ },
495
+ {
496
+ "internalType": "uint256",
497
+ "name": "numSendGeneral",
498
+ "type": "uint256"
499
+ },
500
+ {
501
+ "internalType": "uint256",
502
+ "name": "numReceiveGeneral",
503
+ "type": "uint256"
504
+ },
505
+ {
506
+ "internalType": "uint256",
507
+ "name": "numSendingToMe",
508
+ "type": "uint256"
509
+ },
510
+ {
511
+ "internalType": "uint256",
512
+ "name": "usedBlockNumber",
513
+ "type": "uint256"
514
+ }
515
+ ],
516
+ "stateMutability": "view",
517
+ "type": "function"
518
+ },
519
+ {
520
+ "inputs": [
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "tokenNumber",
524
+ "type": "uint256"
525
+ },
526
+ {
527
+ "internalType": "uint256",
528
+ "name": "slot",
529
+ "type": "uint256"
530
+ }
531
+ ],
532
+ "name": "getTokenMetadataAtSlot",
533
+ "outputs": [
534
+ {
535
+ "components": [
536
+ {
537
+ "internalType": "bytes",
538
+ "name": "imageDataCompressed",
539
+ "type": "bytes"
540
+ },
541
+ {
542
+ "internalType": "uint16",
543
+ "name": "imageVersion",
544
+ "type": "uint16"
545
+ },
546
+ {
547
+ "internalType": "bytes",
548
+ "name": "soundDataCompressed",
549
+ "type": "bytes"
550
+ },
551
+ {
552
+ "internalType": "uint16",
553
+ "name": "soundVersion",
554
+ "type": "uint16"
555
+ }
556
+ ],
557
+ "internalType": "struct ISRHooks.TokenMetadataView",
558
+ "name": "tokenMetadata",
559
+ "type": "tuple"
560
+ }
561
+ ],
562
+ "stateMutability": "view",
563
+ "type": "function"
564
+ },
565
+ {
566
+ "inputs": [
567
+ {
568
+ "internalType": "uint256",
569
+ "name": "tokenNumber",
570
+ "type": "uint256"
571
+ }
572
+ ],
573
+ "name": "getTokenState",
574
+ "outputs": [
575
+ {
576
+ "internalType": "enum ISRHooks.SendStates",
577
+ "name": "sendState",
578
+ "type": "uint8"
579
+ },
580
+ {
581
+ "internalType": "enum ISRHooks.ReceiveStates",
582
+ "name": "receiveState",
583
+ "type": "uint8"
584
+ },
585
+ {
586
+ "internalType": "uint16[]",
587
+ "name": "tokensSendingTo",
588
+ "type": "uint16[]"
589
+ },
590
+ {
591
+ "internalType": "uint16[]",
592
+ "name": "tokensReceivingFrom",
593
+ "type": "uint16[]"
594
+ },
595
+ {
596
+ "internalType": "uint256",
597
+ "name": "activeSlot",
598
+ "type": "uint256"
599
+ },
600
+ {
601
+ "components": [
602
+ {
603
+ "internalType": "bytes",
604
+ "name": "imageDataCompressed",
605
+ "type": "bytes"
606
+ },
607
+ {
608
+ "internalType": "uint16",
609
+ "name": "imageVersion",
610
+ "type": "uint16"
611
+ },
612
+ {
613
+ "internalType": "bytes",
614
+ "name": "soundDataCompressed",
615
+ "type": "bytes"
616
+ },
617
+ {
618
+ "internalType": "uint16",
619
+ "name": "soundVersion",
620
+ "type": "uint16"
621
+ }
622
+ ],
623
+ "internalType": "struct ISRHooks.TokenMetadataView",
624
+ "name": "activeSlotTokenMetadata",
625
+ "type": "tuple"
626
+ },
627
+ {
628
+ "internalType": "address",
629
+ "name": "ownerAddress",
630
+ "type": "address"
631
+ }
632
+ ],
633
+ "stateMutability": "view",
634
+ "type": "function"
635
+ },
636
+ {
637
+ "inputs": [
638
+ {
639
+ "internalType": "uint256",
640
+ "name": "tokenNumber",
641
+ "type": "uint256"
642
+ }
643
+ ],
644
+ "name": "getTokensSendingToToken",
645
+ "outputs": [
646
+ {
647
+ "internalType": "uint256[]",
648
+ "name": "tokensSendingTo",
649
+ "type": "uint256[]"
650
+ }
651
+ ],
652
+ "stateMutability": "view",
653
+ "type": "function"
654
+ },
655
+ {
656
+ "inputs": [
657
+ {
658
+ "internalType": "address",
659
+ "name": "_owner",
660
+ "type": "address"
661
+ },
662
+ {
663
+ "internalType": "address",
664
+ "name": "_coreContractAddress",
665
+ "type": "address"
666
+ },
667
+ {
668
+ "internalType": "uint256",
669
+ "name": "_coreProjectId",
670
+ "type": "uint256"
671
+ }
672
+ ],
673
+ "name": "initialize",
674
+ "outputs": [],
675
+ "stateMutability": "nonpayable",
676
+ "type": "function"
677
+ },
678
+ {
679
+ "inputs": [
680
+ {
681
+ "internalType": "address",
682
+ "name": "",
683
+ "type": "address"
684
+ },
685
+ {
686
+ "internalType": "uint256",
687
+ "name": "tokenId",
688
+ "type": "uint256"
689
+ },
690
+ {
691
+ "components": [
692
+ {
693
+ "internalType": "string",
694
+ "name": "key",
695
+ "type": "string"
696
+ },
697
+ {
698
+ "internalType": "string",
699
+ "name": "value",
700
+ "type": "string"
701
+ }
702
+ ],
703
+ "internalType": "struct IWeb3Call.TokenParam[]",
704
+ "name": "tokenParams",
705
+ "type": "tuple[]"
706
+ }
707
+ ],
708
+ "name": "onTokenPMPReadAugmentation",
709
+ "outputs": [
710
+ {
711
+ "components": [
712
+ {
713
+ "internalType": "string",
714
+ "name": "key",
715
+ "type": "string"
716
+ },
717
+ {
718
+ "internalType": "string",
719
+ "name": "value",
720
+ "type": "string"
721
+ }
722
+ ],
723
+ "internalType": "struct IWeb3Call.TokenParam[]",
724
+ "name": "augmentedTokenParams",
725
+ "type": "tuple[]"
726
+ }
727
+ ],
728
+ "stateMutability": "view",
729
+ "type": "function"
730
+ },
731
+ {
732
+ "inputs": [],
733
+ "name": "owner",
734
+ "outputs": [
735
+ {
736
+ "internalType": "address",
737
+ "name": "",
738
+ "type": "address"
739
+ }
740
+ ],
741
+ "stateMutability": "view",
742
+ "type": "function"
743
+ },
744
+ {
745
+ "inputs": [],
746
+ "name": "proxiableUUID",
747
+ "outputs": [
748
+ {
749
+ "internalType": "bytes32",
750
+ "name": "",
751
+ "type": "bytes32"
752
+ }
753
+ ],
754
+ "stateMutability": "view",
755
+ "type": "function"
756
+ },
757
+ {
758
+ "inputs": [],
759
+ "name": "renounceOwnership",
760
+ "outputs": [],
761
+ "stateMutability": "nonpayable",
762
+ "type": "function"
763
+ },
764
+ {
765
+ "inputs": [
766
+ {
767
+ "internalType": "bytes4",
768
+ "name": "interfaceId",
769
+ "type": "bytes4"
770
+ }
771
+ ],
772
+ "name": "supportsInterface",
773
+ "outputs": [
774
+ {
775
+ "internalType": "bool",
776
+ "name": "",
777
+ "type": "bool"
778
+ }
779
+ ],
780
+ "stateMutability": "view",
781
+ "type": "function"
782
+ },
783
+ {
784
+ "inputs": [
785
+ {
786
+ "internalType": "address",
787
+ "name": "newOwner",
788
+ "type": "address"
789
+ }
790
+ ],
791
+ "name": "transferOwnership",
792
+ "outputs": [],
793
+ "stateMutability": "nonpayable",
794
+ "type": "function"
795
+ },
796
+ {
797
+ "inputs": [
798
+ {
799
+ "internalType": "uint256",
800
+ "name": "tokenNumber",
801
+ "type": "uint256"
802
+ },
803
+ {
804
+ "internalType": "bool",
805
+ "name": "updateSendState",
806
+ "type": "bool"
807
+ },
808
+ {
809
+ "internalType": "enum ISRHooks.SendStates",
810
+ "name": "sendState",
811
+ "type": "uint8"
812
+ },
813
+ {
814
+ "internalType": "uint16[]",
815
+ "name": "tokensSendingTo",
816
+ "type": "uint16[]"
817
+ },
818
+ {
819
+ "internalType": "bool",
820
+ "name": "updateReceiveState",
821
+ "type": "bool"
822
+ },
823
+ {
824
+ "internalType": "enum ISRHooks.ReceiveStates",
825
+ "name": "receiveState",
826
+ "type": "uint8"
827
+ },
828
+ {
829
+ "internalType": "uint16[]",
830
+ "name": "tokensReceivingFrom",
831
+ "type": "uint16[]"
832
+ },
833
+ {
834
+ "internalType": "bool",
835
+ "name": "updateTokenMetadata",
836
+ "type": "bool"
837
+ },
838
+ {
839
+ "internalType": "uint256",
840
+ "name": "updatedActiveSlot",
841
+ "type": "uint256"
842
+ },
843
+ {
844
+ "components": [
845
+ {
846
+ "internalType": "bool",
847
+ "name": "updateImage",
848
+ "type": "bool"
849
+ },
850
+ {
851
+ "internalType": "bytes",
852
+ "name": "imageDataCompressed",
853
+ "type": "bytes"
854
+ },
855
+ {
856
+ "internalType": "bool",
857
+ "name": "updateSound",
858
+ "type": "bool"
859
+ },
860
+ {
861
+ "internalType": "bytes",
862
+ "name": "soundDataCompressed",
863
+ "type": "bytes"
864
+ }
865
+ ],
866
+ "internalType": "struct ISRHooks.TokenMetadataCalldata",
867
+ "name": "tokenMetadataCalldata",
868
+ "type": "tuple"
869
+ }
870
+ ],
871
+ "name": "updateTokenStateAndMetadata",
872
+ "outputs": [],
873
+ "stateMutability": "nonpayable",
874
+ "type": "function"
875
+ },
876
+ {
877
+ "inputs": [
878
+ {
879
+ "internalType": "address",
880
+ "name": "newImplementation",
881
+ "type": "address"
882
+ },
883
+ {
884
+ "internalType": "bytes",
885
+ "name": "data",
886
+ "type": "bytes"
887
+ }
888
+ ],
889
+ "name": "upgradeToAndCall",
890
+ "outputs": [],
891
+ "stateMutability": "payable",
892
+ "type": "function"
893
+ }
894
+ ],
895
+ "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615461620001046000396000818161113e0152818161116701526112a401526154616000f3fe6080604052600436106101055760003560e01c806301ffc9a71461010a5780631794bb3c1461013f57806320b365df1461016157806324cc64931461018f5780634eab1d15146101b25780634f1ef286146101c857806352d1902d146101db57806358f8699f146101f05780635ab53d9f1461021d578063715018a61461025157806377ece0ed1461026657806386f5caa0146102935780638da5cb5b146102a957806398a6e118146102be578063a2745897146102e7578063ad3cb1cc146102fd578063bdf1767a1461033b578063d4ae306814610368578063d8abc81814610388578063e8bc1f92146103a8578063f2fde38b146103d2578063f45fd0f3146103f2575b600080fd5b34801561011657600080fd5b5061012a610125366004614631565b610425565b60405190151581526020015b60405180910390f35b34801561014b57600080fd5b5061015f61015a366004614670565b610450565b005b34801561016d57600080fd5b506101826c447e69651d841bd8d104bed49381565b60405161013691906146b1565b34801561019b57600080fd5b506101a4600581565b604051908152602001610136565b3480156101be57600080fd5b506101a461280081565b61015f6101d6366004614788565b6105af565b3480156101e757600080fd5b506101a46105ce565b3480156101fc57600080fd5b5061021061020b3660046147d7565b6105eb565b60405161013691906148b2565b34801561022957600080fd5b5061023d610238366004614939565b6108a9565b604051610136989796959493929190614a5a565b34801561025d57600080fd5b5061015f610bc8565b34801561027257600080fd5b50610286610281366004614ac4565b610bdc565b6040516101369190614add565b34801561029f57600080fd5b506101a460015481565b3480156102b557600080fd5b50610182610bff565b3480156102ca57600080fd5b506101a471706f73746d696e74706172616d657465727360701b81565b3480156102f357600080fd5b506101a4613c0081565b34801561030957600080fd5b5061032e604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101369190614b21565b34801561034757600080fd5b5061035b610356366004614b34565b610c1a565b6040516101369190614bb0565b34801561037457600080fd5b5061015f610383366004614d33565b610d2d565b34801561039457600080fd5b50600054610182906001600160a01b031681565b3480156103b457600080fd5b506103bd610ea3565b60408051928352602083019190915201610136565b3480156103de57600080fd5b5061015f6103ed366004614e23565b610ec2565b3480156103fe57600080fd5b5061041261040d366004614ac4565b610f00565b6040516101369796959493929190614e80565b60006001600160e01b031982166358f8699f60e01b148061044a575061044a826110c1565b92915050565b600061045a6110f6565b805490915060ff600160401b82041615906001600160401b03166000811580156104815750825b90506000826001600160401b0316600114801561049d5750303b155b9050811580156104ab575080155b156104c95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156104f257845460ff60401b1916600160401b1785555b6104fb8861111a565b61050361112b565b600080546001600160a01b0319166001600160a01b038916908117909155600187905560408051918252602082018890527facb755af0ec3542ca6af3a79dcbe8f0b12f9d3ed27c17a0bbdc16244fed42bbc910160405180910390a183156105a557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6105b7611133565b6105c0826111d8565b6105ca82826111e0565b5050565b60006105d8611299565b506000805160206153ac83398151915290565b60608160006105fb826004614f0c565b9050806001600160401b03811115610615576106156146c5565b60405190808252806020026020018201604052801561065a57816020015b60408051808201909152606080825260208201528152602001906001900390816106335790505b50925060005b828110156106ba5785858281811061067a5761067a614f1f565b905060200281019061068c9190614f35565b61069590614f55565b8482815181106106a7576106a7614f1f565b6020908102919091010152600101610660565b5060006106c6876112e2565b6000818152600360209081526040808320546002835281842060ff909116808552908352928190208151608081018352600992810192835268696d6167654461746160b81b6060820152918252805494955092939091820190610731906001600160a01b03166112f1565b81525086868151811061074657610746614f1f565b60209081029190910181019190915260408051608081018252600991810191825268736f756e644461746160b81b606082015290815260018301549091820190610798906001600160a01b03166112f1565b9052866107a6876001614f0c565b815181106107b6576107b6614f1f565b602002602001018190525060405180604001604052806040518060400160405280600981526020016873656e64537461746560b81b81525081526020016108046107ff86611326565b61136b565b905286610812876002614f0c565b8151811061082257610822614f1f565b602002602001018190525060405180604001604052806040518060400160405280600c81526020016b72656365697665537461746560a01b815250815260200161087361086e8661140f565b611470565b905286610881876003614f0c565b8151811061089157610891614f1f565b60200260200101819052505050505050949350505050565b6000806060806000806000806108be8b6115af565b50602489111561090f5760405162461bcd60e51b81526020600482015260176024820152766d61785265636569766520697320746f6f206c6172676560481b60448201526064015b60405180910390fd5b891561091b5789610926565b610926600143614fda565b9050610933600143614fda565b8111156109a15760405162461bcd60e51b815260206004820152603660248201527f426c6f636b206e756d62657220696e20667574757265202d206e65656420626c6044820152751bd8dac81a185cda081d1bc81899481919599a5b995960521b6064820152608401610906565b804080610a115760405162461bcd60e51b815260206004820152603860248201527f626c6f636b2068617368206e6f7420617661696c61626c65202d206d75737420604482015277626520696e206c6173746573742032353620626c6f636b7360401b6064820152608401610906565b610a1a8c611326565b9850610a258c61140f565b9750610a3160046115e2565b9450610a3d60066115e2565b60008d8152600860205260409020909450610a57906115e2565b92506000886003811115610a6d57610a6d614965565b03610ae857604080516000808252602082019092528a918a9190610aa7565b610a9461459b565b815260200190600190039081610a8c5790505b506040805160008082526020820190925290610ad9565b610ac661459b565b815260200190600190039081610abe5790505b50985098509850985050610bbb565b6001886003811115610afc57610afc614965565b03610b2157610b0c8c828c6116a5565b9650610b198c828c611715565b955050610bbb565b6002886003811115610b3557610b35614965565b03610b5157610b458c828c6118e1565b9097509550610bbb9050565b6003886003811115610b6557610b65614965565b03610bb957610b758c828c611715565b604080516000808252602082019092529197508a918a91610bac565b610b9961459b565b815260200190600190039081610b915790505b5098509850985050610bbb565b505b9397509397509397509397565b610bd0611b67565b610bda6000611b99565b565b6060610be7826115af565b50600082815260086020526040902061044a90611bf5565b600080610c0a611c90565b546001600160a01b031692915050565b610c226145d3565b610c2b836115af565b5060058210610c6b5760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081cdb1bdd60a21b6044820152606401610906565b6000838152600260209081526040808320858452909152902080546001600160a01b0316610ca85760405180602001604052806000815250610cbc565b8054610cbc906001600160a01b0316611cb4565b82528054600160a01b900461ffff16602083015260018101546001600160a01b0316610cf75760405180602001604052806000815250610d0e565b6001810154610d0e906001600160a01b0316611cb4565b604083015260010154600160a01b900461ffff16606082015292915050565b61ffff8a10610d755760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b2103a37b5b2b710373ab6b132b960611b6044820152606401610906565b600080610d828c33611cd5565b9150915081610df65760405162461bcd60e51b815260206004820152603a60248201527f4f6e6c79206f776e6572206f722076616c69642064656c65676174652e78797a60448201527908158c881bd9881d1bdad95b881bdddb995c88185b1b1bddd95960321b6064820152608401610906565b8a80610dff5750875b80610e075750845b610e5f5760405162461bcd60e51b8152602060048201526024808201527f4174206c65617374206f6e6520757064617465206d7573742062652070726f766044820152631a59195960e21b6064820152608401610906565b8415610e7157610e718c858584611e26565b8a15610e8357610e838c8b8b846123de565b8715610e9557610e958c888884612803565b505050505050505050505050565b600080610eb060046115e2565b610eba60066115e2565b915091509091565b610eca611b67565b6001600160a01b038116610ef4576000604051631e4fbdf760e01b815260040161090691906146b1565b610efd81611b99565b50565b6000806060806000610f106145d3565b6000610f1b886115af565b50610f2588611326565b9650610f308861140f565b6000898152600960205260409020909650610f4a90612bc7565b6000898152600a60205260409020909550610f6490612bc7565b6000898152600360209081526040808320546002835281842060ff90911680855292529091208054929650909450906001600160a01b0316610fb55760405180602001604052806000815250610fc9565b8054610fc9906001600160a01b0316611cb4565b83528054600160a01b900461ffff16602084015260018101546001600160a01b0316611004576040518060200160405280600081525061101b565b600181015461101b906001600160a01b0316611cb4565b6040840152600181810154600160a01b900461ffff16606085015254600090611044908b612c8c565b6000546040516331a9108f60e11b8152600481018390529192506001600160a01b031690636352211e90602401602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b29190614fed565b92505050919395979092949650565b60006001600160e01b031982166358f8699f60e01b148061044a57506301ffc9a760e01b6001600160e01b031983161461044a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611122612ca6565b610efd81612ccb565b610bda612ca6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111ba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ae6000805160206153ac833981519152546001600160a01b031690565b6001600160a01b031614155b15610bda5760405163703e46dd60e11b815260040160405180910390fd5b610efd611b67565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561123a575060408051601f3d908101601f191682019092526112379181019061500a565b60015b6112595781604051634c9c8ce360e01b815260040161090691906146b1565b6000805160206153ac833981519152811461128a57604051632a87526960e21b815260048101829052602401610906565b6112948383612cd3565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bda5760405163703e46dd60e11b815260040160405180910390fd5b600061044a620f424083615023565b60606001600160a01b03821661131557505060408051602081019091526000815290565b61044a61132183611cb4565b612d29565b6000611333600483612d4d565b1561134057506001919050565b600082815260096020526040902061135790612d65565b61136357506002919050565b506000919050565b6060600182600281111561138157611381614965565b146113e857600282600281111561139a5761139a614965565b146113c4576040518060400160405280600781526020016613995d5d1c985b60ca1b81525061044a565b6040518060400160405280600681526020016553656e64546f60d01b81525061044a565b505060408051808201909152600b81526a14d95b9911d95b995c985b60aa1b602082015290565b600061141c600683612d4d565b1561142957506001919050565b6000828152600a6020526040902061144090612d65565b61144c57506002919050565b600082815260036020526040902054610100900460ff161561136357506003919050565b6060600082600381111561148657611486614965565b036114ae57505060408051808201909152600781526613995d5d1c985b60ca1b602082015290565b60018260038111156114c2576114c2614965565b036114f157505060408051808201909152600e81526d149958d95a5d9951d95b995c985b60921b602082015290565b600282600381111561150557611505614965565b0361153157505060408051808201909152600b81526a5265636569766546726f6d60a81b602082015290565b600382600381111561154557611545614965565b0361156f57505060408051808201909152600981526852656365697665546f60b81b602082015290565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207265636569766520737461746560581b6044820152606401610906565b600061ffff8211156115de576040516306dfcc6560e41b81526010600482015260248101839052604401610906565b5090565b80546000908082036115f75750600092915050565b600083611605600184614fda565b8154811061161557611615614f1f565b6000918252602082200154915081608081901c801561163657600892508091505b50604081901c801561164c576004830192508091505b50602081901c8015611662576002830192508091505b50601081901c8015611675576001830192505b508190506004611686600186614fda565b61169192911b614f0c565b61169c906001614f0c565b95945050505050565b606060006116b360046115e2565b905060008382116116c457816116c6565b835b9050600085876040516020016116e6929190918252602082015260400190565b6040516020818303038152906040528051906020012090506117088183612d73565b93505050505b9392505050565b600083815260086020526040812060609190611730906115e2565b90508060000361177457604080516000808252602082019092529061176b565b61175861459b565b8152602001906001900390816117505790505b5091505061170e565b60008382116117835781611785565b835b9050600085876040516020016117a5929190918252602082015260400190565b60405160208183030381529060405280519060200120905060006117c98285612eda565b905060006117d78285613039565b90506000846001600160401b038111156117f3576117f36146c5565b60405190808252806020026020018201604052801561182c57816020015b61181961459b565b8152602001906001900390816118115790505b50600154600080548d825260086020526040822093945091926001600160a01b0390921691905b888110156118cf57600061188987838151811061187257611872614f1f565b6020026020010151846130c890919063ffffffff16565b61ffff169050600061189b8683612c8c565b90506118a8828287613159565b8784815181106118ba576118ba614f1f565b60209081029190910101525050600101611853565b50929c9b505050505050505050505050565b6000838152600a6020526040812060609182916118fd90612bc7565b8051909150600081900361197a57604080516000808252602082019092529061193c565b61192961459b565b8152602001906001900390816119215790505b50604080516000808252602082019092529061196e565b61195b61459b565b8152602001906001900390816119535790505b50935093505050611b5f565b6040805160208082018990528183018a90528251808303840181526060909201909252805191012060006119ae8284612eda565b905060006119bf8a8686858c613277565b805190915060006119d38c8888878e613433565b8051909150806001600160401b038111156119f0576119f06146c5565b604051908082528060200260200182016040528015611a2957816020015b611a1661459b565b815260200190600190039081611a0e5790505b5060015460008054929c5090916001600160a01b0316905b83811015611aa1576000858281518110611a5d57611a5d614f1f565b60200260200101519050611a7b81611a758684612c8c565b85613159565b8e8381518110611a8d57611a8d614f1f565b602090810291909101015250600101611a41565b50846001600160401b03811115611aba57611aba6146c5565b604051908082528060200260200182016040528015611af357816020015b611ae061459b565b815260200190600190039081611ad85790505b509a5060005b85811015611b53576000878281518110611b1557611b15614f1f565b60200260200101519050611b2d81611a758684612c8c565b8d8381518110611b3f57611b3f614f1f565b602090810291909101015250600101611af9565b50505050505050505050505b935093915050565b33611b70610bff565b6001600160a01b031614610bda573360405163118cdaa760e01b815260040161090691906146b1565b6000611ba3611c90565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60606000611c02836115e2565b90506000816001600160401b03811115611c1e57611c1e6146c5565b604051908082528060200260200182016040528015611c47578160200160208202803683370190505b50905060005b82811015611c8857611c5f85826130c8565b61ffff16828281518110611c7557611c75614f1f565b6020908102919091010152600101611c4d565b509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b606061044a826001611cd0816001600160a01b0384163b614fda565b6135d3565b6000806000611ce660015486612c8c565b6000546040516331a9108f60e11b8152600481018390529192506001600160a01b031690636352211e90602401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d549190614fed565b9150816001600160a01b0316846001600160a01b03161480611e1c5750600054604051632e7cda1d60e21b81526001600160a01b038087166004830152808516602483015290911660448201526064810182905271706f73746d696e74706172616d657465727360701b60848201526c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa158015611df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1c9190615045565b9250509250929050565b60058310611e6c5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081858dd1a5d99481cdb1bdd606a1b6044820152606401610906565b6000848152600360209081526040808320546002835281842087855290925290912060ff909116841480159190611f3057835180611eb3575080546001600160a01b031615155b611f305760405162461bcd60e51b815260206004820152604260248201527f4e65772061637469766520736c6f74206d757374206861766520696d6167652060448201527f6d65746164617461207768656e207570646174696e672061637469766520736c6064820152611bdd60f21b608482015260a401610906565b6000611f3e60015488612c8c565b8551909150156120f357600085602001515111611faf5760405162461bcd60e51b815260206004820152602960248201527f496d6167652064617461206d7573742062652070726f7669646564207768656e604482015268207570646174696e6760b81b6064820152608401610906565b613c00856020015151111561202c5760405162461bcd60e51b815260206004820152603e60248201527f496d6167652064617461206d757374206265206c657373207468616e206f722060448201527f657175616c20746f204d41585f494d4147455f444154415f4c454e47544800006064820152608401610906565b61203985602001516135f6565b82546001600160a01b0319166001600160a01b0391909116178083556001908390601490612073908490600160a01b900461ffff16615062565b92506101000a81548161ffff021916908361ffff16021790555060008051602061540c83398151915260008054906101000a90046001600160a01b0316826120cd898660000160149054906101000a900461ffff1661369b565b6120d68861378b565b6040516120e694939291906150b7565b60405180910390a1612159565b602085015151156121595760405162461bcd60e51b815260206004820152602a60248201527f496d6167652064617461206d75737420626520656d707479207768656e206e6f60448201526974207570646174696e6760b01b6064820152608401610906565b8460400151156122e75784606001515160000361221d57600182810180546001600160a01b03191680825560149061219d908490600160a01b900461ffff16615062565b92506101000a81548161ffff021916908361ffff16021790555060008051602061540c83398151915260008054906101000a90046001600160a01b0316826121f7898660010160149054906101000a900461ffff166137e3565b6122008861378b565b60405161221094939291906150b7565b60405180910390a161234d565b612800856060015151111561229a5760405162461bcd60e51b815260206004820152603e60248201527f536f756e642064617461206d757374206265206c657373207468616e206f722060448201527f657175616c20746f204d41585f534f554e445f444154415f4c454e47544800006064820152608401610906565b6122a785606001516135f6565b600183810180546001600160a01b0319166001600160a01b03939093169290921780835590919060149061219d908490600160a01b900461ffff16615062565b6060850151511561234d5760405162461bcd60e51b815260206004820152602a60248201527f536f756e642064617461206d75737420626520656d707479207768656e206e6f60448201526974207570646174696e6760b01b6064820152608401610906565b60008781526003602052604090205460ff1686146123d55761236e86613883565b6000888152600360205260408120805460ff191660ff93909316929092179091555460008051602061540c833981519152906001600160a01b0316826123b3896138b1565b6123bc8861378b565b6040516123cc94939291906150b7565b60405180910390a15b50505050505050565b6000848152600260209081526040808320600383528184205460ff1684529091529020546001600160a01b03166124275760405162461bcd60e51b815260040161090690615198565b600283600281111561243b5761243b614965565b146124945781511561248f5760405162461bcd60e51b815260206004820152601d60248201527f746f6b656e7353656e64696e67546f206d75737420626520656d7074790000006044820152606401610906565b6124ef565b60008251116124ef5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e7353656e64696e67546f206d757374206265206e6f6e2d656d70746044820152607960f81b6064820152608401610906565b6019825111156125735760405162461bcd60e51b815260206004820152604360248201527f746f6b656e7353656e64696e67546f206d757374206265206c6573732074686160448201527f6e206f7220657175616c20746f204d41585f53454e44494e475f544f5f4c454e60648201526208ea8960eb1b608482015260a401610906565b600061258160015486612c8c565b9050600061258e86611326565b905060018160028111156125a4576125a4614965565b036125ba576125b4600487613967565b506126a9565b60028160028111156125ce576125ce614965565b036126a95760008681526009602052604081206125ea90612bc7565b805190915060005b8181101561264b57600083828151811061260e5761260e614f1f565b602002602001015161ffff1690506126418a6008600084815260200190815260200160002061396790919063ffffffff16565b50506001016125f2565b50600088815260096020526040902061266390613aa2565b6000805460408051928352602083019081905286926001600160a01b03909216916000805160206153ec8339815191529161269e91906151f5565b60405180910390a350505b60018560028111156126bd576126bd614965565b036126d3576126cd600487613ab2565b50612765565b60028560028111156126e7576126e7614965565b036127655760008681526009602052604090206127049085613bab565b835160005b8181101561276257600086828151811061272557612725614f1f565b602002602001015161ffff1690506127588960086000848152602001908152602001600020613ab290919063ffffffff16565b5050600101612709565b50505b60005460008051602061540c833981519152906001600160a01b03168361278b88613d8b565b6127948761378b565b6040516127a494939291906150b7565b60405180910390a160028560028111156127c0576127c0614965565b036127fb5760005460405183916001600160a01b0316906000805160206153ec833981519152906127f29088906151f5565b60405180910390a35b505050505050565b6000848152600260209081526040808320600383528184205460ff1684529091529020546001600160a01b031661284c5760405162461bcd60e51b815260040161090690615198565b600283600381111561286057612860614965565b146128c3578151156128be5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e73526563656976696e6746726f6d206d75737420626520656d70746044820152607960f81b6064820152608401610906565b612922565b60008251116129225760405162461bcd60e51b815260206004820152602560248201527f746f6b656e73526563656976696e6746726f6d206d757374206265206e6f6e2d604482015264656d70747960d81b6064820152608401610906565b6103e8825111156129b55760405162461bcd60e51b815260206004820152605160248201527f746f6b656e73526563656976696e6746726f6d206d757374206265206c65737360448201527f207468616e206f7220657175616c20746f204d41585f524543454956494e475f60648201527008ca49e9abe82a4a482b2be988a9c8ea89607b1b608482015260a401610906565b60006129c360015486612c8c565b905060006129d08661140f565b905060018160038111156129e6576129e6614965565b036129fc576129f6600687613967565b50612aa5565b6002816003811115612a1057612a10614965565b03612a74576000868152600a60205260409020612a2c90613aa2565b6000805460408051928352602083019081905284926001600160a01b03909216916000805160206153cc83398151915291612a6791906151f5565b60405180910390a3612aa5565b6003816003811115612a8857612a88614965565b03612aa5576000868152600360205260409020805461ff00191690555b6001856003811115612ab957612ab9614965565b03612acf57612ac9600687613ab2565b50612b3a565b6002856003811115612ae357612ae3614965565b03612b05576000868152600a60205260409020612b009085613bab565b612b3a565b6003856003811115612b1957612b19614965565b03612b3a576000868152600360205260409020805461ff0019166101001790555b60005460008051602061540c833981519152906001600160a01b031683612b6088613e3c565b612b698761378b565b604051612b7994939291906150b7565b60405180910390a16002856003811115612b9557612b95614965565b036127fb5760005460405183916001600160a01b0316906000805160206153cc833981519152906127f29088906151f5565b80546060906001600160a01b0316612bf25760408051600080825260208201909252905b5092915050565b8154600090612c09906001600160a01b0316611cb4565b602081015190915060c01c806001600160401b03811115612c2c57612c2c6146c5565b604051908082528060200260200182016040528015612c55578160200160208202803683370190505b5092506028820160005b82811015612c8357815160f01c602082810287010152600290910190600101612c5f565b50505050919050565b600081612c9c620f424085615208565b61170e9190614f0c565b612cae613eb9565b610bda57604051631afcd79f60e31b815260040160405180910390fd5b610eca612ca6565b612cdc82613ed3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d21576112948282613f2f565b6105ca613f9c565b6060612d3482613fbb565b8051613078825260020160011990910190815292915050565b6000612d5c8360010183614021565b15159392505050565b546001600160a01b03161590565b606081600003612db6576040805160008082526020820190925290612dae565b612d9b61459b565b815260200190600190039081612d935790505b50905061044a565b6000612dc260046115e2565b90506000612dd08583612eda565b90506000612dde8286613039565b80519091506000816001600160401b03811115612dfd57612dfd6146c5565b604051908082528060200260200182016040528015612e3657816020015b612e2361459b565b815260200190600190039081612e1b5790505b506001546000805492935090916001600160a01b0316905b84811015612ecb576000612e85878381518110612e6d57612e6d614f1f565b602002602001015160046130c890919063ffffffff16565b61ffff1690506000612e978583612c8c565b9050612ea4828286613159565b868481518110612eb657612eb6614f1f565b60209081029190910101525050600101612e4e565b50919998505050505050505050565b612f256040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160401b0316815260200160006001600160401b031681525090565b60008211612f6a5760405162461bcd60e51b815260206004820152601260248201527104665697374656c57616c6b4c69623a4e3d360741b6044820152606401610906565b818152612f7682614046565b60208201819052612f8690614093565b6040808301919091526002606083015251612fc390849084906020019182526906665697374656c2e6b360b41b6020830152602a820152604a0190565b60408051808303601f1901815291815281516020928301206001600160401b031660808401528051918201859052696665697374656c2e6b3160b01b90820152604a8101839052606a0160408051601f1981840301815291905280516020909101206001600160401b031660a082015292915050565b815160609082111561304a57825191505b816001600160401b03811115613062576130626146c5565b60405190808252806020026020018201604052801561308b578160200160208202803683370190505b50905060005b82811015612beb576130a384826140f0565b8282815181106130b5576130b5614f1f565b6020908102919091010152600101613091565b60006130d3836115e2565b82106131325760405162461bcd60e51b815260206004820152602860248201527f456e756d657261626c6553657455696e7431363a20696e646578206f7574206f6044820152676620626f756e647360c01b6064820152608401610906565b5060009182526020909120600482811c9091015461ffff9290911b60f0161c166000190190565b61316161459b565b6040516331a9108f60e11b8152600481018490526000906001600160a01b03841690636352211e90602401602060405180830381865afa1580156131a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cd9190614fed565b6000868152600360209081526040808320546002835281842060ff90911680855290835292208886526001600160a01b038085169287019290925280549394509192161561322f578054613229906001600160a01b0316611cb4565b60408501525b60018101546001600160a01b03161561325f576001810154613259906001600160a01b0316611cb4565b60608501525b61326883614171565b60808501525050509392505050565b6060816001600160401b03811115613291576132916146c5565b6040519080825280602002602001820160405280156132ba578160200160208202803683370190505b509050600080836001600160401b038111156132d8576132d86146c5565b604051908082528060200260200182016040528015613301578160200160208202803683370190505b5090506000805b878110156134255760008061331d89846140f0565b90508a818151811061333157613331614f1f565b602002602001015161ffff169150508a810361334d575061341d565b6000805b8481101561338a578286828151811061336c5761336c614f1f565b602002602001015103613382576001915061338a565b600101613351565b50801561339857505061341d565b60008c81526008602052604090206133b09083612d4d565b1561340c57818787815181106133c8576133c8614f1f565b6020908102919091010152856133dd8161521f565b965050818585806133ed9061521f565b9650815181106133ff576133ff614f1f565b6020026020010181815250505b87861061341a575050613425565b50505b600101613308565b505050815295945050505050565b6060816001600160401b0381111561344d5761344d6146c5565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b509050600080836001600160401b03811115613494576134946146c5565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b5090506000805b87811015613425576000806134d989846140f0565b90508a81815181106134ed576134ed614f1f565b602002602001015161ffff169150508a810361350957506135cb565b6000805b84811015613546578286828151811061352857613528614f1f565b60200260200101510361353e5760019150613546565b60010161350d565b5080156135545750506135cb565b61355f600483612d4d565b156135c8578187878151811061357757613577614f1f565b60209081029190910101528561358c8161521f565b9650508185858061359c9061521f565b9650815181106135ae576135ae614f1f565b6020026020010181815250508786106135c8575050613425565b50505b6001016134c4565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b6000808260405160200161360a9190615238565b604051602081830303815290604052905060008160405160200161362e919061525e565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166136945760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610906565b5050919050565b606060006040518060400160405280601081526020016f125b5859d955995c9cda5bdb94db1bdd60821b8152506136d185614235565b6040516020016136e2929190615292565b60408051808303601f190181526001808452838301909252925060009190816020015b61370d614603565b8152602001906001900390816137055750506040805160a081019091528381529091506020810160035b81526020018561ffff1660001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061377857613778614f1f565b6020908102919091010152949350505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106137c5576137c5614f1f565b6001600160a01b039092166020928302919091019091015292915050565b606060006040518060400160405280601081526020016f14dbdd5b9915995c9cda5bdb94db1bdd60821b81525061381985614235565b60405160200161382a929190615292565b60408051808303601f190181526001808452838301909252925060009190816020015b613855614603565b81526020019060019003908161384d5750506040805160a08101909152838152909150602081016003613737565b600060ff8211156115de576040516306dfcc6560e41b81526008600482015260248101839052604401610906565b60408051600180825281830190925260609160009190816020015b6138d4614603565b8152602001906001900390816138cc579050506040805160e08101909152600a60a08201908152691058dd1a5d9954db1bdd60b21b60c0830152815290915060208101600381526020018460001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061395657613956614f1f565b602090810291909101015292915050565b6000806139778460010184614021565b90508060000361398b57600091505061044a565b60006001613998866115e2565b6139a29190614fda565b905060006139b1600184614fda565b9050600482901c600f8316838314613a215760008881526020902082810154600485811c928301805461ffff60f089851b1681811b199092169387901b9490941c9093169283901b91909117905590600f8516613a1d6001808d0190613a179086614fda565b8a6142c7565b5050505b6000888152602090208201805461ffff600484901b1b19169081905515808015613a5757508854613a5490600190614fda565b83145b15613a84578854899080613a6d57613a6d6152c1565b600190038181906000526020600020016000905590555b613a93896001018960006142c7565b50600198975050505050505050565b80546001600160a01b0319169055565b600061ffff82811610613b135760405162461bcd60e51b8152602060048201526024808201527f456e756d657261626c6553657455696e7431363a2076616c756520746f6f206c6044820152636172676560e01b6064820152608401610906565b613b1d8383612d4d565b15613b2a5750600061044a565b6000613b35846115e2565b8454909150600482901c90600f8316908210613b61578554600181018755600087815260208120909101555b6000868152602090208201805461ffff600484811b91821b19909216600189810190921b1790925583901b8217810190613b9e90880187836142c7565b5060019695505050505050565b80516000819003613bc857505080546001600160a01b0319169055565b61ffff811115613c2a5760405162461bcd60e51b815260206004820152602760248201527f546f74616c206279746573206c656e67746820657863656564732075696e74316044820152660d881b1a5b5a5d60ca1b6064820152608401610906565b6000613c37826002615208565b90506000613c46826008614f0c565b90506000613c55826020614f0c565b6001600160401b03811115613c6c57613c6c6146c5565b6040519080825280601f01601f191660200182016040528015613c96576020820181803683370190505b5060c085901b602082015290506028810160005b85811015613d5857600086613cc0836010614f0c565b10613ccb5786613cd6565b613cd6826010614f0c565b90506000805b613ce68484614fda565b811015613d3c57613cf8816010615208565b613d039060f0614fda565b8a613d0e8387614f0c565b81518110613d1e57613d1e614f1f565b602090810291909101015161ffff16901b9190911790600101613cdc565b50835250602090910190613d51601082614f0c565b9050613caa565b505081815280613d67816135f6565b87546001600160a01b0319166001600160a01b039190911617909655505050505050565b60408051600180825281830190925260609160009190816020015b613dae614603565b815260200190600190039081613da65750506040805160e081018252600960a082019081526853656e64537461746560b81b60c08301528152600160208201529192508101846002811115613e0557613e05614965565b60001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061395657613956614f1f565b60408051600180825281830190925260609160009190816020015b613e5f614603565b815260200190600190039081613e575750506040805160e081018252600c60a082019081526b52656365697665537461746560a01b60c08301528152600160208201529192508101846003811115613e0557613e05614965565b6000613ec36110f6565b54600160401b900460ff16919050565b806001600160a01b03163b600003613f005780604051634c9c8ce360e01b815260040161090691906146b1565b6000805160206153ac83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613f4c91906152d7565b600060405180830381855af49150503d8060008114613f87576040519150601f19603f3d011682016040523d82523d6000602084013e613f8c565b606091505b509150915061169c8583836142f7565b3415610bda5760405163b398979f60e01b815260040160405180910390fd5b8051604051818001600282019081526f30313233343536373839616263646566600f52918301906022015b81841461401157600184019350600f845116516001820153600f845160041c16518153600201613fe6565b6000815260200160405250919050565b600481811c600090815260209390935260409092205460f09190921b161c61ffff1690565b60006001821161405857506001919050565b5060001901600181811c909117600281901c17600481901c17600881901c17601081901c17602081901c17604081901c17608081901c170190565b60008082116140d25760405162461bcd60e51b815260206004820152600b60248201526a6c6f67326365696c28302960a81b6044820152606401610906565b6001820391505b81156140eb57600191821c91016140d9565b919050565b815160009082106141395760405162461bcd60e51b81526020600482015260136024820152722332b4b9ba32b62bb0b635a634b11d359f1ea760691b6044820152606401610906565b825160010361414a5750600061044a565b61170e82846000015185602001518660400151876060015188608001518960a0015161434a565b604051606082811b6001600160601b03191660208301529073eeeeeeee14d718c2b47d9923deab1335e144eeee90635d78a21790603401604051602081830303815290604052603c6040518363ffffffff1660e01b81526004016141d69291906152e9565b600060405180830381865afa92505050801561421457506040513d6000823e601f3d908101601f19168201604052614211919081019061530b565b60015b61422c57505060408051602081019091526000815290565b50909392505050565b60606000614242836143a8565b60010190506000816001600160401b03811115614261576142616146c5565b6040519080825280601f01601f19166020018201604052801561428b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461429557509392505050565b600482811c6000908152602094909452604090932080549290931b60f01690811b61ffff90911b19909116179055565b60608261430c576143078261447e565b61170e565b815115801561432357506001600160a01b0384163b155b156143435783604051639996b31560e01b815260040161090691906146b1565b508061170e565b60008660010361435c5750600061439d565b8760005b6020811015614397576000614379838a8a8a8a8a6144a7565b90508981101561438d57925061439d915050565b9150600101614360565b50889150505b979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106143e75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614411576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061442f57662386f26fc10000830492506010015b6305f5e1008310614447576305f5e100830492506008015b612710831061445b57612710830492506004015b6064831061446d576064830492506002015b600a831061044a5760010192915050565b80511561448e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000856001036144b957506000614591565b856002036144e35760018316156144da576144d5876001614fda565b6144dc565b865b9050614591565b600060028604808703600180831b03600180831b039150808b16828c851c166001600160401b038116898118905080600d1b811890508060071c811890508060111b811890508060051c81189050838184181693508192508391506001600160401b0382169050600189188118905080600d1b811890508060071c811890508060111b811890508060051c8118905084818418169350508091508290508181861b1795505050505050809150505b9695505050505050565b6040518060a001604052806000815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600061ffff16815260200160608152602001600061ffff1681525090565b6040805160a08101909152606081526020810160008152600060208201819052604082015260609081015290565b60006020828403121561464357600080fd5b81356001600160e01b03198116811461170e57600080fd5b6001600160a01b0381168114610efd57600080fd5b60008060006060848603121561468557600080fd5b83356146908161465b565b925060208401356146a08161465b565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614703576147036146c5565b604052919050565b60006001600160401b03821115614724576147246146c5565b50601f01601f191660200190565b600082601f83011261474357600080fd5b81356147566147518261470b565b6146db565b81815284602083860101111561476b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561479b57600080fd5b82356147a68161465b565b915060208301356001600160401b038111156147c157600080fd5b6147cd85828601614732565b9150509250929050565b600080600080606085870312156147ed57600080fd5b84356147f88161465b565b93506020850135925060408501356001600160401b038082111561481b57600080fd5b818701915087601f83011261482f57600080fd5b81358181111561483e57600080fd5b8860208260051b850101111561485357600080fd5b95989497505060200194505050565b60005b8381101561487d578181015183820152602001614865565b50506000910152565b6000815180845261489e816020860160208601614862565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561492b57888303603f19018552815180518785526148ff88860182614886565b91890151858303868b01529190506149178183614886565b9689019694505050908601906001016148db565b509098975050505050505050565b60008060006060848603121561494e57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052602160045260246000fd5b6003811061498b5761498b614965565b9052565b6004811061498b5761498b614965565b600082825180855260208086019550808260051b84010181860160005b84811015614a4d57858303601f19018952815180518452848101516001600160a01b03168585015260408082015160a08287018190529190614a0083880182614886565b9250505060608083015186830382880152614a1b8382614886565b9250505060808083015192508582038187015250614a398183614886565b9a86019a94505050908301906001016149bc565b5090979650505050505050565b6000610100614a69838c61497b565b614a76602084018b61498f565b806040840152614a888184018a61499f565b90508281036060840152614a9c818961499f565b9150508560808301528460a08301528360c08301528260e08301529998505050505050505050565b600060208284031215614ad657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015614b1557835183529284019291840191600101614af9565b50909695505050505050565b60208152600061170e6020830184614886565b60008060408385031215614b4757600080fd5b50508035926020909101359150565b6000815160808452614b6b6080850182614886565b9050602083015161ffff8082166020870152604085015191508583036040870152614b968383614886565b925080606086015116606087015250508091505092915050565b60208152600061170e6020830184614b56565b8015158114610efd57600080fd5b80356140eb81614bc3565b8035600381106140eb57600080fd5b600082601f830112614bfc57600080fd5b813560206001600160401b03821115614c1757614c176146c5565b8160051b614c268282016146db565b9283528481018201928281019087851115614c4057600080fd5b83870192505b8483101561439d57823561ffff81168114614c615760008081fd5b82529183019190830190614c46565b8035600481106140eb57600080fd5b600060808284031215614c9157600080fd5b604051608081016001600160401b038082118383101715614cb457614cb46146c5565b8160405282935084359150614cc882614bc3565b90825260208401359080821115614cde57600080fd5b614cea86838701614732565b602084015260408501359150614cff82614bc3565b8160408401526060850135915080821115614d1957600080fd5b50614d2685828601614732565b6060830152505092915050565b6000806000806000806000806000806101408b8d031215614d5357600080fd5b8a359950614d6360208c01614bd1565b9850614d7160408c01614bdc565b975060608b01356001600160401b0380821115614d8d57600080fd5b614d998e838f01614beb565b9850614da760808e01614bd1565b9750614db560a08e01614c70565b965060c08d0135915080821115614dcb57600080fd5b614dd78e838f01614beb565b9550614de560e08e01614bd1565b94506101008d013593506101208d0135915080821115614e0457600080fd5b50614e118d828e01614c7f565b9150509295989b9194979a5092959850565b600060208284031215614e3557600080fd5b813561170e8161465b565b60008151808452602080850194506020840160005b83811015614e7557815161ffff1687529582019590820190600101614e55565b509495945050505050565b614e8a818961497b565b614e97602082018861498f565b60e060408201526000614ead60e0830188614e40565b8281036060840152614ebf8188614e40565b905085608084015282810360a0840152614ed98186614b56565b91505060018060a01b03831660c083015298975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561044a5761044a614ef6565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614f4b57600080fd5b9190910192915050565b600060408236031215614f6757600080fd5b604080519081016001600160401b038082118383101715614f8a57614f8a6146c5565b816040528435915080821115614f9f57600080fd5b614fab36838701614732565b83526020850135915080821115614fc157600080fd5b50614fce36828601614732565b60208301525092915050565b8181038181111561044a5761044a614ef6565b600060208284031215614fff57600080fd5b815161170e8161465b565b60006020828403121561501c57600080fd5b5051919050565b60008261504057634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561505757600080fd5b815161170e81614bc3565b61ffff818116838216019080821115612beb57612beb614ef6565b60008151808452602080850194506020840160005b83811015614e755781516001600160a01b031687529582019590820190600101615092565b6001600160a01b0385168152602080820185905260806040808401829052855184830181905260009360a092909183870190600581901b880185018a8501885b83811015615173578a8303609f190185528151805189855261511b8a860182614886565b9050888201516009811061513157615131614965565b858a01528188015188860152606080830151151590860152908a01518482038b8601529061515f8183614886565b9689019694505050908601906001016150f7565b505088810360608a0152615187818b61507d565b9d9c50505050505050505050505050565b6020808252603f908201527f546f6b656e206d757374206861766520696d616765206d65746164617461206160408201527f742061637469766520736c6f74207768656e20706172746963706174696e6700606082015260800190565b60208152600061170e6020830184614e40565b808202811582820484141761044a5761044a614ef6565b60006001820161523157615231614ef6565b5060010190565b6000815260008251615251816001850160208701614862565b9190910160010192915050565b6a600b5981380380925939f360a81b8152815160009061528581600b850160208701614862565b91909101600b0192915050565b600083516152a4818460208801614862565b8351908301906152b8818360208801614862565b01949350505050565b634e487b7160e01b600052603160045260246000fd5b60008251614f4b818460208701614862565b6040815260006152fc6040830185614886565b90508260208301529392505050565b60008060006060848603121561532057600080fd5b83516001600160401b0381111561533657600080fd5b8401601f8101861361534757600080fd5b80516153556147518261470b565b81815287602083850101111561536a57600080fd5b61537b826020830160208601614862565b809550505050602084015161538f8161465b565b60408501519092506153a08161465b565b80915050925092509256fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc2a54fbf322eb9aa58a962240a1babced037cbfc539a425887a8d27817e0160ebde937289f46e805af8ee80434fd9460e355979dba7f43836f2456fceaf6ead863dfcd927ac9e2552184b368328e6cca04f875ef453930277d7dfa53f40dbeac4a26469706673582212207f51d67d25d2049300bf24aa746efc2d3b4776ba8ec50ef5e136c22b13be360464736f6c63430008160033",
896
+ "deployedBytecode": "0x6080604052600436106101055760003560e01c806301ffc9a71461010a5780631794bb3c1461013f57806320b365df1461016157806324cc64931461018f5780634eab1d15146101b25780634f1ef286146101c857806352d1902d146101db57806358f8699f146101f05780635ab53d9f1461021d578063715018a61461025157806377ece0ed1461026657806386f5caa0146102935780638da5cb5b146102a957806398a6e118146102be578063a2745897146102e7578063ad3cb1cc146102fd578063bdf1767a1461033b578063d4ae306814610368578063d8abc81814610388578063e8bc1f92146103a8578063f2fde38b146103d2578063f45fd0f3146103f2575b600080fd5b34801561011657600080fd5b5061012a610125366004614631565b610425565b60405190151581526020015b60405180910390f35b34801561014b57600080fd5b5061015f61015a366004614670565b610450565b005b34801561016d57600080fd5b506101826c447e69651d841bd8d104bed49381565b60405161013691906146b1565b34801561019b57600080fd5b506101a4600581565b604051908152602001610136565b3480156101be57600080fd5b506101a461280081565b61015f6101d6366004614788565b6105af565b3480156101e757600080fd5b506101a46105ce565b3480156101fc57600080fd5b5061021061020b3660046147d7565b6105eb565b60405161013691906148b2565b34801561022957600080fd5b5061023d610238366004614939565b6108a9565b604051610136989796959493929190614a5a565b34801561025d57600080fd5b5061015f610bc8565b34801561027257600080fd5b50610286610281366004614ac4565b610bdc565b6040516101369190614add565b34801561029f57600080fd5b506101a460015481565b3480156102b557600080fd5b50610182610bff565b3480156102ca57600080fd5b506101a471706f73746d696e74706172616d657465727360701b81565b3480156102f357600080fd5b506101a4613c0081565b34801561030957600080fd5b5061032e604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101369190614b21565b34801561034757600080fd5b5061035b610356366004614b34565b610c1a565b6040516101369190614bb0565b34801561037457600080fd5b5061015f610383366004614d33565b610d2d565b34801561039457600080fd5b50600054610182906001600160a01b031681565b3480156103b457600080fd5b506103bd610ea3565b60408051928352602083019190915201610136565b3480156103de57600080fd5b5061015f6103ed366004614e23565b610ec2565b3480156103fe57600080fd5b5061041261040d366004614ac4565b610f00565b6040516101369796959493929190614e80565b60006001600160e01b031982166358f8699f60e01b148061044a575061044a826110c1565b92915050565b600061045a6110f6565b805490915060ff600160401b82041615906001600160401b03166000811580156104815750825b90506000826001600160401b0316600114801561049d5750303b155b9050811580156104ab575080155b156104c95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156104f257845460ff60401b1916600160401b1785555b6104fb8861111a565b61050361112b565b600080546001600160a01b0319166001600160a01b038916908117909155600187905560408051918252602082018890527facb755af0ec3542ca6af3a79dcbe8f0b12f9d3ed27c17a0bbdc16244fed42bbc910160405180910390a183156105a557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6105b7611133565b6105c0826111d8565b6105ca82826111e0565b5050565b60006105d8611299565b506000805160206153ac83398151915290565b60608160006105fb826004614f0c565b9050806001600160401b03811115610615576106156146c5565b60405190808252806020026020018201604052801561065a57816020015b60408051808201909152606080825260208201528152602001906001900390816106335790505b50925060005b828110156106ba5785858281811061067a5761067a614f1f565b905060200281019061068c9190614f35565b61069590614f55565b8482815181106106a7576106a7614f1f565b6020908102919091010152600101610660565b5060006106c6876112e2565b6000818152600360209081526040808320546002835281842060ff909116808552908352928190208151608081018352600992810192835268696d6167654461746160b81b6060820152918252805494955092939091820190610731906001600160a01b03166112f1565b81525086868151811061074657610746614f1f565b60209081029190910181019190915260408051608081018252600991810191825268736f756e644461746160b81b606082015290815260018301549091820190610798906001600160a01b03166112f1565b9052866107a6876001614f0c565b815181106107b6576107b6614f1f565b602002602001018190525060405180604001604052806040518060400160405280600981526020016873656e64537461746560b81b81525081526020016108046107ff86611326565b61136b565b905286610812876002614f0c565b8151811061082257610822614f1f565b602002602001018190525060405180604001604052806040518060400160405280600c81526020016b72656365697665537461746560a01b815250815260200161087361086e8661140f565b611470565b905286610881876003614f0c565b8151811061089157610891614f1f565b60200260200101819052505050505050949350505050565b6000806060806000806000806108be8b6115af565b50602489111561090f5760405162461bcd60e51b81526020600482015260176024820152766d61785265636569766520697320746f6f206c6172676560481b60448201526064015b60405180910390fd5b891561091b5789610926565b610926600143614fda565b9050610933600143614fda565b8111156109a15760405162461bcd60e51b815260206004820152603660248201527f426c6f636b206e756d62657220696e20667574757265202d206e65656420626c6044820152751bd8dac81a185cda081d1bc81899481919599a5b995960521b6064820152608401610906565b804080610a115760405162461bcd60e51b815260206004820152603860248201527f626c6f636b2068617368206e6f7420617661696c61626c65202d206d75737420604482015277626520696e206c6173746573742032353620626c6f636b7360401b6064820152608401610906565b610a1a8c611326565b9850610a258c61140f565b9750610a3160046115e2565b9450610a3d60066115e2565b60008d8152600860205260409020909450610a57906115e2565b92506000886003811115610a6d57610a6d614965565b03610ae857604080516000808252602082019092528a918a9190610aa7565b610a9461459b565b815260200190600190039081610a8c5790505b506040805160008082526020820190925290610ad9565b610ac661459b565b815260200190600190039081610abe5790505b50985098509850985050610bbb565b6001886003811115610afc57610afc614965565b03610b2157610b0c8c828c6116a5565b9650610b198c828c611715565b955050610bbb565b6002886003811115610b3557610b35614965565b03610b5157610b458c828c6118e1565b9097509550610bbb9050565b6003886003811115610b6557610b65614965565b03610bb957610b758c828c611715565b604080516000808252602082019092529197508a918a91610bac565b610b9961459b565b815260200190600190039081610b915790505b5098509850985050610bbb565b505b9397509397509397509397565b610bd0611b67565b610bda6000611b99565b565b6060610be7826115af565b50600082815260086020526040902061044a90611bf5565b600080610c0a611c90565b546001600160a01b031692915050565b610c226145d3565b610c2b836115af565b5060058210610c6b5760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081cdb1bdd60a21b6044820152606401610906565b6000838152600260209081526040808320858452909152902080546001600160a01b0316610ca85760405180602001604052806000815250610cbc565b8054610cbc906001600160a01b0316611cb4565b82528054600160a01b900461ffff16602083015260018101546001600160a01b0316610cf75760405180602001604052806000815250610d0e565b6001810154610d0e906001600160a01b0316611cb4565b604083015260010154600160a01b900461ffff16606082015292915050565b61ffff8a10610d755760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b2103a37b5b2b710373ab6b132b960611b6044820152606401610906565b600080610d828c33611cd5565b9150915081610df65760405162461bcd60e51b815260206004820152603a60248201527f4f6e6c79206f776e6572206f722076616c69642064656c65676174652e78797a60448201527908158c881bd9881d1bdad95b881bdddb995c88185b1b1bddd95960321b6064820152608401610906565b8a80610dff5750875b80610e075750845b610e5f5760405162461bcd60e51b8152602060048201526024808201527f4174206c65617374206f6e6520757064617465206d7573742062652070726f766044820152631a59195960e21b6064820152608401610906565b8415610e7157610e718c858584611e26565b8a15610e8357610e838c8b8b846123de565b8715610e9557610e958c888884612803565b505050505050505050505050565b600080610eb060046115e2565b610eba60066115e2565b915091509091565b610eca611b67565b6001600160a01b038116610ef4576000604051631e4fbdf760e01b815260040161090691906146b1565b610efd81611b99565b50565b6000806060806000610f106145d3565b6000610f1b886115af565b50610f2588611326565b9650610f308861140f565b6000898152600960205260409020909650610f4a90612bc7565b6000898152600a60205260409020909550610f6490612bc7565b6000898152600360209081526040808320546002835281842060ff90911680855292529091208054929650909450906001600160a01b0316610fb55760405180602001604052806000815250610fc9565b8054610fc9906001600160a01b0316611cb4565b83528054600160a01b900461ffff16602084015260018101546001600160a01b0316611004576040518060200160405280600081525061101b565b600181015461101b906001600160a01b0316611cb4565b6040840152600181810154600160a01b900461ffff16606085015254600090611044908b612c8c565b6000546040516331a9108f60e11b8152600481018390529192506001600160a01b031690636352211e90602401602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b29190614fed565b92505050919395979092949650565b60006001600160e01b031982166358f8699f60e01b148061044a57506301ffc9a760e01b6001600160e01b031983161461044a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611122612ca6565b610efd81612ccb565b610bda612ca6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806111ba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111ae6000805160206153ac833981519152546001600160a01b031690565b6001600160a01b031614155b15610bda5760405163703e46dd60e11b815260040160405180910390fd5b610efd611b67565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561123a575060408051601f3d908101601f191682019092526112379181019061500a565b60015b6112595781604051634c9c8ce360e01b815260040161090691906146b1565b6000805160206153ac833981519152811461128a57604051632a87526960e21b815260048101829052602401610906565b6112948383612cd3565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bda5760405163703e46dd60e11b815260040160405180910390fd5b600061044a620f424083615023565b60606001600160a01b03821661131557505060408051602081019091526000815290565b61044a61132183611cb4565b612d29565b6000611333600483612d4d565b1561134057506001919050565b600082815260096020526040902061135790612d65565b61136357506002919050565b506000919050565b6060600182600281111561138157611381614965565b146113e857600282600281111561139a5761139a614965565b146113c4576040518060400160405280600781526020016613995d5d1c985b60ca1b81525061044a565b6040518060400160405280600681526020016553656e64546f60d01b81525061044a565b505060408051808201909152600b81526a14d95b9911d95b995c985b60aa1b602082015290565b600061141c600683612d4d565b1561142957506001919050565b6000828152600a6020526040902061144090612d65565b61144c57506002919050565b600082815260036020526040902054610100900460ff161561136357506003919050565b6060600082600381111561148657611486614965565b036114ae57505060408051808201909152600781526613995d5d1c985b60ca1b602082015290565b60018260038111156114c2576114c2614965565b036114f157505060408051808201909152600e81526d149958d95a5d9951d95b995c985b60921b602082015290565b600282600381111561150557611505614965565b0361153157505060408051808201909152600b81526a5265636569766546726f6d60a81b602082015290565b600382600381111561154557611545614965565b0361156f57505060408051808201909152600981526852656365697665546f60b81b602082015290565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207265636569766520737461746560581b6044820152606401610906565b600061ffff8211156115de576040516306dfcc6560e41b81526010600482015260248101839052604401610906565b5090565b80546000908082036115f75750600092915050565b600083611605600184614fda565b8154811061161557611615614f1f565b6000918252602082200154915081608081901c801561163657600892508091505b50604081901c801561164c576004830192508091505b50602081901c8015611662576002830192508091505b50601081901c8015611675576001830192505b508190506004611686600186614fda565b61169192911b614f0c565b61169c906001614f0c565b95945050505050565b606060006116b360046115e2565b905060008382116116c457816116c6565b835b9050600085876040516020016116e6929190918252602082015260400190565b6040516020818303038152906040528051906020012090506117088183612d73565b93505050505b9392505050565b600083815260086020526040812060609190611730906115e2565b90508060000361177457604080516000808252602082019092529061176b565b61175861459b565b8152602001906001900390816117505790505b5091505061170e565b60008382116117835781611785565b835b9050600085876040516020016117a5929190918252602082015260400190565b60405160208183030381529060405280519060200120905060006117c98285612eda565b905060006117d78285613039565b90506000846001600160401b038111156117f3576117f36146c5565b60405190808252806020026020018201604052801561182c57816020015b61181961459b565b8152602001906001900390816118115790505b50600154600080548d825260086020526040822093945091926001600160a01b0390921691905b888110156118cf57600061188987838151811061187257611872614f1f565b6020026020010151846130c890919063ffffffff16565b61ffff169050600061189b8683612c8c565b90506118a8828287613159565b8784815181106118ba576118ba614f1f565b60209081029190910101525050600101611853565b50929c9b505050505050505050505050565b6000838152600a6020526040812060609182916118fd90612bc7565b8051909150600081900361197a57604080516000808252602082019092529061193c565b61192961459b565b8152602001906001900390816119215790505b50604080516000808252602082019092529061196e565b61195b61459b565b8152602001906001900390816119535790505b50935093505050611b5f565b6040805160208082018990528183018a90528251808303840181526060909201909252805191012060006119ae8284612eda565b905060006119bf8a8686858c613277565b805190915060006119d38c8888878e613433565b8051909150806001600160401b038111156119f0576119f06146c5565b604051908082528060200260200182016040528015611a2957816020015b611a1661459b565b815260200190600190039081611a0e5790505b5060015460008054929c5090916001600160a01b0316905b83811015611aa1576000858281518110611a5d57611a5d614f1f565b60200260200101519050611a7b81611a758684612c8c565b85613159565b8e8381518110611a8d57611a8d614f1f565b602090810291909101015250600101611a41565b50846001600160401b03811115611aba57611aba6146c5565b604051908082528060200260200182016040528015611af357816020015b611ae061459b565b815260200190600190039081611ad85790505b509a5060005b85811015611b53576000878281518110611b1557611b15614f1f565b60200260200101519050611b2d81611a758684612c8c565b8d8381518110611b3f57611b3f614f1f565b602090810291909101015250600101611af9565b50505050505050505050505b935093915050565b33611b70610bff565b6001600160a01b031614610bda573360405163118cdaa760e01b815260040161090691906146b1565b6000611ba3611c90565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60606000611c02836115e2565b90506000816001600160401b03811115611c1e57611c1e6146c5565b604051908082528060200260200182016040528015611c47578160200160208202803683370190505b50905060005b82811015611c8857611c5f85826130c8565b61ffff16828281518110611c7557611c75614f1f565b6020908102919091010152600101611c4d565b509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b606061044a826001611cd0816001600160a01b0384163b614fda565b6135d3565b6000806000611ce660015486612c8c565b6000546040516331a9108f60e11b8152600481018390529192506001600160a01b031690636352211e90602401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d549190614fed565b9150816001600160a01b0316846001600160a01b03161480611e1c5750600054604051632e7cda1d60e21b81526001600160a01b038087166004830152808516602483015290911660448201526064810182905271706f73746d696e74706172616d657465727360701b60848201526c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa158015611df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1c9190615045565b9250509250929050565b60058310611e6c5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081858dd1a5d99481cdb1bdd606a1b6044820152606401610906565b6000848152600360209081526040808320546002835281842087855290925290912060ff909116841480159190611f3057835180611eb3575080546001600160a01b031615155b611f305760405162461bcd60e51b815260206004820152604260248201527f4e65772061637469766520736c6f74206d757374206861766520696d6167652060448201527f6d65746164617461207768656e207570646174696e672061637469766520736c6064820152611bdd60f21b608482015260a401610906565b6000611f3e60015488612c8c565b8551909150156120f357600085602001515111611faf5760405162461bcd60e51b815260206004820152602960248201527f496d6167652064617461206d7573742062652070726f7669646564207768656e604482015268207570646174696e6760b81b6064820152608401610906565b613c00856020015151111561202c5760405162461bcd60e51b815260206004820152603e60248201527f496d6167652064617461206d757374206265206c657373207468616e206f722060448201527f657175616c20746f204d41585f494d4147455f444154415f4c454e47544800006064820152608401610906565b61203985602001516135f6565b82546001600160a01b0319166001600160a01b0391909116178083556001908390601490612073908490600160a01b900461ffff16615062565b92506101000a81548161ffff021916908361ffff16021790555060008051602061540c83398151915260008054906101000a90046001600160a01b0316826120cd898660000160149054906101000a900461ffff1661369b565b6120d68861378b565b6040516120e694939291906150b7565b60405180910390a1612159565b602085015151156121595760405162461bcd60e51b815260206004820152602a60248201527f496d6167652064617461206d75737420626520656d707479207768656e206e6f60448201526974207570646174696e6760b01b6064820152608401610906565b8460400151156122e75784606001515160000361221d57600182810180546001600160a01b03191680825560149061219d908490600160a01b900461ffff16615062565b92506101000a81548161ffff021916908361ffff16021790555060008051602061540c83398151915260008054906101000a90046001600160a01b0316826121f7898660010160149054906101000a900461ffff166137e3565b6122008861378b565b60405161221094939291906150b7565b60405180910390a161234d565b612800856060015151111561229a5760405162461bcd60e51b815260206004820152603e60248201527f536f756e642064617461206d757374206265206c657373207468616e206f722060448201527f657175616c20746f204d41585f534f554e445f444154415f4c454e47544800006064820152608401610906565b6122a785606001516135f6565b600183810180546001600160a01b0319166001600160a01b03939093169290921780835590919060149061219d908490600160a01b900461ffff16615062565b6060850151511561234d5760405162461bcd60e51b815260206004820152602a60248201527f536f756e642064617461206d75737420626520656d707479207768656e206e6f60448201526974207570646174696e6760b01b6064820152608401610906565b60008781526003602052604090205460ff1686146123d55761236e86613883565b6000888152600360205260408120805460ff191660ff93909316929092179091555460008051602061540c833981519152906001600160a01b0316826123b3896138b1565b6123bc8861378b565b6040516123cc94939291906150b7565b60405180910390a15b50505050505050565b6000848152600260209081526040808320600383528184205460ff1684529091529020546001600160a01b03166124275760405162461bcd60e51b815260040161090690615198565b600283600281111561243b5761243b614965565b146124945781511561248f5760405162461bcd60e51b815260206004820152601d60248201527f746f6b656e7353656e64696e67546f206d75737420626520656d7074790000006044820152606401610906565b6124ef565b60008251116124ef5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e7353656e64696e67546f206d757374206265206e6f6e2d656d70746044820152607960f81b6064820152608401610906565b6019825111156125735760405162461bcd60e51b815260206004820152604360248201527f746f6b656e7353656e64696e67546f206d757374206265206c6573732074686160448201527f6e206f7220657175616c20746f204d41585f53454e44494e475f544f5f4c454e60648201526208ea8960eb1b608482015260a401610906565b600061258160015486612c8c565b9050600061258e86611326565b905060018160028111156125a4576125a4614965565b036125ba576125b4600487613967565b506126a9565b60028160028111156125ce576125ce614965565b036126a95760008681526009602052604081206125ea90612bc7565b805190915060005b8181101561264b57600083828151811061260e5761260e614f1f565b602002602001015161ffff1690506126418a6008600084815260200190815260200160002061396790919063ffffffff16565b50506001016125f2565b50600088815260096020526040902061266390613aa2565b6000805460408051928352602083019081905286926001600160a01b03909216916000805160206153ec8339815191529161269e91906151f5565b60405180910390a350505b60018560028111156126bd576126bd614965565b036126d3576126cd600487613ab2565b50612765565b60028560028111156126e7576126e7614965565b036127655760008681526009602052604090206127049085613bab565b835160005b8181101561276257600086828151811061272557612725614f1f565b602002602001015161ffff1690506127588960086000848152602001908152602001600020613ab290919063ffffffff16565b5050600101612709565b50505b60005460008051602061540c833981519152906001600160a01b03168361278b88613d8b565b6127948761378b565b6040516127a494939291906150b7565b60405180910390a160028560028111156127c0576127c0614965565b036127fb5760005460405183916001600160a01b0316906000805160206153ec833981519152906127f29088906151f5565b60405180910390a35b505050505050565b6000848152600260209081526040808320600383528184205460ff1684529091529020546001600160a01b031661284c5760405162461bcd60e51b815260040161090690615198565b600283600381111561286057612860614965565b146128c3578151156128be5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e73526563656976696e6746726f6d206d75737420626520656d70746044820152607960f81b6064820152608401610906565b612922565b60008251116129225760405162461bcd60e51b815260206004820152602560248201527f746f6b656e73526563656976696e6746726f6d206d757374206265206e6f6e2d604482015264656d70747960d81b6064820152608401610906565b6103e8825111156129b55760405162461bcd60e51b815260206004820152605160248201527f746f6b656e73526563656976696e6746726f6d206d757374206265206c65737360448201527f207468616e206f7220657175616c20746f204d41585f524543454956494e475f60648201527008ca49e9abe82a4a482b2be988a9c8ea89607b1b608482015260a401610906565b60006129c360015486612c8c565b905060006129d08661140f565b905060018160038111156129e6576129e6614965565b036129fc576129f6600687613967565b50612aa5565b6002816003811115612a1057612a10614965565b03612a74576000868152600a60205260409020612a2c90613aa2565b6000805460408051928352602083019081905284926001600160a01b03909216916000805160206153cc83398151915291612a6791906151f5565b60405180910390a3612aa5565b6003816003811115612a8857612a88614965565b03612aa5576000868152600360205260409020805461ff00191690555b6001856003811115612ab957612ab9614965565b03612acf57612ac9600687613ab2565b50612b3a565b6002856003811115612ae357612ae3614965565b03612b05576000868152600a60205260409020612b009085613bab565b612b3a565b6003856003811115612b1957612b19614965565b03612b3a576000868152600360205260409020805461ff0019166101001790555b60005460008051602061540c833981519152906001600160a01b031683612b6088613e3c565b612b698761378b565b604051612b7994939291906150b7565b60405180910390a16002856003811115612b9557612b95614965565b036127fb5760005460405183916001600160a01b0316906000805160206153cc833981519152906127f29088906151f5565b80546060906001600160a01b0316612bf25760408051600080825260208201909252905b5092915050565b8154600090612c09906001600160a01b0316611cb4565b602081015190915060c01c806001600160401b03811115612c2c57612c2c6146c5565b604051908082528060200260200182016040528015612c55578160200160208202803683370190505b5092506028820160005b82811015612c8357815160f01c602082810287010152600290910190600101612c5f565b50505050919050565b600081612c9c620f424085615208565b61170e9190614f0c565b612cae613eb9565b610bda57604051631afcd79f60e31b815260040160405180910390fd5b610eca612ca6565b612cdc82613ed3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d21576112948282613f2f565b6105ca613f9c565b6060612d3482613fbb565b8051613078825260020160011990910190815292915050565b6000612d5c8360010183614021565b15159392505050565b546001600160a01b03161590565b606081600003612db6576040805160008082526020820190925290612dae565b612d9b61459b565b815260200190600190039081612d935790505b50905061044a565b6000612dc260046115e2565b90506000612dd08583612eda565b90506000612dde8286613039565b80519091506000816001600160401b03811115612dfd57612dfd6146c5565b604051908082528060200260200182016040528015612e3657816020015b612e2361459b565b815260200190600190039081612e1b5790505b506001546000805492935090916001600160a01b0316905b84811015612ecb576000612e85878381518110612e6d57612e6d614f1f565b602002602001015160046130c890919063ffffffff16565b61ffff1690506000612e978583612c8c565b9050612ea4828286613159565b868481518110612eb657612eb6614f1f565b60209081029190910101525050600101612e4e565b50919998505050505050505050565b612f256040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160401b0316815260200160006001600160401b031681525090565b60008211612f6a5760405162461bcd60e51b815260206004820152601260248201527104665697374656c57616c6b4c69623a4e3d360741b6044820152606401610906565b818152612f7682614046565b60208201819052612f8690614093565b6040808301919091526002606083015251612fc390849084906020019182526906665697374656c2e6b360b41b6020830152602a820152604a0190565b60408051808303601f1901815291815281516020928301206001600160401b031660808401528051918201859052696665697374656c2e6b3160b01b90820152604a8101839052606a0160408051601f1981840301815291905280516020909101206001600160401b031660a082015292915050565b815160609082111561304a57825191505b816001600160401b03811115613062576130626146c5565b60405190808252806020026020018201604052801561308b578160200160208202803683370190505b50905060005b82811015612beb576130a384826140f0565b8282815181106130b5576130b5614f1f565b6020908102919091010152600101613091565b60006130d3836115e2565b82106131325760405162461bcd60e51b815260206004820152602860248201527f456e756d657261626c6553657455696e7431363a20696e646578206f7574206f6044820152676620626f756e647360c01b6064820152608401610906565b5060009182526020909120600482811c9091015461ffff9290911b60f0161c166000190190565b61316161459b565b6040516331a9108f60e11b8152600481018490526000906001600160a01b03841690636352211e90602401602060405180830381865afa1580156131a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cd9190614fed565b6000868152600360209081526040808320546002835281842060ff90911680855290835292208886526001600160a01b038085169287019290925280549394509192161561322f578054613229906001600160a01b0316611cb4565b60408501525b60018101546001600160a01b03161561325f576001810154613259906001600160a01b0316611cb4565b60608501525b61326883614171565b60808501525050509392505050565b6060816001600160401b03811115613291576132916146c5565b6040519080825280602002602001820160405280156132ba578160200160208202803683370190505b509050600080836001600160401b038111156132d8576132d86146c5565b604051908082528060200260200182016040528015613301578160200160208202803683370190505b5090506000805b878110156134255760008061331d89846140f0565b90508a818151811061333157613331614f1f565b602002602001015161ffff169150508a810361334d575061341d565b6000805b8481101561338a578286828151811061336c5761336c614f1f565b602002602001015103613382576001915061338a565b600101613351565b50801561339857505061341d565b60008c81526008602052604090206133b09083612d4d565b1561340c57818787815181106133c8576133c8614f1f565b6020908102919091010152856133dd8161521f565b965050818585806133ed9061521f565b9650815181106133ff576133ff614f1f565b6020026020010181815250505b87861061341a575050613425565b50505b600101613308565b505050815295945050505050565b6060816001600160401b0381111561344d5761344d6146c5565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b509050600080836001600160401b03811115613494576134946146c5565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b5090506000805b87811015613425576000806134d989846140f0565b90508a81815181106134ed576134ed614f1f565b602002602001015161ffff169150508a810361350957506135cb565b6000805b84811015613546578286828151811061352857613528614f1f565b60200260200101510361353e5760019150613546565b60010161350d565b5080156135545750506135cb565b61355f600483612d4d565b156135c8578187878151811061357757613577614f1f565b60209081029190910101528561358c8161521f565b9650508185858061359c9061521f565b9650815181106135ae576135ae614f1f565b6020026020010181815250508786106135c8575050613425565b50505b6001016134c4565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b6000808260405160200161360a9190615238565b604051602081830303815290604052905060008160405160200161362e919061525e565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166136945760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610906565b5050919050565b606060006040518060400160405280601081526020016f125b5859d955995c9cda5bdb94db1bdd60821b8152506136d185614235565b6040516020016136e2929190615292565b60408051808303601f190181526001808452838301909252925060009190816020015b61370d614603565b8152602001906001900390816137055750506040805160a081019091528381529091506020810160035b81526020018561ffff1660001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061377857613778614f1f565b6020908102919091010152949350505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106137c5576137c5614f1f565b6001600160a01b039092166020928302919091019091015292915050565b606060006040518060400160405280601081526020016f14dbdd5b9915995c9cda5bdb94db1bdd60821b81525061381985614235565b60405160200161382a929190615292565b60408051808303601f190181526001808452838301909252925060009190816020015b613855614603565b81526020019060019003908161384d5750506040805160a08101909152838152909150602081016003613737565b600060ff8211156115de576040516306dfcc6560e41b81526008600482015260248101839052604401610906565b60408051600180825281830190925260609160009190816020015b6138d4614603565b8152602001906001900390816138cc579050506040805160e08101909152600a60a08201908152691058dd1a5d9954db1bdd60b21b60c0830152815290915060208101600381526020018460001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061395657613956614f1f565b602090810291909101015292915050565b6000806139778460010184614021565b90508060000361398b57600091505061044a565b60006001613998866115e2565b6139a29190614fda565b905060006139b1600184614fda565b9050600482901c600f8316838314613a215760008881526020902082810154600485811c928301805461ffff60f089851b1681811b199092169387901b9490941c9093169283901b91909117905590600f8516613a1d6001808d0190613a179086614fda565b8a6142c7565b5050505b6000888152602090208201805461ffff600484901b1b19169081905515808015613a5757508854613a5490600190614fda565b83145b15613a84578854899080613a6d57613a6d6152c1565b600190038181906000526020600020016000905590555b613a93896001018960006142c7565b50600198975050505050505050565b80546001600160a01b0319169055565b600061ffff82811610613b135760405162461bcd60e51b8152602060048201526024808201527f456e756d657261626c6553657455696e7431363a2076616c756520746f6f206c6044820152636172676560e01b6064820152608401610906565b613b1d8383612d4d565b15613b2a5750600061044a565b6000613b35846115e2565b8454909150600482901c90600f8316908210613b61578554600181018755600087815260208120909101555b6000868152602090208201805461ffff600484811b91821b19909216600189810190921b1790925583901b8217810190613b9e90880187836142c7565b5060019695505050505050565b80516000819003613bc857505080546001600160a01b0319169055565b61ffff811115613c2a5760405162461bcd60e51b815260206004820152602760248201527f546f74616c206279746573206c656e67746820657863656564732075696e74316044820152660d881b1a5b5a5d60ca1b6064820152608401610906565b6000613c37826002615208565b90506000613c46826008614f0c565b90506000613c55826020614f0c565b6001600160401b03811115613c6c57613c6c6146c5565b6040519080825280601f01601f191660200182016040528015613c96576020820181803683370190505b5060c085901b602082015290506028810160005b85811015613d5857600086613cc0836010614f0c565b10613ccb5786613cd6565b613cd6826010614f0c565b90506000805b613ce68484614fda565b811015613d3c57613cf8816010615208565b613d039060f0614fda565b8a613d0e8387614f0c565b81518110613d1e57613d1e614f1f565b602090810291909101015161ffff16901b9190911790600101613cdc565b50835250602090910190613d51601082614f0c565b9050613caa565b505081815280613d67816135f6565b87546001600160a01b0319166001600160a01b039190911617909655505050505050565b60408051600180825281830190925260609160009190816020015b613dae614603565b815260200190600190039081613da65750506040805160e081018252600960a082019081526853656e64537461746560b81b60c08301528152600160208201529192508101846002811115613e0557613e05614965565b60001b8152602001600015158152602001604051806020016040528060008152508152508160008151811061395657613956614f1f565b60408051600180825281830190925260609160009190816020015b613e5f614603565b815260200190600190039081613e575750506040805160e081018252600c60a082019081526b52656365697665537461746560a01b60c08301528152600160208201529192508101846003811115613e0557613e05614965565b6000613ec36110f6565b54600160401b900460ff16919050565b806001600160a01b03163b600003613f005780604051634c9c8ce360e01b815260040161090691906146b1565b6000805160206153ac83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613f4c91906152d7565b600060405180830381855af49150503d8060008114613f87576040519150601f19603f3d011682016040523d82523d6000602084013e613f8c565b606091505b509150915061169c8583836142f7565b3415610bda5760405163b398979f60e01b815260040160405180910390fd5b8051604051818001600282019081526f30313233343536373839616263646566600f52918301906022015b81841461401157600184019350600f845116516001820153600f845160041c16518153600201613fe6565b6000815260200160405250919050565b600481811c600090815260209390935260409092205460f09190921b161c61ffff1690565b60006001821161405857506001919050565b5060001901600181811c909117600281901c17600481901c17600881901c17601081901c17602081901c17604081901c17608081901c170190565b60008082116140d25760405162461bcd60e51b815260206004820152600b60248201526a6c6f67326365696c28302960a81b6044820152606401610906565b6001820391505b81156140eb57600191821c91016140d9565b919050565b815160009082106141395760405162461bcd60e51b81526020600482015260136024820152722332b4b9ba32b62bb0b635a634b11d359f1ea760691b6044820152606401610906565b825160010361414a5750600061044a565b61170e82846000015185602001518660400151876060015188608001518960a0015161434a565b604051606082811b6001600160601b03191660208301529073eeeeeeee14d718c2b47d9923deab1335e144eeee90635d78a21790603401604051602081830303815290604052603c6040518363ffffffff1660e01b81526004016141d69291906152e9565b600060405180830381865afa92505050801561421457506040513d6000823e601f3d908101601f19168201604052614211919081019061530b565b60015b61422c57505060408051602081019091526000815290565b50909392505050565b60606000614242836143a8565b60010190506000816001600160401b03811115614261576142616146c5565b6040519080825280601f01601f19166020018201604052801561428b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461429557509392505050565b600482811c6000908152602094909452604090932080549290931b60f01690811b61ffff90911b19909116179055565b60608261430c576143078261447e565b61170e565b815115801561432357506001600160a01b0384163b155b156143435783604051639996b31560e01b815260040161090691906146b1565b508061170e565b60008660010361435c5750600061439d565b8760005b6020811015614397576000614379838a8a8a8a8a6144a7565b90508981101561438d57925061439d915050565b9150600101614360565b50889150505b979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106143e75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614411576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061442f57662386f26fc10000830492506010015b6305f5e1008310614447576305f5e100830492506008015b612710831061445b57612710830492506004015b6064831061446d576064830492506002015b600a831061044a5760010192915050565b80511561448e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000856001036144b957506000614591565b856002036144e35760018316156144da576144d5876001614fda565b6144dc565b865b9050614591565b600060028604808703600180831b03600180831b039150808b16828c851c166001600160401b038116898118905080600d1b811890508060071c811890508060111b811890508060051c81189050838184181693508192508391506001600160401b0382169050600189188118905080600d1b811890508060071c811890508060111b811890508060051c8118905084818418169350508091508290508181861b1795505050505050809150505b9695505050505050565b6040518060a001604052806000815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600061ffff16815260200160608152602001600061ffff1681525090565b6040805160a08101909152606081526020810160008152600060208201819052604082015260609081015290565b60006020828403121561464357600080fd5b81356001600160e01b03198116811461170e57600080fd5b6001600160a01b0381168114610efd57600080fd5b60008060006060848603121561468557600080fd5b83356146908161465b565b925060208401356146a08161465b565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614703576147036146c5565b604052919050565b60006001600160401b03821115614724576147246146c5565b50601f01601f191660200190565b600082601f83011261474357600080fd5b81356147566147518261470b565b6146db565b81815284602083860101111561476b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561479b57600080fd5b82356147a68161465b565b915060208301356001600160401b038111156147c157600080fd5b6147cd85828601614732565b9150509250929050565b600080600080606085870312156147ed57600080fd5b84356147f88161465b565b93506020850135925060408501356001600160401b038082111561481b57600080fd5b818701915087601f83011261482f57600080fd5b81358181111561483e57600080fd5b8860208260051b850101111561485357600080fd5b95989497505060200194505050565b60005b8381101561487d578181015183820152602001614865565b50506000910152565b6000815180845261489e816020860160208601614862565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561492b57888303603f19018552815180518785526148ff88860182614886565b91890151858303868b01529190506149178183614886565b9689019694505050908601906001016148db565b509098975050505050505050565b60008060006060848603121561494e57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052602160045260246000fd5b6003811061498b5761498b614965565b9052565b6004811061498b5761498b614965565b600082825180855260208086019550808260051b84010181860160005b84811015614a4d57858303601f19018952815180518452848101516001600160a01b03168585015260408082015160a08287018190529190614a0083880182614886565b9250505060608083015186830382880152614a1b8382614886565b9250505060808083015192508582038187015250614a398183614886565b9a86019a94505050908301906001016149bc565b5090979650505050505050565b6000610100614a69838c61497b565b614a76602084018b61498f565b806040840152614a888184018a61499f565b90508281036060840152614a9c818961499f565b9150508560808301528460a08301528360c08301528260e08301529998505050505050505050565b600060208284031215614ad657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015614b1557835183529284019291840191600101614af9565b50909695505050505050565b60208152600061170e6020830184614886565b60008060408385031215614b4757600080fd5b50508035926020909101359150565b6000815160808452614b6b6080850182614886565b9050602083015161ffff8082166020870152604085015191508583036040870152614b968383614886565b925080606086015116606087015250508091505092915050565b60208152600061170e6020830184614b56565b8015158114610efd57600080fd5b80356140eb81614bc3565b8035600381106140eb57600080fd5b600082601f830112614bfc57600080fd5b813560206001600160401b03821115614c1757614c176146c5565b8160051b614c268282016146db565b9283528481018201928281019087851115614c4057600080fd5b83870192505b8483101561439d57823561ffff81168114614c615760008081fd5b82529183019190830190614c46565b8035600481106140eb57600080fd5b600060808284031215614c9157600080fd5b604051608081016001600160401b038082118383101715614cb457614cb46146c5565b8160405282935084359150614cc882614bc3565b90825260208401359080821115614cde57600080fd5b614cea86838701614732565b602084015260408501359150614cff82614bc3565b8160408401526060850135915080821115614d1957600080fd5b50614d2685828601614732565b6060830152505092915050565b6000806000806000806000806000806101408b8d031215614d5357600080fd5b8a359950614d6360208c01614bd1565b9850614d7160408c01614bdc565b975060608b01356001600160401b0380821115614d8d57600080fd5b614d998e838f01614beb565b9850614da760808e01614bd1565b9750614db560a08e01614c70565b965060c08d0135915080821115614dcb57600080fd5b614dd78e838f01614beb565b9550614de560e08e01614bd1565b94506101008d013593506101208d0135915080821115614e0457600080fd5b50614e118d828e01614c7f565b9150509295989b9194979a5092959850565b600060208284031215614e3557600080fd5b813561170e8161465b565b60008151808452602080850194506020840160005b83811015614e7557815161ffff1687529582019590820190600101614e55565b509495945050505050565b614e8a818961497b565b614e97602082018861498f565b60e060408201526000614ead60e0830188614e40565b8281036060840152614ebf8188614e40565b905085608084015282810360a0840152614ed98186614b56565b91505060018060a01b03831660c083015298975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561044a5761044a614ef6565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614f4b57600080fd5b9190910192915050565b600060408236031215614f6757600080fd5b604080519081016001600160401b038082118383101715614f8a57614f8a6146c5565b816040528435915080821115614f9f57600080fd5b614fab36838701614732565b83526020850135915080821115614fc157600080fd5b50614fce36828601614732565b60208301525092915050565b8181038181111561044a5761044a614ef6565b600060208284031215614fff57600080fd5b815161170e8161465b565b60006020828403121561501c57600080fd5b5051919050565b60008261504057634e487b7160e01b600052601260045260246000fd5b500690565b60006020828403121561505757600080fd5b815161170e81614bc3565b61ffff818116838216019080821115612beb57612beb614ef6565b60008151808452602080850194506020840160005b83811015614e755781516001600160a01b031687529582019590820190600101615092565b6001600160a01b0385168152602080820185905260806040808401829052855184830181905260009360a092909183870190600581901b880185018a8501885b83811015615173578a8303609f190185528151805189855261511b8a860182614886565b9050888201516009811061513157615131614965565b858a01528188015188860152606080830151151590860152908a01518482038b8601529061515f8183614886565b9689019694505050908601906001016150f7565b505088810360608a0152615187818b61507d565b9d9c50505050505050505050505050565b6020808252603f908201527f546f6b656e206d757374206861766520696d616765206d65746164617461206160408201527f742061637469766520736c6f74207768656e20706172746963706174696e6700606082015260800190565b60208152600061170e6020830184614e40565b808202811582820484141761044a5761044a614ef6565b60006001820161523157615231614ef6565b5060010190565b6000815260008251615251816001850160208701614862565b9190910160010192915050565b6a600b5981380380925939f360a81b8152815160009061528581600b850160208701614862565b91909101600b0192915050565b600083516152a4818460208801614862565b8351908301906152b8818360208801614862565b01949350505050565b634e487b7160e01b600052603160045260246000fd5b60008251614f4b818460208701614862565b6040815260006152fc6040830185614886565b90508260208301529392505050565b60008060006060848603121561532057600080fd5b83516001600160401b0381111561533657600080fd5b8401601f8101861361534757600080fd5b80516153556147518261470b565b81815287602083850101111561536a57600080fd5b61537b826020830160208601614862565b809550505050602084015161538f8161465b565b60408501519092506153a08161465b565b80915050925092509256fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc2a54fbf322eb9aa58a962240a1babced037cbfc539a425887a8d27817e0160ebde937289f46e805af8ee80434fd9460e355979dba7f43836f2456fceaf6ead863dfcd927ac9e2552184b368328e6cca04f875ef453930277d7dfa53f40dbeac4a26469706673582212207f51d67d25d2049300bf24aa746efc2d3b4776ba8ec50ef5e136c22b13be360464736f6c63430008160033",
897
+ "linkReferences": {},
898
+ "deployedLinkReferences": {}
899
+ }