@etherisc/gif-next 0.0.2-d551b5e-892 → 0.0.2-d57a2ff-383

Sign up to get free protection for your applications and to get access to all the features.
Files changed (664) hide show
  1. package/README.md +28 -16
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -149
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1326
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -172
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3016
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1621 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +662 -349
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +598 -437
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +347 -145
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +311 -336
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +347 -291
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPricingService.sol/IPricingService.json} +267 -256
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +344 -127
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +395 -219
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +532 -182
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1741 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +216 -198
  182. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  185. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  194. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  196. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  198. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  204. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  214. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  215. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  220. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  230. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  231. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  232. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  240. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  256. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  273. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  303. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  305. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  306. package/contracts/authorization/AccessAdmin.sol +588 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +149 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  318. package/contracts/distribution/Distribution.sol +283 -0
  319. package/contracts/distribution/DistributionService.sol +302 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  321. package/contracts/distribution/IDistributionComponent.sol +48 -0
  322. package/contracts/distribution/IDistributionService.sol +85 -0
  323. package/contracts/instance/BundleManager.sol +22 -25
  324. package/contracts/instance/IInstance.sol +75 -47
  325. package/contracts/instance/IInstanceService.sol +77 -17
  326. package/contracts/instance/Instance.sol +180 -386
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +395 -204
  331. package/contracts/instance/InstanceServiceManager.sol +12 -25
  332. package/contracts/instance/InstanceStore.sol +276 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +17 -39
  338. package/contracts/instance/module/IAccess.sol +29 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +52 -0
  341. package/contracts/instance/module/IDistribution.sol +7 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +32 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +157 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +42 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  355. package/contracts/pool/BundleService.sol +296 -0
  356. package/contracts/pool/BundleServiceManager.sol +42 -0
  357. package/contracts/pool/IBundleService.sol +106 -0
  358. package/contracts/pool/IPoolComponent.sol +52 -0
  359. package/contracts/pool/IPoolService.sol +150 -0
  360. package/contracts/pool/Pool.sol +311 -0
  361. package/contracts/pool/PoolService.sol +452 -0
  362. package/contracts/pool/PoolServiceManager.sol +42 -0
  363. package/contracts/product/ApplicationService.sol +254 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +40 -0
  367. package/contracts/product/ClaimService.sol +442 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +39 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +475 -0
  376. package/contracts/product/PolicyServiceManager.sol +42 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +42 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +124 -0
  381. package/contracts/product/ProductServiceManager.sol +42 -0
  382. package/contracts/registry/ChainNft.sol +15 -0
  383. package/contracts/registry/IRegistry.sol +70 -30
  384. package/contracts/registry/IRegistryService.sol +47 -28
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +378 -248
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +114 -206
  389. package/contracts/registry/RegistryServiceManager.sol +24 -51
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseManager.sol +487 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +261 -57
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +581 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/ERC165.sol +15 -13
  399. package/contracts/shared/IComponent.sol +70 -0
  400. package/contracts/shared/IComponentService.sol +102 -0
  401. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  402. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  403. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  404. package/contracts/shared/INftOwnable.sol +13 -12
  405. package/contracts/shared/IPolicyHolder.sol +45 -0
  406. package/contracts/shared/IRegisterable.sol +4 -6
  407. package/contracts/shared/IRegistryLinked.sol +11 -0
  408. package/contracts/shared/IService.sol +15 -5
  409. package/contracts/shared/IVersionable.sol +5 -48
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  412. package/contracts/shared/KeyValueStore.sol +131 -0
  413. package/contracts/shared/Lifecycle.sol +77 -0
  414. package/contracts/shared/NftIdSetManager.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +59 -86
  416. package/contracts/shared/PolicyHolder.sol +102 -0
  417. package/contracts/shared/ProxyManager.sol +131 -26
  418. package/contracts/shared/Registerable.sol +26 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +57 -29
  421. package/contracts/shared/TokenHandler.sol +37 -6
  422. package/contracts/shared/Versionable.sol +4 -92
  423. package/contracts/staking/IStaking.sol +168 -0
  424. package/contracts/staking/IStakingService.sol +153 -0
  425. package/contracts/staking/StakeManagerLib.sol +231 -0
  426. package/contracts/staking/Staking.sol +513 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +54 -0
  429. package/contracts/staking/StakingReader.sol +187 -0
  430. package/contracts/staking/StakingService.sol +411 -0
  431. package/contracts/staking/StakingServiceManager.sol +44 -0
  432. package/contracts/staking/StakingStore.sol +615 -0
  433. package/contracts/staking/TargetManagerLib.sol +207 -0
  434. package/contracts/{types → type}/AddressSet.sol +1 -1
  435. package/contracts/type/Amount.sol +128 -0
  436. package/contracts/{types → type}/Blocknumber.sol +21 -3
  437. package/contracts/type/ClaimId.sol +75 -0
  438. package/contracts/{types → type}/DistributorType.sol +2 -2
  439. package/contracts/{types → type}/Fee.sol +33 -23
  440. package/contracts/{types → type}/NftId.sol +21 -15
  441. package/contracts/{types → type}/NftIdSet.sol +2 -2
  442. package/contracts/type/ObjectType.sol +275 -0
  443. package/contracts/type/PayoutId.sol +82 -0
  444. package/contracts/{types → type}/Referral.sol +5 -1
  445. package/contracts/type/RequestId.sol +75 -0
  446. package/contracts/{types → type}/RiskId.sol +1 -1
  447. package/contracts/type/RoleId.sol +174 -0
  448. package/contracts/type/Seconds.sol +81 -0
  449. package/contracts/type/Selector.sol +102 -0
  450. package/contracts/{types → type}/StateId.sol +34 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +23 -14
  453. package/contracts/{types → type}/UFixed.sol +7 -0
  454. package/contracts/{types → type}/Version.sol +2 -1
  455. package/package.json +8 -5
  456. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  459. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  462. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  464. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  466. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  467. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  468. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  469. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  476. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  478. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  480. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  482. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  484. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  486. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  495. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  500. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  502. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  504. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  506. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  508. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  510. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  511. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  513. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  515. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  517. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  518. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  519. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  522. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  526. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  528. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  532. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  534. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  536. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  539. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  544. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  546. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1017
  548. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  550. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -789
  552. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  554. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  556. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  558. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  559. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  560. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  562. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  564. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  566. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  568. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  570. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  572. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  573. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  574. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  575. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  577. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  579. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  582. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  583. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  585. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  586. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  588. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  590. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  592. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  595. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  598. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  601. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  603. package/contracts/components/BaseComponent.sol +0 -132
  604. package/contracts/components/Distribution.sol +0 -163
  605. package/contracts/components/IBaseComponent.sol +0 -31
  606. package/contracts/components/IDistributionComponent.sol +0 -44
  607. package/contracts/components/IPoolComponent.sol +0 -66
  608. package/contracts/components/IProductComponent.sol +0 -35
  609. package/contracts/components/Pool.sol +0 -267
  610. package/contracts/components/Product.sol +0 -292
  611. package/contracts/experiment/cloning/Cloner.sol +0 -47
  612. package/contracts/experiment/errors/Require.sol +0 -38
  613. package/contracts/experiment/errors/Revert.sol +0 -44
  614. package/contracts/experiment/inheritance/A.sol +0 -53
  615. package/contracts/experiment/inheritance/B.sol +0 -28
  616. package/contracts/experiment/inheritance/C.sol +0 -34
  617. package/contracts/experiment/inheritance/IA.sol +0 -13
  618. package/contracts/experiment/inheritance/IB.sol +0 -10
  619. package/contracts/experiment/inheritance/IC.sol +0 -12
  620. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  621. package/contracts/experiment/statemachine/ISM.sol +0 -25
  622. package/contracts/experiment/statemachine/SM.sol +0 -57
  623. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  624. package/contracts/experiment/types/TypeA.sol +0 -47
  625. package/contracts/experiment/types/TypeB.sol +0 -29
  626. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  627. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  628. package/contracts/instance/IInstanceBase.sol +0 -26
  629. package/contracts/instance/InstanceAccessManager.sol +0 -288
  630. package/contracts/instance/InstanceBase.sol +0 -41
  631. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  632. package/contracts/instance/base/IInstanceBase.sol +0 -23
  633. package/contracts/instance/base/KeyValueStore.sol +0 -172
  634. package/contracts/instance/base/Lifecycle.sol +0 -100
  635. package/contracts/instance/module/ISetup.sol +0 -46
  636. package/contracts/instance/module/ITreasury.sol +0 -23
  637. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  638. package/contracts/instance/service/DistributionService.sol +0 -118
  639. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  640. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  641. package/contracts/instance/service/IDistributionService.sol +0 -12
  642. package/contracts/instance/service/IPolicyService.sol +0 -87
  643. package/contracts/instance/service/IPoolService.sol +0 -51
  644. package/contracts/instance/service/IProductService.sol +0 -40
  645. package/contracts/instance/service/PolicyService.sol +0 -513
  646. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  647. package/contracts/instance/service/PoolService.sol +0 -317
  648. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  649. package/contracts/instance/service/ProductService.sol +0 -173
  650. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  651. package/contracts/shared/ContractDeployerLib.sol +0 -72
  652. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  653. package/contracts/test/TestFee.sol +0 -25
  654. package/contracts/test/TestRegisterable.sol +0 -18
  655. package/contracts/test/TestRoleId.sol +0 -14
  656. package/contracts/test/TestService.sol +0 -24
  657. package/contracts/test/TestToken.sol +0 -26
  658. package/contracts/test/TestVersion.sol +0 -44
  659. package/contracts/test/TestVersionable.sol +0 -17
  660. package/contracts/types/ChainId.sol +0 -38
  661. package/contracts/types/NumberId.sol +0 -52
  662. package/contracts/types/ObjectType.sol +0 -152
  663. package/contracts/types/RoleId.sol +0 -91
  664. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -3,90 +3,315 @@
3
3
  "contractName": "InstanceService",
4
4
  "sourceName": "contracts/instance/InstanceService.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "authority",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "caller",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
6
44
  {
7
45
  "inputs": [],
8
46
  "name": "ERC1167FailedCreateClone",
9
47
  "type": "error"
10
48
  },
49
+ {
50
+ "inputs": [],
51
+ "name": "ErrorInstanceServiceAccessManagerZero",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "inputs": [],
56
+ "name": "ErrorInstanceServiceBundleManagerAuthorityMismatch",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "ErrorInstanceServiceBundleManagerZero",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [],
66
+ "name": "ErrorInstanceServiceBundleMangerInstanceMismatch",
67
+ "type": "error"
68
+ },
11
69
  {
12
70
  "inputs": [
13
71
  {
14
72
  "internalType": "address",
15
- "name": "registry",
73
+ "name": "component",
74
+ "type": "address"
75
+ }
76
+ ],
77
+ "name": "ErrorInstanceServiceComponentNotInstanceLinked",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [
82
+ {
83
+ "internalType": "address",
84
+ "name": "componentAddress",
16
85
  "type": "address"
86
+ }
87
+ ],
88
+ "name": "ErrorInstanceServiceComponentNotRegistered",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [],
93
+ "name": "ErrorInstanceServiceInstanceAddressZero",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [],
98
+ "name": "ErrorInstanceServiceInstanceAdminZero",
99
+ "type": "error"
100
+ },
101
+ {
102
+ "inputs": [],
103
+ "name": "ErrorInstanceServiceInstanceAuthorityMismatch",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "NftId",
110
+ "name": "instanceNftId",
111
+ "type": "uint96"
17
112
  },
18
113
  {
19
114
  "internalType": "NftId",
20
- "name": "nftId",
115
+ "name": "componentNftId",
21
116
  "type": "uint96"
22
117
  }
23
118
  ],
24
- "name": "ErrorAlreadyLinked",
119
+ "name": "ErrorInstanceServiceInstanceComponentMismatch",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "ErrorInstanceServiceInstanceReaderAddressZero",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "inputs": [],
129
+ "name": "ErrorInstanceServiceInstanceReaderInstanceMismatch",
130
+ "type": "error"
131
+ },
132
+ {
133
+ "inputs": [],
134
+ "name": "ErrorInstanceServiceInstanceReaderInstanceMismatch2",
135
+ "type": "error"
136
+ },
137
+ {
138
+ "inputs": [],
139
+ "name": "ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader",
140
+ "type": "error"
141
+ },
142
+ {
143
+ "inputs": [],
144
+ "name": "ErrorInstanceServiceInstanceReaderZero",
145
+ "type": "error"
146
+ },
147
+ {
148
+ "inputs": [],
149
+ "name": "ErrorInstanceServiceInstanceStoreAuthorityMismatch",
150
+ "type": "error"
151
+ },
152
+ {
153
+ "inputs": [],
154
+ "name": "ErrorInstanceServiceInstanceStoreZero",
25
155
  "type": "error"
26
156
  },
27
157
  {
28
158
  "inputs": [
29
159
  {
30
160
  "internalType": "address",
31
- "name": "contractAddress",
161
+ "name": "instance",
32
162
  "type": "address"
163
+ },
164
+ {
165
+ "internalType": "VersionPart",
166
+ "name": "instanceVersion",
167
+ "type": "uint8"
33
168
  }
34
169
  ],
35
- "name": "ErrorContractNotRegistered",
170
+ "name": "ErrorInstanceServiceInstanceVersionMismatch",
36
171
  "type": "error"
37
172
  },
38
173
  {
39
174
  "inputs": [
40
175
  {
41
176
  "internalType": "address",
42
- "name": "account",
177
+ "name": "componentAddress",
178
+ "type": "address"
179
+ },
180
+ {
181
+ "internalType": "ObjectType",
182
+ "name": "expectedType",
183
+ "type": "uint8"
184
+ },
185
+ {
186
+ "internalType": "ObjectType",
187
+ "name": "componentType",
188
+ "type": "uint8"
189
+ }
190
+ ],
191
+ "name": "ErrorInstanceServiceInvalidComponentType",
192
+ "type": "error"
193
+ },
194
+ {
195
+ "inputs": [],
196
+ "name": "ErrorInstanceServiceMasterBundleManagerAlreadySet",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [],
201
+ "name": "ErrorInstanceServiceMasterInstanceAdminAlreadySet",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "inputs": [],
206
+ "name": "ErrorInstanceServiceMasterInstanceAlreadySet",
207
+ "type": "error"
208
+ },
209
+ {
210
+ "inputs": [],
211
+ "name": "ErrorInstanceServiceMasterInstanceReaderNotSet",
212
+ "type": "error"
213
+ },
214
+ {
215
+ "inputs": [
216
+ {
217
+ "internalType": "address",
218
+ "name": "instance",
43
219
  "type": "address"
220
+ },
221
+ {
222
+ "internalType": "ObjectType",
223
+ "name": "objectType",
224
+ "type": "uint8"
44
225
  }
45
226
  ],
46
- "name": "ErrorNotOwner",
227
+ "name": "ErrorInstanceServiceNotInstance",
228
+ "type": "error"
229
+ },
230
+ {
231
+ "inputs": [
232
+ {
233
+ "internalType": "NftId",
234
+ "name": "nftId",
235
+ "type": "uint96"
236
+ }
237
+ ],
238
+ "name": "ErrorInstanceServiceNotInstanceNftId",
47
239
  "type": "error"
48
240
  },
49
241
  {
50
242
  "inputs": [
51
243
  {
52
244
  "internalType": "address",
53
- "name": "registryAddress",
245
+ "name": "instance",
54
246
  "type": "address"
55
247
  }
56
248
  ],
57
- "name": "ErrorNotRegistry",
249
+ "name": "ErrorInstanceServiceNotRegistered",
58
250
  "type": "error"
59
251
  },
60
252
  {
61
253
  "inputs": [
62
254
  {
63
255
  "internalType": "address",
64
- "name": "registryAddress",
256
+ "name": "caller",
257
+ "type": "address"
258
+ }
259
+ ],
260
+ "name": "ErrorInstanceServiceRequestUnauhorized",
261
+ "type": "error"
262
+ },
263
+ {
264
+ "inputs": [
265
+ {
266
+ "internalType": "NftId",
267
+ "name": "nftId",
268
+ "type": "uint96"
269
+ }
270
+ ],
271
+ "name": "ErrorNftOwnableAlreadyLinked",
272
+ "type": "error"
273
+ },
274
+ {
275
+ "inputs": [
276
+ {
277
+ "internalType": "address",
278
+ "name": "contractAddress",
65
279
  "type": "address"
66
280
  }
67
281
  ],
68
- "name": "ErrorRegisterableNotRegistry",
282
+ "name": "ErrorNftOwnableContractNotRegistered",
69
283
  "type": "error"
70
284
  },
71
285
  {
72
286
  "inputs": [],
73
- "name": "ErrorRegistryAddressZero",
287
+ "name": "ErrorNftOwnableInitialOwnerZero",
74
288
  "type": "error"
75
289
  },
76
290
  {
77
291
  "inputs": [
78
292
  {
79
293
  "internalType": "address",
80
- "name": "registry",
294
+ "name": "account",
81
295
  "type": "address"
82
296
  }
83
297
  ],
84
- "name": "ErrorRegistryAlreadyInitialized",
298
+ "name": "ErrorNftOwnableNotOwner",
299
+ "type": "error"
300
+ },
301
+ {
302
+ "inputs": [
303
+ {
304
+ "internalType": "address",
305
+ "name": "registryAddress",
306
+ "type": "address"
307
+ }
308
+ ],
309
+ "name": "ErrorNotRegistry",
85
310
  "type": "error"
86
311
  },
87
312
  {
88
313
  "inputs": [],
89
- "name": "ErrorRegistryNotInitialized",
314
+ "name": "ErrorServiceNotImplemented",
90
315
  "type": "error"
91
316
  },
92
317
  {
@@ -104,12 +329,12 @@
104
329
  "inputs": [
105
330
  {
106
331
  "indexed": false,
107
- "internalType": "uint64",
108
- "name": "version",
109
- "type": "uint64"
332
+ "internalType": "address",
333
+ "name": "authority",
334
+ "type": "address"
110
335
  }
111
336
  ],
112
- "name": "Initialized",
337
+ "name": "AuthorityUpdated",
113
338
  "type": "event"
114
339
  },
115
340
  {
@@ -117,30 +342,12 @@
117
342
  "inputs": [
118
343
  {
119
344
  "indexed": false,
120
- "internalType": "address",
121
- "name": "clonedAccessManagerAddress",
122
- "type": "address"
123
- },
124
- {
125
- "indexed": false,
126
- "internalType": "address",
127
- "name": "clonedInstanceAddress",
128
- "type": "address"
129
- },
130
- {
131
- "indexed": false,
132
- "internalType": "address",
133
- "name": "clonedInstanceReaderAddress",
134
- "type": "address"
135
- },
136
- {
137
- "indexed": false,
138
- "internalType": "NftId",
139
- "name": "clonedInstanceNftId",
140
- "type": "uint96"
345
+ "internalType": "uint64",
346
+ "name": "version",
347
+ "type": "uint64"
141
348
  }
142
349
  ],
143
- "name": "LogInstanceCloned",
350
+ "name": "Initialized",
144
351
  "type": "event"
145
352
  },
146
353
  {
@@ -148,24 +355,18 @@
148
355
  "inputs": [
149
356
  {
150
357
  "indexed": false,
151
- "internalType": "Version",
152
- "name": "version",
153
- "type": "uint24"
358
+ "internalType": "NftId",
359
+ "name": "instanceNftId",
360
+ "type": "uint96"
154
361
  },
155
362
  {
156
363
  "indexed": false,
157
364
  "internalType": "address",
158
- "name": "implementation",
159
- "type": "address"
160
- },
161
- {
162
- "indexed": false,
163
- "internalType": "address",
164
- "name": "activatedBy",
365
+ "name": "instance",
165
366
  "type": "address"
166
367
  }
167
368
  ],
168
- "name": "LogVersionableInitialized",
369
+ "name": "LogInstanceCloned",
169
370
  "type": "event"
170
371
  },
171
372
  {
@@ -183,12 +384,12 @@
183
384
  },
184
385
  {
185
386
  "inputs": [],
186
- "name": "NAME",
387
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
187
388
  "outputs": [
188
389
  {
189
- "internalType": "string",
390
+ "internalType": "bytes32",
190
391
  "name": "",
191
- "type": "string"
392
+ "type": "bytes32"
192
393
  }
193
394
  ],
194
395
  "stateMutability": "view",
@@ -209,61 +410,112 @@
209
410
  },
210
411
  {
211
412
  "inputs": [],
212
- "name": "createInstanceClone",
413
+ "name": "authority",
213
414
  "outputs": [
214
415
  {
215
- "internalType": "contract AccessManagerUpgradeableInitializeable",
216
- "name": "clonedAccessManager",
416
+ "internalType": "address",
417
+ "name": "",
217
418
  "type": "address"
419
+ }
420
+ ],
421
+ "stateMutability": "view",
422
+ "type": "function"
423
+ },
424
+ {
425
+ "inputs": [
426
+ {
427
+ "internalType": "NftId",
428
+ "name": "instanceNftId",
429
+ "type": "uint96"
218
430
  },
219
431
  {
220
- "internalType": "contract Instance",
221
- "name": "clonedInstance",
432
+ "internalType": "address",
433
+ "name": "targetAddress",
222
434
  "type": "address"
223
435
  },
436
+ {
437
+ "internalType": "string",
438
+ "name": "targetName",
439
+ "type": "string"
440
+ },
441
+ {
442
+ "internalType": "bytes4[][]",
443
+ "name": "selectors",
444
+ "type": "bytes4[][]"
445
+ },
446
+ {
447
+ "internalType": "RoleId[]",
448
+ "name": "roles",
449
+ "type": "uint64[]"
450
+ }
451
+ ],
452
+ "name": "createComponentTarget",
453
+ "outputs": [],
454
+ "stateMutability": "nonpayable",
455
+ "type": "function"
456
+ },
457
+ {
458
+ "inputs": [
224
459
  {
225
460
  "internalType": "NftId",
226
- "name": "clonedInstanceNftId",
461
+ "name": "instanceNftId",
227
462
  "type": "uint96"
228
463
  },
229
464
  {
230
- "internalType": "contract InstanceReader",
231
- "name": "clonedInstanceReader",
465
+ "internalType": "address",
466
+ "name": "targetAddress",
232
467
  "type": "address"
233
468
  },
234
469
  {
235
- "internalType": "contract BundleManager",
236
- "name": "clonedBundleManager",
237
- "type": "address"
470
+ "internalType": "string",
471
+ "name": "targetName",
472
+ "type": "string"
473
+ },
474
+ {
475
+ "internalType": "bytes4[][]",
476
+ "name": "selectors",
477
+ "type": "bytes4[][]"
478
+ },
479
+ {
480
+ "internalType": "RoleId[]",
481
+ "name": "roles",
482
+ "type": "uint64[]"
238
483
  }
239
484
  ],
485
+ "name": "createGifTarget",
486
+ "outputs": [],
240
487
  "stateMutability": "nonpayable",
241
488
  "type": "function"
242
489
  },
243
490
  {
244
491
  "inputs": [],
245
- "name": "getAccessManagerMaster",
492
+ "name": "createInstanceClone",
246
493
  "outputs": [
247
494
  {
248
- "internalType": "address",
249
- "name": "",
495
+ "internalType": "contract Instance",
496
+ "name": "clonedInstance",
250
497
  "type": "address"
498
+ },
499
+ {
500
+ "internalType": "NftId",
501
+ "name": "clonedInstanceNftId",
502
+ "type": "uint96"
251
503
  }
252
504
  ],
253
- "stateMutability": "view",
505
+ "stateMutability": "nonpayable",
254
506
  "type": "function"
255
507
  },
256
508
  {
257
509
  "inputs": [],
258
- "name": "getBundleManagerMaster",
510
+ "name": "getDomain",
259
511
  "outputs": [
260
512
  {
261
- "internalType": "address",
262
- "name": "",
263
- "type": "address"
513
+ "internalType": "ObjectType",
514
+ "name": "serviceDomain",
515
+ "type": "uint8"
264
516
  }
265
517
  ],
266
- "stateMutability": "view",
518
+ "stateMutability": "pure",
267
519
  "type": "function"
268
520
  },
269
521
  {
@@ -309,13 +561,8 @@
309
561
  }
310
562
  ],
311
563
  "internalType": "struct IRegistry.ObjectInfo",
312
- "name": "",
564
+ "name": "info",
313
565
  "type": "tuple"
314
- },
315
- {
316
- "internalType": "bytes",
317
- "name": "data",
318
- "type": "bytes"
319
566
  }
320
567
  ],
321
568
  "stateMutability": "view",
@@ -323,12 +570,12 @@
323
570
  },
324
571
  {
325
572
  "inputs": [],
326
- "name": "getInitializedVersion",
573
+ "name": "getMasterInstanceReader",
327
574
  "outputs": [
328
575
  {
329
- "internalType": "uint64",
576
+ "internalType": "address",
330
577
  "name": "",
331
- "type": "uint64"
578
+ "type": "address"
332
579
  }
333
580
  ],
334
581
  "stateMutability": "view",
@@ -336,12 +583,12 @@
336
583
  },
337
584
  {
338
585
  "inputs": [],
339
- "name": "getInstanceMaster",
586
+ "name": "getNftId",
340
587
  "outputs": [
341
588
  {
342
- "internalType": "address",
589
+ "internalType": "NftId",
343
590
  "name": "",
344
- "type": "address"
591
+ "type": "uint96"
345
592
  }
346
593
  ],
347
594
  "stateMutability": "view",
@@ -349,7 +596,7 @@
349
596
  },
350
597
  {
351
598
  "inputs": [],
352
- "name": "getInstanceReaderMaster",
599
+ "name": "getOwner",
353
600
  "outputs": [
354
601
  {
355
602
  "internalType": "address",
@@ -362,12 +609,12 @@
362
609
  },
363
610
  {
364
611
  "inputs": [],
365
- "name": "getMajorVersion",
612
+ "name": "getRegistry",
366
613
  "outputs": [
367
614
  {
368
- "internalType": "VersionPart",
369
- "name": "majorVersion",
370
- "type": "uint8"
615
+ "internalType": "contract IRegistry",
616
+ "name": "",
617
+ "type": "address"
371
618
  }
372
619
  ],
373
620
  "stateMutability": "view",
@@ -375,12 +622,12 @@
375
622
  },
376
623
  {
377
624
  "inputs": [],
378
- "name": "getName",
625
+ "name": "getRoleId",
379
626
  "outputs": [
380
627
  {
381
- "internalType": "string",
382
- "name": "",
383
- "type": "string"
628
+ "internalType": "RoleId",
629
+ "name": "serviceRoleId",
630
+ "type": "uint64"
384
631
  }
385
632
  ],
386
633
  "stateMutability": "pure",
@@ -388,70 +635,160 @@
388
635
  },
389
636
  {
390
637
  "inputs": [],
391
- "name": "getNftId",
638
+ "name": "getVersion",
392
639
  "outputs": [
393
640
  {
394
- "internalType": "NftId",
641
+ "internalType": "Version",
395
642
  "name": "",
643
+ "type": "uint24"
644
+ }
645
+ ],
646
+ "stateMutability": "pure",
647
+ "type": "function"
648
+ },
649
+ {
650
+ "inputs": [
651
+ {
652
+ "internalType": "NftId",
653
+ "name": "instanceNftId",
396
654
  "type": "uint96"
655
+ },
656
+ {
657
+ "internalType": "contract IInstanceLinkedComponent",
658
+ "name": "component",
659
+ "type": "address"
397
660
  }
398
661
  ],
399
- "stateMutability": "view",
662
+ "name": "initializeAuthorization",
663
+ "outputs": [],
664
+ "stateMutability": "nonpayable",
400
665
  "type": "function"
401
666
  },
402
667
  {
403
668
  "inputs": [],
404
- "name": "getOwner",
405
- "outputs": [
669
+ "name": "initializeERC165",
670
+ "outputs": [],
671
+ "stateMutability": "nonpayable",
672
+ "type": "function"
673
+ },
674
+ {
675
+ "inputs": [
406
676
  {
407
677
  "internalType": "address",
408
- "name": "",
678
+ "name": "initialOwner",
679
+ "type": "address"
680
+ },
681
+ {
682
+ "internalType": "address",
683
+ "name": "registryAddress",
409
684
  "type": "address"
410
685
  }
411
686
  ],
412
- "stateMutability": "view",
687
+ "name": "initializeNftOwnable",
688
+ "outputs": [],
689
+ "stateMutability": "nonpayable",
413
690
  "type": "function"
414
691
  },
415
692
  {
416
- "inputs": [],
417
- "name": "getRegistry",
418
- "outputs": [
693
+ "inputs": [
419
694
  {
420
- "internalType": "contract IRegistry",
421
- "name": "",
695
+ "internalType": "address",
696
+ "name": "registryAddress",
697
+ "type": "address"
698
+ },
699
+ {
700
+ "internalType": "NftId",
701
+ "name": "parentNftId",
702
+ "type": "uint96"
703
+ },
704
+ {
705
+ "internalType": "ObjectType",
706
+ "name": "objectType",
707
+ "type": "uint8"
708
+ },
709
+ {
710
+ "internalType": "bool",
711
+ "name": "isInterceptor",
712
+ "type": "bool"
713
+ },
714
+ {
715
+ "internalType": "address",
716
+ "name": "initialOwner",
422
717
  "type": "address"
718
+ },
719
+ {
720
+ "internalType": "bytes",
721
+ "name": "registryData",
722
+ "type": "bytes"
423
723
  }
424
724
  ],
425
- "stateMutability": "view",
725
+ "name": "initializeRegisterable",
726
+ "outputs": [],
727
+ "stateMutability": "nonpayable",
426
728
  "type": "function"
427
729
  },
428
730
  {
429
- "inputs": [],
430
- "name": "getVersion",
431
- "outputs": [
731
+ "inputs": [
432
732
  {
433
- "internalType": "Version",
434
- "name": "",
435
- "type": "uint24"
733
+ "internalType": "address",
734
+ "name": "registryAddress",
735
+ "type": "address"
436
736
  }
437
737
  ],
438
- "stateMutability": "pure",
738
+ "name": "initializeRegistryLinked",
739
+ "outputs": [],
740
+ "stateMutability": "nonpayable",
439
741
  "type": "function"
440
742
  },
441
743
  {
442
744
  "inputs": [
443
745
  {
444
- "internalType": "uint256",
445
- "name": "idx",
446
- "type": "uint256"
746
+ "internalType": "address",
747
+ "name": "registry",
748
+ "type": "address"
749
+ },
750
+ {
751
+ "internalType": "address",
752
+ "name": "authority",
753
+ "type": "address"
754
+ },
755
+ {
756
+ "internalType": "address",
757
+ "name": "initialOwner",
758
+ "type": "address"
447
759
  }
448
760
  ],
449
- "name": "getVersion",
761
+ "name": "initializeService",
762
+ "outputs": [],
763
+ "stateMutability": "nonpayable",
764
+ "type": "function"
765
+ },
766
+ {
767
+ "inputs": [
768
+ {
769
+ "internalType": "address",
770
+ "name": "activatedBy",
771
+ "type": "address"
772
+ },
773
+ {
774
+ "internalType": "bytes",
775
+ "name": "data",
776
+ "type": "bytes"
777
+ }
778
+ ],
779
+ "name": "initializeVersionable",
780
+ "outputs": [],
781
+ "stateMutability": "nonpayable",
782
+ "type": "function"
783
+ },
784
+ {
785
+ "inputs": [],
786
+ "name": "isConsumingScheduledOp",
450
787
  "outputs": [
451
788
  {
452
- "internalType": "Version",
789
+ "internalType": "bytes4",
453
790
  "name": "",
454
- "type": "uint24"
791
+ "type": "bytes4"
455
792
  }
456
793
  ],
457
794
  "stateMutability": "view",
@@ -459,137 +796,102 @@
459
796
  },
460
797
  {
461
798
  "inputs": [],
462
- "name": "getVersionCount",
799
+ "name": "linkToRegisteredNftId",
463
800
  "outputs": [
464
801
  {
465
- "internalType": "uint256",
466
- "name": "",
467
- "type": "uint256"
802
+ "internalType": "NftId",
803
+ "name": "nftId",
804
+ "type": "uint96"
805
+ }
806
+ ],
807
+ "stateMutability": "nonpayable",
808
+ "type": "function"
809
+ },
810
+ {
811
+ "inputs": [
812
+ {
813
+ "internalType": "address",
814
+ "name": "rewardProvider",
815
+ "type": "address"
816
+ },
817
+ {
818
+ "internalType": "Amount",
819
+ "name": "dipAmount",
820
+ "type": "uint96"
468
821
  }
469
822
  ],
470
- "stateMutability": "view",
823
+ "name": "refillStakingRewardReserves",
824
+ "outputs": [],
825
+ "stateMutability": "nonpayable",
471
826
  "type": "function"
472
827
  },
473
828
  {
474
829
  "inputs": [
475
830
  {
476
- "internalType": "Version",
477
- "name": "_version",
478
- "type": "uint24"
479
- }
480
- ],
481
- "name": "getVersionInfo",
482
- "outputs": [
483
- {
484
- "components": [
485
- {
486
- "internalType": "Version",
487
- "name": "version",
488
- "type": "uint24"
489
- },
490
- {
491
- "internalType": "address",
492
- "name": "implementation",
493
- "type": "address"
494
- },
495
- {
496
- "internalType": "address",
497
- "name": "activatedBy",
498
- "type": "address"
499
- },
500
- {
501
- "internalType": "Timestamp",
502
- "name": "activatedAt",
503
- "type": "uint40"
504
- },
505
- {
506
- "internalType": "Blocknumber",
507
- "name": "activatedIn",
508
- "type": "uint32"
509
- }
510
- ],
511
- "internalType": "struct IVersionable.VersionInfo",
512
- "name": "",
513
- "type": "tuple"
831
+ "internalType": "bytes4",
832
+ "name": "interfaceId",
833
+ "type": "bytes4"
514
834
  }
515
835
  ],
516
- "stateMutability": "view",
836
+ "name": "registerInterface",
837
+ "outputs": [],
838
+ "stateMutability": "nonpayable",
517
839
  "type": "function"
518
840
  },
519
841
  {
520
842
  "inputs": [
521
- {
522
- "internalType": "address",
523
- "name": "account",
524
- "type": "address"
525
- },
526
- {
527
- "internalType": "RoleId",
528
- "name": "role",
529
- "type": "uint64"
530
- },
531
843
  {
532
844
  "internalType": "address",
533
845
  "name": "instanceAddress",
534
846
  "type": "address"
535
847
  }
536
848
  ],
537
- "name": "hasRole",
849
+ "name": "setAndRegisterMasterInstance",
538
850
  "outputs": [
539
851
  {
540
- "internalType": "bool",
541
- "name": "",
542
- "type": "bool"
852
+ "internalType": "NftId",
853
+ "name": "masterInstanceNftId",
854
+ "type": "uint96"
543
855
  }
544
856
  ],
545
- "stateMutability": "view",
857
+ "stateMutability": "nonpayable",
546
858
  "type": "function"
547
859
  },
548
860
  {
549
861
  "inputs": [
550
862
  {
551
863
  "internalType": "address",
552
- "name": "implementation",
553
- "type": "address"
554
- },
555
- {
556
- "internalType": "address",
557
- "name": "activatedBy",
864
+ "name": "newAuthority",
558
865
  "type": "address"
559
- },
560
- {
561
- "internalType": "bytes",
562
- "name": "data",
563
- "type": "bytes"
564
866
  }
565
867
  ],
566
- "name": "initialize",
868
+ "name": "setAuthority",
567
869
  "outputs": [],
568
870
  "stateMutability": "nonpayable",
569
871
  "type": "function"
570
872
  },
571
873
  {
572
874
  "inputs": [
573
- {
574
- "internalType": "Version",
575
- "name": "_version",
576
- "type": "uint24"
577
- }
578
- ],
579
- "name": "isInitialized",
580
- "outputs": [
581
875
  {
582
876
  "internalType": "bool",
583
- "name": "",
877
+ "name": "locked",
584
878
  "type": "bool"
585
879
  }
586
880
  ],
587
- "stateMutability": "view",
881
+ "name": "setComponentLocked",
882
+ "outputs": [],
883
+ "stateMutability": "nonpayable",
588
884
  "type": "function"
589
885
  },
590
886
  {
591
- "inputs": [],
592
- "name": "linkToRegisteredNftId",
887
+ "inputs": [
888
+ {
889
+ "internalType": "Seconds",
890
+ "name": "stakeLockingPeriod",
891
+ "type": "uint40"
892
+ }
893
+ ],
894
+ "name": "setStakingLockingPeriod",
593
895
  "outputs": [],
594
896
  "stateMutability": "nonpayable",
595
897
  "type": "function"
@@ -597,27 +899,12 @@
597
899
  {
598
900
  "inputs": [
599
901
  {
600
- "internalType": "address",
601
- "name": "accessManagerAddress",
602
- "type": "address"
603
- },
604
- {
605
- "internalType": "address",
606
- "name": "instanceAddress",
607
- "type": "address"
608
- },
609
- {
610
- "internalType": "address",
611
- "name": "instanceReaderAddress",
612
- "type": "address"
613
- },
614
- {
615
- "internalType": "address",
616
- "name": "bundleManagerAddress",
617
- "type": "address"
902
+ "internalType": "UFixed",
903
+ "name": "rewardRate",
904
+ "type": "uint256"
618
905
  }
619
906
  ],
620
- "name": "setMasterInstance",
907
+ "name": "setStakingRewardRate",
621
908
  "outputs": [],
622
909
  "stateMutability": "nonpayable",
623
910
  "type": "function"
@@ -644,22 +931,38 @@
644
931
  {
645
932
  "inputs": [
646
933
  {
647
- "internalType": "address",
648
- "name": "implementation",
649
- "type": "address"
650
- },
934
+ "internalType": "NftId",
935
+ "name": "instanceNftId",
936
+ "type": "uint96"
937
+ }
938
+ ],
939
+ "name": "upgradeInstanceReader",
940
+ "outputs": [],
941
+ "stateMutability": "nonpayable",
942
+ "type": "function"
943
+ },
944
+ {
945
+ "inputs": [
651
946
  {
652
947
  "internalType": "address",
653
- "name": "activatedBy",
948
+ "name": "instanceReaderAddress",
654
949
  "type": "address"
655
- },
950
+ }
951
+ ],
952
+ "name": "upgradeMasterInstanceReader",
953
+ "outputs": [],
954
+ "stateMutability": "nonpayable",
955
+ "type": "function"
956
+ },
957
+ {
958
+ "inputs": [
656
959
  {
657
960
  "internalType": "bytes",
658
961
  "name": "data",
659
962
  "type": "bytes"
660
963
  }
661
964
  ],
662
- "name": "upgrade",
965
+ "name": "upgradeVersionable",
663
966
  "outputs": [],
664
967
  "stateMutability": "nonpayable",
665
968
  "type": "function"
@@ -667,331 +970,189 @@
667
970
  {
668
971
  "inputs": [
669
972
  {
670
- "internalType": "NftId",
671
- "name": "instanceNftId",
973
+ "internalType": "Amount",
974
+ "name": "dipAmount",
975
+ "type": "uint96"
976
+ }
977
+ ],
978
+ "name": "withdrawStakingRewardReserves",
979
+ "outputs": [
980
+ {
981
+ "internalType": "Amount",
982
+ "name": "newBalance",
672
983
  "type": "uint96"
673
984
  }
674
985
  ],
675
- "name": "upgradeInstanceReader",
676
- "outputs": [],
677
986
  "stateMutability": "nonpayable",
678
987
  "type": "function"
679
988
  }
680
989
  ],
681
- "bytecode": "0x60806040523480156200001157600080fd5b50620000546301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600280546001600160a01b031916331790556200007062000076565b6200012a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000c75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001275780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614547806200013a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80635ab1bd53116100f9578063a745e3df11610097578063c22f980d11610071578063c22f980d14610526578063cde749f414610537578063cf7a1d7714610551578063eeff428e1461056457600080fd5b8063a745e3df146104e0578063b3c65015146104f3578063b88da7591461051357600080fd5b8063893d20e8116100d3578063893d20e81461047257806393c480541461047a578063946dfcfe1461048b578063a3f4df7e146104b257600080fd5b80635ab1bd531461042e578063644c45e01461043f578063872309c71461046a57600080fd5b80631a77e50c116101665780633a0b4b31116101405780633a0b4b31146102de5780633bd516ef146102ef5780634d459c90146103025780634f4213331461041b57600080fd5b80631a77e50c146102735780631eff4b221461029857806336147088146102cd57600080fd5b806301ffc9a7146101ae5780630d8e6e2c146101f05780630fec111c1461020c578063103bd5da14610222578063138461e01461023557806317d7de7c1461023f575b600080fd5b6101db6101bc366004613c15565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f86105af565b60405162ffffff90911681526020016101e7565b610214610639565b6040516101e7929190613c8f565b6101db610230366004613d60565b6107bb565b61023d61095b565b005b60408051808201909152600f81526e496e7374616e63655365727669636560881b60208201525b6040516101e79190613dab565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016101e7565b6102bf7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101e7565b6007546001600160a01b0316610280565b6005546001600160a01b0316610280565b61023d6102fd366004613dbe565b610b7d565b6103be610310366004613e2b565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206144f283398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101e7565b6101db610429366004613e2b565b611192565b6001546001600160a01b0316610280565b600154600160a01b90046001600160601b03166040516001600160601b0390911681526020016101e7565b6102bf600081565b610280611245565b6006546001600160a01b0316610280565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102bf565b6102666040518060400160405280600f81526020016e496e7374616e63655365727669636560881b81525081565b61023d6104ee366004613edd565b61135e565b6104fb6114b8565b6040516001600160401b0390911681526020016101e7565b6101f8610521366004613f81565b6114d9565b61023d610534366004613faf565b50565b61053f61152a565b60405160ff90911681526020016101e7565b61023d61055f366004613edd565b6115ad565b61056c6116b6565b604080516001600160a01b03968716815294861660208601526001600160601b03909316928401929092528316606083015291909116608082015260a0016101e7565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190613fcc565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106bc6001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610704611245565b6001600160a01b0316815260200182600101805461072190613fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90613fe9565b801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6000808290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610825919061402e565b604051631517388760e21b81526001600160401b038716600482015290915060009081906001600160a01b0384169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061404b565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038b1660248201526044016040805180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190614078565b909250905063ffffffff81161561094e576000945050505050610954565b50925050505b9392505050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e191906140b8565b15610a28576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610a515760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe91906140b8565b610ae6576040516372657a5160e01b81526001600160a01b0382166004820152602401610a1f565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5491906140de565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610b85611245565b6001600160a01b0316336001600160a01b031614610bb85760405163700dd81160e01b8152336004820152602401610a1f565b6004546001600160a01b031615610c295760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030313a4143434553535f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610a1f565b6005546001600160a01b031615610c945760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030323a494e5354414e43455f4d41535445525f414c604482015268149150511657d4d15560ba1b6064820152608401610a1f565b6007546001600160a01b031615610d055760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030343a42554e444c455f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610a1f565b6001600160a01b038416610d655760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4352442d3030353a4143434553535f4d414e414745525f5a45526044820152604f60f81b6064820152608401610a1f565b6001600160a01b038316610dbb5760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a4352442d3030363a494e5354414e43455f5a45524f00000000006044820152606401610a1f565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a4352442d3030373a494e5354414e43455f5245414445525f5a45604482015261524f60f01b6064820152608401610a1f565b6001600160a01b038116610e7c5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4352442d3030383a42554e444c455f4d414e414745525f5a45526044820152604f60f81b6064820152608401610a1f565b600083905060008390506000839050866001600160a01b0316836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef7919061402e565b6001600160a01b031614610f5f5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030393a494e5354414e43455f415554484f524954596044820152680be9a92a69a82a886960bb1b6064820152608401610a1f565b611037826001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906140de565b846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906140de565b6001600160601b0390811691161490565b61109b5760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3031303a494e5354414e43455f5245414445525f494e60448201526e0a6a8829c868abe9a92a69a82a8869608b1b6064820152608401610a1f565b6110dc816001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b61113f5760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a4352442d3031313a42554e444c455f4d414e414745525f494e5360448201526d0a8829c868abe9a92a69a82a886960931b6064820152608401610a1f565b5050600480546001600160a01b039687166001600160a01b031991821617909155600580549587169582169590951790945550600680549285169284169290921790915560078054919093169116179055565b6000806000805160206144f283398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906140fb565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce91906140b8565b1561134e57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801561132a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610634919061402e565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6113806105af565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e4919061404b565b6000805160206144d28339815191528054600160401b900460ff1680611417575080546001600160401b03808416911610155b156114355760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556114608585611e7a565b61146983612119565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006106346000805160206144d2833981519152546001600160401b031690565b60006000805160206144f283398151915260010182815481106114fe576114fe614114565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60006115346105af565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190614144565b6000805160206144d28339815191528054600160401b810460ff1615906001600160401b03166000811580156115e05750825b90506000826001600160401b031660011480156115fc5750303b155b90508115801561160a575080155b156116285760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561165257845460ff60401b1916600160401b1785555b61165c8888611e7a565b6116668787612121565b83156116ac57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600354604051636939560f60e11b81526001600160a01b039091166004820181905260009182918291829182913391908390829063d272ac1e90602401602060405180830381865afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173491906140de565b604051632efe011360e01b815260036004820152600060248201819052604482018190529192506001600160a01b0384169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118459190614144565b604080516001600160e01b031960e085901b1681526004810191909152600f60448201526e52656769737472795365727669636560881b606482015260ff9091166024820152608401602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf919061402e565b60045490915081906118e9906001600160a01b0316612277565b604051632207fb6160e21b8152306004820152909a506001600160a01b038b169063881fed8490602401600060405180830381600087803b15801561192d57600080fd5b505af1158015611941573d6000803e3d6000fd5b505060055461195b92506001600160a01b03169050612277565b60035460405163976b0a7760e01b81526001600160a01b038d8116600483015291821660248201526001600160601b0386166044820152336064820152919a508a169063976b0a7790608401600060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b505060405163834af15360e01b81526001600160a01b038c81166004830152600093508416915063834af153906024016000604051808303816000875af1158015611a24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4c91908101906141ae565b508051600654909a50909150611a6a906001600160a01b0316612277565b600354604051633ca904dd60e21b81526001600160a01b0391821660048201526001600160601b038c16602482015291995089169063f2a4137490604401600060405180830381600087803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b038b811660048301528d16925063f7bc431c9150602401600060405180830381600087803b158015611b1d57600080fd5b505af1158015611b31573d6000803e3d6000fd5b5050600754611b4b92506001600160a01b03169050612277565b600354604051630c861c2560e41b81526001600160a01b038e8116600483015291821660248201526001600160601b038c16604482015291985088169063c861c25090606401600060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b505060405162422c9d60e81b81526001600160a01b038a811660048301528d16925063422c9d009150602401600060405180830381600087803b158015611c0557600080fd5b505af1158015611c19573d6000803e3d6000fd5b50505050611c288b8b896122e9565b8a6001600160a01b03166325c471a0611c3f6136a6565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc919061404b565b8860006040518463ffffffff1660e01b8152600401611cdd939291906142a6565b600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b505050508a6001600160a01b031663b7d2b162611d266136a6565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da3919061404b565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152306024820152604401600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b505050507f89f53d1fc9d655ac6863fb19d55f6cc8a7649a51ec36a0d13ec77d2bd2e970f38b8b8a8c604051611e6594939291906001600160a01b0394851681529284166020840152921660408201526001600160601b0391909116606082015260800190565b60405180910390a15050505050509091929394565b611e8261371e565b6000805160206144f28339815191526000611eb26000805160206144d2833981519152546001600160401b031690565b90506000611ebe6105af565b9050816001600160401b0316600103611eeb5760028301805462ffffff191662ffffff8316179055611f39565b600283015462ffffff90811690821611611f395760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610a1f565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201191906142d6565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf68906114a99083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101a961371e565b6000805160206144d28339815191528054600160401b810460ff1615906001600160401b03166000811580156121545750825b90506000826001600160401b031660011480156121705750303b155b90508115801561217e575080155b1561219c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121c657845460ff60401b1916600160401b1785555b6000868060200190518101906121dc91906142fd565b600380546001600160a01b039093166001600160a01b03199093168317905591506122079089613757565b612217631b4612f160e31b6137e4565b61222763777fa14760e11b6137e4565b50831561226e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166122e4576040516330be1a3d60e21b815260040160405180910390fd5b919050565b600154604051632efe011360e01b81526003600482015260006024820181905260448201819052916001600160a01b03169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156123d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fa9190614144565b604080516001600160e01b031960e085901b16815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b606482015260ff9091166024820152608401602060405180830381865afa158015612464573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612488919061402e565b9050836001600160a01b03166325c471a06124a1613809565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156124fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251e919061404b565b8360006040518463ffffffff1660e01b815260040161253f939291906142a6565b600060405180830381600087803b15801561255957600080fd5b505af115801561256d573d6000803e3d6000fd5b50600092506002915061257d9050565b6040519080825280602002602001820160405280156125a6578160200160208202803683370190505b509050630b24cf5f60e01b816000815181106125c4576125c4614114565b6001600160e01b031990921660209283029190910190910152805163bd5947e360e01b90829060019081106125fb576125fb614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0385166308d6122d858361262d613809565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa919061404b565b6040518463ffffffff1660e01b81526004016126c89392919061432c565b600060405180830381600087803b1580156126e257600080fd5b505af11580156126f6573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156127e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280d9190614144565b604080516001600160e01b031960e085901b1681526004810191909152600b60448201526a506f6f6c5365727669636560a81b606482015260ff9091166024820152608401602060405180830381865afa15801561286f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612893919061402e565b9050856001600160a01b03166325c471a06128ac613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612929919061404b565b8360006040518463ffffffff1660e01b815260040161294a939291906142a6565b600060405180830381600087803b15801561296457600080fd5b505af1158015612978573d6000803e3d6000fd5b5060009250600491506129889050565b6040519080825280602002602001820160405280156129b1578160200160208202803683370190505b50905063e7cd37d460e01b816000815181106129cf576129cf614114565b6001600160e01b0319909216602092830291909101909101528051633055195560e11b9082906001908110612a0657612a06614114565b6001600160e01b0319909216602092830291909101909101528051633038d34760e11b9082906002908110612a3d57612a3d614114565b6001600160e01b03199092166020928302919091019091015280516307f8b57360e31b9082906003908110612a7457612a74614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0387166308d6122d8783612aa6613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b23919061404b565b6040518463ffffffff1660e01b8152600401612b419392919061432c565b600060405180830381600087803b158015612b5b57600080fd5b505af1158015612b6f573d6000803e3d6000fd5b506000925060059150612b7f9050565b604051908082528060200260200182016040528015612ba8578160200160208202803683370190505b509050630cc7e61460e01b81600081518110612bc657612bc6614114565b6001600160e01b0319909216602092830291909101909101528051631351fccf60e31b9082906001908110612bfd57612bfd614114565b6001600160e01b03199092166020928302919091019091015280516346f0e8a760e11b9082906002908110612c3457612c34614114565b6001600160e01b031990921660209283029190910190910152805163b5346af560e01b9082906003908110612c6b57612c6b614114565b6001600160e01b03199092166020928302919091019091015280516306fa456560e01b9082906004908110612ca257612ca2614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0388166308d6122d8783612cd4613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d51919061404b565b6040518463ffffffff1660e01b8152600401612d6f9392919061432c565b600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015612e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190614144565b604080516001600160e01b031960e085901b1681526004810191909152600e60448201526d50726f647563745365727669636560901b606482015260ff9091166024820152608401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d919061402e565b9050886001600160a01b03166325c471a0612f56613881565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd3919061404b565b8360006040518463ffffffff1660e01b8152600401612ff4939291906142a6565b600060405180830381600087803b15801561300e57600080fd5b505af1158015613022573d6000803e3d6000fd5b5060009250600591506130329050565b60405190808252806020026020018201604052801561305b578160200160208202803683370190505b5090506391ff6eaa60e01b8160008151811061307957613079614114565b6001600160e01b03199092166020928302919091019091015280516354e750a160e11b90829060019081106130b0576130b0614114565b6001600160e01b03199092166020928302919091019091015280516317b0844560e11b90829060029081106130e7576130e7614114565b6001600160e01b03199092166020928302919091019091015280516314eddc0360e31b908290600390811061311e5761311e614114565b6001600160e01b0319909216602092830291909101909101528051633e77a42160e11b908290600490811061315557613155614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b038a166308d6122d8a83613187613881565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156131e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613204919061404b565b6040518463ffffffff1660e01b81526004016132229392919061432c565b600060405180830381600087803b15801561323c57600080fd5b505af1158015613250573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133679190614144565b604080516001600160e01b031960e085901b1681526004810191909152600d60448201526c506f6c6963795365727669636560981b606482015260ff9091166024820152608401602060405180830381865afa1580156133cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ef919061402e565b90508a6001600160a01b03166325c471a06134086138bd565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015613461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613485919061404b565b8360006040518463ffffffff1660e01b81526004016134a6939291906142a6565b600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5060009250600391506134e49050565b60405190808252806020026020018201604052801561350d578160200160208202803683370190505b50905063bc8d400060e01b8160008151811061352b5761352b614114565b6001600160e01b0319909216602092830291909101909101528051634d4b06a960e11b908290600190811061356257613562614114565b6001600160e01b0319909216602092830291909101909101528051631750d17360e21b908290600290811061359957613599614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b038c166308d6122d8c836135cb6138bd565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015613624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613648919061404b565b6040518463ffffffff1660e01b81526004016136669392919061432c565b600060405180830381600087803b15801561368057600080fd5b505af1158015613694573d6000803e3d6000fd5b50505050505050505050505050505050565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156136fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610634919061404b565b6000805160206144d283398151915254600160401b900460ff1661375557604051631afcd79f60e31b815260040160405180910390fd5b565b600061378560408051808201909152600f81526e496e7374616e63655365727669636560881b602082015290565b61378d61152a565b60405160200161379e92919061439e565b604051602081830303815290604052905060006137ba846138f9565b905060006137cd8583603c84888861396a565b6137dd631b4612f160e31b6137e4565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516368aebf7b60e01b8152612710600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b8152612774600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b81526127d8600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b815261283c600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015613940573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396491906140de565b92915050565b6139ab6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6139b58287613a36565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101613a258382614412565b5061226e6303fb044760e21b6137e4565b6001600160a01b038216613a8c5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610a1f565b600280546001600160a01b0319166001600160a01b038416179055613ab081613ab4565b5050565b6001546001600160a01b031615613aed5760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610a1f565b6001600160a01b038116613b145760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613b4a5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a1f565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613bc4575060408051601f3d908101601f19168201909252613bc1918101906140b8565b60015b613bec5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a1f565b80613ab05760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610a1f565b600060208284031215613c2757600080fd5b81356001600160e01b03198116811461095457600080fd5b60005b83811015613c5a578181015183820152602001613c42565b50506000910152565b60008151808452613c7b816020860160208601613c3f565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151613cd360a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152613d19610120840182613c63565b90508281036020840152613d2d8185613c63565b95945050505050565b6001600160a01b038116811461053457600080fd5b6001600160401b038116811461053457600080fd5b600080600060608486031215613d7557600080fd5b8335613d8081613d36565b92506020840135613d9081613d4b565b91506040840135613da081613d36565b809150509250925092565b6020815260006109546020830184613c63565b60008060008060808587031215613dd457600080fd5b8435613ddf81613d36565b93506020850135613def81613d36565b92506040850135613dff81613d36565b91506060850135613e0f81613d36565b939692955090935050565b62ffffff8116811461053457600080fd5b600060208284031215613e3d57600080fd5b813561095481613e1a565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e8057613e80613e48565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613eae57613eae613e48565b604052919050565b60006001600160401b03821115613ecf57613ecf613e48565b50601f01601f191660200190565b600080600060608486031215613ef257600080fd5b8335613efd81613d36565b92506020840135613f0d81613d36565b915060408401356001600160401b03811115613f2857600080fd5b8401601f81018613613f3957600080fd5b8035613f4c613f4782613eb6565b613e86565b818152876020838501011115613f6157600080fd5b816020840160208301376000602083830101528093505050509250925092565b600060208284031215613f9357600080fd5b5035919050565b6001600160601b038116811461053457600080fd5b600060208284031215613fc157600080fd5b813561095481613f9a565b600060208284031215613fde57600080fd5b815161095481613e1a565b600181811c90821680613ffd57607f821691505b60208210810361401d57634e487b7160e01b600052602260045260246000fd5b50919050565b80516122e481613d36565b60006020828403121561404057600080fd5b815161095481613d36565b60006020828403121561405d57600080fd5b815161095481613d4b565b805180151581146122e457600080fd5b6000806040838503121561408b57600080fd5b61409483614068565b9150602083015163ffffffff811681146140ad57600080fd5b809150509250929050565b6000602082840312156140ca57600080fd5b61095482614068565b80516122e481613f9a565b6000602082840312156140f057600080fd5b815161095481613f9a565b60006020828403121561410d57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60ff8116811461053457600080fd5b80516122e48161412a565b60006020828403121561415657600080fd5b81516109548161412a565b600082601f83011261417257600080fd5b8151614180613f4782613eb6565b81815284602083860101111561419557600080fd5b6141a6826020830160208701613c3f565b949350505050565b600080604083850312156141c157600080fd5b82516001600160401b03808211156141d857600080fd5b9084019060e082870312156141ec57600080fd5b6141f4613e5e565b6141fd836140d3565b815261420b602084016140d3565b602082015261421c60408401614139565b604082015261422d60608401614068565b606082015261423e60808401614023565b608082015261424f60a08401614023565b60a082015260c08301518281111561426657600080fd5b61427288828601614161565b60c083015250602086015190945091508082111561428f57600080fd5b5061429c85828601614161565b9150509250929050565b6001600160401b039390931683526001600160a01b0391909116602083015263ffffffff16604082015260600190565b6000602082840312156142e857600080fd5b815164ffffffffff8116811461095457600080fd5b6000806040838503121561431057600080fd5b825161431b81613d36565b60208401519092506140ad81613d36565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b8181101561437f5784516001600160e01b03191683529383019391830191600101614359565b50508093505050506001600160401b0383166040830152949350505050565b6040815260006143b16040830185613c63565b905060ff831660208301529392505050565b601f82111561440d57600081815260208120601f850160051c810160208610156143ea5750805b601f850160051c820191505b81811015614409578281556001016143f6565b5050505b505050565b81516001600160401b0381111561442b5761442b613e48565b61443f816144398454613fe9565b846143c3565b602080601f831160018114614474576000841561445c5750858301515b600019600386901b1c1916600185901b178555614409565b600085815260208120601f198616915b828110156144a357888601518255948401946001909101908401614484565b50858210156144c15787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212205c8078de1c28525f369687b9108c09b7b5697f6ddcf28c8eb1bce83c63a9a53064736f6c63430008140033",
682
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80635ab1bd53116100f9578063a745e3df11610097578063c22f980d11610071578063c22f980d14610526578063cde749f414610537578063cf7a1d7714610551578063eeff428e1461056457600080fd5b8063a745e3df146104e0578063b3c65015146104f3578063b88da7591461051357600080fd5b8063893d20e8116100d3578063893d20e81461047257806393c480541461047a578063946dfcfe1461048b578063a3f4df7e146104b257600080fd5b80635ab1bd531461042e578063644c45e01461043f578063872309c71461046a57600080fd5b80631a77e50c116101665780633a0b4b31116101405780633a0b4b31146102de5780633bd516ef146102ef5780634d459c90146103025780634f4213331461041b57600080fd5b80631a77e50c146102735780631eff4b221461029857806336147088146102cd57600080fd5b806301ffc9a7146101ae5780630d8e6e2c146101f05780630fec111c1461020c578063103bd5da14610222578063138461e01461023557806317d7de7c1461023f575b600080fd5b6101db6101bc366004613c15565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f86105af565b60405162ffffff90911681526020016101e7565b610214610639565b6040516101e7929190613c8f565b6101db610230366004613d60565b6107bb565b61023d61095b565b005b60408051808201909152600f81526e496e7374616e63655365727669636560881b60208201525b6040516101e79190613dab565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016101e7565b6102bf7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101e7565b6007546001600160a01b0316610280565b6005546001600160a01b0316610280565b61023d6102fd366004613dbe565b610b7d565b6103be610310366004613e2b565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206144f283398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101e7565b6101db610429366004613e2b565b611192565b6001546001600160a01b0316610280565b600154600160a01b90046001600160601b03166040516001600160601b0390911681526020016101e7565b6102bf600081565b610280611245565b6006546001600160a01b0316610280565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102bf565b6102666040518060400160405280600f81526020016e496e7374616e63655365727669636560881b81525081565b61023d6104ee366004613edd565b61135e565b6104fb6114b8565b6040516001600160401b0390911681526020016101e7565b6101f8610521366004613f81565b6114d9565b61023d610534366004613faf565b50565b61053f61152a565b60405160ff90911681526020016101e7565b61023d61055f366004613edd565b6115ad565b61056c6116b6565b604080516001600160a01b03968716815294861660208601526001600160601b03909316928401929092528316606083015291909116608082015260a0016101e7565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190613fcc565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106bc6001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610704611245565b6001600160a01b0316815260200182600101805461072190613fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90613fe9565b801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6000808290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610825919061402e565b604051631517388760e21b81526001600160401b038716600482015290915060009081906001600160a01b0384169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061404b565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038b1660248201526044016040805180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190614078565b909250905063ffffffff81161561094e576000945050505050610954565b50925050505b9392505050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e191906140b8565b15610a28576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610a515760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe91906140b8565b610ae6576040516372657a5160e01b81526001600160a01b0382166004820152602401610a1f565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5491906140de565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610b85611245565b6001600160a01b0316336001600160a01b031614610bb85760405163700dd81160e01b8152336004820152602401610a1f565b6004546001600160a01b031615610c295760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030313a4143434553535f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610a1f565b6005546001600160a01b031615610c945760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030323a494e5354414e43455f4d41535445525f414c604482015268149150511657d4d15560ba1b6064820152608401610a1f565b6007546001600160a01b031615610d055760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030343a42554e444c455f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610a1f565b6001600160a01b038416610d655760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4352442d3030353a4143434553535f4d414e414745525f5a45526044820152604f60f81b6064820152608401610a1f565b6001600160a01b038316610dbb5760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a4352442d3030363a494e5354414e43455f5a45524f00000000006044820152606401610a1f565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a4352442d3030373a494e5354414e43455f5245414445525f5a45604482015261524f60f01b6064820152608401610a1f565b6001600160a01b038116610e7c5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4352442d3030383a42554e444c455f4d414e414745525f5a45526044820152604f60f81b6064820152608401610a1f565b600083905060008390506000839050866001600160a01b0316836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef7919061402e565b6001600160a01b031614610f5f5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030393a494e5354414e43455f415554484f524954596044820152680be9a92a69a82a886960bb1b6064820152608401610a1f565b611037826001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc491906140de565b846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906140de565b6001600160601b0390811691161490565b61109b5760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3031303a494e5354414e43455f5245414445525f494e60448201526e0a6a8829c868abe9a92a69a82a8869608b1b6064820152608401610a1f565b6110dc816001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b61113f5760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a4352442d3031313a42554e444c455f4d414e414745525f494e5360448201526d0a8829c868abe9a92a69a82a886960931b6064820152608401610a1f565b5050600480546001600160a01b039687166001600160a01b031991821617909155600580549587169582169590951790945550600680549285169284169290921790915560078054919093169116179055565b6000806000805160206144f283398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906140fb565b1192915050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce91906140b8565b1561134e57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801561132a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610634919061402e565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6113806105af565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e4919061404b565b6000805160206144d28339815191528054600160401b900460ff1680611417575080546001600160401b03808416911610155b156114355760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556114608585611e7a565b61146983612119565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006106346000805160206144d2833981519152546001600160401b031690565b60006000805160206144f283398151915260010182815481106114fe576114fe614114565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60006115346105af565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190614144565b6000805160206144d28339815191528054600160401b810460ff1615906001600160401b03166000811580156115e05750825b90506000826001600160401b031660011480156115fc5750303b155b90508115801561160a575080155b156116285760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561165257845460ff60401b1916600160401b1785555b61165c8888611e7a565b6116668787612121565b83156116ac57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600354604051636939560f60e11b81526001600160a01b039091166004820181905260009182918291829182913391908390829063d272ac1e90602401602060405180830381865afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173491906140de565b604051632efe011360e01b815260036004820152600060248201819052604482018190529192506001600160a01b0384169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611821573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118459190614144565b604080516001600160e01b031960e085901b1681526004810191909152600f60448201526e52656769737472795365727669636560881b606482015260ff9091166024820152608401602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf919061402e565b60045490915081906118e9906001600160a01b0316612277565b604051632207fb6160e21b8152306004820152909a506001600160a01b038b169063881fed8490602401600060405180830381600087803b15801561192d57600080fd5b505af1158015611941573d6000803e3d6000fd5b505060055461195b92506001600160a01b03169050612277565b60035460405163976b0a7760e01b81526001600160a01b038d8116600483015291821660248201526001600160601b0386166044820152336064820152919a508a169063976b0a7790608401600060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b505060405163834af15360e01b81526001600160a01b038c81166004830152600093508416915063834af153906024016000604051808303816000875af1158015611a24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4c91908101906141ae565b508051600654909a50909150611a6a906001600160a01b0316612277565b600354604051633ca904dd60e21b81526001600160a01b0391821660048201526001600160601b038c16602482015291995089169063f2a4137490604401600060405180830381600087803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b038b811660048301528d16925063f7bc431c9150602401600060405180830381600087803b158015611b1d57600080fd5b505af1158015611b31573d6000803e3d6000fd5b5050600754611b4b92506001600160a01b03169050612277565b600354604051630c861c2560e41b81526001600160a01b038e8116600483015291821660248201526001600160601b038c16604482015291985088169063c861c25090606401600060405180830381600087803b158015611bab57600080fd5b505af1158015611bbf573d6000803e3d6000fd5b505060405162422c9d60e81b81526001600160a01b038a811660048301528d16925063422c9d009150602401600060405180830381600087803b158015611c0557600080fd5b505af1158015611c19573d6000803e3d6000fd5b50505050611c288b8b896122e9565b8a6001600160a01b03166325c471a0611c3f6136a6565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc919061404b565b8860006040518463ffffffff1660e01b8152600401611cdd939291906142a6565b600060405180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b505050508a6001600160a01b031663b7d2b162611d266136a6565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da3919061404b565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152306024820152604401600060405180830381600087803b158015611dea57600080fd5b505af1158015611dfe573d6000803e3d6000fd5b505050507f89f53d1fc9d655ac6863fb19d55f6cc8a7649a51ec36a0d13ec77d2bd2e970f38b8b8a8c604051611e6594939291906001600160a01b0394851681529284166020840152921660408201526001600160601b0391909116606082015260800190565b60405180910390a15050505050509091929394565b611e8261371e565b6000805160206144f28339815191526000611eb26000805160206144d2833981519152546001600160401b031690565b90506000611ebe6105af565b9050816001600160401b0316600103611eeb5760028301805462ffffff191662ffffff8316179055611f39565b600283015462ffffff90811690821611611f395760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610a1f565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201191906142d6565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf68906114a99083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101a961371e565b6000805160206144d28339815191528054600160401b810460ff1615906001600160401b03166000811580156121545750825b90506000826001600160401b031660011480156121705750303b155b90508115801561217e575080155b1561219c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121c657845460ff60401b1916600160401b1785555b6000868060200190518101906121dc91906142fd565b600380546001600160a01b039093166001600160a01b03199093168317905591506122079089613757565b612217631b4612f160e31b6137e4565b61222763777fa14760e11b6137e4565b50831561226e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166122e4576040516330be1a3d60e21b815260040160405180910390fd5b919050565b600154604051632efe011360e01b81526003600482015260006024820181905260448201819052916001600160a01b03169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156123d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fa9190614144565b604080516001600160e01b031960e085901b16815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b606482015260ff9091166024820152608401602060405180830381865afa158015612464573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612488919061402e565b9050836001600160a01b03166325c471a06124a1613809565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156124fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251e919061404b565b8360006040518463ffffffff1660e01b815260040161253f939291906142a6565b600060405180830381600087803b15801561255957600080fd5b505af115801561256d573d6000803e3d6000fd5b50600092506002915061257d9050565b6040519080825280602002602001820160405280156125a6578160200160208202803683370190505b509050630b24cf5f60e01b816000815181106125c4576125c4614114565b6001600160e01b031990921660209283029190910190910152805163bd5947e360e01b90829060019081106125fb576125fb614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0385166308d6122d858361262d613809565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa919061404b565b6040518463ffffffff1660e01b81526004016126c89392919061432c565b600060405180830381600087803b1580156126e257600080fd5b505af11580156126f6573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156127e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280d9190614144565b604080516001600160e01b031960e085901b1681526004810191909152600b60448201526a506f6f6c5365727669636560a81b606482015260ff9091166024820152608401602060405180830381865afa15801561286f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612893919061402e565b9050856001600160a01b03166325c471a06128ac613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612929919061404b565b8360006040518463ffffffff1660e01b815260040161294a939291906142a6565b600060405180830381600087803b15801561296457600080fd5b505af1158015612978573d6000803e3d6000fd5b5060009250600491506129889050565b6040519080825280602002602001820160405280156129b1578160200160208202803683370190505b50905063e7cd37d460e01b816000815181106129cf576129cf614114565b6001600160e01b0319909216602092830291909101909101528051633055195560e11b9082906001908110612a0657612a06614114565b6001600160e01b0319909216602092830291909101909101528051633038d34760e11b9082906002908110612a3d57612a3d614114565b6001600160e01b03199092166020928302919091019091015280516307f8b57360e31b9082906003908110612a7457612a74614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0387166308d6122d8783612aa6613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b23919061404b565b6040518463ffffffff1660e01b8152600401612b419392919061432c565b600060405180830381600087803b158015612b5b57600080fd5b505af1158015612b6f573d6000803e3d6000fd5b506000925060059150612b7f9050565b604051908082528060200260200182016040528015612ba8578160200160208202803683370190505b509050630cc7e61460e01b81600081518110612bc657612bc6614114565b6001600160e01b0319909216602092830291909101909101528051631351fccf60e31b9082906001908110612bfd57612bfd614114565b6001600160e01b03199092166020928302919091019091015280516346f0e8a760e11b9082906002908110612c3457612c34614114565b6001600160e01b031990921660209283029190910190910152805163b5346af560e01b9082906003908110612c6b57612c6b614114565b6001600160e01b03199092166020928302919091019091015280516306fa456560e01b9082906004908110612ca257612ca2614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b0388166308d6122d8783612cd4613845565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d51919061404b565b6040518463ffffffff1660e01b8152600401612d6f9392919061432c565b600060405180830381600087803b158015612d8957600080fd5b505af1158015612d9d573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015612e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190614144565b604080516001600160e01b031960e085901b1681526004810191909152600e60448201526d50726f647563745365727669636560901b606482015260ff9091166024820152608401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d919061402e565b9050886001600160a01b03166325c471a0612f56613881565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd3919061404b565b8360006040518463ffffffff1660e01b8152600401612ff4939291906142a6565b600060405180830381600087803b15801561300e57600080fd5b505af1158015613022573d6000803e3d6000fd5b5060009250600591506130329050565b60405190808252806020026020018201604052801561305b578160200160208202803683370190505b5090506391ff6eaa60e01b8160008151811061307957613079614114565b6001600160e01b03199092166020928302919091019091015280516354e750a160e11b90829060019081106130b0576130b0614114565b6001600160e01b03199092166020928302919091019091015280516317b0844560e11b90829060029081106130e7576130e7614114565b6001600160e01b03199092166020928302919091019091015280516314eddc0360e31b908290600390811061311e5761311e614114565b6001600160e01b0319909216602092830291909101909101528051633e77a42160e11b908290600490811061315557613155614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b038a166308d6122d8a83613187613881565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156131e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613204919061404b565b6040518463ffffffff1660e01b81526004016132229392919061432c565b600060405180830381600087803b15801561323c57600080fd5b505af1158015613250573d6000803e3d6000fd5b5050600154604051632efe011360e01b8152600360048201526000602482018190526044820181905293506001600160a01b03909116915063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190613fcc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133679190614144565b604080516001600160e01b031960e085901b1681526004810191909152600d60448201526c506f6c6963795365727669636560981b606482015260ff9091166024820152608401602060405180830381865afa1580156133cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ef919061402e565b90508a6001600160a01b03166325c471a06134086138bd565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015613461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613485919061404b565b8360006040518463ffffffff1660e01b81526004016134a6939291906142a6565b600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5060009250600391506134e49050565b60405190808252806020026020018201604052801561350d578160200160208202803683370190505b50905063bc8d400060e01b8160008151811061352b5761352b614114565b6001600160e01b0319909216602092830291909101909101528051634d4b06a960e11b908290600190811061356257613562614114565b6001600160e01b0319909216602092830291909101909101528051631750d17360e21b908290600290811061359957613599614114565b6001600160e01b0319909216602092830291909101909101526001600160a01b038c166308d6122d8c836135cb6138bd565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015613624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613648919061404b565b6040518463ffffffff1660e01b81526004016136669392919061432c565b600060405180830381600087803b15801561368057600080fd5b505af1158015613694573d6000803e3d6000fd5b50505050505050505050505050505050565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156136fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610634919061404b565b6000805160206144d283398151915254600160401b900460ff1661375557604051631afcd79f60e31b815260040160405180910390fd5b565b600061378560408051808201909152600f81526e496e7374616e63655365727669636560881b602082015290565b61378d61152a565b60405160200161379e92919061439e565b604051602081830303815290604052905060006137ba846138f9565b905060006137cd8583603c84888861396a565b6137dd631b4612f160e31b6137e4565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516368aebf7b60e01b8152612710600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b8152612774600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b81526127d8600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b6040516368aebf7b60e01b815261283c600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024016136dd565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015613940573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396491906140de565b92915050565b6139ab6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6139b58287613a36565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101613a258382614412565b5061226e6303fb044760e21b6137e4565b6001600160a01b038216613a8c5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610a1f565b600280546001600160a01b0319166001600160a01b038416179055613ab081613ab4565b5050565b6001546001600160a01b031615613aed5760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610a1f565b6001600160a01b038116613b145760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613b4a5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a1f565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613bc4575060408051601f3d908101601f19168201909252613bc1918101906140b8565b60015b613bec5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a1f565b80613ab05760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610a1f565b600060208284031215613c2757600080fd5b81356001600160e01b03198116811461095457600080fd5b60005b83811015613c5a578181015183820152602001613c42565b50506000910152565b60008151808452613c7b816020860160208601613c3f565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151613cd360a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152613d19610120840182613c63565b90508281036020840152613d2d8185613c63565b95945050505050565b6001600160a01b038116811461053457600080fd5b6001600160401b038116811461053457600080fd5b600080600060608486031215613d7557600080fd5b8335613d8081613d36565b92506020840135613d9081613d4b565b91506040840135613da081613d36565b809150509250925092565b6020815260006109546020830184613c63565b60008060008060808587031215613dd457600080fd5b8435613ddf81613d36565b93506020850135613def81613d36565b92506040850135613dff81613d36565b91506060850135613e0f81613d36565b939692955090935050565b62ffffff8116811461053457600080fd5b600060208284031215613e3d57600080fd5b813561095481613e1a565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e8057613e80613e48565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613eae57613eae613e48565b604052919050565b60006001600160401b03821115613ecf57613ecf613e48565b50601f01601f191660200190565b600080600060608486031215613ef257600080fd5b8335613efd81613d36565b92506020840135613f0d81613d36565b915060408401356001600160401b03811115613f2857600080fd5b8401601f81018613613f3957600080fd5b8035613f4c613f4782613eb6565b613e86565b818152876020838501011115613f6157600080fd5b816020840160208301376000602083830101528093505050509250925092565b600060208284031215613f9357600080fd5b5035919050565b6001600160601b038116811461053457600080fd5b600060208284031215613fc157600080fd5b813561095481613f9a565b600060208284031215613fde57600080fd5b815161095481613e1a565b600181811c90821680613ffd57607f821691505b60208210810361401d57634e487b7160e01b600052602260045260246000fd5b50919050565b80516122e481613d36565b60006020828403121561404057600080fd5b815161095481613d36565b60006020828403121561405d57600080fd5b815161095481613d4b565b805180151581146122e457600080fd5b6000806040838503121561408b57600080fd5b61409483614068565b9150602083015163ffffffff811681146140ad57600080fd5b809150509250929050565b6000602082840312156140ca57600080fd5b61095482614068565b80516122e481613f9a565b6000602082840312156140f057600080fd5b815161095481613f9a565b60006020828403121561410d57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60ff8116811461053457600080fd5b80516122e48161412a565b60006020828403121561415657600080fd5b81516109548161412a565b600082601f83011261417257600080fd5b8151614180613f4782613eb6565b81815284602083860101111561419557600080fd5b6141a6826020830160208701613c3f565b949350505050565b600080604083850312156141c157600080fd5b82516001600160401b03808211156141d857600080fd5b9084019060e082870312156141ec57600080fd5b6141f4613e5e565b6141fd836140d3565b815261420b602084016140d3565b602082015261421c60408401614139565b604082015261422d60608401614068565b606082015261423e60808401614023565b608082015261424f60a08401614023565b60a082015260c08301518281111561426657600080fd5b61427288828601614161565b60c083015250602086015190945091508082111561428f57600080fd5b5061429c85828601614161565b9150509250929050565b6001600160401b039390931683526001600160a01b0391909116602083015263ffffffff16604082015260600190565b6000602082840312156142e857600080fd5b815164ffffffffff8116811461095457600080fd5b6000806040838503121561431057600080fd5b825161431b81613d36565b60208401519092506140ad81613d36565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b8181101561437f5784516001600160e01b03191683529383019391830191600101614359565b50508093505050506001600160401b0383166040830152949350505050565b6040815260006143b16040830185613c63565b905060ff831660208301529392505050565b601f82111561440d57600081815260208120601f850160051c810160208610156143ea5750805b601f850160051c820191505b81811015614409578281556001016143f6565b5050505b505050565b81516001600160401b0381111561442b5761442b613e48565b61443f816144398454613fe9565b846143c3565b602080601f831160018114614474576000841561445c5750858301515b600019600386901b1c1916600185901b178555614409565b600085815260208120601f198616915b828110156144a357888601518255948401946001909101908401614484565b50858210156144c15787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212205c8078de1c28525f369687b9108c09b7b5697f6ddcf28c8eb1bce83c63a9a53064736f6c63430008140033",
990
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614b1480620000e66000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636c741e7811610125578063b68d1809116100ad578063dd38b49e1161007c578063dd38b49e146103e1578063e52ba1cb146104e3578063edabac03146104f6578063eeff428e14610507578063f7c34ee01461053657600080fd5b8063b68d1809146104a6578063b7d68519146104b5578063bf7e214f146104c8578063c22f980d146104d057600080fd5b80638e32e979116100f45780638e32e979146104375780638fb360371461044a578063a2356b3a1461046b578063ada9652e1461047e578063b03d2a8e1461049357600080fd5b80636c741e78146103f45780637a9e5e4b14610414578063872309c714610427578063893d20e81461042f57600080fd5b8063329d6e74116101a85780635ab1bd53116101775780635ab1bd5314610378578063644c45e01461039d578063675393bf146103bb5780636a778e73146103ce5780636c6fbb28146103e157600080fd5b8063329d6e741461033757806336fc697e1461034a5780633931d6da1461035257806349bb9e4b1461036557600080fd5b80631eff4b22116101ef5780631eff4b22146102b4578063214cdb80146102e9578063254f6866146102fe57806327bb7a33146103115780632d764ef81461032457600080fd5b806301ffc9a7146102215780630d8e6e2c146102635780630fec111c1461027f578063138461e014610294575b600080fd5b61024e61022f366004613e90565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026b610549565b60405162ffffff909116815260200161025a565b6102876105d3565b60405161025a9190613efb565b61029c610797565b6040516001600160601b03909116815260200161025a565b6102db7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161025a565b6102fc6102f7366004613e90565b6107a2565b005b6102fc61030c366004613f9b565b6107cf565b6102fc61031f3660046140dd565b61094c565b6102fc610332366004614188565b6109f1565b6102fc6103453660046141a5565b610de6565b6102fc610f33565b6102fc6103603660046141d9565b610f79565b6102fc610373366004614212565b6110c9565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161025a565b600080516020614a7f833981519152546001600160601b031661029c565b6102fc6103c9366004613f9b565b6111c8565b61029c6103dc366004613f9b565b6112d6565b6102fc6103ef3660046143ef565b611b91565b6103fc611bae565b6040516001600160401b03909116815260200161025a565b6102fc610422366004613f9b565b611ca9565b6102db600081565b610385611d2c565b6102fc6104453660046144b3565b611e63565b610452611fa7565b6040516001600160e01b0319909116815260200161025a565b6102fc6104793660046144fe565b611fdf565b6102db600080516020614a7f83398151915281565b6102fc6104a136600461452c565b612360565b604051600a815260200161025a565b6102fc6104c3366004614549565b612593565b6103856128cb565b6102fc6104de366004614562565b6128e7565b61029c6104f1366004614562565b612add565b6007546001600160a01b0316610385565b61050f612e60565b604080516001600160a01b0390931683526001600160601b0390911660208301520161025a565b6102fc61054436600461457f565b613388565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce919061459d565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab91906145cd565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106f3611d2c565b6001600160a01b03168152602001826001018054610710906145ea565b80601f016020809104026020016040519081016040528092919081815260200182805461073c906145ea565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b505050505081525091505090565b60006105ce306133ff565b6107aa613600565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6107d7611d2c565b6001600160a01b0316336001600160a01b03161461080f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610838576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661085f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361088e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190614624565b6001600160a01b0316146109295760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b610954613600565b61095e8287613388565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016109e78382614687565b5050505050505050565b336000610a066001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190614751565b15610b18576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b6000610b2c6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015610b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba391908101906147c9565b604001519050610bbc81600a5b60ff9081169116141590565b15610bde578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4291906148b7565b9050610cc981610c50610549565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb091906148b7565b15610ceb578381604051637f8084f960e01b815260040161080692919061489b565b6000610cff6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6991906145cd565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610e08610549565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c91906148d4565b600080516020614abf8339815191528054600160401b900460ff1680610e9f575080546001600160401b03808416911610155b15610ebd5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ee783613639565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f3b613600565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b610f86335b600036613641565b6000610f92838361373f565b5090506000816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190614624565b9050806001600160a01b031663a76a333a84856001600160a01b0316636bd1c0eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d9190614624565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b1580156110b557600080fd5b505af11580156109e7573d6000803e3d6000fd5b600080516020614abf8339815191528054600160401b810460ff1615906001600160401b03166000811580156110fc5750825b90506000826001600160401b031660011480156111185750303b155b905081158015611126575080155b156111445760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561116e57845460ff60401b1916600160401b1785555b61117887876138d6565b83156111bf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6111d0613600565b806001600160a01b03163b6000036112065760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610806565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526311da029b60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015611280575060408051601f3d908101601f1916820190925261127d91810190614751565b60015b6112a85760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610806565b806112d15760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610806565b505b50565b60006112e0611d2c565b6001600160a01b0316336001600160a01b0316146113135760405163086391f760e31b8152336004820152602401610806565b6006546001600160a01b03161561133d57604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b0316156113675760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b03161561139157604051637f405a2960e01b815260040160405180910390fd5b6001600160a01b0382166113b8576040516309353e4560e11b815260040160405180910390fd5b60008290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114219190614624565b90506000826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190614624565b905060008190506000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190614624565b905060008190506000866001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190614624565b905060008190506000886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c89190614624565b9050806001600160a01b0389166115f2576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b038716611618576040516295661560e31b815260040160405180910390fd5b6001600160a01b03851661163f5760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03831661166657604051630ddeaef560e11b815260040160405180910390fd5b6001600160a01b03811661168d576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef9190614624565b6001600160a01b03168a6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190614624565b6001600160a01b031614611781576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614624565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190614624565b6001600160a01b031614611875576040516326c89a4160e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d79190614624565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190614624565b6001600160a01b03161461196957604051631129422760e31b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d59190614624565b6001600160a01b0316146119fc57604051631b25e96d60e31b815260040160405180910390fd5b896001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a689190614624565b6001600160a01b031614611a8f576040516331783c7160e11b815260040160405180910390fd5b600480546001600160a01b03199081166001600160a01b038c8116919091179092556005805482168a84161790556006805482168f8416908117909155600780548316898516179055600880548316878516179055600980549092168484161790915560025490916000911663026bc43b83611b09611d2c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016000604051808303816000875af1158015611b56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7e91908101906147c9565b519e9d5050505050505050505050505050565b611b9a33610f7e565b611ba78585858486613a4a565b5050505050565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4091906148b7565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce91906148d4565b33611cb26128cb565b6001600160a01b0316816001600160a01b031614611ced5760405162d1953b60e31b81526001600160a01b0382166004820152602401610806565b816001600160a01b03163b600003611d23576040516361798f2f60e11b81526001600160a01b0383166004820152602401610806565b6112d182613add565b600080600080516020614a7f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc09190614751565b15611e4d576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e479190614624565b91505090565b54600160601b90046001600160a01b0316919050565b611e6b613600565b611eeb83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed191906145cd565b60096000856040518060200160405280600081525061094c565b6001600160a01b03821615611f0857611f0382613b3e565b611f82565b6000611f146002613b4f565b9050611f80816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190614624565b613b3e565b505b611f92634a531f3360e01b6107a2565b611fa263daf9067160e01b6107a2565b505050565b600080516020614a9f833981519152805460009190600160a01b900460ff16611fd1576000611e47565b638fb3603760e01b91505090565b336000611ff46001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e91906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af41580156120b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120dd9190614751565b15612106576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b600061211a6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015612169573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261219191908101906147c9565b6040015190506121a281600a610bb0565b156121c4578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612204573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222891906148b7565b905061223681610c50610549565b15612258578381604051637f8084f960e01b815260040161080692919061489b565b600061226c6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156122b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d691906145cd565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303816000875af115801561233c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906145cd565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190614751565b6123f5576040516302613e9f60e51b8152336004820152602401610806565b6040516301ffc9a760e01b81526378fc24d960e11b6004820152339081906301ffc9a790602401602060405180830381865afa158015612439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245d9190614751565b612484576040516236c14d60e71b81526001600160a01b0382166004820152602401610806565b60006124986001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b038481166004830152919250600091831690638b09a5f090602401600060405180830381865afa1580156124e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261250c91908101906147c9565b602001516040516305247a1760e51b81526001600160601b03821660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa158015612563573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258b91908101906147c9565b505050505050565b3360006125a86001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261291906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614751565b156126ba576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b60006126ce6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261274591908101906147c9565b60400151905061275681600a610bb0565b15612778578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dc91906148b7565b90506127ea81610c50610549565b1561280c578381604051637f8084f960e01b815260040161080692919061489b565b60006128206001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288a91906145cd565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610dac565b600080516020614a9f833981519152546001600160a01b031690565b806128fa6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296d9190614624565b6001600160a01b0316336001600160a01b0316146129a0576040516302613e9f60e51b8152336004820152602401610806565b60006129b46001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015612a07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a2f91908101906147c9565b608081015160075491925090600090612a50906001600160a01b0316613c5b565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab90602401600060405180830381600087803b158015612a9757600080fd5b505af1158015612aab573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c9150602401610dac565b60003381612af36001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d91906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdc9190614751565b15612c05576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b6000612c196001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015612c68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9091908101906147c9565b604001519050612ca181600a610bb0565b15612cc3578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2791906148b7565b9050612d3581610c50610549565b15612d57578381604051637f8084f960e01b815260040161080692919061489b565b6000612d6b6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd591906145cd565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303816000875af1158015612e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5591906145cd565b505050505050919050565b600454600090819033908290612e7e906001600160a01b0316613c5b565b600554909150600090612e99906001600160a01b0316613c5b565b60405163189acdbd60e31b81526001600160a01b0380831660048301529192509083169063c4d66de890602401600060405180830381600087803b158015612ee057600080fd5b505af1158015612ef4573d6000803e3d6000fd5b50505050806001600160a01b031663485cc95583600560009054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7f9190614624565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b158015612fc757600080fd5b505af1158015612fdb573d6000803e3d6000fd5b505060095460009250612ff791506001600160a01b0316613c5b565b600854909150600090613012906001600160a01b0316613c5b565b60075490915060009061302d906001600160a01b0316613c5b565b600654909150613045906001600160a01b0316613c5b565b9750876001600160a01b031663cc2a9a5b8585858561306c6001546001600160a01b031690565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529184166044840152831660648301528216608482015290891660a482015260c401600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b505060025460405163026bc43b60e01b81526001600160a01b038c811660048301528a81166024830152909116925063026bc43b91506044016000604051808303816000875af115801561313f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261316791908101906147c9565b600001519650600360009054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8873__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af41580156131db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ff91906148f1565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af4158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c919061490e565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff90911660248301526044820152606401600060405180830381600087803b1580156132c057600080fd5b505af11580156132d4573d6000803e3d6000fd5b505060405163776c828f60e01b81526001600160a01b038b811660048301528716925063776c828f9150602401600060405180830381600087803b15801561331b57600080fd5b505af115801561332f573d6000803e3d6000fd5b5050604080516001600160601b038b1681526001600160a01b038c1660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a15050505050509091565b613390613600565b613399816111c8565b6133a1610f33565b6001600160a01b0382166133c85760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020614a7f83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b600080600080516020614a7f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561346f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134939190614751565b156134bf5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610806565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135379190614751565b61355f5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610806565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa1580156135b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d791906145cd565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b600080516020614abf83398151915254600160401b900460ff1661363757604051631afcd79f60e31b815260040160405180910390fd5b565b61021c613600565b600080516020614a9f83398151915260008061367c61365e6128cb565b873061366e600460008a8c614927565b61367791614951565b613ccd565b915091508161258b5763ffffffff81161561371c57825460ff60a01b1916600160a01b1783556136aa6128cb565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016136d993929190614981565b600060405180830381600087803b1580156136f357600080fd5b505af1158015613707573d6000803e3d6000fd5b5050845460ff60a01b191685555061258b9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610806565b60008060006137566001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137d191908101906147c9565b90506137e38160400151610bb0600a90565b1561380c5760405163209839e360e21b81526001600160601b0387166004820152602401610806565b6040516308b09a5f60e41b81526001600160a01b03868116600483015260009190841690638b09a5f090602401600060405180830381865afa158015613856573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261387e91908101906147c9565b905061388e816020015188613dd9565b156138c257805160405163a811346560e01b81526001600160601b03808a1660048301529091166024820152604401610806565b608090910151905190969095509350505050565b600080516020614abf8339815191528054600160401b810460ff1615906001600160401b03166000811580156139095750825b90506000826001600160401b031660011480156139255750303b155b905081158015613933575080155b156139515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561397b57845460ff60401b1916600160401b1785555b6000808780602001905181019061399291906149c1565b92505091506139a282828b611e63565b6139ac6002613b4f565b600280546001600160a01b0319166001600160a01b03929092169190911790556139d66003613b4f565b600380546001600160a01b0319166001600160a01b0392909216919091179055613a066302c6ac1f60e21b6107a2565b505083156111bf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111b6565b6000613a56868661373f565b5090506000816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abd9190614624565b905060005b84518110156109e75780613ad581614a03565b915050613ac2565b600080516020614a9f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613b46613600565b6112d381613e67565b6000613b636001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec91906148b7565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c559190614624565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116613cc8576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613d3c9190614a2a565b600060405180830381855afa9150503d8060008114613d77576040519150601f19603f3d011682016040523d82523d6000602084013e613d7c565b606091505b50915091508115613dce576040815110613dae5780806020019051810190613da49190614a46565b9094509250613dce565b6020815110613dce5780806020019051810190613dcb9190614751565b93505b505094509492505050565b6040516399009c5160e01b81526001600160601b0380841660048301528216602482015260009073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401602060405180830381865af4158015613e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e609190614751565b9392505050565b613e6f613600565b6112d381613add565b80356001600160e01b031981168114613cc857600080fd5b600060208284031215613ea257600080fd5b613e6082613e78565b60005b83811015613ec6578181015183820152602001613eae565b50506000910152565b60008151808452613ee7816020860160208601613eab565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151613f6460c08401826001600160a01b03169052565b5060c083015160e080840152613f7e610100840182613ecf565b949350505050565b6001600160a01b03811681146112d357600080fd5b600060208284031215613fad57600080fd5b8135613e6081613f86565b6001600160601b03811681146112d357600080fd5b60ff811681146112d357600080fd5b80151581146112d357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561402257614022613fea565b60405290565b604051601f8201601f191681016001600160401b038111828210171561405057614050613fea565b604052919050565b60006001600160401b0382111561407157614071613fea565b50601f01601f191660200190565b600061409261408d84614058565b614028565b90508281528383830111156140a657600080fd5b828260208301376000602084830101529392505050565b600082601f8301126140ce57600080fd5b613e608383356020850161407f565b60008060008060008060c087890312156140f657600080fd5b863561410181613f86565b9550602087013561411181613fb8565b9450604087013561412181613fcd565b9350606087013561413181613fdc565b9250608087013561414181613f86565b915060a08701356001600160401b0381111561415c57600080fd5b61416889828a016140bd565b9150509295509295509295565b64ffffffffff811681146112d357600080fd5b60006020828403121561419a57600080fd5b8135613e6081614175565b6000602082840312156141b757600080fd5b81356001600160401b038111156141cd57600080fd5b613f7e848285016140bd565b600080604083850312156141ec57600080fd5b82356141f781613fb8565b9150602083013561420781613f86565b809150509250929050565b6000806040838503121561422557600080fd5b823561423081613f86565b915060208301356001600160401b0381111561424b57600080fd5b614257858286016140bd565b9150509250929050565b60006001600160401b0382111561427a5761427a613fea565b5060051b60200190565b600082601f83011261429557600080fd5b813560206142a561408d83614261565b828152600592831b85018201928282019190878511156142c457600080fd5b8387015b8581101561435e5780356001600160401b038111156142e75760008081fd5b8801603f81018a136142f95760008081fd5b85810135604061430b61408d83614261565b82815291851b8301810191888101908d8411156143285760008081fd5b938201935b8385101561434d5761433e85613e78565b8252938901939089019061432d565b8852505050938501935084016142c8565b5090979650505050505050565b6001600160401b03811681146112d357600080fd5b600082601f83011261439157600080fd5b813560206143a161408d83614261565b82815260059290921b840181019181810190868411156143c057600080fd5b8286015b848110156143e45780356143d78161436b565b83529183019183016143c4565b509695505050505050565b600080600080600060a0868803121561440757600080fd5b853561441281613fb8565b9450602086013561442281613f86565b935060408601356001600160401b038082111561443e57600080fd5b818801915088601f83011261445257600080fd5b6144618983356020850161407f565b9450606088013591508082111561447757600080fd5b61448389838a01614284565b9350608088013591508082111561449957600080fd5b506144a688828901614380565b9150509295509295909350565b6000806000606084860312156144c857600080fd5b83356144d381613f86565b925060208401356144e381613f86565b915060408401356144f381613f86565b809150509250925092565b6000806040838503121561451157600080fd5b823561451c81613f86565b9150602083013561420781613fb8565b60006020828403121561453e57600080fd5b8135613e6081613fdc565b60006020828403121561455b57600080fd5b5035919050565b60006020828403121561457457600080fd5b8135613e6081613fb8565b6000806040838503121561459257600080fd5b82356141f781613f86565b6000602082840312156145af57600080fd5b815162ffffff81168114613e6057600080fd5b8051613cc881613fb8565b6000602082840312156145df57600080fd5b8151613e6081613fb8565b600181811c908216806145fe57607f821691505b60208210810361461e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561463657600080fd5b8151613e6081613f86565b601f821115611fa257600081815260208120601f850160051c810160208610156146685750805b601f850160051c820191505b8181101561258b57828155600101614674565b81516001600160401b038111156146a0576146a0613fea565b6146b4816146ae84546145ea565b84614641565b602080601f8311600181146146e957600084156146d15750858301515b600019600386901b1c1916600185901b17855561258b565b600085815260208120601f198616915b82811015614718578886015182559484019460019091019084016146f9565b50858210156147365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8051613cc881613fdc565b60006020828403121561476357600080fd5b8151613e6081613fdc565b8051613cc881613fcd565b8051613cc881613f86565b600082601f83011261479557600080fd5b81516147a361408d82614058565b8181528460208386010111156147b857600080fd5b613f7e826020830160208701613eab565b6000602082840312156147db57600080fd5b81516001600160401b03808211156147f257600080fd5b9083019060e0828603121561480657600080fd5b61480e614000565b614817836145c2565b8152614825602084016145c2565b60208201526148366040840161476e565b604082015261484760608401614746565b606082015261485860808401614779565b608082015261486960a08401614779565b60a082015260c08301518281111561488057600080fd5b61488c87828601614784565b60c08301525095945050505050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156148c957600080fd5b8151613e6081613fcd565b6000602082840312156148e657600080fd5b8151613e608161436b565b60006020828403121561490357600080fd5b8151613e6081614175565b60006020828403121561492057600080fd5b5051919050565b6000808585111561493757600080fd5b8386111561494457600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156149795780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000806000606084860312156149d657600080fd5b83516149e181613f86565b60208501519093506149f281613f86565b60408501519092506144f381613f86565b600060018201614a2357634e487b7160e01b600052601160045260246000fd5b5060010190565b60008251614a3c818460208701613eab565b9190910192915050565b60008060408385031215614a5957600080fd5b8251614a6481613fdc565b602084015190925063ffffffff8116811461420757600080fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b0ca9e490eb1fd1e2bfaa7fd3b682c855cca933b8691310a2da08f95447638ed64736f6c63430008140033",
991
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80636c741e7811610125578063b68d1809116100ad578063dd38b49e1161007c578063dd38b49e146103e1578063e52ba1cb146104e3578063edabac03146104f6578063eeff428e14610507578063f7c34ee01461053657600080fd5b8063b68d1809146104a6578063b7d68519146104b5578063bf7e214f146104c8578063c22f980d146104d057600080fd5b80638e32e979116100f45780638e32e979146104375780638fb360371461044a578063a2356b3a1461046b578063ada9652e1461047e578063b03d2a8e1461049357600080fd5b80636c741e78146103f45780637a9e5e4b14610414578063872309c714610427578063893d20e81461042f57600080fd5b8063329d6e74116101a85780635ab1bd53116101775780635ab1bd5314610378578063644c45e01461039d578063675393bf146103bb5780636a778e73146103ce5780636c6fbb28146103e157600080fd5b8063329d6e741461033757806336fc697e1461034a5780633931d6da1461035257806349bb9e4b1461036557600080fd5b80631eff4b22116101ef5780631eff4b22146102b4578063214cdb80146102e9578063254f6866146102fe57806327bb7a33146103115780632d764ef81461032457600080fd5b806301ffc9a7146102215780630d8e6e2c146102635780630fec111c1461027f578063138461e014610294575b600080fd5b61024e61022f366004613e90565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026b610549565b60405162ffffff909116815260200161025a565b6102876105d3565b60405161025a9190613efb565b61029c610797565b6040516001600160601b03909116815260200161025a565b6102db7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161025a565b6102fc6102f7366004613e90565b6107a2565b005b6102fc61030c366004613f9b565b6107cf565b6102fc61031f3660046140dd565b61094c565b6102fc610332366004614188565b6109f1565b6102fc6103453660046141a5565b610de6565b6102fc610f33565b6102fc6103603660046141d9565b610f79565b6102fc610373366004614212565b6110c9565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161025a565b600080516020614a7f833981519152546001600160601b031661029c565b6102fc6103c9366004613f9b565b6111c8565b61029c6103dc366004613f9b565b6112d6565b6102fc6103ef3660046143ef565b611b91565b6103fc611bae565b6040516001600160401b03909116815260200161025a565b6102fc610422366004613f9b565b611ca9565b6102db600081565b610385611d2c565b6102fc6104453660046144b3565b611e63565b610452611fa7565b6040516001600160e01b0319909116815260200161025a565b6102fc6104793660046144fe565b611fdf565b6102db600080516020614a7f83398151915281565b6102fc6104a136600461452c565b612360565b604051600a815260200161025a565b6102fc6104c3366004614549565b612593565b6103856128cb565b6102fc6104de366004614562565b6128e7565b61029c6104f1366004614562565b612add565b6007546001600160a01b0316610385565b61050f612e60565b604080516001600160a01b0390931683526001600160601b0390911660208301520161025a565b6102fc61054436600461457f565b613388565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce919061459d565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab91906145cd565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106f3611d2c565b6001600160a01b03168152602001826001018054610710906145ea565b80601f016020809104026020016040519081016040528092919081815260200182805461073c906145ea565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b505050505081525091505090565b60006105ce306133ff565b6107aa613600565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6107d7611d2c565b6001600160a01b0316336001600160a01b03161461080f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610838576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661085f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361088e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190614624565b6001600160a01b0316146109295760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b610954613600565b61095e8287613388565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016109e78382614687565b5050505050505050565b336000610a066001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190614751565b15610b18576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b6000610b2c6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015610b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba391908101906147c9565b604001519050610bbc81600a5b60ff9081169116141590565b15610bde578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4291906148b7565b9050610cc981610c50610549565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb091906148b7565b15610ceb578381604051637f8084f960e01b815260040161080692919061489b565b6000610cff6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6991906145cd565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610e08610549565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c91906148d4565b600080516020614abf8339815191528054600160401b900460ff1680610e9f575080546001600160401b03808416911610155b15610ebd5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ee783613639565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f3b613600565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b610f86335b600036613641565b6000610f92838361373f565b5090506000816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190614624565b9050806001600160a01b031663a76a333a84856001600160a01b0316636bd1c0eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d9190614624565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b1580156110b557600080fd5b505af11580156109e7573d6000803e3d6000fd5b600080516020614abf8339815191528054600160401b810460ff1615906001600160401b03166000811580156110fc5750825b90506000826001600160401b031660011480156111185750303b155b905081158015611126575080155b156111445760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561116e57845460ff60401b1916600160401b1785555b61117887876138d6565b83156111bf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6111d0613600565b806001600160a01b03163b6000036112065760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610806565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526311da029b60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015611280575060408051601f3d908101601f1916820190925261127d91810190614751565b60015b6112a85760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610806565b806112d15760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610806565b505b50565b60006112e0611d2c565b6001600160a01b0316336001600160a01b0316146113135760405163086391f760e31b8152336004820152602401610806565b6006546001600160a01b03161561133d57604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b0316156113675760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b03161561139157604051637f405a2960e01b815260040160405180910390fd5b6001600160a01b0382166113b8576040516309353e4560e11b815260040160405180910390fd5b60008290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114219190614624565b90506000826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190614624565b905060008190506000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190614624565b905060008190506000866001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190614624565b905060008190506000886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c89190614624565b9050806001600160a01b0389166115f2576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b038716611618576040516295661560e31b815260040160405180910390fd5b6001600160a01b03851661163f5760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03831661166657604051630ddeaef560e11b815260040160405180910390fd5b6001600160a01b03811661168d576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef9190614624565b6001600160a01b03168a6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190614624565b6001600160a01b031614611781576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614624565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190614624565b6001600160a01b031614611875576040516326c89a4160e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d79190614624565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190614624565b6001600160a01b03161461196957604051631129422760e31b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d59190614624565b6001600160a01b0316146119fc57604051631b25e96d60e31b815260040160405180910390fd5b896001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a689190614624565b6001600160a01b031614611a8f576040516331783c7160e11b815260040160405180910390fd5b600480546001600160a01b03199081166001600160a01b038c8116919091179092556005805482168a84161790556006805482168f8416908117909155600780548316898516179055600880548316878516179055600980549092168484161790915560025490916000911663026bc43b83611b09611d2c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016000604051808303816000875af1158015611b56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7e91908101906147c9565b519e9d5050505050505050505050505050565b611b9a33610f7e565b611ba78585858486613a4a565b5050505050565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4091906148b7565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce91906148d4565b33611cb26128cb565b6001600160a01b0316816001600160a01b031614611ced5760405162d1953b60e31b81526001600160a01b0382166004820152602401610806565b816001600160a01b03163b600003611d23576040516361798f2f60e11b81526001600160a01b0383166004820152602401610806565b6112d182613add565b600080600080516020614a7f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc09190614751565b15611e4d576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e479190614624565b91505090565b54600160601b90046001600160a01b0316919050565b611e6b613600565b611eeb83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed191906145cd565b60096000856040518060200160405280600081525061094c565b6001600160a01b03821615611f0857611f0382613b3e565b611f82565b6000611f146002613b4f565b9050611f80816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190614624565b613b3e565b505b611f92634a531f3360e01b6107a2565b611fa263daf9067160e01b6107a2565b505050565b600080516020614a9f833981519152805460009190600160a01b900460ff16611fd1576000611e47565b638fb3603760e01b91505090565b336000611ff46001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e91906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af41580156120b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120dd9190614751565b15612106576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b600061211a6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015612169573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261219191908101906147c9565b6040015190506121a281600a610bb0565b156121c4578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612204573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222891906148b7565b905061223681610c50610549565b15612258578381604051637f8084f960e01b815260040161080692919061489b565b600061226c6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156122b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d691906145cd565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303816000875af115801561233c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e791906145cd565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190614751565b6123f5576040516302613e9f60e51b8152336004820152602401610806565b6040516301ffc9a760e01b81526378fc24d960e11b6004820152339081906301ffc9a790602401602060405180830381865afa158015612439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245d9190614751565b612484576040516236c14d60e71b81526001600160a01b0382166004820152602401610806565b60006124986001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b038481166004830152919250600091831690638b09a5f090602401600060405180830381865afa1580156124e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261250c91908101906147c9565b602001516040516305247a1760e51b81526001600160601b03821660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa158015612563573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258b91908101906147c9565b505050505050565b3360006125a86001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261291906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614751565b156126ba576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b60006126ce6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261274591908101906147c9565b60400151905061275681600a610bb0565b15612778578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dc91906148b7565b90506127ea81610c50610549565b1561280c578381604051637f8084f960e01b815260040161080692919061489b565b60006128206001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288a91906145cd565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610dac565b600080516020614a9f833981519152546001600160a01b031690565b806128fa6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296d9190614624565b6001600160a01b0316336001600160a01b0316146129a0576040516302613e9f60e51b8152336004820152602401610806565b60006129b46001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015612a07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a2f91908101906147c9565b608081015160075491925090600090612a50906001600160a01b0316613c5b565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab90602401600060405180830381600087803b158015612a9757600080fd5b505af1158015612aab573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c9150602401610dac565b60003381612af36001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d91906145cd565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdc9190614751565b15612c05576040516308afbeb960e31b81526001600160a01b0383166004820152602401610806565b6000612c196001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015612c68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c9091908101906147c9565b604001519050612ca181600a610bb0565b15612cc3578281604051632e87cd2360e11b815260040161080692919061489b565b6000836001600160a01b031663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2791906148b7565b9050612d3581610c50610549565b15612d57578381604051637f8084f960e01b815260040161080692919061489b565b6000612d6b6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd591906145cd565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303816000875af1158015612e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5591906145cd565b505050505050919050565b600454600090819033908290612e7e906001600160a01b0316613c5b565b600554909150600090612e99906001600160a01b0316613c5b565b60405163189acdbd60e31b81526001600160a01b0380831660048301529192509083169063c4d66de890602401600060405180830381600087803b158015612ee057600080fd5b505af1158015612ef4573d6000803e3d6000fd5b50505050806001600160a01b031663485cc95583600560009054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7f9190614624565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b158015612fc757600080fd5b505af1158015612fdb573d6000803e3d6000fd5b505060095460009250612ff791506001600160a01b0316613c5b565b600854909150600090613012906001600160a01b0316613c5b565b60075490915060009061302d906001600160a01b0316613c5b565b600654909150613045906001600160a01b0316613c5b565b9750876001600160a01b031663cc2a9a5b8585858561306c6001546001600160a01b031690565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529184166044840152831660648301528216608482015290891660a482015260c401600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b505060025460405163026bc43b60e01b81526001600160a01b038c811660048301528a81166024830152909116925063026bc43b91506044016000604051808303816000875af115801561313f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261316791908101906147c9565b600001519650600360009054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8873__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af41580156131db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ff91906148f1565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af4158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c919061490e565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff90911660248301526044820152606401600060405180830381600087803b1580156132c057600080fd5b505af11580156132d4573d6000803e3d6000fd5b505060405163776c828f60e01b81526001600160a01b038b811660048301528716925063776c828f9150602401600060405180830381600087803b15801561331b57600080fd5b505af115801561332f573d6000803e3d6000fd5b5050604080516001600160601b038b1681526001600160a01b038c1660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a15050505050509091565b613390613600565b613399816111c8565b6133a1610f33565b6001600160a01b0382166133c85760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020614a7f83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b600080600080516020614a7f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561346f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134939190614751565b156134bf5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610806565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135379190614751565b61355f5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610806565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa1580156135b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d791906145cd565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b600080516020614abf83398151915254600160401b900460ff1661363757604051631afcd79f60e31b815260040160405180910390fd5b565b61021c613600565b600080516020614a9f83398151915260008061367c61365e6128cb565b873061366e600460008a8c614927565b61367791614951565b613ccd565b915091508161258b5763ffffffff81161561371c57825460ff60a01b1916600160a01b1783556136aa6128cb565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016136d993929190614981565b600060405180830381600087803b1580156136f357600080fd5b505af1158015613707573d6000803e3d6000fd5b5050845460ff60a01b191685555061258b9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610806565b60008060006137566001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137d191908101906147c9565b90506137e38160400151610bb0600a90565b1561380c5760405163209839e360e21b81526001600160601b0387166004820152602401610806565b6040516308b09a5f60e41b81526001600160a01b03868116600483015260009190841690638b09a5f090602401600060405180830381865afa158015613856573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261387e91908101906147c9565b905061388e816020015188613dd9565b156138c257805160405163a811346560e01b81526001600160601b03808a1660048301529091166024820152604401610806565b608090910151905190969095509350505050565b600080516020614abf8339815191528054600160401b810460ff1615906001600160401b03166000811580156139095750825b90506000826001600160401b031660011480156139255750303b155b905081158015613933575080155b156139515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561397b57845460ff60401b1916600160401b1785555b6000808780602001905181019061399291906149c1565b92505091506139a282828b611e63565b6139ac6002613b4f565b600280546001600160a01b0319166001600160a01b03929092169190911790556139d66003613b4f565b600380546001600160a01b0319166001600160a01b0392909216919091179055613a066302c6ac1f60e21b6107a2565b505083156111bf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111b6565b6000613a56868661373f565b5090506000816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abd9190614624565b905060005b84518110156109e75780613ad581614a03565b915050613ac2565b600080516020614a9f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613b46613600565b6112d381613e67565b6000613b636001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec91906148b7565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c559190614624565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116613cc8576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613d3c9190614a2a565b600060405180830381855afa9150503d8060008114613d77576040519150601f19603f3d011682016040523d82523d6000602084013e613d7c565b606091505b50915091508115613dce576040815110613dae5780806020019051810190613da49190614a46565b9094509250613dce565b6020815110613dce5780806020019051810190613dcb9190614751565b93505b505094509492505050565b6040516399009c5160e01b81526001600160601b0380841660048301528216602482015260009073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401602060405180830381865af4158015613e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e609190614751565b9392505050565b613e6f613600565b6112d381613add565b80356001600160e01b031981168114613cc857600080fd5b600060208284031215613ea257600080fd5b613e6082613e78565b60005b83811015613ec6578181015183820152602001613eae565b50506000910152565b60008151808452613ee7816020860160208601613eab565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151613f6460c08401826001600160a01b03169052565b5060c083015160e080840152613f7e610100840182613ecf565b949350505050565b6001600160a01b03811681146112d357600080fd5b600060208284031215613fad57600080fd5b8135613e6081613f86565b6001600160601b03811681146112d357600080fd5b60ff811681146112d357600080fd5b80151581146112d357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561402257614022613fea565b60405290565b604051601f8201601f191681016001600160401b038111828210171561405057614050613fea565b604052919050565b60006001600160401b0382111561407157614071613fea565b50601f01601f191660200190565b600061409261408d84614058565b614028565b90508281528383830111156140a657600080fd5b828260208301376000602084830101529392505050565b600082601f8301126140ce57600080fd5b613e608383356020850161407f565b60008060008060008060c087890312156140f657600080fd5b863561410181613f86565b9550602087013561411181613fb8565b9450604087013561412181613fcd565b9350606087013561413181613fdc565b9250608087013561414181613f86565b915060a08701356001600160401b0381111561415c57600080fd5b61416889828a016140bd565b9150509295509295509295565b64ffffffffff811681146112d357600080fd5b60006020828403121561419a57600080fd5b8135613e6081614175565b6000602082840312156141b757600080fd5b81356001600160401b038111156141cd57600080fd5b613f7e848285016140bd565b600080604083850312156141ec57600080fd5b82356141f781613fb8565b9150602083013561420781613f86565b809150509250929050565b6000806040838503121561422557600080fd5b823561423081613f86565b915060208301356001600160401b0381111561424b57600080fd5b614257858286016140bd565b9150509250929050565b60006001600160401b0382111561427a5761427a613fea565b5060051b60200190565b600082601f83011261429557600080fd5b813560206142a561408d83614261565b828152600592831b85018201928282019190878511156142c457600080fd5b8387015b8581101561435e5780356001600160401b038111156142e75760008081fd5b8801603f81018a136142f95760008081fd5b85810135604061430b61408d83614261565b82815291851b8301810191888101908d8411156143285760008081fd5b938201935b8385101561434d5761433e85613e78565b8252938901939089019061432d565b8852505050938501935084016142c8565b5090979650505050505050565b6001600160401b03811681146112d357600080fd5b600082601f83011261439157600080fd5b813560206143a161408d83614261565b82815260059290921b840181019181810190868411156143c057600080fd5b8286015b848110156143e45780356143d78161436b565b83529183019183016143c4565b509695505050505050565b600080600080600060a0868803121561440757600080fd5b853561441281613fb8565b9450602086013561442281613f86565b935060408601356001600160401b038082111561443e57600080fd5b818801915088601f83011261445257600080fd5b6144618983356020850161407f565b9450606088013591508082111561447757600080fd5b61448389838a01614284565b9350608088013591508082111561449957600080fd5b506144a688828901614380565b9150509295509295909350565b6000806000606084860312156144c857600080fd5b83356144d381613f86565b925060208401356144e381613f86565b915060408401356144f381613f86565b809150509250925092565b6000806040838503121561451157600080fd5b823561451c81613f86565b9150602083013561420781613fb8565b60006020828403121561453e57600080fd5b8135613e6081613fdc565b60006020828403121561455b57600080fd5b5035919050565b60006020828403121561457457600080fd5b8135613e6081613fb8565b6000806040838503121561459257600080fd5b82356141f781613f86565b6000602082840312156145af57600080fd5b815162ffffff81168114613e6057600080fd5b8051613cc881613fb8565b6000602082840312156145df57600080fd5b8151613e6081613fb8565b600181811c908216806145fe57607f821691505b60208210810361461e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561463657600080fd5b8151613e6081613f86565b601f821115611fa257600081815260208120601f850160051c810160208610156146685750805b601f850160051c820191505b8181101561258b57828155600101614674565b81516001600160401b038111156146a0576146a0613fea565b6146b4816146ae84546145ea565b84614641565b602080601f8311600181146146e957600084156146d15750858301515b600019600386901b1c1916600185901b17855561258b565b600085815260208120601f198616915b82811015614718578886015182559484019460019091019084016146f9565b50858210156147365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8051613cc881613fdc565b60006020828403121561476357600080fd5b8151613e6081613fdc565b8051613cc881613fcd565b8051613cc881613f86565b600082601f83011261479557600080fd5b81516147a361408d82614058565b8181528460208386010111156147b857600080fd5b613f7e826020830160208701613eab565b6000602082840312156147db57600080fd5b81516001600160401b03808211156147f257600080fd5b9083019060e0828603121561480657600080fd5b61480e614000565b614817836145c2565b8152614825602084016145c2565b60208201526148366040840161476e565b604082015261484760608401614746565b606082015261485860808401614779565b608082015261486960a08401614779565b60a082015260c08301518281111561488057600080fd5b61488c87828601614784565b60c08301525095945050505050565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082840312156148c957600080fd5b8151613e6081613fcd565b6000602082840312156148e657600080fd5b8151613e608161436b565b60006020828403121561490357600080fd5b8151613e6081614175565b60006020828403121561492057600080fd5b5051919050565b6000808585111561493757600080fd5b8386111561494457600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156149795780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000806000606084860312156149d657600080fd5b83516149e181613f86565b60208501519093506149f281613f86565b60408501519092506144f381613f86565b600060018201614a2357634e487b7160e01b600052601160045260246000fd5b5060010190565b60008251614a3c818460208701613eab565b9190910192915050565b60008060408385031215614a5957600080fd5b8251614a6481613fdc565b602084015190925063ffffffff8116811461420757600080fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b0ca9e490eb1fd1e2bfaa7fd3b682c855cca933b8691310a2da08f95447638ed64736f6c63430008140033",
683
992
  "linkReferences": {
684
- "contracts/types/Blocknumber.sol": {
685
- "BlocknumberLib": [
686
- {
687
- "length": 20,
688
- "start": 4890
689
- }
690
- ]
691
- },
692
- "contracts/types/NftId.sol": {
693
- "NftIdLib": [
993
+ "contracts/staking/TargetManagerLib.sol": {
994
+ "TargetManagerLib": [
694
995
  {
695
996
  "length": 20,
696
- "start": 2749
997
+ "start": 12922
697
998
  },
698
999
  {
699
1000
  "length": 20,
700
- "start": 5034
1001
+ "start": 13031
701
1002
  }
702
1003
  ]
703
1004
  },
704
- "contracts/types/RoleId.sol": {
705
- "RoleIdLib": [
706
- {
707
- "length": 20,
708
- "start": 2454
709
- },
710
- {
711
- "length": 20,
712
- "start": 7576
713
- },
714
- {
715
- "length": 20,
716
- "start": 7807
717
- },
718
- {
719
- "length": 20,
720
- "start": 9722
721
- },
722
- {
723
- "length": 20,
724
- "start": 10118
725
- },
726
- {
727
- "length": 20,
728
- "start": 10757
729
- },
730
- {
731
- "length": 20,
732
- "start": 11263
733
- },
734
- {
735
- "length": 20,
736
- "start": 11821
737
- },
738
- {
739
- "length": 20,
740
- "start": 12463
741
- },
1005
+ "contracts/type/NftId.sol": {
1006
+ "NftIdLib": [
742
1007
  {
743
1008
  "length": 20,
744
- "start": 13024
1009
+ "start": 1830
745
1010
  },
746
1011
  {
747
1012
  "length": 20,
748
- "start": 13665
1013
+ "start": 2935
749
1014
  },
750
1015
  {
751
1016
  "length": 20,
752
- "start": 14116
1017
+ "start": 7752
753
1018
  },
754
1019
  {
755
1020
  "length": 20,
756
- "start": 14329
1021
+ "start": 8549
757
1022
  },
758
1023
  {
759
1024
  "length": 20,
760
- "start": 14685
1025
+ "start": 10009
761
1026
  },
762
1027
  {
763
1028
  "length": 20,
764
- "start": 14745
1029
+ "start": 11364
765
1030
  },
766
1031
  {
767
1032
  "length": 20,
768
- "start": 14805
1033
+ "start": 13595
769
1034
  },
770
1035
  {
771
1036
  "length": 20,
772
- "start": 14865
1037
+ "start": 16104
773
1038
  }
774
1039
  ]
775
1040
  },
776
- "contracts/types/Timestamp.sol": {
777
- "TimestampLib": [
1041
+ "contracts/type/RoleId.sol": {
1042
+ "RoleIdLib": [
778
1043
  {
779
1044
  "length": 20,
780
- "start": 8429
1045
+ "start": 7320
781
1046
  }
782
1047
  ]
783
1048
  },
784
- "contracts/types/Version.sol": {
1049
+ "contracts/type/Version.sol": {
785
1050
  "VersionLib": [
786
1051
  {
787
1052
  "length": 20,
788
- "start": 1808
789
- },
790
- {
791
- "length": 20,
792
- "start": 5274
793
- },
794
- {
795
- "length": 20,
796
- "start": 5769
797
- },
798
- {
799
- "length": 20,
800
- "start": 6312
801
- },
802
- {
803
- "length": 20,
804
- "start": 6433
805
- },
806
- {
807
- "length": 20,
808
- "start": 9309
809
- },
810
- {
811
- "length": 20,
812
- "start": 9430
1053
+ "start": 1622
813
1054
  },
814
1055
  {
815
1056
  "length": 20,
816
- "start": 10352
1057
+ "start": 3409
817
1058
  },
818
1059
  {
819
1060
  "length": 20,
820
- "start": 10473
821
- },
822
- {
823
- "length": 20,
824
- "start": 12055
825
- },
826
- {
827
- "length": 20,
828
- "start": 12176
829
- },
1061
+ "start": 3790
1062
+ }
1063
+ ],
1064
+ "VersionPartLib": [
830
1065
  {
831
1066
  "length": 20,
832
- "start": 13258
1067
+ "start": 7368
833
1068
  },
834
1069
  {
835
1070
  "length": 20,
836
- "start": 13379
1071
+ "start": 15476
837
1072
  }
838
1073
  ]
839
1074
  }
840
1075
  },
841
1076
  "deployedLinkReferences": {
842
- "contracts/types/Blocknumber.sol": {
843
- "BlocknumberLib": [
844
- {
845
- "length": 20,
846
- "start": 4576
847
- }
848
- ]
849
- },
850
- "contracts/types/NftId.sol": {
851
- "NftIdLib": [
1077
+ "contracts/staking/TargetManagerLib.sol": {
1078
+ "TargetManagerLib": [
852
1079
  {
853
1080
  "length": 20,
854
- "start": 2435
1081
+ "start": 12692
855
1082
  },
856
1083
  {
857
1084
  "length": 20,
858
- "start": 4720
1085
+ "start": 12801
859
1086
  }
860
1087
  ]
861
1088
  },
862
- "contracts/types/RoleId.sol": {
863
- "RoleIdLib": [
864
- {
865
- "length": 20,
866
- "start": 2140
867
- },
868
- {
869
- "length": 20,
870
- "start": 7262
871
- },
872
- {
873
- "length": 20,
874
- "start": 7493
875
- },
876
- {
877
- "length": 20,
878
- "start": 9408
879
- },
880
- {
881
- "length": 20,
882
- "start": 9804
883
- },
884
- {
885
- "length": 20,
886
- "start": 10443
887
- },
888
- {
889
- "length": 20,
890
- "start": 10949
891
- },
892
- {
893
- "length": 20,
894
- "start": 11507
895
- },
896
- {
897
- "length": 20,
898
- "start": 12149
899
- },
1089
+ "contracts/type/NftId.sol": {
1090
+ "NftIdLib": [
900
1091
  {
901
1092
  "length": 20,
902
- "start": 12710
1093
+ "start": 1600
903
1094
  },
904
1095
  {
905
1096
  "length": 20,
906
- "start": 13351
1097
+ "start": 2705
907
1098
  },
908
1099
  {
909
1100
  "length": 20,
910
- "start": 13802
1101
+ "start": 7522
911
1102
  },
912
1103
  {
913
1104
  "length": 20,
914
- "start": 14015
1105
+ "start": 8319
915
1106
  },
916
1107
  {
917
1108
  "length": 20,
918
- "start": 14371
1109
+ "start": 9779
919
1110
  },
920
1111
  {
921
1112
  "length": 20,
922
- "start": 14431
1113
+ "start": 11134
923
1114
  },
924
1115
  {
925
1116
  "length": 20,
926
- "start": 14491
1117
+ "start": 13365
927
1118
  },
928
1119
  {
929
1120
  "length": 20,
930
- "start": 14551
1121
+ "start": 15874
931
1122
  }
932
1123
  ]
933
1124
  },
934
- "contracts/types/Timestamp.sol": {
935
- "TimestampLib": [
1125
+ "contracts/type/RoleId.sol": {
1126
+ "RoleIdLib": [
936
1127
  {
937
1128
  "length": 20,
938
- "start": 8115
1129
+ "start": 7090
939
1130
  }
940
1131
  ]
941
1132
  },
942
- "contracts/types/Version.sol": {
1133
+ "contracts/type/Version.sol": {
943
1134
  "VersionLib": [
944
1135
  {
945
1136
  "length": 20,
946
- "start": 1494
947
- },
948
- {
949
- "length": 20,
950
- "start": 4960
951
- },
952
- {
953
- "length": 20,
954
- "start": 5455
955
- },
956
- {
957
- "length": 20,
958
- "start": 5998
959
- },
960
- {
961
- "length": 20,
962
- "start": 6119
963
- },
964
- {
965
- "length": 20,
966
- "start": 8995
967
- },
968
- {
969
- "length": 20,
970
- "start": 9116
971
- },
972
- {
973
- "length": 20,
974
- "start": 10038
975
- },
976
- {
977
- "length": 20,
978
- "start": 10159
1137
+ "start": 1392
979
1138
  },
980
1139
  {
981
1140
  "length": 20,
982
- "start": 11741
1141
+ "start": 3179
983
1142
  },
984
1143
  {
985
1144
  "length": 20,
986
- "start": 11862
987
- },
1145
+ "start": 3560
1146
+ }
1147
+ ],
1148
+ "VersionPartLib": [
988
1149
  {
989
1150
  "length": 20,
990
- "start": 12944
1151
+ "start": 7138
991
1152
  },
992
1153
  {
993
1154
  "length": 20,
994
- "start": 13065
1155
+ "start": 15246
995
1156
  }
996
1157
  ]
997
1158
  }