@artblocks/contracts 1.2.0 → 1.3.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 (219) hide show
  1. package/README.md +22 -38
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +201 -0
  4. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol/BytecodeStorageReaderContractV2_Web3Call.json +201 -0
  5. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +154 -0
  6. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +87 -0
  7. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +174 -55
  8. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +2493 -0
  9. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +311 -0
  10. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +15 -2
  11. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +15 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +37 -0
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +20 -2
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +48 -12
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +76 -40
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +15 -2
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +15 -2
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +37 -0
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +2 -2
  47. package/artifacts/contracts/generator/AddressChunks.sol/AddressChunks.json +10 -0
  48. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +333 -0
  49. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/ILegacyGenArt721CoreV2_PBAB_Flex.json +47 -0
  50. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol/IBytecodeStorageReader.json +7 -7
  51. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +7 -7
  52. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol/IBytecodeStorageReader_Base.json +30 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +13 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IDelegateRegistry.sol/IDelegateRegistry.json +820 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +183 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +37 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +37 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +42 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +42 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +37 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +37 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol/IGenArt721CoreProjectScriptV0.json +59 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol/IGenArt721CoreProjectScriptV1.json +64 -0
  64. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol/IGenArt721CoreTokenHashProviderV0.json +30 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol/IGenArt721CoreTokenHashProviderV1.json +30 -0
  66. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol/IGenArt721GeneratorV0.json +63 -0
  67. package/artifacts/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol/IOwnedCreate2FactoryV0.json +74 -0
  68. package/artifacts/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol/IPMPAugmentHook.json +83 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol/IPMPConfigureHook.json +80 -0
  70. package/artifacts/contracts/interfaces/v0.8.x/IPMPV0.sol/IPMPV0.json +402 -0
  71. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +37 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol/ISharedMinterMinPriceV0.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +69 -0
  74. package/artifacts/contracts/interfaces/v0.8.x/IWeb3Call.sol/IWeb3Call.json +47 -0
  75. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol/ERC721SeaDropStructsErrorsAndEvents.json +43 -0
  76. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol/INonFungibleSeaDropToken.json +715 -0
  77. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol/ISeaDrop.json +1571 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol/ISeaDropTokenContractMetadata.json +345 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol/SeaDropErrorsAndEvents.json +717 -0
  80. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol/DelegateRegistry.json +846 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol/RegistryHashes.json +10 -0
  82. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol/RegistryOps.json +10 -0
  83. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol/RegistryStorage.json +10 -0
  84. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  85. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/ImmutableStringArray.sol/ImmutableStringArray.json +10 -0
  88. package/artifacts/contracts/libs/v0.8.x/JsonStatic.sol/JsonStatic.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +9 -22
  90. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol/MinPriceLib.json +24 -0
  92. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  93. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  94. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  96. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  97. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  98. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  100. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  103. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +664 -0
  105. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +387 -0
  106. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  107. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  108. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  109. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  110. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  111. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  112. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  113. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  114. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  115. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +1206 -0
  116. package/artifacts/contracts/mock/BytecodeV1LibCallsMock.sol/BytecodeV1LibCallsMock.json +2 -2
  117. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +2 -2
  118. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  119. package/artifacts/contracts/mock/ERC20MockAltDecimals.sol/ERC20MockAltDecimals.json +318 -0
  120. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  121. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  122. package/artifacts/contracts/mock/ImmutableStringArrayMock.sol/ImmutableStringArrayMock.json +69 -0
  123. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  124. package/artifacts/contracts/mock/MockFileStore.sol/MockFileStore.json +35 -0
  125. package/artifacts/contracts/mock/MockPMPAugmentHook.sol/MockPMPAugmentHook.json +214 -0
  126. package/artifacts/contracts/mock/MockPMPConfigureHook.sol/MockPMPConfigureHook.json +236 -0
  127. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  128. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  129. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  130. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  131. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  132. package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +629 -0
  133. package/artifacts/contracts/web3call/Web3Call.sol/Web3Call.json +66 -0
  134. package/artifacts/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol/AbstractPMPAugmentHook.json +83 -0
  135. package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +83 -0
  136. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/IUniswapV2Pair.json +60 -0
  137. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +107 -0
  138. package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +96 -0
  139. package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +83 -0
  140. package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +141 -0
  141. package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +99 -0
  142. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +99 -0
  143. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +83 -0
  144. package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +107 -0
  145. package/artifacts/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol/AbstractPMPConfigureHook.json +80 -0
  146. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol +103 -0
  147. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol +128 -0
  148. package/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol +70 -0
  149. package/contracts/BytecodeStorageV2Writer.sol +69 -0
  150. package/contracts/DependencyRegistryV0.sol +296 -88
  151. package/contracts/GenArt721CoreV3_Curated.sol +133 -0
  152. package/contracts/OwnedCreate2FactoryV0.sol +173 -0
  153. package/contracts/engine/V3/EngineFactoryV0.sol +10 -2
  154. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +139 -70
  155. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +148 -72
  156. package/contracts/generator/AddressChunks.sol +106 -0
  157. package/contracts/generator/GenArt721GeneratorV0.sol +1163 -0
  158. package/contracts/generator/scripty-support/Scripty.sol +5 -0
  159. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader.sol +34 -36
  160. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +5 -3
  161. package/contracts/interfaces/v0.8.x/IBytecodeStorageReader_Base.sol +20 -0
  162. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +5 -0
  163. package/contracts/interfaces/v0.8.x/IDelegateRegistry.sol +318 -0
  164. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +96 -0
  165. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +13 -2
  166. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +3 -1
  167. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV0.sol +22 -0
  168. package/contracts/interfaces/v0.8.x/IGenArt721CoreProjectScriptV1.sol +23 -0
  169. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV0.sol +11 -0
  170. package/contracts/interfaces/v0.8.x/IGenArt721CoreTokenHashProviderV1.sol +9 -0
  171. package/contracts/interfaces/v0.8.x/IGenArt721GeneratorV0.sol +14 -0
  172. package/contracts/interfaces/v0.8.x/IOwnedCreate2FactoryV0.sol +40 -0
  173. package/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol +31 -0
  174. package/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol +25 -0
  175. package/contracts/interfaces/v0.8.x/IPMPV0.sol +224 -0
  176. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +19 -0
  177. package/contracts/interfaces/v0.8.x/ISharedMinterMinPriceV0.sol +22 -0
  178. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +10 -4
  179. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +33 -0
  180. package/contracts/interfaces/v0.8.x/IWeb3Call.sol +28 -0
  181. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ERC721SeaDropStructsErrorsAndEvents.sol +58 -0
  182. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/INonFungibleSeaDropToken.sol +186 -0
  183. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDrop.sol +337 -0
  184. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/ISeaDropTokenContractMetadata.sol +152 -0
  185. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropErrorsAndEvents.sol +320 -0
  186. package/contracts/interfaces/v0.8.x/integration-refs/OpenSea/SeaDropStructs.sol +146 -0
  187. package/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol +753 -0
  188. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol +359 -0
  189. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol +31 -0
  190. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol +87 -0
  191. package/contracts/libs/v0.8.x/Bytes32Strings.sol +20 -0
  192. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +14 -3
  193. package/contracts/libs/v0.8.x/ImmutableStringArray.sol +289 -0
  194. package/contracts/libs/v0.8.x/JsonStatic.sol +373 -0
  195. package/contracts/libs/v0.8.x/V3FlexLib.sol +16 -4
  196. package/contracts/libs/v0.8.x/minter-libs/MinPriceLib.sol +64 -0
  197. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +107 -0
  198. package/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol +765 -0
  199. package/contracts/minter-suite/Minters/MinterMinPriceV0.sol +462 -0
  200. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +869 -0
  201. package/contracts/mock/ERC20MockAltDecimals.sol +31 -0
  202. package/contracts/mock/ImmutableStringArrayMock.sol +47 -0
  203. package/contracts/mock/MockFileStore.sol +22 -0
  204. package/contracts/mock/MockPMPAugmentHook.sol +170 -0
  205. package/contracts/mock/MockPMPConfigureHook.sol +78 -0
  206. package/contracts/web3call/PMPV0.sol +1125 -0
  207. package/contracts/web3call/Web3Call.sol +25 -0
  208. package/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol +46 -0
  209. package/contracts/web3call/augment-hooks/InjectBaseGasFee.sol +57 -0
  210. package/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol +103 -0
  211. package/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol +66 -0
  212. package/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol +73 -0
  213. package/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol +88 -0
  214. package/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol +62 -0
  215. package/contracts/web3call/augment-hooks/InjectTokenOwner.sol +60 -0
  216. package/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol +61 -0
  217. package/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol +69 -0
  218. package/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol +41 -0
  219. package/package.json +23 -21
@@ -0,0 +1,629 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PMPV0",
4
+ "sourceName": "contracts/web3call/PMPV0.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IDelegateRegistry",
10
+ "name": "delegateRegistry_",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "ReentrancyGuardReentrantCall",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "address",
28
+ "name": "delegationRegistry",
29
+ "type": "address"
30
+ }
31
+ ],
32
+ "name": "DelegationRegistryUpdated",
33
+ "type": "event"
34
+ },
35
+ {
36
+ "anonymous": false,
37
+ "inputs": [
38
+ {
39
+ "indexed": false,
40
+ "internalType": "address",
41
+ "name": "coreContract",
42
+ "type": "address"
43
+ },
44
+ {
45
+ "indexed": false,
46
+ "internalType": "uint256",
47
+ "name": "projectId",
48
+ "type": "uint256"
49
+ },
50
+ {
51
+ "components": [
52
+ {
53
+ "internalType": "string",
54
+ "name": "key",
55
+ "type": "string"
56
+ },
57
+ {
58
+ "components": [
59
+ {
60
+ "internalType": "enum IPMPV0.AuthOption",
61
+ "name": "authOption",
62
+ "type": "uint8"
63
+ },
64
+ {
65
+ "internalType": "enum IPMPV0.ParamType",
66
+ "name": "paramType",
67
+ "type": "uint8"
68
+ },
69
+ {
70
+ "internalType": "uint48",
71
+ "name": "pmpLockedAfterTimestamp",
72
+ "type": "uint48"
73
+ },
74
+ {
75
+ "internalType": "address",
76
+ "name": "authAddress",
77
+ "type": "address"
78
+ },
79
+ {
80
+ "internalType": "string[]",
81
+ "name": "selectOptions",
82
+ "type": "string[]"
83
+ },
84
+ {
85
+ "internalType": "bytes32",
86
+ "name": "minRange",
87
+ "type": "bytes32"
88
+ },
89
+ {
90
+ "internalType": "bytes32",
91
+ "name": "maxRange",
92
+ "type": "bytes32"
93
+ }
94
+ ],
95
+ "internalType": "struct IPMPV0.PMPConfig",
96
+ "name": "pmpConfig",
97
+ "type": "tuple"
98
+ }
99
+ ],
100
+ "indexed": false,
101
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
102
+ "name": "pmpInputConfigs",
103
+ "type": "tuple[]"
104
+ },
105
+ {
106
+ "indexed": false,
107
+ "internalType": "uint8",
108
+ "name": "projectConfigNonce",
109
+ "type": "uint8"
110
+ }
111
+ ],
112
+ "name": "ProjectConfigured",
113
+ "type": "event"
114
+ },
115
+ {
116
+ "anonymous": false,
117
+ "inputs": [
118
+ {
119
+ "indexed": false,
120
+ "internalType": "address",
121
+ "name": "coreContract",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "indexed": false,
126
+ "internalType": "uint256",
127
+ "name": "projectId",
128
+ "type": "uint256"
129
+ },
130
+ {
131
+ "indexed": false,
132
+ "internalType": "contract IPMPConfigureHook",
133
+ "name": "tokenPMPPostConfigHook",
134
+ "type": "address"
135
+ },
136
+ {
137
+ "indexed": false,
138
+ "internalType": "contract IPMPAugmentHook",
139
+ "name": "tokenPMPReadAugmentationHook",
140
+ "type": "address"
141
+ }
142
+ ],
143
+ "name": "ProjectHooksConfigured",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": false,
151
+ "internalType": "address",
152
+ "name": "coreContract",
153
+ "type": "address"
154
+ },
155
+ {
156
+ "indexed": false,
157
+ "internalType": "uint256",
158
+ "name": "tokenId",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "components": [
163
+ {
164
+ "internalType": "string",
165
+ "name": "key",
166
+ "type": "string"
167
+ },
168
+ {
169
+ "internalType": "enum IPMPV0.ParamType",
170
+ "name": "configuredParamType",
171
+ "type": "uint8"
172
+ },
173
+ {
174
+ "internalType": "bytes32",
175
+ "name": "configuredValue",
176
+ "type": "bytes32"
177
+ },
178
+ {
179
+ "internalType": "bool",
180
+ "name": "configuringArtistString",
181
+ "type": "bool"
182
+ },
183
+ {
184
+ "internalType": "string",
185
+ "name": "configuredValueString",
186
+ "type": "string"
187
+ }
188
+ ],
189
+ "indexed": false,
190
+ "internalType": "struct IPMPV0.PMPInput[]",
191
+ "name": "pmpInputs",
192
+ "type": "tuple[]"
193
+ }
194
+ ],
195
+ "name": "TokenParamsConfigured",
196
+ "type": "event"
197
+ },
198
+ {
199
+ "inputs": [],
200
+ "name": "DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS",
201
+ "outputs": [
202
+ {
203
+ "internalType": "bytes32",
204
+ "name": "",
205
+ "type": "bytes32"
206
+ }
207
+ ],
208
+ "stateMutability": "view",
209
+ "type": "function"
210
+ },
211
+ {
212
+ "inputs": [
213
+ {
214
+ "internalType": "address",
215
+ "name": "coreContract",
216
+ "type": "address"
217
+ },
218
+ {
219
+ "internalType": "uint256",
220
+ "name": "projectId",
221
+ "type": "uint256"
222
+ },
223
+ {
224
+ "components": [
225
+ {
226
+ "internalType": "string",
227
+ "name": "key",
228
+ "type": "string"
229
+ },
230
+ {
231
+ "components": [
232
+ {
233
+ "internalType": "enum IPMPV0.AuthOption",
234
+ "name": "authOption",
235
+ "type": "uint8"
236
+ },
237
+ {
238
+ "internalType": "enum IPMPV0.ParamType",
239
+ "name": "paramType",
240
+ "type": "uint8"
241
+ },
242
+ {
243
+ "internalType": "uint48",
244
+ "name": "pmpLockedAfterTimestamp",
245
+ "type": "uint48"
246
+ },
247
+ {
248
+ "internalType": "address",
249
+ "name": "authAddress",
250
+ "type": "address"
251
+ },
252
+ {
253
+ "internalType": "string[]",
254
+ "name": "selectOptions",
255
+ "type": "string[]"
256
+ },
257
+ {
258
+ "internalType": "bytes32",
259
+ "name": "minRange",
260
+ "type": "bytes32"
261
+ },
262
+ {
263
+ "internalType": "bytes32",
264
+ "name": "maxRange",
265
+ "type": "bytes32"
266
+ }
267
+ ],
268
+ "internalType": "struct IPMPV0.PMPConfig",
269
+ "name": "pmpConfig",
270
+ "type": "tuple"
271
+ }
272
+ ],
273
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
274
+ "name": "pmpInputConfigs",
275
+ "type": "tuple[]"
276
+ }
277
+ ],
278
+ "name": "configureProject",
279
+ "outputs": [],
280
+ "stateMutability": "nonpayable",
281
+ "type": "function"
282
+ },
283
+ {
284
+ "inputs": [
285
+ {
286
+ "internalType": "address",
287
+ "name": "coreContract",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "projectId",
293
+ "type": "uint256"
294
+ },
295
+ {
296
+ "internalType": "contract IPMPConfigureHook",
297
+ "name": "tokenPMPPostConfigHook",
298
+ "type": "address"
299
+ },
300
+ {
301
+ "internalType": "contract IPMPAugmentHook",
302
+ "name": "tokenPMPReadAugmentationHook",
303
+ "type": "address"
304
+ }
305
+ ],
306
+ "name": "configureProjectHooks",
307
+ "outputs": [],
308
+ "stateMutability": "nonpayable",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "internalType": "address",
315
+ "name": "coreContract",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "uint256",
320
+ "name": "tokenId",
321
+ "type": "uint256"
322
+ },
323
+ {
324
+ "components": [
325
+ {
326
+ "internalType": "string",
327
+ "name": "key",
328
+ "type": "string"
329
+ },
330
+ {
331
+ "internalType": "enum IPMPV0.ParamType",
332
+ "name": "configuredParamType",
333
+ "type": "uint8"
334
+ },
335
+ {
336
+ "internalType": "bytes32",
337
+ "name": "configuredValue",
338
+ "type": "bytes32"
339
+ },
340
+ {
341
+ "internalType": "bool",
342
+ "name": "configuringArtistString",
343
+ "type": "bool"
344
+ },
345
+ {
346
+ "internalType": "string",
347
+ "name": "configuredValueString",
348
+ "type": "string"
349
+ }
350
+ ],
351
+ "internalType": "struct IPMPV0.PMPInput[]",
352
+ "name": "pmpInputs",
353
+ "type": "tuple[]"
354
+ }
355
+ ],
356
+ "name": "configureTokenParams",
357
+ "outputs": [],
358
+ "stateMutability": "nonpayable",
359
+ "type": "function"
360
+ },
361
+ {
362
+ "inputs": [],
363
+ "name": "delegateRegistry",
364
+ "outputs": [
365
+ {
366
+ "internalType": "contract IDelegateRegistry",
367
+ "name": "",
368
+ "type": "address"
369
+ }
370
+ ],
371
+ "stateMutability": "view",
372
+ "type": "function"
373
+ },
374
+ {
375
+ "inputs": [
376
+ {
377
+ "internalType": "address",
378
+ "name": "coreContract",
379
+ "type": "address"
380
+ },
381
+ {
382
+ "internalType": "uint256",
383
+ "name": "projectId",
384
+ "type": "uint256"
385
+ }
386
+ ],
387
+ "name": "getProjectConfig",
388
+ "outputs": [
389
+ {
390
+ "internalType": "string[]",
391
+ "name": "pmpKeys",
392
+ "type": "string[]"
393
+ },
394
+ {
395
+ "internalType": "uint8",
396
+ "name": "configNonce",
397
+ "type": "uint8"
398
+ },
399
+ {
400
+ "internalType": "contract IPMPConfigureHook",
401
+ "name": "tokenPMPPostConfigHook",
402
+ "type": "address"
403
+ },
404
+ {
405
+ "internalType": "contract IPMPAugmentHook",
406
+ "name": "tokenPMPReadAugmentationHook",
407
+ "type": "address"
408
+ }
409
+ ],
410
+ "stateMutability": "view",
411
+ "type": "function"
412
+ },
413
+ {
414
+ "inputs": [
415
+ {
416
+ "internalType": "address",
417
+ "name": "coreContract",
418
+ "type": "address"
419
+ },
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "projectId",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "string",
427
+ "name": "pmpKey",
428
+ "type": "string"
429
+ }
430
+ ],
431
+ "name": "getProjectPMPConfig",
432
+ "outputs": [
433
+ {
434
+ "components": [
435
+ {
436
+ "internalType": "uint8",
437
+ "name": "highestConfigNonce",
438
+ "type": "uint8"
439
+ },
440
+ {
441
+ "internalType": "enum IPMPV0.AuthOption",
442
+ "name": "authOption",
443
+ "type": "uint8"
444
+ },
445
+ {
446
+ "internalType": "enum IPMPV0.ParamType",
447
+ "name": "paramType",
448
+ "type": "uint8"
449
+ },
450
+ {
451
+ "internalType": "uint48",
452
+ "name": "pmpLockedAfterTimestamp",
453
+ "type": "uint48"
454
+ },
455
+ {
456
+ "internalType": "address",
457
+ "name": "authAddress",
458
+ "type": "address"
459
+ },
460
+ {
461
+ "internalType": "uint8",
462
+ "name": "selectOptionsLength",
463
+ "type": "uint8"
464
+ },
465
+ {
466
+ "internalType": "string[]",
467
+ "name": "selectOptions",
468
+ "type": "string[]"
469
+ },
470
+ {
471
+ "internalType": "bytes32",
472
+ "name": "minRange",
473
+ "type": "bytes32"
474
+ },
475
+ {
476
+ "internalType": "bytes32",
477
+ "name": "maxRange",
478
+ "type": "bytes32"
479
+ }
480
+ ],
481
+ "internalType": "struct IPMPV0.PMPConfigView",
482
+ "name": "pmpConfigView",
483
+ "type": "tuple"
484
+ }
485
+ ],
486
+ "stateMutability": "view",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "coreContract",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "uint256",
498
+ "name": "tokenId",
499
+ "type": "uint256"
500
+ },
501
+ {
502
+ "internalType": "string",
503
+ "name": "pmpKey",
504
+ "type": "string"
505
+ }
506
+ ],
507
+ "name": "getTokenPMPStorage",
508
+ "outputs": [
509
+ {
510
+ "components": [
511
+ {
512
+ "internalType": "enum IPMPV0.ParamType",
513
+ "name": "configuredParamType",
514
+ "type": "uint8"
515
+ },
516
+ {
517
+ "internalType": "bytes32",
518
+ "name": "configuredValue",
519
+ "type": "bytes32"
520
+ },
521
+ {
522
+ "internalType": "string",
523
+ "name": "artistConfiguredValueString",
524
+ "type": "string"
525
+ },
526
+ {
527
+ "internalType": "string",
528
+ "name": "nonArtistConfiguredValueString",
529
+ "type": "string"
530
+ }
531
+ ],
532
+ "internalType": "struct IPMPV0.PMPStorage",
533
+ "name": "pmp",
534
+ "type": "tuple"
535
+ }
536
+ ],
537
+ "stateMutability": "view",
538
+ "type": "function"
539
+ },
540
+ {
541
+ "inputs": [
542
+ {
543
+ "internalType": "address",
544
+ "name": "coreContract",
545
+ "type": "address"
546
+ },
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "tokenId",
550
+ "type": "uint256"
551
+ }
552
+ ],
553
+ "name": "getTokenParams",
554
+ "outputs": [
555
+ {
556
+ "components": [
557
+ {
558
+ "internalType": "string",
559
+ "name": "key",
560
+ "type": "string"
561
+ },
562
+ {
563
+ "internalType": "string",
564
+ "name": "value",
565
+ "type": "string"
566
+ }
567
+ ],
568
+ "internalType": "struct IWeb3Call.TokenParam[]",
569
+ "name": "tokenParams",
570
+ "type": "tuple[]"
571
+ }
572
+ ],
573
+ "stateMutability": "view",
574
+ "type": "function"
575
+ },
576
+ {
577
+ "inputs": [
578
+ {
579
+ "internalType": "address",
580
+ "name": "wallet",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "internalType": "address",
585
+ "name": "coreContract",
586
+ "type": "address"
587
+ },
588
+ {
589
+ "internalType": "uint256",
590
+ "name": "tokenId",
591
+ "type": "uint256"
592
+ }
593
+ ],
594
+ "name": "isTokenOwnerOrDelegate",
595
+ "outputs": [
596
+ {
597
+ "internalType": "bool",
598
+ "name": "",
599
+ "type": "bool"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ {
608
+ "internalType": "bytes4",
609
+ "name": "interfaceId",
610
+ "type": "bytes4"
611
+ }
612
+ ],
613
+ "name": "supportsInterface",
614
+ "outputs": [
615
+ {
616
+ "internalType": "bool",
617
+ "name": "",
618
+ "type": "bool"
619
+ }
620
+ ],
621
+ "stateMutability": "view",
622
+ "type": "function"
623
+ }
624
+ ],
625
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162004cc938038062004cc9833981016040819052620000349162000082565b60016000556001600160a01b03811660808190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a150620000b4565b6000602082840312156200009557600080fd5b81516001600160a01b0381168114620000ad57600080fd5b9392505050565b608051614bf3620000d66000396000818160cb0152612a9d0152614bf36000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806313bfffac146100c65780633c303afb1461010557806354ca22371461011a5780636f8637a01461013d57806398a6e11814610150578063af544a611461017a578063b69c984d1461018d578063ba8dba48146101a0578063c2b4f411146101c0578063dc809b1a146101e0575b600080fd5b6100b16100ac366004613736565b610200565b60405190151581526020015b60405180910390f35b6100ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bd565b6101186101133660046137cc565b610237565b005b61012d610128366004613827565b610719565b6040516100bd94939291906138a3565b61011861014b3660046137cc565b61077c565b61016c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100bd565b6100b161018836600461392a565b610a23565b61011861019b36600461396b565b610a3a565b6101b36101ae366004613acb565b610c20565b6040516100bd9190613bb7565b6101d36101ce366004613827565b610d88565b6040516100bd9190613cd8565b6101f36101ee366004613acb565b610fa8565b6040516100bd9190613ceb565b60006001600160e01b0319821663c2b4f41160e01b148061023157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023f61117e565b61024a8484336111a8565b8061010081111561029d5760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103925760008484838181106102bc576102bc613d3f565b90506020028101906102ce9190613d55565b6102d89080613d75565b91505080158015906102eb575061010081105b61034f5760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b6064820152608401610294565b61038985858481811061036457610364613d3f565b90506020028101906103769190613d55565b610384906020810190613dbb565b611264565b506001016102a0565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103cb9160ff1690613de7565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f8576103f86139be565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156104c25786868281811061044b5761044b613d3f565b905060200281019061045d9190613d55565b6104679080613d75565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104af576104af613d3f565b6020908102919091010152600101610431565b506104cd81846119dd565b60005b848110156106c55760008460010160006105028585815181106104f5576104f5613d3f565b6020026020010151611a75565b8152602081019190915260400160002080549091506301000000900465ffffffffffff1680158061053257504281115b61058f5760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b6064820152608401610294565b50805460ff191660ff851617815560008888848181106105b1576105b1613d3f565b90506020028101906105c39190613d55565b6105d1906020810190613dbb565b6105da90613ee1565b8051835491925090839061ff0019166101008360068111156105fe576105fe613b23565b021790555060208101518254839062ff000019166201000083600881111561062857610628613b23565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b03199094169390931793909317161783556106a9906001840190611aa5565b60a0810151600283015560c001516003909101556001016104d0565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516106fd959493929190614043565b60405180910390a1505050506107136001600055565b50505050565b6001600160a01b03821660009081526001602090815260408083208484529091528120606091908190819061074d81611d4c565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61078461117e565b6001600160a01b0384166000908152600160205260408120816107a686611f76565b8152602001908152602001600020905060005b828110156109da57600061082e8585848181106107d8576107d8613d3f565b90506020028101906107ea91906141e2565b6107f49080613d75565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a7592505050565b9050600085858481811061084457610844613d3f565b905060200281019061085691906141e2565b61085f90614206565b6001600160a01b03891660009081526002602081815260408084208c85528252808420878552825280842060018a019092529092209087015492935090916108b1908a908c908690859060ff16611f85565b805482546201000090910460ff1690839060ff191660018360088111156108da576108da613b23565b02179055506008815462010000900460ff1660088111156108fd576108fd613b23565b0361093a578260600151156109265760808301516002830190610920908261433e565b50610945565b60808301516003830190610920908261433e565b604083015160018301555b600286015461010090046001600160a01b0316156109ca57600286015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610997908d908d9088906004016143fd565b600060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050505b5050600190920191506107b99050565b507f8ab4d1a907cb32efca4abfcd8bfebaffdae90518a8e48d380e85ad5083fdc13185858585604051610a109493929190614474565b60405180910390a1506107136001600055565b6000610a308284866129b9565b90505b9392505050565b610a4261117e565b610a4d8484336111a8565b6001600160a01b03821615610ae157610a6d8263677e713560e01b612b11565b610ae1576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b6064820152608401610294565b6001600160a01b03811615610b8157610b01816358f8699f60e01b612b11565b610b815760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a401610294565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce3890608001610a10565b610c6f60408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610c9d85611a75565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610cd557610cd5613b23565b90816006811115610ce857610ce8613b23565b9052508054604083019062010000900460ff166008811115610d0c57610d0c613b23565b90816008811115610d1f57610d1f613b23565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610d6860018201611d4c565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610d9583611f76565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610dc482611d4c565b8051909150806001600160401b03811115610de157610de16139be565b604051908082528060200260200182016040528015610e2657816020015b6040805180820190915260608082526020820152815260200190600190039081610dff5790505b5094506000805b82811015610f08576000610e4c8583815181106104f5576104f5613d3f565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610e9291612b2d565b9150915081610ea357505050610f00565b6040518060400160405280888681518110610ec057610ec0613d3f565b60200260200101518152602001828152508a8681518110610ee357610ee3613d3f565b60200260200101819052508480610ef990614570565b9550505050505b600101610e2d565b5080865260038401546001600160a01b031615610f9d5760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f90610f55908b908b908b90600401614589565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9a91908101906145fd565b95505b505050505092915050565b610fd260408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b0384166000908152600260209081526040808320868452909152812090610fff84611a75565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561103257611032613b23565b600881111561104357611043613b23565b815260200160018201548152602001600282018054611061906142bc565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906142bc565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b505050505081526020016003820180546110f3906142bc565b80601f016020809104026020016040519081016040528092919081815260200182805461111f906142bc565b801561116c5780601f106111415761010080835404028352916020019161116c565b820191906000526020600020905b81548152906001019060200180831161114f57829003601f168201915b50505050508152505090509392505050565b6002600054036111a157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190614708565b6001600160a01b03161461125f5760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b6044820152606401610294565b505050565b60006112766040830160208401614725565b905060006112876020840184614740565b9050600082600881111561129d5761129d613b23565b036112ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e6669677572656400006044820152606401610294565b6112fa606084016040850161475b565b65ffffffffffff16158061132457504261131a606085016040860161475b565b65ffffffffffff16115b6113a45760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a401610294565b60068160068111156113b8576113b8613b23565b11156114005760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b600882600881111561141457611414613b23565b11156114325760405162461bcd60e51b815260040161029490614776565b600882600881111561144657611446613b23565b0361151c57600081600681111561145f5761145f613b23565b148061147c5750600381600681111561147a5761147a613b23565b145b806114985750600681600681111561149657611496613b23565b145b806114b4575060048160068111156114b2576114b2613b23565b145b61151c5760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b6064820152608401610294565b600281600681111561153057611530613b23565b148061154d5750600581600681111561154b5761154b613b23565b145b806115695750600481600681111561156757611567613b23565b145b806115855750600681600681111561158357611583613b23565b145b156115f257600061159c60808501606086016147a6565b6001600160a01b0316036115ed5760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b6044820152606401610294565b611659565b600061160460808501606086016147a6565b6001600160a01b0316146116595760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b6044820152606401610294565b600282600881111561166d5761166d613b23565b148061168a5750600882600881111561168857611688613b23565b145b806116a6575060068260088111156116a4576116a4613b23565b145b15611775576116b860808401846147c3565b1590506116d75760405162461bcd60e51b81526004016102949061480c565b60a0830135156117265760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b6044820152606401610294565b60c08301351561125f5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b6044820152606401610294565b600182600881111561178957611789613b23565b0361184957600061179d60808501856147c3565b9050116117ea5760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b6044820152606401610294565b6101006117fa60808501856147c3565b9050106116d75760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e20323535006044820152606401610294565b600382600881111561185d5761185d613b23565b148061187a5750600482600881111561187857611878613b23565b145b806118965750600582600881111561189457611894613b23565b145b806118b2575060078260088111156118b0576118b0613b23565b145b156119c5576118c460808401846147c3565b1590506118e35760405162461bcd60e51b81526004016102949061480c565b60048260088111156118f7576118f7613b23565b0361192c5760a083013560c08401358082126119255760405162461bcd60e51b815260040161029490614843565b5050505050565b60a083013560c08401358082106119555760405162461bcd60e51b815260040161029490614843565b600784600881111561196957611969613b23565b03611925576001600160401b038111156119255760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d415800006044820152606401610294565b60405162461bcd60e51b815260040161029490614776565b60006119e882611d4c565b9050600081518451146119fd57506001611a65565b60005b8451811015611a6357611a4e838281518110611a1e57611a1e613d3f565b6020026020010151868381518110611a3857611a38613d3f565b6020026020010151612fa090919063ffffffff16565b611a5b5760019150611a63565b600101611a00565b505b8015610713576107138385611aa5565b600081604051602001611a889190614876565b604051602081830303815290604052805190602001209050919050565b80516000816001600160401b03811115611ac157611ac16139be565b604051908082528060200260200182016040528015611aea578160200160208202803683370190505b5090506000805b83811015611b5c5781838281518110611b0c57611b0c613d3f565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611b3e57611b3e613d3f565b60200260200101515182611b529190614889565b9150600101611af1565b506001600160401b03811115611bb25760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b6044820152606401610294565b600081611bc085600861489c565b611bcb906008614889565b611bd59190614889565b90506000611be4826020614889565b6001600160401b03811115611bfb57611bfb6139be565b6040519080825280601f01601f191660200182016040528015611c25576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611c7e576000868281518110611c5557611c55613d3f565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611c39565b5060005b86811015611d18576000888281518110611c9e57611c9e613d3f565b6020026020010151905060008151905060006020830190506000602083611cc591906148c9565b90506000611cd46020856148dd565b905060005b82811015611cf7578351885260209788019790930192600101611cd9565b508015611d075782518752958601955b505060019093019250611c82915050565b505081815280611d2781612fc5565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b0316611d90576040805160008082526020820190925290611d89565b6060815260200190600190039081611d745790505b5092915050565b8154600090611da7906001600160a01b031661306a565b602081015190915060c01c806001600160401b03811115611dca57611dca6139be565b604051908082528060200260200182016040528015611dfd57816020015b6060815260200190600190039081611de85790505b50925060005b81811015611f6e576000808084611e1b856001614889565b03611e49576000865190506028870193506008850284015160c01c9250600886026008018103915050611e6b565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b6000611e7783836148f1565b6001600160401b031690506000611e8f826020614889565b6001600160401b03811115611ea657611ea66139be565b6040519080825280601f01601f191660200182016040528015611ed0576020820181803683370190505b5090506020810160005b83811015611f36576000816001600160401b038816611efa8c600861489c565b611f05906028614889565b611f0f9190614889565b611f199190614889565b8b0151835250602091820191611f2f9082614889565b9050611eda565b50819050828152818a8881518110611f5057611f50613d3f565b60200260200101819052505050505050508080600101915050611e03565b505050919050565b6000610231620f4240836148c9565b815460ff828116911614611ffe5760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b6064820152608401610294565b815462010000900460ff16600881111561201a5761201a613b23565b8360200151600881111561203057612030613b23565b146120775760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b6044820152606401610294565b60008360200151600881111561208f5761208f613b23565b036120e85760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b6064820152608401610294565b8154610100900460ff16600081600681111561210657612106613b23565b036121635761211686863361308b565b61215e5760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b6044820152606401610294565b61250e565b600181600681111561217757612177613b23565b036121d3576121878686336129b9565b61215e5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e6572206175746820726571756972656400006044820152606401610294565b60038160068111156121e7576121e7613b23565b03612266576121f786863361308b565b8061220857506122088686336129b9565b61215e5760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b6064820152608401610294565b600281600681111561227a5761227a613b23565b036122dc578254600160481b90046001600160a01b0316331461215e5760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b6044820152606401610294565b60068160068111156122f0576122f0613b23565b036123965761230086863361308b565b8061231b57508254600160481b90046001600160a01b031633145b8061232c575061232c8686336129b9565b61215e5760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b6064820152608401610294565b60048160068111156123aa576123aa613b23565b0361242f576123ba86863361308b565b806123d557508254600160481b90046001600160a01b031633145b61215e5760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b6064820152608401610294565b600581600681111561244357612443613b23565b036124cc578254600160481b90046001600160a01b031633148061246d575061246d8686336129b9565b61215e5760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b6064820152608401610294565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b50815462010000900460ff16600881600881111561252e5761252e613b23565b146127c057600181600881111561254757612547613b23565b036125bf5782546040850151600160e81b90910460ff16116125ba5760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b6064820152608401610294565b6127c0565b60028160088111156125d3576125d3613b23565b0361264557604084015115806125ed575060408401516001145b6125ba5760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b6064820152608401610294565b600381600881111561265957612659613b23565b14806126765750600581600881111561267457612674613b23565b145b156126b757826002015484604001511015801561269b57508260030154846040015111155b6125ba5760405162461bcd60e51b815260040161029490614911565b60048160088111156126cb576126cb613b23565b0361270b57600283015460408501511280159061269b57506003830154604085015113156125ba5760405162461bcd60e51b815260040161029490614911565b600781600881111561271f5761271f613b23565b0361273f5760408401516001600160401b031080159061269b57506127c0565b600681600881111561275357612753613b23565b0361277f57604084015162ffffff10156125ba5760405162461bcd60e51b815260040161029490614948565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b6044820152606401610294565b6008835462010000900460ff1660088111156127de576127de613b23565b036128cb576040840151156128485760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b6064820152608401610294565b8360600151156128c65761285d86863361308b565b6128c65760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b6064820152608401610294565b6129b1565b608084015151156129395760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b6064820152608401610294565b8360600151156129b15760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d730000006064820152608401610294565b505050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190614708565b9050826001600160a01b0316816001600160a01b031603612a4c576001915050610a33565b604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b089190614978565b95945050505050565b6000612b1c83613125565b8015610a335750610a338383613158565b805460009060609060ff1682816008811115612b4b57612b4b613b23565b1480612b835750845462010000900460ff166008811115612b6e57612b6e613b23565b816008811115612b8057612b80613b23565b14155b15612ba1575050604080516020810190915260008082529150612f99565b6008855462010000900460ff166008811115612bbf57612bbf613b23565b03612cbd576000846002018054612bd5906142bc565b90501115612c7957600184600201808054612bef906142bc565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1b906142bc565b8015612c685780601f10612c3d57610100808354040283529160200191612c68565b820191906000526020600020905b815481529060010190602001808311612c4b57829003601f168201915b505050505090509250925050612f99565b6000846003018054612c8a906142bc565b90501115612ca457600184600301808054612bef906142bc565b5050604080516020810190915260008082529150612f99565b6001816008811115612cd157612cd1613b23565b03612d235784546001850154600160e81b90910460ff1611612d06575050604080516020810190915260008082529150612f99565b600184810154612d1990878301906131e2565b9250925050612f99565b6002816008811115612d3757612d37613b23565b03612d915760018481015415612d6957604051806040016040528060048152602001637472756560e01b815250612d19565b6040518060400160405280600581526020016466616c736560d81b8152509250925050612f99565b6003816008811115612da557612da5613b23565b1480612dc257506006816008811115612dc057612dc0613b23565b145b80612dde57506007816008811115612ddc57612ddc613b23565b145b80612dfa57506005816008811115612df857612df8613b23565b145b15612eeb57600184015460006006836008811115612e1a57612e1a613b23565b14612e29576003870154612e2e565b62ffffff5b905060006006846008811115612e4657612e46613b23565b14612e55576002880154612e58565b60005b905080831080612e6757508183115b15612e8b576000604051806020016040528060008152509550955050505050612f99565b6005846008811115612e9f57612e9f613b23565b03612ebc576001612eaf8461338c565b9550955050505050612f99565b6006846008811115612ed057612ed0613b23565b03612ee0576001612eaf84613439565b6001612eaf84613522565b6004816008811115612eff57612eff613b23565b03612f565760018401546002860154811280612f1e5750600386015481135b15612f4057600060405180602001604052806000815250935093505050612f99565b6001612f4b826135b4565b935093505050612f99565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b6044820152606401610294565b9250929050565b600081518351148015610a335750508051602091820120825192909101919091201490565b60008082604051602001612fd99190614995565b6040516020818303038152906040529050600081604051602001612ffd91906149bb565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166130635760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610294565b5050919050565b6060610231826001613086816001600160a01b0384163b6149ef565b613626565b60008061309785611f76565b9050826001600160a01b0316846001600160a01b031663a47d29cb836040518263ffffffff1660e01b81526004016130d191815260200190565b602060405180830381865afa1580156130ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131129190614708565b6001600160a01b03161495945050505050565b6000613138826301ffc9a760e01b613158565b80156102315750613151826001600160e01b0319613158565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156131cb575060208210155b80156131d75750600081115b979650505050505050565b81546060906001600160a01b031661320c5760405162461bcd60e51b815260040161029490614a02565b8254600090613223906001600160a01b031661306a565b9050600080600080602085015160c01c90508087106132545760405162461bcd60e51b815260040161029490614a02565b80613260886001614889565b0361328e576000855190506028860194506008880285015160c01c93506008820260080181039250506132b0565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006132bc84846148f1565b6001600160401b0316905060006132d4826020614889565b6001600160401b038111156132eb576132eb6139be565b6040519080825280601f01601f191660200182016040528015613315576020820181803683370190505b5090506020810160005b8381101561337b576000816001600160401b03891661333f88600861489c565b61334a906028614889565b6133549190614889565b61335e9190614889565b8a01518352506020918201916133749082614889565b905061331f565b505090815298975050505050505050565b6060600061339b600a80614b13565b6133a590846148c9565b905060006133b4600a80614b13565b6133be90856148dd565b905060006133cb83613522565b905060006133d883613522565b90505b600a8151101561340c57806040516020016133f69190614b1f565b60405160208183030381529060405290506133db565b818160405160200161341f929190614b3b565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b8160008151811061347757613477613d3f565b60200101906001600160f81b031916908160001a90535060065b8015613503576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106134bf576134bf613d3f565b1a60f81b8282815181106134d5576134d5613d3f565b60200101906001600160f81b031916908160001a90535060049290921c916134fc81614b77565b9050613491565b508115610a335760405162461bcd60e51b815260040161029490614948565b6060600061352f83613649565b60010190506000816001600160401b0381111561354e5761354e6139be565b6040519080825280601f01601f191660200182016040528015613578576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461358257509392505050565b6060600082126135d357604051806020016040528060008152506135ee565b604051806040016040528060018152602001602d60f81b8152505b6135ff6135fa8461371f565b613522565b604051602001613610929190614b8e565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106136885772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106136b2576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106136d057662386f26fc10000830492506010015b6305f5e10083106136e8576305f5e100830492506008015b61271083106136fc57612710830492506004015b6064831061370e576064830492506002015b600a83106102315760010192915050565b6000808212156137325781600003610231565b5090565b60006020828403121561374857600080fd5b81356001600160e01b031981168114610a3357600080fd5b6001600160a01b038116811461377557600080fd5b50565b803561378381613760565b919050565b60008083601f84011261379a57600080fd5b5081356001600160401b038111156137b157600080fd5b6020830191508360208260051b8501011115612f9957600080fd5b600080600080606085870312156137e257600080fd5b84356137ed81613760565b93506020850135925060408501356001600160401b0381111561380f57600080fd5b61381b87828801613788565b95989497509550505050565b6000806040838503121561383a57600080fd5b823561384581613760565b946020939093013593505050565b60005b8381101561386e578181015183820152602001613856565b50506000910152565b6000815180845261388f816020860160208601613853565b601f01601f19169290920160200192915050565b6000608082016080835280875180835260a08501915060a08160051b86010192506020808a0160005b838110156138fa57609f198887030185526138e8868351613877565b955093820193908201906001016138cc565b5050505060ff9690961660208401526001600160a01b039485166040840152929093166060909101529392505050565b60008060006060848603121561393f57600080fd5b833561394a81613760565b9250602084013561395a81613760565b929592945050506040919091013590565b6000806000806080858703121561398157600080fd5b843561398c81613760565b93506020850135925060408501356139a381613760565b915060608501356139b381613760565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156139f6576139f66139be565b60405290565b604080519081016001600160401b03811182821017156139f6576139f66139be565b604051601f8201601f191681016001600160401b0381118282101715613a4657613a466139be565b604052919050565b60006001600160401b03821115613a6757613a676139be565b50601f01601f191660200190565b600082601f830112613a8657600080fd5b8135613a99613a9482613a4e565b613a1e565b818152846020838601011115613aae57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ae057600080fd5b8335613aeb81613760565b92506020840135915060408401356001600160401b03811115613b0d57600080fd5b613b1986828701613a75565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613b4957613b49613b23565b9052565b60098110613b4957613b49613b23565b60008282518085526020808601955060208260051b8401016020860160005b84811015613baa57601f19868403018952613b98838351613877565b98840198925090830190600101613b7c565b5090979650505050505050565b60208152613bcb60208201835160ff169052565b60006020830151613bdf6040840182613b39565b506040830151613bf26060840182613b4d565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e0850152613c47610140850183613b5d565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613baa57601f19868403018952815160408151818652613caa82870182613877565b91505085820151915084810386860152613cc48183613877565b9a86019a9450505090830190600101613c84565b602081526000610a336020830184613c67565b60208152613cfd602082018351613b4d565b602082015160408201526000604083015160806060840152613d2260a0840182613877565b90506060840151601f19848303016080850152612b088282613877565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112613d6b57600080fd5b9190910192915050565b6000808335601e19843603018112613d8c57600080fd5b8301803591506001600160401b03821115613da657600080fd5b602001915036819003821315612f9957600080fd5b6000823560de19833603018112613d6b57600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561023157610231613dd1565b80356007811061378357600080fd5b80356009811061378357600080fd5b803565ffffffffffff8116811461378357600080fd5b60006001600160401b03821115613e4d57613e4d6139be565b5060051b60200190565b600082601f830112613e6857600080fd5b81356020613e78613a9483613e34565b82815260059290921b84018101918181019086841115613e9757600080fd5b8286015b84811015613ed65780356001600160401b03811115613eba5760008081fd5b613ec88986838b0101613a75565b845250918301918301613e9b565b509695505050505050565b600060e08236031215613ef357600080fd5b613efb6139d4565b613f0483613e00565b8152613f1260208401613e0f565b6020820152613f2360408401613e1e565b6040820152613f3460608401613778565b606082015260808301356001600160401b03811115613f5257600080fd5b613f5e36828601613e57565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e19843603018112613f9857600080fd5b83016020810192503590506001600160401b03811115613fb757600080fd5b803603821315612f9957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613baa57848303601f190189526140248288613f81565b61402f858284613fc6565b9a86019a9450505090830190600101614009565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c8110156141bf578a8303609f190184528135368f9003603e190181126140a657600080fd5b8e016140b28180613f81565b8786526140c28887018284613fc6565b9150508782013560de198336030181126140db57600080fd5b858203898701529091019060e06140fa826140f585613e00565b613b39565b614105898401613e0f565b6141118a840182613b4d565b5065ffffffffffff614124898501613e1e565b168883015260608084013561413881613760565b8b1690830152828c013536849003601e1901811261415557600080fd5b830189810190356001600160401b0381111561417057600080fd5b8060051b360382131561418257600080fd5b828e8501526141948385018284613fef565b858e0135858f015260c095860135959094019490945250509487019493505090850190600101614080565b505060ff8a1660608a015296506141d895505050505050565b9695505050505050565b60008235609e19833603018112613d6b57600080fd5b801515811461377557600080fd5b600060a0823603121561421857600080fd5b60405160a081016001600160401b03808211838310171561423b5761423b6139be565b81604052843591508082111561425057600080fd5b61425c36838701613a75565b835261426a60208601613e0f565b60208401526040850135604084015260608501359150614289826141f8565b81606084015260808501359150808211156142a357600080fd5b506142b036828601613a75565b60808301525092915050565b600181811c908216806142d057607f821691505b6020821081036142f057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561125f576000816000526020600020601f850160051c8101602086101561431f5750805b601f850160051c820191505b818110156129b15782815560010161432b565b81516001600160401b03811115614357576143576139be565b61436b8161436584546142bc565b846142f6565b602080601f8311600181146143a057600084156143885750858301515b600019600386901b1c1916600185901b1785556129b1565b600085815260208120601f198616915b828110156143cf578886015182559484019460019091019084016143b0565b50858210156143ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a0606084015261442e610100840182613877565b905060208401516144426080850182613b4d565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526131d78282613877565b6001600160a01b0385168152602080820185905260606040808401829052838201859052600092608091828601600588901b870184018987805b8b81101561455d578a8403607f190185528235368e9003609e190181126144d3578283fd5b8d0160a06144e18280613f81565b8288526144f18389018284613fc6565b92505050614500898301613e0f565b61450c8a880182613b4d565b5087820135888701528a820135614522816141f8565b1515868c0152614534828b0183613f81565b92508682038b880152614548828483613fc6565b978a01979650505092870192506001016144ae565b50919d9c50505050505050505050505050565b60006001820161458257614582613dd1565b5060010190565b60018060a01b0384168152826020820152606060408201526000612b086060830184613c67565b600082601f8301126145c157600080fd5b81516145cf613a9482613a4e565b8181528460208386010111156145e457600080fd5b6145f5826020830160208701613853565b949350505050565b6000602080838503121561461057600080fd5b82516001600160401b038082111561462757600080fd5b818501915085601f83011261463b57600080fd5b8151614649613a9482613e34565b81815260059190911b8301840190848101908883111561466857600080fd5b8585015b838110156146fb578051858111156146845760008081fd5b86016040818c03601f190181131561469c5760008081fd5b6146a46139fc565b89830151888111156146b65760008081fd5b6146c48e8c838701016145b0565b8252509082015190878211156146da5760008081fd5b6146e88d8b848601016145b0565b818b01528552505091860191860161466c565b5098975050505050505050565b60006020828403121561471a57600080fd5b8151610a3381613760565b60006020828403121561473757600080fd5b610a3382613e0f565b60006020828403121561475257600080fd5b610a3382613e00565b60006020828403121561476d57600080fd5b610a3382613e1e565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6000602082840312156147b857600080fd5b8135610a3381613760565b6000808335601e198436030181126147da57600080fd5b8301803591506001600160401b038211156147f457600080fd5b6020019150600581901b3603821315612f9957600080fd5b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b602081526000610a336020830184613877565b8082018082111561023157610231613dd1565b808202811582820484141761023157610231613dd1565b634e487b7160e01b600052601260045260246000fd5b6000826148d8576148d86148b3565b500490565b6000826148ec576148ec6148b3565b500690565b6001600160401b03828116828216039080821115611d8957611d89613dd1565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b60006020828403121561498a57600080fd5b8151610a33816141f8565b60008152600082516149ae816001850160208701613853565b9190910160010192915050565b6a600b5981380380925939f360a81b815281516000906149e281600b850160208701613853565b91909101600b0192915050565b8181038181111561023157610231613dd1565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614a6a578160001904821115614a5057614a50613dd1565b80851615614a5d57918102915b93841c9390800290614a34565b509250929050565b600082614a8157506001610231565b81614a8e57506000610231565b8160018114614aa45760028114614aae57614aca565b6001915050610231565b60ff841115614abf57614abf613dd1565b50506001821b610231565b5060208310610133831016604e8410600b8410161715614aed575081810a610231565b614af78383614a2f565b8060001904821115614b0b57614b0b613dd1565b029392505050565b6000610a338383614a72565b600360fc1b8152600082516149ae816001850160208701613853565b60008351614b4d818460208801613853565b601760f91b9083019081528351614b6b816001840160208801613853565b01600101949350505050565b600081614b8657614b86613dd1565b506000190190565b60008351614ba0818460208801613853565b835190830190614bb4818360208801613853565b0194935050505056fea2646970667358221220e459e5671d26a3458b94f15461f1eb1122ece45eb79752b9b995a5f330c07c8c64736f6c63430008160033",
626
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806313bfffac146100c65780633c303afb1461010557806354ca22371461011a5780636f8637a01461013d57806398a6e11814610150578063af544a611461017a578063b69c984d1461018d578063ba8dba48146101a0578063c2b4f411146101c0578063dc809b1a146101e0575b600080fd5b6100b16100ac366004613736565b610200565b60405190151581526020015b60405180910390f35b6100ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bd565b6101186101133660046137cc565b610237565b005b61012d610128366004613827565b610719565b6040516100bd94939291906138a3565b61011861014b3660046137cc565b61077c565b61016c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100bd565b6100b161018836600461392a565b610a23565b61011861019b36600461396b565b610a3a565b6101b36101ae366004613acb565b610c20565b6040516100bd9190613bb7565b6101d36101ce366004613827565b610d88565b6040516100bd9190613cd8565b6101f36101ee366004613acb565b610fa8565b6040516100bd9190613ceb565b60006001600160e01b0319821663c2b4f41160e01b148061023157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023f61117e565b61024a8484336111a8565b8061010081111561029d5760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103925760008484838181106102bc576102bc613d3f565b90506020028101906102ce9190613d55565b6102d89080613d75565b91505080158015906102eb575061010081105b61034f5760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b6064820152608401610294565b61038985858481811061036457610364613d3f565b90506020028101906103769190613d55565b610384906020810190613dbb565b611264565b506001016102a0565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103cb9160ff1690613de7565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f8576103f86139be565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156104c25786868281811061044b5761044b613d3f565b905060200281019061045d9190613d55565b6104679080613d75565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104af576104af613d3f565b6020908102919091010152600101610431565b506104cd81846119dd565b60005b848110156106c55760008460010160006105028585815181106104f5576104f5613d3f565b6020026020010151611a75565b8152602081019190915260400160002080549091506301000000900465ffffffffffff1680158061053257504281115b61058f5760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b6064820152608401610294565b50805460ff191660ff851617815560008888848181106105b1576105b1613d3f565b90506020028101906105c39190613d55565b6105d1906020810190613dbb565b6105da90613ee1565b8051835491925090839061ff0019166101008360068111156105fe576105fe613b23565b021790555060208101518254839062ff000019166201000083600881111561062857610628613b23565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b03199094169390931793909317161783556106a9906001840190611aa5565b60a0810151600283015560c001516003909101556001016104d0565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516106fd959493929190614043565b60405180910390a1505050506107136001600055565b50505050565b6001600160a01b03821660009081526001602090815260408083208484529091528120606091908190819061074d81611d4c565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61078461117e565b6001600160a01b0384166000908152600160205260408120816107a686611f76565b8152602001908152602001600020905060005b828110156109da57600061082e8585848181106107d8576107d8613d3f565b90506020028101906107ea91906141e2565b6107f49080613d75565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a7592505050565b9050600085858481811061084457610844613d3f565b905060200281019061085691906141e2565b61085f90614206565b6001600160a01b03891660009081526002602081815260408084208c85528252808420878552825280842060018a019092529092209087015492935090916108b1908a908c908690859060ff16611f85565b805482546201000090910460ff1690839060ff191660018360088111156108da576108da613b23565b02179055506008815462010000900460ff1660088111156108fd576108fd613b23565b0361093a578260600151156109265760808301516002830190610920908261433e565b50610945565b60808301516003830190610920908261433e565b604083015160018301555b600286015461010090046001600160a01b0316156109ca57600286015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610997908d908d9088906004016143fd565b600060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050505b5050600190920191506107b99050565b507f8ab4d1a907cb32efca4abfcd8bfebaffdae90518a8e48d380e85ad5083fdc13185858585604051610a109493929190614474565b60405180910390a1506107136001600055565b6000610a308284866129b9565b90505b9392505050565b610a4261117e565b610a4d8484336111a8565b6001600160a01b03821615610ae157610a6d8263677e713560e01b612b11565b610ae1576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b6064820152608401610294565b6001600160a01b03811615610b8157610b01816358f8699f60e01b612b11565b610b815760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a401610294565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce3890608001610a10565b610c6f60408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610c9d85611a75565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610cd557610cd5613b23565b90816006811115610ce857610ce8613b23565b9052508054604083019062010000900460ff166008811115610d0c57610d0c613b23565b90816008811115610d1f57610d1f613b23565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610d6860018201611d4c565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610d9583611f76565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610dc482611d4c565b8051909150806001600160401b03811115610de157610de16139be565b604051908082528060200260200182016040528015610e2657816020015b6040805180820190915260608082526020820152815260200190600190039081610dff5790505b5094506000805b82811015610f08576000610e4c8583815181106104f5576104f5613d3f565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610e9291612b2d565b9150915081610ea357505050610f00565b6040518060400160405280888681518110610ec057610ec0613d3f565b60200260200101518152602001828152508a8681518110610ee357610ee3613d3f565b60200260200101819052508480610ef990614570565b9550505050505b600101610e2d565b5080865260038401546001600160a01b031615610f9d5760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f90610f55908b908b908b90600401614589565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9a91908101906145fd565b95505b505050505092915050565b610fd260408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b0384166000908152600260209081526040808320868452909152812090610fff84611a75565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561103257611032613b23565b600881111561104357611043613b23565b815260200160018201548152602001600282018054611061906142bc565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906142bc565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b505050505081526020016003820180546110f3906142bc565b80601f016020809104026020016040519081016040528092919081815260200182805461111f906142bc565b801561116c5780601f106111415761010080835404028352916020019161116c565b820191906000526020600020905b81548152906001019060200180831161114f57829003601f168201915b50505050508152505090509392505050565b6002600054036111a157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190614708565b6001600160a01b03161461125f5760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b6044820152606401610294565b505050565b60006112766040830160208401614725565b905060006112876020840184614740565b9050600082600881111561129d5761129d613b23565b036112ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e6669677572656400006044820152606401610294565b6112fa606084016040850161475b565b65ffffffffffff16158061132457504261131a606085016040860161475b565b65ffffffffffff16115b6113a45760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a401610294565b60068160068111156113b8576113b8613b23565b11156114005760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b600882600881111561141457611414613b23565b11156114325760405162461bcd60e51b815260040161029490614776565b600882600881111561144657611446613b23565b0361151c57600081600681111561145f5761145f613b23565b148061147c5750600381600681111561147a5761147a613b23565b145b806114985750600681600681111561149657611496613b23565b145b806114b4575060048160068111156114b2576114b2613b23565b145b61151c5760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b6064820152608401610294565b600281600681111561153057611530613b23565b148061154d5750600581600681111561154b5761154b613b23565b145b806115695750600481600681111561156757611567613b23565b145b806115855750600681600681111561158357611583613b23565b145b156115f257600061159c60808501606086016147a6565b6001600160a01b0316036115ed5760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b6044820152606401610294565b611659565b600061160460808501606086016147a6565b6001600160a01b0316146116595760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b6044820152606401610294565b600282600881111561166d5761166d613b23565b148061168a5750600882600881111561168857611688613b23565b145b806116a6575060068260088111156116a4576116a4613b23565b145b15611775576116b860808401846147c3565b1590506116d75760405162461bcd60e51b81526004016102949061480c565b60a0830135156117265760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b6044820152606401610294565b60c08301351561125f5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b6044820152606401610294565b600182600881111561178957611789613b23565b0361184957600061179d60808501856147c3565b9050116117ea5760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b6044820152606401610294565b6101006117fa60808501856147c3565b9050106116d75760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e20323535006044820152606401610294565b600382600881111561185d5761185d613b23565b148061187a5750600482600881111561187857611878613b23565b145b806118965750600582600881111561189457611894613b23565b145b806118b2575060078260088111156118b0576118b0613b23565b145b156119c5576118c460808401846147c3565b1590506118e35760405162461bcd60e51b81526004016102949061480c565b60048260088111156118f7576118f7613b23565b0361192c5760a083013560c08401358082126119255760405162461bcd60e51b815260040161029490614843565b5050505050565b60a083013560c08401358082106119555760405162461bcd60e51b815260040161029490614843565b600784600881111561196957611969613b23565b03611925576001600160401b038111156119255760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d415800006044820152606401610294565b60405162461bcd60e51b815260040161029490614776565b60006119e882611d4c565b9050600081518451146119fd57506001611a65565b60005b8451811015611a6357611a4e838281518110611a1e57611a1e613d3f565b6020026020010151868381518110611a3857611a38613d3f565b6020026020010151612fa090919063ffffffff16565b611a5b5760019150611a63565b600101611a00565b505b8015610713576107138385611aa5565b600081604051602001611a889190614876565b604051602081830303815290604052805190602001209050919050565b80516000816001600160401b03811115611ac157611ac16139be565b604051908082528060200260200182016040528015611aea578160200160208202803683370190505b5090506000805b83811015611b5c5781838281518110611b0c57611b0c613d3f565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611b3e57611b3e613d3f565b60200260200101515182611b529190614889565b9150600101611af1565b506001600160401b03811115611bb25760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b6044820152606401610294565b600081611bc085600861489c565b611bcb906008614889565b611bd59190614889565b90506000611be4826020614889565b6001600160401b03811115611bfb57611bfb6139be565b6040519080825280601f01601f191660200182016040528015611c25576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611c7e576000868281518110611c5557611c55613d3f565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611c39565b5060005b86811015611d18576000888281518110611c9e57611c9e613d3f565b6020026020010151905060008151905060006020830190506000602083611cc591906148c9565b90506000611cd46020856148dd565b905060005b82811015611cf7578351885260209788019790930192600101611cd9565b508015611d075782518752958601955b505060019093019250611c82915050565b505081815280611d2781612fc5565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b0316611d90576040805160008082526020820190925290611d89565b6060815260200190600190039081611d745790505b5092915050565b8154600090611da7906001600160a01b031661306a565b602081015190915060c01c806001600160401b03811115611dca57611dca6139be565b604051908082528060200260200182016040528015611dfd57816020015b6060815260200190600190039081611de85790505b50925060005b81811015611f6e576000808084611e1b856001614889565b03611e49576000865190506028870193506008850284015160c01c9250600886026008018103915050611e6b565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b6000611e7783836148f1565b6001600160401b031690506000611e8f826020614889565b6001600160401b03811115611ea657611ea66139be565b6040519080825280601f01601f191660200182016040528015611ed0576020820181803683370190505b5090506020810160005b83811015611f36576000816001600160401b038816611efa8c600861489c565b611f05906028614889565b611f0f9190614889565b611f199190614889565b8b0151835250602091820191611f2f9082614889565b9050611eda565b50819050828152818a8881518110611f5057611f50613d3f565b60200260200101819052505050505050508080600101915050611e03565b505050919050565b6000610231620f4240836148c9565b815460ff828116911614611ffe5760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b6064820152608401610294565b815462010000900460ff16600881111561201a5761201a613b23565b8360200151600881111561203057612030613b23565b146120775760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b6044820152606401610294565b60008360200151600881111561208f5761208f613b23565b036120e85760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b6064820152608401610294565b8154610100900460ff16600081600681111561210657612106613b23565b036121635761211686863361308b565b61215e5760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b6044820152606401610294565b61250e565b600181600681111561217757612177613b23565b036121d3576121878686336129b9565b61215e5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e6572206175746820726571756972656400006044820152606401610294565b60038160068111156121e7576121e7613b23565b03612266576121f786863361308b565b8061220857506122088686336129b9565b61215e5760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b6064820152608401610294565b600281600681111561227a5761227a613b23565b036122dc578254600160481b90046001600160a01b0316331461215e5760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b6044820152606401610294565b60068160068111156122f0576122f0613b23565b036123965761230086863361308b565b8061231b57508254600160481b90046001600160a01b031633145b8061232c575061232c8686336129b9565b61215e5760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b6064820152608401610294565b60048160068111156123aa576123aa613b23565b0361242f576123ba86863361308b565b806123d557508254600160481b90046001600160a01b031633145b61215e5760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b6064820152608401610294565b600581600681111561244357612443613b23565b036124cc578254600160481b90046001600160a01b031633148061246d575061246d8686336129b9565b61215e5760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b6064820152608401610294565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b50815462010000900460ff16600881600881111561252e5761252e613b23565b146127c057600181600881111561254757612547613b23565b036125bf5782546040850151600160e81b90910460ff16116125ba5760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b6064820152608401610294565b6127c0565b60028160088111156125d3576125d3613b23565b0361264557604084015115806125ed575060408401516001145b6125ba5760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b6064820152608401610294565b600381600881111561265957612659613b23565b14806126765750600581600881111561267457612674613b23565b145b156126b757826002015484604001511015801561269b57508260030154846040015111155b6125ba5760405162461bcd60e51b815260040161029490614911565b60048160088111156126cb576126cb613b23565b0361270b57600283015460408501511280159061269b57506003830154604085015113156125ba5760405162461bcd60e51b815260040161029490614911565b600781600881111561271f5761271f613b23565b0361273f5760408401516001600160401b031080159061269b57506127c0565b600681600881111561275357612753613b23565b0361277f57604084015162ffffff10156125ba5760405162461bcd60e51b815260040161029490614948565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b6044820152606401610294565b6008835462010000900460ff1660088111156127de576127de613b23565b036128cb576040840151156128485760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b6064820152608401610294565b8360600151156128c65761285d86863361308b565b6128c65760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b6064820152608401610294565b6129b1565b608084015151156129395760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b6064820152608401610294565b8360600151156129b15760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d730000006064820152608401610294565b505050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190614708565b9050826001600160a01b0316816001600160a01b031603612a4c576001915050610a33565b604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b089190614978565b95945050505050565b6000612b1c83613125565b8015610a335750610a338383613158565b805460009060609060ff1682816008811115612b4b57612b4b613b23565b1480612b835750845462010000900460ff166008811115612b6e57612b6e613b23565b816008811115612b8057612b80613b23565b14155b15612ba1575050604080516020810190915260008082529150612f99565b6008855462010000900460ff166008811115612bbf57612bbf613b23565b03612cbd576000846002018054612bd5906142bc565b90501115612c7957600184600201808054612bef906142bc565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1b906142bc565b8015612c685780601f10612c3d57610100808354040283529160200191612c68565b820191906000526020600020905b815481529060010190602001808311612c4b57829003601f168201915b505050505090509250925050612f99565b6000846003018054612c8a906142bc565b90501115612ca457600184600301808054612bef906142bc565b5050604080516020810190915260008082529150612f99565b6001816008811115612cd157612cd1613b23565b03612d235784546001850154600160e81b90910460ff1611612d06575050604080516020810190915260008082529150612f99565b600184810154612d1990878301906131e2565b9250925050612f99565b6002816008811115612d3757612d37613b23565b03612d915760018481015415612d6957604051806040016040528060048152602001637472756560e01b815250612d19565b6040518060400160405280600581526020016466616c736560d81b8152509250925050612f99565b6003816008811115612da557612da5613b23565b1480612dc257506006816008811115612dc057612dc0613b23565b145b80612dde57506007816008811115612ddc57612ddc613b23565b145b80612dfa57506005816008811115612df857612df8613b23565b145b15612eeb57600184015460006006836008811115612e1a57612e1a613b23565b14612e29576003870154612e2e565b62ffffff5b905060006006846008811115612e4657612e46613b23565b14612e55576002880154612e58565b60005b905080831080612e6757508183115b15612e8b576000604051806020016040528060008152509550955050505050612f99565b6005846008811115612e9f57612e9f613b23565b03612ebc576001612eaf8461338c565b9550955050505050612f99565b6006846008811115612ed057612ed0613b23565b03612ee0576001612eaf84613439565b6001612eaf84613522565b6004816008811115612eff57612eff613b23565b03612f565760018401546002860154811280612f1e5750600386015481135b15612f4057600060405180602001604052806000815250935093505050612f99565b6001612f4b826135b4565b935093505050612f99565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b6044820152606401610294565b9250929050565b600081518351148015610a335750508051602091820120825192909101919091201490565b60008082604051602001612fd99190614995565b6040516020818303038152906040529050600081604051602001612ffd91906149bb565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166130635760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610294565b5050919050565b6060610231826001613086816001600160a01b0384163b6149ef565b613626565b60008061309785611f76565b9050826001600160a01b0316846001600160a01b031663a47d29cb836040518263ffffffff1660e01b81526004016130d191815260200190565b602060405180830381865afa1580156130ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131129190614708565b6001600160a01b03161495945050505050565b6000613138826301ffc9a760e01b613158565b80156102315750613151826001600160e01b0319613158565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156131cb575060208210155b80156131d75750600081115b979650505050505050565b81546060906001600160a01b031661320c5760405162461bcd60e51b815260040161029490614a02565b8254600090613223906001600160a01b031661306a565b9050600080600080602085015160c01c90508087106132545760405162461bcd60e51b815260040161029490614a02565b80613260886001614889565b0361328e576000855190506028860194506008880285015160c01c93506008820260080181039250506132b0565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006132bc84846148f1565b6001600160401b0316905060006132d4826020614889565b6001600160401b038111156132eb576132eb6139be565b6040519080825280601f01601f191660200182016040528015613315576020820181803683370190505b5090506020810160005b8381101561337b576000816001600160401b03891661333f88600861489c565b61334a906028614889565b6133549190614889565b61335e9190614889565b8a01518352506020918201916133749082614889565b905061331f565b505090815298975050505050505050565b6060600061339b600a80614b13565b6133a590846148c9565b905060006133b4600a80614b13565b6133be90856148dd565b905060006133cb83613522565b905060006133d883613522565b90505b600a8151101561340c57806040516020016133f69190614b1f565b60405160208183030381529060405290506133db565b818160405160200161341f929190614b3b565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b8160008151811061347757613477613d3f565b60200101906001600160f81b031916908160001a90535060065b8015613503576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106134bf576134bf613d3f565b1a60f81b8282815181106134d5576134d5613d3f565b60200101906001600160f81b031916908160001a90535060049290921c916134fc81614b77565b9050613491565b508115610a335760405162461bcd60e51b815260040161029490614948565b6060600061352f83613649565b60010190506000816001600160401b0381111561354e5761354e6139be565b6040519080825280601f01601f191660200182016040528015613578576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461358257509392505050565b6060600082126135d357604051806020016040528060008152506135ee565b604051806040016040528060018152602001602d60f81b8152505b6135ff6135fa8461371f565b613522565b604051602001613610929190614b8e565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106136885772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106136b2576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106136d057662386f26fc10000830492506010015b6305f5e10083106136e8576305f5e100830492506008015b61271083106136fc57612710830492506004015b6064831061370e576064830492506002015b600a83106102315760010192915050565b6000808212156137325781600003610231565b5090565b60006020828403121561374857600080fd5b81356001600160e01b031981168114610a3357600080fd5b6001600160a01b038116811461377557600080fd5b50565b803561378381613760565b919050565b60008083601f84011261379a57600080fd5b5081356001600160401b038111156137b157600080fd5b6020830191508360208260051b8501011115612f9957600080fd5b600080600080606085870312156137e257600080fd5b84356137ed81613760565b93506020850135925060408501356001600160401b0381111561380f57600080fd5b61381b87828801613788565b95989497509550505050565b6000806040838503121561383a57600080fd5b823561384581613760565b946020939093013593505050565b60005b8381101561386e578181015183820152602001613856565b50506000910152565b6000815180845261388f816020860160208601613853565b601f01601f19169290920160200192915050565b6000608082016080835280875180835260a08501915060a08160051b86010192506020808a0160005b838110156138fa57609f198887030185526138e8868351613877565b955093820193908201906001016138cc565b5050505060ff9690961660208401526001600160a01b039485166040840152929093166060909101529392505050565b60008060006060848603121561393f57600080fd5b833561394a81613760565b9250602084013561395a81613760565b929592945050506040919091013590565b6000806000806080858703121561398157600080fd5b843561398c81613760565b93506020850135925060408501356139a381613760565b915060608501356139b381613760565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156139f6576139f66139be565b60405290565b604080519081016001600160401b03811182821017156139f6576139f66139be565b604051601f8201601f191681016001600160401b0381118282101715613a4657613a466139be565b604052919050565b60006001600160401b03821115613a6757613a676139be565b50601f01601f191660200190565b600082601f830112613a8657600080fd5b8135613a99613a9482613a4e565b613a1e565b818152846020838601011115613aae57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ae057600080fd5b8335613aeb81613760565b92506020840135915060408401356001600160401b03811115613b0d57600080fd5b613b1986828701613a75565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613b4957613b49613b23565b9052565b60098110613b4957613b49613b23565b60008282518085526020808601955060208260051b8401016020860160005b84811015613baa57601f19868403018952613b98838351613877565b98840198925090830190600101613b7c565b5090979650505050505050565b60208152613bcb60208201835160ff169052565b60006020830151613bdf6040840182613b39565b506040830151613bf26060840182613b4d565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e0850152613c47610140850183613b5d565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613baa57601f19868403018952815160408151818652613caa82870182613877565b91505085820151915084810386860152613cc48183613877565b9a86019a9450505090830190600101613c84565b602081526000610a336020830184613c67565b60208152613cfd602082018351613b4d565b602082015160408201526000604083015160806060840152613d2260a0840182613877565b90506060840151601f19848303016080850152612b088282613877565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112613d6b57600080fd5b9190910192915050565b6000808335601e19843603018112613d8c57600080fd5b8301803591506001600160401b03821115613da657600080fd5b602001915036819003821315612f9957600080fd5b6000823560de19833603018112613d6b57600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561023157610231613dd1565b80356007811061378357600080fd5b80356009811061378357600080fd5b803565ffffffffffff8116811461378357600080fd5b60006001600160401b03821115613e4d57613e4d6139be565b5060051b60200190565b600082601f830112613e6857600080fd5b81356020613e78613a9483613e34565b82815260059290921b84018101918181019086841115613e9757600080fd5b8286015b84811015613ed65780356001600160401b03811115613eba5760008081fd5b613ec88986838b0101613a75565b845250918301918301613e9b565b509695505050505050565b600060e08236031215613ef357600080fd5b613efb6139d4565b613f0483613e00565b8152613f1260208401613e0f565b6020820152613f2360408401613e1e565b6040820152613f3460608401613778565b606082015260808301356001600160401b03811115613f5257600080fd5b613f5e36828601613e57565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e19843603018112613f9857600080fd5b83016020810192503590506001600160401b03811115613fb757600080fd5b803603821315612f9957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613baa57848303601f190189526140248288613f81565b61402f858284613fc6565b9a86019a9450505090830190600101614009565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c8110156141bf578a8303609f190184528135368f9003603e190181126140a657600080fd5b8e016140b28180613f81565b8786526140c28887018284613fc6565b9150508782013560de198336030181126140db57600080fd5b858203898701529091019060e06140fa826140f585613e00565b613b39565b614105898401613e0f565b6141118a840182613b4d565b5065ffffffffffff614124898501613e1e565b168883015260608084013561413881613760565b8b1690830152828c013536849003601e1901811261415557600080fd5b830189810190356001600160401b0381111561417057600080fd5b8060051b360382131561418257600080fd5b828e8501526141948385018284613fef565b858e0135858f015260c095860135959094019490945250509487019493505090850190600101614080565b505060ff8a1660608a015296506141d895505050505050565b9695505050505050565b60008235609e19833603018112613d6b57600080fd5b801515811461377557600080fd5b600060a0823603121561421857600080fd5b60405160a081016001600160401b03808211838310171561423b5761423b6139be565b81604052843591508082111561425057600080fd5b61425c36838701613a75565b835261426a60208601613e0f565b60208401526040850135604084015260608501359150614289826141f8565b81606084015260808501359150808211156142a357600080fd5b506142b036828601613a75565b60808301525092915050565b600181811c908216806142d057607f821691505b6020821081036142f057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561125f576000816000526020600020601f850160051c8101602086101561431f5750805b601f850160051c820191505b818110156129b15782815560010161432b565b81516001600160401b03811115614357576143576139be565b61436b8161436584546142bc565b846142f6565b602080601f8311600181146143a057600084156143885750858301515b600019600386901b1c1916600185901b1785556129b1565b600085815260208120601f198616915b828110156143cf578886015182559484019460019091019084016143b0565b50858210156143ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a0606084015261442e610100840182613877565b905060208401516144426080850182613b4d565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526131d78282613877565b6001600160a01b0385168152602080820185905260606040808401829052838201859052600092608091828601600588901b870184018987805b8b81101561455d578a8403607f190185528235368e9003609e190181126144d3578283fd5b8d0160a06144e18280613f81565b8288526144f18389018284613fc6565b92505050614500898301613e0f565b61450c8a880182613b4d565b5087820135888701528a820135614522816141f8565b1515868c0152614534828b0183613f81565b92508682038b880152614548828483613fc6565b978a01979650505092870192506001016144ae565b50919d9c50505050505050505050505050565b60006001820161458257614582613dd1565b5060010190565b60018060a01b0384168152826020820152606060408201526000612b086060830184613c67565b600082601f8301126145c157600080fd5b81516145cf613a9482613a4e565b8181528460208386010111156145e457600080fd5b6145f5826020830160208701613853565b949350505050565b6000602080838503121561461057600080fd5b82516001600160401b038082111561462757600080fd5b818501915085601f83011261463b57600080fd5b8151614649613a9482613e34565b81815260059190911b8301840190848101908883111561466857600080fd5b8585015b838110156146fb578051858111156146845760008081fd5b86016040818c03601f190181131561469c5760008081fd5b6146a46139fc565b89830151888111156146b65760008081fd5b6146c48e8c838701016145b0565b8252509082015190878211156146da5760008081fd5b6146e88d8b848601016145b0565b818b01528552505091860191860161466c565b5098975050505050505050565b60006020828403121561471a57600080fd5b8151610a3381613760565b60006020828403121561473757600080fd5b610a3382613e0f565b60006020828403121561475257600080fd5b610a3382613e00565b60006020828403121561476d57600080fd5b610a3382613e1e565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6000602082840312156147b857600080fd5b8135610a3381613760565b6000808335601e198436030181126147da57600080fd5b8301803591506001600160401b038211156147f457600080fd5b6020019150600581901b3603821315612f9957600080fd5b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b602081526000610a336020830184613877565b8082018082111561023157610231613dd1565b808202811582820484141761023157610231613dd1565b634e487b7160e01b600052601260045260246000fd5b6000826148d8576148d86148b3565b500490565b6000826148ec576148ec6148b3565b500690565b6001600160401b03828116828216039080821115611d8957611d89613dd1565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b60006020828403121561498a57600080fd5b8151610a33816141f8565b60008152600082516149ae816001850160208701613853565b9190910160010192915050565b6a600b5981380380925939f360a81b815281516000906149e281600b850160208701613853565b91909101600b0192915050565b8181038181111561023157610231613dd1565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614a6a578160001904821115614a5057614a50613dd1565b80851615614a5d57918102915b93841c9390800290614a34565b509250929050565b600082614a8157506001610231565b81614a8e57506000610231565b8160018114614aa45760028114614aae57614aca565b6001915050610231565b60ff841115614abf57614abf613dd1565b50506001821b610231565b5060208310610133831016604e8410600b8410161715614aed575081810a610231565b614af78383614a2f565b8060001904821115614b0b57614b0b613dd1565b029392505050565b6000610a338383614a72565b600360fc1b8152600082516149ae816001850160208701613853565b60008351614b4d818460208801613853565b601760f91b9083019081528351614b6b816001840160208801613853565b01600101949350505050565b600081614b8657614b86613dd1565b506000190190565b60008351614ba0818460208801613853565b835190830190614bb4818360208801613853565b0194935050505056fea2646970667358221220e459e5671d26a3458b94f15461f1eb1122ece45eb79752b9b995a5f330c07c8c64736f6c63430008160033",
627
+ "linkReferences": {},
628
+ "deployedLinkReferences": {}
629
+ }