@etherisc/gif-next 0.0.2-8985927-403 → 0.0.2-89ff2e2-420

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/README.md +82 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1046 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +387 -112
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +171 -446
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +90 -330
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +627 -326
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +195 -125
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -172
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +424 -100
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2026 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2452 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +540 -65
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -57
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +549 -166
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1645 -830
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +303 -227
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +910 -838
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +123 -322
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +98 -121
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +99 -274
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +139 -314
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +308 -357
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +138 -128
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +201 -96
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +129 -163
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +499 -287
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +127 -313
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +691 -502
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +181 -111
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +328 -173
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +128 -98
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -372
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -243
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +267 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +304 -17
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +271 -59
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +156 -82
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +252 -214
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +398 -278
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +159 -117
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +223 -337
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +128 -138
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +250 -364
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +81 -227
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +430 -623
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -131
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +394 -300
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -121
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -273
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  262. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +313 -108
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +420 -336
  276. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +143 -100
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  292. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  343. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  345. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  346. package/contracts/accounting/AccountingService.sol +274 -0
  347. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  348. package/contracts/accounting/IAccountingService.sol +47 -0
  349. package/contracts/authorization/AccessAdmin.sol +456 -267
  350. package/contracts/authorization/AccessAdminLib.sol +396 -0
  351. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  352. package/contracts/authorization/Authorization.sol +159 -202
  353. package/contracts/authorization/IAccess.sol +25 -6
  354. package/contracts/authorization/IAccessAdmin.sol +87 -79
  355. package/contracts/authorization/IAuthorization.sol +9 -36
  356. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  357. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  358. package/contracts/distribution/BasicDistribution.sol +20 -17
  359. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  360. package/contracts/distribution/Distribution.sol +42 -90
  361. package/contracts/distribution/DistributionService.sol +227 -115
  362. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  363. package/contracts/distribution/IDistributionComponent.sol +4 -11
  364. package/contracts/distribution/IDistributionService.sol +38 -24
  365. package/contracts/examples/fire/DamageLevel.sol +59 -0
  366. package/contracts/examples/fire/FirePool.sol +86 -0
  367. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  368. package/contracts/examples/fire/FireProduct.sol +433 -0
  369. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  370. package/contracts/examples/fire/FireUSD.sol +26 -0
  371. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  372. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  373. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  374. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  375. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  376. package/contracts/examples/unpermissioned/SimpleProduct.sol +385 -0
  377. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  378. package/contracts/instance/BundleSet.sol +42 -38
  379. package/contracts/instance/IInstance.sol +101 -42
  380. package/contracts/instance/IInstanceService.sol +52 -31
  381. package/contracts/instance/Instance.sol +189 -97
  382. package/contracts/instance/InstanceAdmin.sol +276 -178
  383. package/contracts/instance/InstanceAuthorizationV3.sol +119 -56
  384. package/contracts/instance/InstanceReader.sol +474 -264
  385. package/contracts/instance/InstanceService.sol +284 -239
  386. package/contracts/instance/InstanceServiceManager.sol +6 -7
  387. package/contracts/instance/InstanceStore.sol +13 -6
  388. package/contracts/instance/RiskSet.sol +118 -0
  389. package/contracts/instance/base/BalanceStore.sol +3 -5
  390. package/contracts/instance/base/ObjectCounter.sol +1 -2
  391. package/contracts/instance/base/ObjectLifecycle.sol +6 -3
  392. package/contracts/instance/base/ObjectSet.sol +31 -33
  393. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  394. package/contracts/instance/module/IBundle.sol +6 -5
  395. package/contracts/instance/module/IComponents.sol +29 -13
  396. package/contracts/instance/module/IDistribution.sol +21 -8
  397. package/contracts/instance/module/IPolicy.sol +48 -29
  398. package/contracts/instance/module/IRisk.sol +5 -0
  399. package/contracts/oracle/BasicOracle.sol +1 -4
  400. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  401. package/contracts/oracle/IOracle.sol +9 -4
  402. package/contracts/oracle/IOracleService.sol +2 -1
  403. package/contracts/oracle/Oracle.sol +7 -19
  404. package/contracts/oracle/OracleService.sol +117 -85
  405. package/contracts/oracle/OracleServiceManager.sol +6 -6
  406. package/contracts/pool/BasicPool.sol +32 -25
  407. package/contracts/pool/BasicPoolAuthorization.sol +33 -9
  408. package/contracts/pool/BundleService.sol +113 -145
  409. package/contracts/pool/BundleServiceManager.sol +6 -6
  410. package/contracts/pool/IBundleService.sol +24 -37
  411. package/contracts/pool/IPoolComponent.sol +19 -15
  412. package/contracts/pool/IPoolService.sol +77 -67
  413. package/contracts/pool/Pool.sol +137 -120
  414. package/contracts/pool/PoolLib.sol +359 -0
  415. package/contracts/pool/PoolService.sol +360 -255
  416. package/contracts/pool/PoolServiceManager.sol +4 -4
  417. package/contracts/product/ApplicationService.sol +111 -34
  418. package/contracts/product/ApplicationServiceManager.sol +4 -4
  419. package/contracts/product/BasicProduct.sol +10 -13
  420. package/contracts/product/BasicProductAuthorization.sol +32 -12
  421. package/contracts/product/ClaimService.sol +382 -157
  422. package/contracts/product/ClaimServiceManager.sol +4 -4
  423. package/contracts/product/IApplicationService.sol +28 -3
  424. package/contracts/product/IClaimService.sol +43 -8
  425. package/contracts/product/IPolicyService.sol +43 -14
  426. package/contracts/product/IPricingService.sol +10 -9
  427. package/contracts/product/IProductComponent.sol +27 -4
  428. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -9
  429. package/contracts/product/PolicyService.sol +355 -286
  430. package/contracts/product/PolicyServiceLib.sol +139 -0
  431. package/contracts/product/PolicyServiceManager.sol +4 -4
  432. package/contracts/product/PricingService.sol +77 -75
  433. package/contracts/product/PricingServiceManager.sol +4 -4
  434. package/contracts/product/Product.sol +149 -83
  435. package/contracts/product/RiskService.sol +157 -0
  436. package/contracts/product/RiskServiceManager.sol +39 -0
  437. package/contracts/registry/ChainNft.sol +72 -40
  438. package/contracts/registry/IRegistry.sol +64 -28
  439. package/contracts/registry/IRegistryService.sol +5 -12
  440. package/contracts/registry/IRelease.sol +29 -0
  441. package/contracts/registry/ITransferInterceptor.sol +1 -2
  442. package/contracts/registry/Registry.sol +357 -203
  443. package/contracts/registry/RegistryAdmin.sol +110 -296
  444. package/contracts/registry/RegistryAuthorization.sol +284 -0
  445. package/contracts/registry/RegistryService.sol +37 -48
  446. package/contracts/registry/RegistryServiceManager.sol +3 -3
  447. package/contracts/registry/ReleaseAdmin.sol +195 -0
  448. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  449. package/contracts/registry/ReleaseRegistry.sol +275 -240
  450. package/contracts/registry/ServiceAuthorizationV3.sol +201 -55
  451. package/contracts/registry/TokenRegistry.sol +12 -13
  452. package/contracts/shared/Component.sol +66 -124
  453. package/contracts/shared/ComponentService.sol +412 -375
  454. package/contracts/shared/ComponentServiceManager.sol +8 -5
  455. package/contracts/shared/ContractLib.sol +311 -0
  456. package/contracts/shared/IComponent.sol +6 -18
  457. package/contracts/shared/IComponentService.sol +42 -40
  458. package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
  459. package/contracts/shared/ILifecycle.sol +3 -1
  460. package/contracts/shared/INftOwnable.sol +2 -0
  461. package/contracts/shared/IPolicyHolder.sol +12 -22
  462. package/contracts/shared/IRegisterable.sol +22 -1
  463. package/contracts/shared/IService.sol +3 -5
  464. package/contracts/shared/InitializableERC165.sol +10 -2
  465. package/contracts/shared/InstanceLinkedComponent.sol +72 -50
  466. package/contracts/shared/KeyValueStore.sol +1 -1
  467. package/contracts/shared/Lifecycle.sol +15 -4
  468. package/contracts/shared/NftOwnable.sol +29 -9
  469. package/contracts/shared/PolicyHolder.sol +18 -54
  470. package/contracts/shared/Registerable.sol +52 -21
  471. package/contracts/shared/RegistryLinked.sol +9 -14
  472. package/contracts/shared/Service.sol +20 -35
  473. package/contracts/shared/TokenHandler.sol +275 -72
  474. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  475. package/contracts/staking/IStaking.sol +48 -20
  476. package/contracts/staking/IStakingService.sol +21 -11
  477. package/contracts/staking/Staking.sol +196 -88
  478. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
  479. package/contracts/staking/StakingManager.sol +8 -6
  480. package/contracts/staking/StakingReader.sol +40 -24
  481. package/contracts/staking/StakingService.sol +88 -27
  482. package/contracts/staking/StakingServiceManager.sol +6 -5
  483. package/contracts/staking/StakingStore.sol +3 -2
  484. package/contracts/staking/TargetManagerLib.sol +8 -4
  485. package/contracts/type/Amount.sol +15 -0
  486. package/contracts/type/ClaimId.sol +6 -1
  487. package/contracts/type/Fee.sol +8 -8
  488. package/contracts/type/Key32.sol +2 -2
  489. package/contracts/type/Key32Set.sol +62 -0
  490. package/contracts/type/NftId.sol +7 -0
  491. package/contracts/type/ObjectType.sol +70 -38
  492. package/contracts/type/PayoutId.sol +10 -10
  493. package/contracts/type/RiskId.sol +38 -6
  494. package/contracts/type/RoleId.sol +61 -55
  495. package/contracts/type/Seconds.sol +12 -0
  496. package/contracts/type/Selector.sol +5 -0
  497. package/contracts/type/StateId.sol +15 -1
  498. package/contracts/type/String.sol +12 -0
  499. package/contracts/type/Timestamp.sol +0 -5
  500. package/contracts/type/UFixed.sol +37 -126
  501. package/contracts/type/Version.sol +54 -5
  502. package/contracts/upgradeability/ProxyManager.sol +81 -45
  503. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  504. package/contracts/upgradeability/Versionable.sol +6 -3
  505. package/package.json +5 -4
  506. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  507. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  508. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  509. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  510. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  512. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  513. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  515. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  517. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  518. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  519. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  520. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  521. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
  522. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  523. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  524. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  525. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  526. package/contracts/instance/module/IAccess.sol +0 -46
  527. package/contracts/product/ProductService.sol +0 -99
  528. package/contracts/product/ProductServiceManager.sol +0 -39
  529. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  530. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -44,33 +44,23 @@
44
44
  {
45
45
  "inputs": [
46
46
  {
47
- "internalType": "NftId",
48
- "name": "componentNftId",
49
- "type": "uint96"
47
+ "internalType": "address",
48
+ "name": "authority",
49
+ "type": "address"
50
50
  }
51
51
  ],
52
- "name": "ErrorComponentVerifyingServiceComponentIsLocked",
52
+ "name": "ErrorAuthorityInvalid",
53
53
  "type": "error"
54
54
  },
55
55
  {
56
56
  "inputs": [
57
57
  {
58
- "internalType": "NftId",
59
- "name": "componentNftId",
60
- "type": "uint96"
61
- },
62
- {
63
- "internalType": "ObjectType",
64
- "name": "expectedType",
65
- "type": "uint8"
66
- },
67
- {
68
- "internalType": "ObjectType",
69
- "name": "actualType",
70
- "type": "uint8"
58
+ "internalType": "address",
59
+ "name": "caller",
60
+ "type": "address"
71
61
  }
72
62
  ],
73
- "name": "ErrorComponentVerifyingServiceComponentTypeInvalid",
63
+ "name": "ErrorDistributionServiceCallerNotDistributor",
74
64
  "type": "error"
75
65
  },
76
66
  {
@@ -87,33 +77,33 @@
87
77
  {
88
78
  "inputs": [
89
79
  {
90
- "internalType": "Amount",
91
- "name": "amount",
92
- "type": "uint96"
80
+ "internalType": "uint256",
81
+ "name": "commissionPercentage",
82
+ "type": "uint256"
93
83
  },
94
84
  {
95
- "internalType": "Amount",
96
- "name": "limit",
97
- "type": "uint96"
85
+ "internalType": "uint256",
86
+ "name": "maxCommissionPercentage",
87
+ "type": "uint256"
98
88
  }
99
89
  ],
100
- "name": "ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit",
90
+ "name": "ErrorDistributionServiceCommissionTooHigh",
101
91
  "type": "error"
102
92
  },
103
93
  {
104
94
  "inputs": [
105
95
  {
106
96
  "internalType": "Amount",
107
- "name": "transferredDistributionFeeAmount",
97
+ "name": "amount",
108
98
  "type": "uint96"
109
99
  },
110
100
  {
111
101
  "internalType": "Amount",
112
- "name": "expectedDistributionFeeAmount",
102
+ "name": "limit",
113
103
  "type": "uint96"
114
104
  }
115
105
  ],
116
- "name": "ErrorDistributionServiceInvalidFeeTransferred",
106
+ "name": "ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit",
117
107
  "type": "error"
118
108
  },
119
109
  {
@@ -125,113 +115,112 @@
125
115
  },
126
116
  {
127
117
  "internalType": "uint256",
128
- "name": "limit",
118
+ "name": "discountPercentage",
129
119
  "type": "uint256"
130
120
  }
131
121
  ],
132
- "name": "ErrorDistributionServiceMaxDiscountTooHigh",
122
+ "name": "ErrorDistributionServiceDiscountTooHigh",
133
123
  "type": "error"
134
124
  },
135
125
  {
136
126
  "inputs": [
137
127
  {
138
128
  "internalType": "uint256",
139
- "name": "maxDiscountPercentage",
129
+ "name": "minDiscountPercentage",
140
130
  "type": "uint256"
141
131
  },
142
132
  {
143
133
  "internalType": "uint256",
144
- "name": "limit",
134
+ "name": "discountPercentage",
145
135
  "type": "uint256"
146
136
  }
147
137
  ],
148
- "name": "ErrorDistributionServiceVariableFeesTooHight",
138
+ "name": "ErrorDistributionServiceDiscountTooLow",
149
139
  "type": "error"
150
140
  },
151
141
  {
152
142
  "inputs": [
153
143
  {
154
- "internalType": "address",
155
- "name": "caller",
156
- "type": "address"
157
- }
158
- ],
159
- "name": "ErrorIDistributionServiceCallerNotDistributor",
160
- "type": "error"
161
- },
162
- {
163
- "inputs": [
144
+ "internalType": "NftId",
145
+ "name": "distributorNftId",
146
+ "type": "uint96"
147
+ },
164
148
  {
165
- "internalType": "uint256",
166
- "name": "commissionPercentage",
167
- "type": "uint256"
149
+ "internalType": "NftId",
150
+ "name": "distributorDistributionNftId",
151
+ "type": "uint96"
168
152
  },
169
153
  {
170
- "internalType": "uint256",
171
- "name": "maxCommissionPercentage",
172
- "type": "uint256"
154
+ "internalType": "NftId",
155
+ "name": "distributionNftId",
156
+ "type": "uint96"
173
157
  }
174
158
  ],
175
- "name": "ErrorIDistributionServiceCommissionTooHigh",
159
+ "name": "ErrorDistributionServiceDistributorDistributionMismatch",
176
160
  "type": "error"
177
161
  },
178
162
  {
179
163
  "inputs": [
180
164
  {
181
- "internalType": "uint256",
182
- "name": "maxDiscountPercentage",
183
- "type": "uint256"
165
+ "internalType": "DistributorType",
166
+ "name": "distributorType",
167
+ "type": "bytes8"
184
168
  },
185
169
  {
186
- "internalType": "uint256",
187
- "name": "discountPercentage",
188
- "type": "uint256"
170
+ "internalType": "NftId",
171
+ "name": "distributorTypeDistributionNftId",
172
+ "type": "uint96"
173
+ },
174
+ {
175
+ "internalType": "NftId",
176
+ "name": "distributionNftId",
177
+ "type": "uint96"
189
178
  }
190
179
  ],
191
- "name": "ErrorIDistributionServiceDiscountTooHigh",
180
+ "name": "ErrorDistributionServiceDistributorTypeDistributionMismatch",
192
181
  "type": "error"
193
182
  },
194
183
  {
195
184
  "inputs": [
196
185
  {
197
- "internalType": "uint256",
198
- "name": "minDiscountPercentage",
199
- "type": "uint256"
200
- },
201
- {
202
- "internalType": "uint256",
203
- "name": "discountPercentage",
204
- "type": "uint256"
186
+ "internalType": "Timestamp",
187
+ "name": "expiryAt",
188
+ "type": "uint40"
205
189
  }
206
190
  ],
207
- "name": "ErrorIDistributionServiceDiscountTooLow",
191
+ "name": "ErrorDistributionServiceExpirationInvalid",
208
192
  "type": "error"
209
193
  },
210
194
  {
211
195
  "inputs": [
196
+ {
197
+ "internalType": "Seconds",
198
+ "name": "maxReferralLifetime",
199
+ "type": "uint40"
200
+ },
212
201
  {
213
202
  "internalType": "Timestamp",
214
203
  "name": "expiryAt",
215
204
  "type": "uint40"
216
205
  }
217
206
  ],
218
- "name": "ErrorIDistributionServiceExpirationInvalid",
207
+ "name": "ErrorDistributionServiceExpiryTooLong",
219
208
  "type": "error"
220
209
  },
221
210
  {
222
211
  "inputs": [
223
212
  {
224
- "internalType": "uint256",
225
- "name": "maxReferralLifetime",
226
- "type": "uint256"
213
+ "internalType": "Amount",
214
+ "name": "transferredDistributionFeeAmount",
215
+ "type": "uint96"
227
216
  },
228
217
  {
229
- "internalType": "uint256",
230
- "name": "expiryAt",
231
- "type": "uint256"
218
+ "internalType": "Amount",
219
+ "name": "expectedDistributionFeeAmount",
220
+ "type": "uint96"
232
221
  }
233
222
  ],
234
- "name": "ErrorIDistributionServiceExpiryTooLong",
223
+ "name": "ErrorDistributionServiceInvalidFeeTransferred",
235
224
  "type": "error"
236
225
  },
237
226
  {
@@ -242,7 +231,7 @@
242
231
  "type": "string"
243
232
  }
244
233
  ],
245
- "name": "ErrorIDistributionServiceInvalidReferral",
234
+ "name": "ErrorDistributionServiceInvalidReferral",
246
235
  "type": "error"
247
236
  },
248
237
  {
@@ -253,7 +242,23 @@
253
242
  "type": "bytes8"
254
243
  }
255
244
  ],
256
- "name": "ErrorIDistributionServiceInvalidReferralId",
245
+ "name": "ErrorDistributionServiceInvalidReferralId",
246
+ "type": "error"
247
+ },
248
+ {
249
+ "inputs": [
250
+ {
251
+ "internalType": "uint256",
252
+ "name": "maxDiscountPercentage",
253
+ "type": "uint256"
254
+ },
255
+ {
256
+ "internalType": "uint256",
257
+ "name": "limit",
258
+ "type": "uint256"
259
+ }
260
+ ],
261
+ "name": "ErrorDistributionServiceMaxDiscountTooHigh",
257
262
  "type": "error"
258
263
  },
259
264
  {
@@ -264,7 +269,7 @@
264
269
  "type": "uint256"
265
270
  }
266
271
  ],
267
- "name": "ErrorIDistributionServiceMaxReferralsExceeded",
272
+ "name": "ErrorDistributionServiceMaxReferralsExceeded",
268
273
  "type": "error"
269
274
  },
270
275
  {
@@ -280,7 +285,7 @@
280
285
  "type": "uint256"
281
286
  }
282
287
  ],
283
- "name": "ErrorIDistributionServiceMinFeeTooHigh",
288
+ "name": "ErrorDistributionServiceMinFeeTooHigh",
284
289
  "type": "error"
285
290
  },
286
291
  {
@@ -296,7 +301,28 @@
296
301
  "type": "uint96"
297
302
  }
298
303
  ],
299
- "name": "ErrorIDistributionServiceParentNftIdNotInstance",
304
+ "name": "ErrorDistributionServiceParentNftIdNotInstance",
305
+ "type": "error"
306
+ },
307
+ {
308
+ "inputs": [
309
+ {
310
+ "internalType": "ReferralId",
311
+ "name": "referralId",
312
+ "type": "bytes8"
313
+ },
314
+ {
315
+ "internalType": "NftId",
316
+ "name": "referralDistributionNft",
317
+ "type": "uint96"
318
+ },
319
+ {
320
+ "internalType": "NftId",
321
+ "name": "distributionNftId",
322
+ "type": "uint96"
323
+ }
324
+ ],
325
+ "name": "ErrorDistributionServiceReferralDistributionMismatch",
300
326
  "type": "error"
301
327
  },
302
328
  {
@@ -312,7 +338,23 @@
312
338
  "type": "bytes8"
313
339
  }
314
340
  ],
315
- "name": "ErrorIDistributionServiceReferralInvalid",
341
+ "name": "ErrorDistributionServiceReferralInvalid",
342
+ "type": "error"
343
+ },
344
+ {
345
+ "inputs": [
346
+ {
347
+ "internalType": "uint256",
348
+ "name": "maxDiscountPercentage",
349
+ "type": "uint256"
350
+ },
351
+ {
352
+ "internalType": "uint256",
353
+ "name": "limit",
354
+ "type": "uint256"
355
+ }
356
+ ],
357
+ "name": "ErrorDistributionServiceVariableFeesTooHight",
316
358
  "type": "error"
317
359
  },
318
360
  {
@@ -342,6 +384,22 @@
342
384
  "name": "ErrorNftOwnableInitialOwnerZero",
343
385
  "type": "error"
344
386
  },
387
+ {
388
+ "inputs": [
389
+ {
390
+ "internalType": "NftId",
391
+ "name": "nftId",
392
+ "type": "uint96"
393
+ },
394
+ {
395
+ "internalType": "ObjectType",
396
+ "name": "expectedObjectType",
397
+ "type": "uint8"
398
+ }
399
+ ],
400
+ "name": "ErrorNftOwnableInvalidType",
401
+ "type": "error"
402
+ },
345
403
  {
346
404
  "inputs": [
347
405
  {
@@ -366,7 +424,7 @@
366
424
  },
367
425
  {
368
426
  "inputs": [],
369
- "name": "ErrorServiceNotImplemented",
427
+ "name": "ErrorRegisterableNotActive",
370
428
  "type": "error"
371
429
  },
372
430
  {
@@ -379,6 +437,11 @@
379
437
  "name": "NotInitializing",
380
438
  "type": "error"
381
439
  },
440
+ {
441
+ "inputs": [],
442
+ "name": "ReentrancyGuardReentrantCall",
443
+ "type": "error"
444
+ },
382
445
  {
383
446
  "inputs": [],
384
447
  "name": "UFixedLibNegativeResult",
@@ -441,6 +504,162 @@
441
504
  "name": "LogDistributionServiceCommissionWithdrawn",
442
505
  "type": "event"
443
506
  },
507
+ {
508
+ "anonymous": false,
509
+ "inputs": [
510
+ {
511
+ "indexed": false,
512
+ "internalType": "NftId",
513
+ "name": "distributionNftId",
514
+ "type": "uint96"
515
+ },
516
+ {
517
+ "indexed": false,
518
+ "internalType": "NftId",
519
+ "name": "distributorNftId",
520
+ "type": "uint96"
521
+ },
522
+ {
523
+ "indexed": false,
524
+ "internalType": "DistributorType",
525
+ "name": "distributorType",
526
+ "type": "bytes8"
527
+ },
528
+ {
529
+ "indexed": false,
530
+ "internalType": "address",
531
+ "name": "distributor",
532
+ "type": "address"
533
+ }
534
+ ],
535
+ "name": "LogDistributionServiceDistributorCreated",
536
+ "type": "event"
537
+ },
538
+ {
539
+ "anonymous": false,
540
+ "inputs": [
541
+ {
542
+ "indexed": false,
543
+ "internalType": "NftId",
544
+ "name": "distributorNftId",
545
+ "type": "uint96"
546
+ },
547
+ {
548
+ "indexed": false,
549
+ "internalType": "DistributorType",
550
+ "name": "oldDistributorType",
551
+ "type": "bytes8"
552
+ },
553
+ {
554
+ "indexed": false,
555
+ "internalType": "DistributorType",
556
+ "name": "newDistributorType",
557
+ "type": "bytes8"
558
+ }
559
+ ],
560
+ "name": "LogDistributionServiceDistributorTypeChanged",
561
+ "type": "event"
562
+ },
563
+ {
564
+ "anonymous": false,
565
+ "inputs": [
566
+ {
567
+ "indexed": false,
568
+ "internalType": "NftId",
569
+ "name": "distributionNftId",
570
+ "type": "uint96"
571
+ },
572
+ {
573
+ "indexed": false,
574
+ "internalType": "string",
575
+ "name": "name",
576
+ "type": "string"
577
+ }
578
+ ],
579
+ "name": "LogDistributionServiceDistributorTypeCreated",
580
+ "type": "event"
581
+ },
582
+ {
583
+ "anonymous": false,
584
+ "inputs": [
585
+ {
586
+ "indexed": false,
587
+ "internalType": "NftId",
588
+ "name": "distributionNftId",
589
+ "type": "uint96"
590
+ },
591
+ {
592
+ "indexed": false,
593
+ "internalType": "NftId",
594
+ "name": "distributorNftId",
595
+ "type": "uint96"
596
+ },
597
+ {
598
+ "indexed": false,
599
+ "internalType": "ReferralId",
600
+ "name": "referralId",
601
+ "type": "bytes8"
602
+ },
603
+ {
604
+ "indexed": false,
605
+ "internalType": "string",
606
+ "name": "code",
607
+ "type": "string"
608
+ }
609
+ ],
610
+ "name": "LogDistributionServiceReferralCreated",
611
+ "type": "event"
612
+ },
613
+ {
614
+ "anonymous": false,
615
+ "inputs": [
616
+ {
617
+ "indexed": false,
618
+ "internalType": "NftId",
619
+ "name": "distributionNftId",
620
+ "type": "uint96"
621
+ },
622
+ {
623
+ "indexed": false,
624
+ "internalType": "NftId",
625
+ "name": "distributorNftId",
626
+ "type": "uint96"
627
+ },
628
+ {
629
+ "indexed": false,
630
+ "internalType": "ReferralId",
631
+ "name": "referralId",
632
+ "type": "bytes8"
633
+ },
634
+ {
635
+ "indexed": false,
636
+ "internalType": "uint32",
637
+ "name": "usedReferrals",
638
+ "type": "uint32"
639
+ }
640
+ ],
641
+ "name": "LogDistributionServiceReferralProcessed",
642
+ "type": "event"
643
+ },
644
+ {
645
+ "anonymous": false,
646
+ "inputs": [
647
+ {
648
+ "indexed": false,
649
+ "internalType": "NftId",
650
+ "name": "distributionNftId",
651
+ "type": "uint96"
652
+ },
653
+ {
654
+ "indexed": false,
655
+ "internalType": "ReferralId",
656
+ "name": "referralId",
657
+ "type": "bytes8"
658
+ }
659
+ ],
660
+ "name": "LogDistributionServiceSaleProcessed",
661
+ "type": "event"
662
+ },
444
663
  {
445
664
  "inputs": [],
446
665
  "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
@@ -480,6 +699,29 @@
480
699
  "stateMutability": "view",
481
700
  "type": "function"
482
701
  },
702
+ {
703
+ "inputs": [
704
+ {
705
+ "internalType": "NftId",
706
+ "name": "distributorNftId",
707
+ "type": "uint96"
708
+ },
709
+ {
710
+ "internalType": "DistributorType",
711
+ "name": "newDistributorType",
712
+ "type": "bytes8"
713
+ },
714
+ {
715
+ "internalType": "bytes",
716
+ "name": "data",
717
+ "type": "bytes"
718
+ }
719
+ ],
720
+ "name": "changeDistributorType",
721
+ "outputs": [],
722
+ "stateMutability": "nonpayable",
723
+ "type": "function"
724
+ },
483
725
  {
484
726
  "inputs": [
485
727
  {
@@ -519,17 +761,17 @@
519
761
  {
520
762
  "internalType": "UFixed",
521
763
  "name": "minDiscountPercentage",
522
- "type": "uint256"
764
+ "type": "uint160"
523
765
  },
524
766
  {
525
767
  "internalType": "UFixed",
526
768
  "name": "maxDiscountPercentage",
527
- "type": "uint256"
769
+ "type": "uint160"
528
770
  },
529
771
  {
530
772
  "internalType": "UFixed",
531
773
  "name": "commissionPercentage",
532
- "type": "uint256"
774
+ "type": "uint160"
533
775
  },
534
776
  {
535
777
  "internalType": "uint32",
@@ -537,9 +779,9 @@
537
779
  "type": "uint32"
538
780
  },
539
781
  {
540
- "internalType": "uint32",
782
+ "internalType": "Seconds",
541
783
  "name": "maxReferralLifetime",
542
- "type": "uint32"
784
+ "type": "uint40"
543
785
  },
544
786
  {
545
787
  "internalType": "bool",
@@ -583,7 +825,7 @@
583
825
  {
584
826
  "internalType": "UFixed",
585
827
  "name": "discountPercentage",
586
- "type": "uint256"
828
+ "type": "uint160"
587
829
  },
588
830
  {
589
831
  "internalType": "uint32",
@@ -612,6 +854,35 @@
612
854
  "stateMutability": "nonpayable",
613
855
  "type": "function"
614
856
  },
857
+ {
858
+ "inputs": [
859
+ {
860
+ "internalType": "contract InstanceReader",
861
+ "name": "instanceReader",
862
+ "type": "address"
863
+ },
864
+ {
865
+ "internalType": "ReferralId",
866
+ "name": "referralId",
867
+ "type": "bytes8"
868
+ }
869
+ ],
870
+ "name": "getDiscountPercentage",
871
+ "outputs": [
872
+ {
873
+ "internalType": "UFixed",
874
+ "name": "discountPercentage",
875
+ "type": "uint160"
876
+ },
877
+ {
878
+ "internalType": "ReferralStatus",
879
+ "name": "status",
880
+ "type": "uint8"
881
+ }
882
+ ],
883
+ "stateMutability": "view",
884
+ "type": "function"
885
+ },
615
886
  {
616
887
  "inputs": [],
617
888
  "name": "getDomain",
@@ -714,6 +985,19 @@
714
985
  "stateMutability": "view",
715
986
  "type": "function"
716
987
  },
988
+ {
989
+ "inputs": [],
990
+ "name": "getRelease",
991
+ "outputs": [
992
+ {
993
+ "internalType": "VersionPart",
994
+ "name": "release",
995
+ "type": "uint8"
996
+ }
997
+ ],
998
+ "stateMutability": "view",
999
+ "type": "function"
1000
+ },
717
1001
  {
718
1002
  "inputs": [],
719
1003
  "name": "getRoleId",
@@ -724,7 +1008,7 @@
724
1008
  "type": "uint64"
725
1009
  }
726
1010
  ],
727
- "stateMutability": "pure",
1011
+ "stateMutability": "view",
728
1012
  "type": "function"
729
1013
  },
730
1014
  {
@@ -740,121 +1024,35 @@
740
1024
  "stateMutability": "pure",
741
1025
  "type": "function"
742
1026
  },
743
- {
744
- "inputs": [],
745
- "name": "initializeERC165",
746
- "outputs": [],
747
- "stateMutability": "nonpayable",
748
- "type": "function"
749
- },
750
- {
751
- "inputs": [
752
- {
753
- "internalType": "address",
754
- "name": "initialOwner",
755
- "type": "address"
756
- },
757
- {
758
- "internalType": "address",
759
- "name": "registryAddress",
760
- "type": "address"
761
- }
762
- ],
763
- "name": "initializeNftOwnable",
764
- "outputs": [],
765
- "stateMutability": "nonpayable",
766
- "type": "function"
767
- },
768
1027
  {
769
1028
  "inputs": [
770
1029
  {
771
1030
  "internalType": "address",
772
- "name": "registryAddress",
773
- "type": "address"
774
- },
775
- {
776
- "internalType": "NftId",
777
- "name": "parentNftId",
778
- "type": "uint96"
779
- },
780
- {
781
- "internalType": "ObjectType",
782
- "name": "objectType",
783
- "type": "uint8"
784
- },
785
- {
786
- "internalType": "bool",
787
- "name": "isInterceptor",
788
- "type": "bool"
789
- },
790
- {
791
- "internalType": "address",
792
- "name": "initialOwner",
1031
+ "name": "activatedBy",
793
1032
  "type": "address"
794
1033
  },
795
1034
  {
796
1035
  "internalType": "bytes",
797
- "name": "registryData",
1036
+ "name": "data",
798
1037
  "type": "bytes"
799
1038
  }
800
1039
  ],
801
- "name": "initializeRegisterable",
802
- "outputs": [],
803
- "stateMutability": "nonpayable",
804
- "type": "function"
805
- },
806
- {
807
- "inputs": [
808
- {
809
- "internalType": "address",
810
- "name": "registryAddress",
811
- "type": "address"
812
- }
813
- ],
814
- "name": "initializeRegistryLinked",
815
- "outputs": [],
816
- "stateMutability": "nonpayable",
817
- "type": "function"
818
- },
819
- {
820
- "inputs": [
821
- {
822
- "internalType": "address",
823
- "name": "registry",
824
- "type": "address"
825
- },
826
- {
827
- "internalType": "address",
828
- "name": "authority",
829
- "type": "address"
830
- },
831
- {
832
- "internalType": "address",
833
- "name": "initialOwner",
834
- "type": "address"
835
- }
836
- ],
837
- "name": "initializeService",
1040
+ "name": "initializeVersionable",
838
1041
  "outputs": [],
839
1042
  "stateMutability": "nonpayable",
840
1043
  "type": "function"
841
1044
  },
842
1045
  {
843
- "inputs": [
844
- {
845
- "internalType": "address",
846
- "name": "activatedBy",
847
- "type": "address"
848
- },
1046
+ "inputs": [],
1047
+ "name": "isActive",
1048
+ "outputs": [
849
1049
  {
850
- "internalType": "bytes",
851
- "name": "data",
852
- "type": "bytes"
1050
+ "internalType": "bool",
1051
+ "name": "active",
1052
+ "type": "bool"
853
1053
  }
854
1054
  ],
855
- "name": "initializeVersionable",
856
- "outputs": [],
857
- "stateMutability": "nonpayable",
1055
+ "stateMutability": "view",
858
1056
  "type": "function"
859
1057
  },
860
1058
  {
@@ -931,79 +1129,79 @@
931
1129
  "type": "uint96"
932
1130
  },
933
1131
  {
934
- "internalType": "uint256",
1132
+ "internalType": "Amount",
935
1133
  "name": "netPremiumAmount",
936
- "type": "uint256"
1134
+ "type": "uint96"
937
1135
  },
938
1136
  {
939
- "internalType": "uint256",
1137
+ "internalType": "Amount",
940
1138
  "name": "fullPremiumAmount",
941
- "type": "uint256"
1139
+ "type": "uint96"
942
1140
  },
943
1141
  {
944
- "internalType": "uint256",
1142
+ "internalType": "Amount",
945
1143
  "name": "premiumAmount",
946
- "type": "uint256"
1144
+ "type": "uint96"
947
1145
  },
948
1146
  {
949
- "internalType": "uint256",
1147
+ "internalType": "Amount",
950
1148
  "name": "productFeeFixAmount",
951
- "type": "uint256"
1149
+ "type": "uint96"
952
1150
  },
953
1151
  {
954
- "internalType": "uint256",
1152
+ "internalType": "Amount",
955
1153
  "name": "poolFeeFixAmount",
956
- "type": "uint256"
1154
+ "type": "uint96"
957
1155
  },
958
1156
  {
959
- "internalType": "uint256",
1157
+ "internalType": "Amount",
960
1158
  "name": "bundleFeeFixAmount",
961
- "type": "uint256"
1159
+ "type": "uint96"
962
1160
  },
963
1161
  {
964
- "internalType": "uint256",
1162
+ "internalType": "Amount",
965
1163
  "name": "distributionFeeFixAmount",
966
- "type": "uint256"
1164
+ "type": "uint96"
967
1165
  },
968
1166
  {
969
- "internalType": "uint256",
1167
+ "internalType": "Amount",
970
1168
  "name": "productFeeVarAmount",
971
- "type": "uint256"
1169
+ "type": "uint96"
972
1170
  },
973
1171
  {
974
- "internalType": "uint256",
1172
+ "internalType": "Amount",
975
1173
  "name": "poolFeeVarAmount",
976
- "type": "uint256"
1174
+ "type": "uint96"
977
1175
  },
978
1176
  {
979
- "internalType": "uint256",
1177
+ "internalType": "Amount",
980
1178
  "name": "bundleFeeVarAmount",
981
- "type": "uint256"
1179
+ "type": "uint96"
982
1180
  },
983
1181
  {
984
- "internalType": "uint256",
1182
+ "internalType": "Amount",
985
1183
  "name": "distributionFeeVarAmount",
986
- "type": "uint256"
1184
+ "type": "uint96"
987
1185
  },
988
1186
  {
989
- "internalType": "uint256",
1187
+ "internalType": "Amount",
990
1188
  "name": "distributionOwnerFeeFixAmount",
991
- "type": "uint256"
1189
+ "type": "uint96"
992
1190
  },
993
1191
  {
994
- "internalType": "uint256",
1192
+ "internalType": "Amount",
995
1193
  "name": "distributionOwnerFeeVarAmount",
996
- "type": "uint256"
1194
+ "type": "uint96"
997
1195
  },
998
1196
  {
999
- "internalType": "uint256",
1197
+ "internalType": "Amount",
1000
1198
  "name": "commissionAmount",
1001
- "type": "uint256"
1199
+ "type": "uint96"
1002
1200
  },
1003
1201
  {
1004
- "internalType": "uint256",
1202
+ "internalType": "Amount",
1005
1203
  "name": "discountAmount",
1006
- "type": "uint256"
1204
+ "type": "uint96"
1007
1205
  }
1008
1206
  ],
1009
1207
  "internalType": "struct IPolicy.PremiumInfo",
@@ -1040,19 +1238,6 @@
1040
1238
  "stateMutability": "view",
1041
1239
  "type": "function"
1042
1240
  },
1043
- {
1044
- "inputs": [
1045
- {
1046
- "internalType": "bytes4",
1047
- "name": "interfaceId",
1048
- "type": "bytes4"
1049
- }
1050
- ],
1051
- "name": "registerInterface",
1052
- "outputs": [],
1053
- "stateMutability": "nonpayable",
1054
- "type": "function"
1055
- },
1056
1241
  {
1057
1242
  "inputs": [
1058
1243
  {
@@ -1123,46 +1308,74 @@
1123
1308
  "type": "function"
1124
1309
  }
1125
1310
  ],
1126
- "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6153df806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80635ab1bd53116100fe5780638dd2b7811161009e578063ada9652e1161006e578063ada9652e1461043d578063b68d180914610451578063bf7e214f14610460578063f7c34ee014610468575f80fd5b80638dd2b781146103e35780638e32e979146103f65780638fb3603714610409578063ab54c5451461042a575f80fd5b8063675393bf116100d9578063675393bf146103955780636c741e78146103a85780637a9e5e4b146103c8578063893d20e8146103db575f80fd5b80635ab1bd53146103405780635dcb3bae14610365578063644c45e014610378575f80fd5b8063214cdb80116101695780632b5198b1116101445780632b5198b1146102f2578063329d6e741461031257806336fc697e1461032557806349bb9e4b1461032d575f80fd5b8063214cdb80146102b957806325d07384146102cc57806327bb7a33146102df575f80fd5b80630d8e6e2c116101a45780630d8e6e2c1461024b5780630fec111c14610267578063138461e01461027c5780631eff4b2214610284575f80fd5b806301ffc9a7146101ca578063071e1e4a1461020b57806307e71a6e14610220575b5f80fd5b6101f66101d8366004613f8a565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e610219366004613fea565b61047b565b005b61023361022e366004614021565b610658565b6040516001600160601b039091168152602001610202565b610253610d09565b60405162ffffff9091168152602001610202565b61026f610d90565b604051610202919061407b565b610233610f1c565b6102ab7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b61021e6102c7366004613f8a565b610f26565b6101f66102da366004613fea565b610f52565b61021e6102ed3660046142b9565b611381565b610305610300366004614368565b61141c565b6040516102029190614429565b61021e61032036600461443e565b6119dd565b61021e611b27565b61021e61033b36600461446f565b611b6c565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b6102336103733660046144bb565b611c68565b5f8051602061534a833981519152546001600160601b0316610233565b61021e6103a3366004614518565b611ec7565b6103b0611fd2565b6040516001600160401b039091168152602001610202565b61021e6103d6366004614518565b6120c8565b61034d61214a565b6103056103f1366004614545565b61227b565b61021e6104043660046145b3565b612abb565b610411612bf8565b6040516001600160e01b03199091168152602001610202565b61021e6104383660046145fb565b612c2d565b6102ab5f8051602061534a83398151915281565b604051600e8152602001610202565b61034d6131bd565b61021e610476366004614746565b6131d8565b610487335b5f3661324e565b6104918282610f52565b15610654575f6104a08361334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105039190614772565b6001600160a01b0316631d3be477846040518263ffffffff1660e01b815260040161052e9190614429565b5f60405180830381865afa158015610548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261056f91908101906147fd565b905060018160800181815161058491906148f3565b63ffffffff1690525060408051631a99b41b60e31b815290516001600160a01b0384169163d4cda0d89160048083019260209291908290030181865afa1580156105d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f49190614772565b6001600160a01b03166361105e0e848360ff6040518463ffffffff1660e01b81526004016106249392919061499a565b5f604051808303815f87803b15801561063b575f80fd5b505af115801561064d573d5f803e3d5ffd5b5050505050505b5050565b5f8080610665600e61346b565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cb9190614772565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa15801561071a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261074191908101906149dc565b6080810151604051630232ca4960e01b81526001600160601b038a166004820152919250905f906001600160a01b03851690630232ca4990602401602060405180830381865afa158015610797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb9190614ab4565b9050879650866001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63262b32d2909173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561082d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108519190614ab4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af415801561089a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108be9190614ada565b156108cb57809650610983565b604051632601631360e21b81526001600160601b0388811660048301528216602482015273__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015610929573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190614ada565b15610983576040516322d98b0960e11b81526001600160601b038089166004830152821660248201526044015b60405180910390fd5b5f856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e49190614772565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166311a1467782898b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a779190614ab4565b6040518563ffffffff1660e01b8152600401610a969493929190614af5565b5f604051808303815f87803b158015610aad575f80fd5b505af1158015610abf573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166366101781828c73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b539190614ab4565b8c6040518563ffffffff1660e01b8152600401610b739493929190614af5565b5f604051808303815f87803b158015610b8a575f80fd5b505af1158015610b9c573d5f803e3d5ffd5b50505050505f610bb46001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610c01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c259190614772565b60408581015181516001600160601b038e811682526001600160a01b03858116602084015290921681840152908b16606082015290519192507f81c27687c85b82d25896110abb95c71bcbe0f90ff15274c4f0dbc5710a43ec3f919081900360800190a1606084015160405163153c361360e21b81526001600160a01b03858116600483015283811660248301526001600160601b038b166044830152909116906354f0d84c906064015f604051808303815f87803b158015610ce6575f80fd5b505af1158015610cf8573d5f803e3d5ffd5b505050505050505050505092915050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610d67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8b9190614b27565b905090565b610d98613f4d565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e329190614ab4565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610e7a61214a565b6001600160a01b03168152602001826001018054610e9790614b49565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390614b49565b8015610f0e5780601f10610ee557610100808354040283529160200191610f0e565b820191905f5260205f20905b815481529060010190602001808311610ef157829003601f168201915b505050505081525091505090565b5f610d8b30613507565b610f2e613700565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b604051630a4d29dd60e31b81526001600160601b03831660048201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015610faa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fce9190614ada565b806110545750604051637bc32ecf60e01b815273__$05887d5853069c88bcd4c0a2107db45f29$__90637bc32ecf90611015906001600160c01b0319861690600401614429565b602060405180830381865af4158015611030573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110549190614ada565b1561106057505f61137b565b5f61106a8461334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190614772565b6001600160a01b0316631d3be477856040518263ffffffff1660e01b81526004016110f89190614429565b5f60405180830381865afa158015611112573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261113991908101906147fd565b8051604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611195573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b99190614ada565b156111c8575f9250505061137b565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015611222573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112469190614ada565b80611354575060a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af41580156112a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ca9190614ada565b8015611354575061135473__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190614b81565b8260a0015164ffffffffff9081169116111590565b92508280156113765750806060015163ffffffff16816080015163ffffffff16105b925050505b92915050565b611389613700565b61139382876131d8565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161064d8382614be7565b5f8080611429600e61346b565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148f9190614772565b90505f61149c8285613738565b90505f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ff9190614772565b6040516302d764c760e21b81526001600160601b03841660048201526001600160a01b039190911690630b5d931c9060240161020060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190614ced565b60808101515160a082015151919250905f9061158d908f6137b6565b90508082101561169d5760405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af41580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190614dae565b60405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af4158015611657573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167b9190614dae565b604051632d8d32a560e21b81526004810192909252602482015260440161097a565b5f6116a883836137c8565b90508f73__$bf7bc340cbb9229ef1de2c568356e67902$__6321e5749b9091836040518363ffffffff1660e01b81526004016116ee929190918252602082015260400190565b602060405180830381865af4158015611709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172d9190614ada565b15611840578f73__$bf7bc340cbb9229ef1de2c568356e67902$__63916c5c5790916040518263ffffffff1660e01b815260040161176d91815260200190565b602060405180830381865af4158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac9190614dae565b60405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af41580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e9190614dae565b6040516306990c9f60e11b81526004810192909252602482015260440161097a565b505050505073__$1919c6d2c69d787ccb2653a371d7e5737d$__63578c3039848f6040518363ffffffff1660e01b815260040161187e929190614dc5565b602060405180830381865af4158015611899573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bd9190614de6565b93505f6040518061012001604052808f81526020018e81526020018d81526020018c81526020018b63ffffffff1681526020018a63ffffffff16815260200189151581526020018815158152602001878152509050826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119729190614772565b6001600160a01b03166330a130ba86836040518363ffffffff1660e01b815260040161199f929190614e01565b5f604051808303815f87803b1580156119b6575f80fd5b505af11580156119c8573d5f803e3d5ffd5b50505050505050509998505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6119ff610d09565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a619190614ed3565b5f8051602061538a8339815191528054600160401b900460ff1680611a93575080546001600160401b03808416911610155b15611ab15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611adb836137f4565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b611b2f613700565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f8051602061538a8339815191528054600160401b810460ff1615906001600160401b03165f81158015611b9d5750825b90505f826001600160401b03166001148015611bb85750303b155b905081158015611bc6575080155b15611be45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c0e57845460ff60401b1916600160401b1785555b611c1887876137fc565b8315611c5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f8080611c75600e61346b565b6004546040805160e0810180835263bc1b392d60e01b905290519496509194506001600160a01b0316926357a8fba79250819073__$94a2c899be079b00d952d0d84fffaa5c34$__9063bc1b392d9060e4808501916020918187030181865af4158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d089190614ab4565b6001600160601b03168152602001856001600160601b03168152602001611d2d601d90565b60ff1681526020016001151581526020015f6001600160a01b03168152602001896001600160a01b0316815260200160405180602001604052805f8152508152506040518263ffffffff1660e01b8152600401611d8a919061407b565b6020604051808303815f875af1158015611da6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dca9190614ab4565b92505f6040518060800160405280876001600160c01b03191681526020016001151581526020018681526020015f63ffffffff168152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e639190614772565b6001600160a01b031663f71d7ffe85836040518363ffffffff1660e01b8152600401611e90929190614f3e565b5f604051808303815f87803b158015611ea7575f80fd5b505af1158015611eb9573d5f803e3d5ffd5b505050505050509392505050565b611ecf613700565b806001600160a01b03163b5f03611f045760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097a565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526318788cbb60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611f7e575060408051601f3d908101601f19168201909252611f7b91810190614ada565b60015b611fa65760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097a565b806106545760405163fdeac91f60e01b81526001600160a01b038316600482015260240161097a565b50565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600e604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801561203d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120619190614f6a565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156120a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8b9190614ed3565b336120d16131bd565b6001600160a01b0316816001600160a01b03161461210c5760405162d1953b60e31b81526001600160a01b038216600482015260240161097a565b816001600160a01b03163b5f03612141576040516361798f2f60e11b81526001600160a01b038316600482015260240161097a565b61065482613995565b5f805f8051602061534a83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156121b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121da9190614ada565b15612265576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561223b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061225f9190614772565b91505090565b54600160601b90046001600160a01b0316919050565b5f8080612288600e61346b565b925050915087515f036122b05787604051634fad6a5360e11b815260040161097a9190614f85565b60405163790a38ad60e01b815264ffffffffff8616600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015612304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123289190614ada565b1561234f5760405163df85467b60e01b815264ffffffffff8616600482015260240161097a565b5f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b09190614772565b6040516313d8ebc960e11b81526001600160601b038c1660048201529091505f906001600160a01b038316906327b1d792906024015f60405180830381865afa1580156123ff573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124269190810190614f97565b516040516368322c6360e11b81529091505f906001600160a01b0384169063d06458c690612458908590600401614429565b5f60405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612499919081019061503e565b90508863ffffffff16816080015163ffffffff1610156124da576080810151604051636fcee12560e01b815263ffffffff909116600482015260240161097a565b60208101518a10156125f2576020810151604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af415801561253a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255e9190614dae565b604051632255341b60e11b8152600481018c905273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af41580156125ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d09190614dae565b6040516338a25a8b60e21b81526004810192909252602482015260440161097a565b60408101518a111561270a576040818101519051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015612652573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126769190614dae565b604051632255341b60e11b8152600481018c905273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af41580156126c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e89190614dae565b604051631e1ea4f360e31b81526004810192909252602482015260440161097a565b8060a0015163ffffffff1673__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561275c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127809190614b81565b604051633682752160e21b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156127d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f99190614dae565b604051633682752160e21b815264ffffffffff8b16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af415801561284d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128719190614dae565b61287b9190615137565b11156129255760a0810151604051633682752160e21b815264ffffffffff8a16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156128da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fe9190614dae565b6040516331fa6ab160e11b815263ffffffff9092166004830152602482015260440161097a565b604051631f849e6b60e11b815273__$05887d5853069c88bcd4c0a2107db45f29$__90633f093cd69061295e9088908f90600401614dc5565b602060405180830381865af4158015612979573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299d9190614de6565b95505f6040518060e001604052808e6001600160601b031681526020018d81526020018c81526020018b63ffffffff1681526020015f63ffffffff1681526020018a64ffffffffff168152602001898152509050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a519190614772565b6001600160a01b031663ca0e7f0888836040518363ffffffff1660e01b8152600401612a7e92919061514a565b5f604051808303815f87803b158015612a95575f80fd5b505af1158015612aa7573d5f803e3d5ffd5b505050505050505050509695505050505050565b612ac3613700565b612b3f83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b279190614ab4565b60085f8560405180602001604052805f815250611381565b6001600160a01b03821615612b5c57612b57826139f5565b612bd3565b5f612b676002613a06565b9050612bd1816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bcc9190614772565b6139f5565b505b612be3634a531f3360e01b610f26565b612bf363daf9067160e01b610f26565b505050565b5f8051602061536a83398151915280545f9190600160a01b900460ff16612c1f575f61225f565b638fb3603760e01b91505090565b612c3633610480565b5f612c408461334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca39190614772565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d069190614772565b90505f73__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866101e00151876101c00151612d39919061516e565b6040518263ffffffff1660e01b8152600401612d5791815260200190565b602060405180830381865af4158015612d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d969190614ab4565b9050612da28787610f52565b156130d757610200850151604051632620eecb60e11b81525f9173__$3bac17678db7ae928afa209f2f44deec9c$__91634c41dd9691612de89160040190815260200190565b602060405180830381865af4158015612e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e279190614ab4565b6002546040516374933c2f60e01b81529192506001600160a01b0316906374933c2f90612e5e9086908c9086908890600401614af5565b5f604051808303815f87803b158015612e75575f80fd5b505af1158015612e87573d5f803e3d5ffd5b5050604051631d3be47760e01b81525f92506001600160a01b0387169150631d3be47790612eb9908b90600401614429565b5f60405180830381865afa158015612ed3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612efa91908101906147fd565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663d165cb6485835f015173__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f8f9190614ab4565b866040518563ffffffff1660e01b8152600401612faf9493929190614af5565b5f604051808303815f87803b158015612fc6575f80fd5b505af1158015612fd8573d5f803e3d5ffd5b505082516040516313d8ebc960e11b81526001600160601b0390911660048201525f92506001600160a01b03881691506327b1d792906024015f60405180830381865afa15801561302b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130529190810190614f97565b905060018160600181815161306791906148f3565b63ffffffff169052508151604051632a72b0c760e11b81526001600160a01b038716916354e5618e916130a29190859060ff90600401615181565b5f604051808303815f87803b1580156130b9575f80fd5b505af11580156130cb573d5f803e3d5ffd5b50505050505050611c5f565b60025f9054906101000a90046001600160a01b03166001600160a01b03166374933c2f838973__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131679190614ab4565b856040518563ffffffff1660e01b81526004016131879493929190614af5565b5f604051808303815f87803b15801561319e575f80fd5b505af11580156131b0573d5f803e3d5ffd5b5050505050505050505050565b5f8051602061536a833981519152546001600160a01b031690565b6131e0613700565b6131e981611ec7565b6131f1611b27565b6001600160a01b0382166132185760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061534a83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b5f8051602061536a8339815191525f806132866132696131bd565b873061327860045f8a8c6151a2565b613281916151c9565b613b07565b91509150816133445763ffffffff81161561332157825460ff60a01b1916600160a01b1783556132b46131bd565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016132e393929190615201565b5f604051808303815f87803b1580156132fa575f80fd5b505af115801561330c573d5f803e3d5ffd5b5050845460ff60a01b19168555506133449050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161097a565b505050505050565b5f806133606001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156133ac573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133d39190810190615240565b6020015190505f6133ec6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613438573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261345f9190810190615240565b60800151949350505050565b5f613474613f4d565b5f6134876001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156134cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ef9190614ab4565b92506134fd83856001613c0f565b9395909450915050565b5f805f8051602061534a83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135979190614ada565b156135c35780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161097a565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136399190614ada565b6136615760405163b9304b0d60e01b81526001600160a01b038416600482015260240161097a565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa1580156136b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136d79190614ab4565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f8051602061538a83398151915254600160401b900460ff1661373657604051631afcd79f60e31b815260040160405180910390fd5b565b60405163f0ea17c360e01b81526001600160601b03821660048201525f906001600160a01b0384169063f0ea17c3906024015f60405180830381865afa158015613784573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526137ab91908101906149dc565b602001519392505050565b5f6137c1828461516e565b9392505050565b5f828211156137ea5760405163117efe6d60e31b815260040160405180910390fd5b6137c18284615137565b6101c6613700565b5f8051602061538a8339815191528054600160401b810460ff1615906001600160401b03165f8115801561382d5750825b90505f826001600160401b031660011480156138485750303b155b905081158015613856575080155b156138745760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561389e57845460ff60401b1916600160401b1785555b5f80878060200190518101906138b491906152d9565b925090506138c3815f8b612abb565b6138cd600b613a06565b600280546001600160a01b0319166001600160a01b03929092169190911790556138f7600a613a06565b600380546001600160a01b0319166001600160a01b03929092169190911790556139216002613a06565b600480546001600160a01b0319166001600160a01b0392909216919091179055613951637535a67b60e01b610f26565b50508315611c5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611c56565b5f8051602061536a83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6139fd613700565b611fcf81613eac565b5f613a196001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015613a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aa09190614f6a565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613ae3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137b9190614772565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613b759190615306565b5f60405180830381855afa9150503d805f8114613bad576040519150601f19603f3d011682016040523d82523d5f602084013e613bb2565b606091505b50915091508115613c04576040815110613be45780806020019051810190613bda919061531c565b9094509250613c04565b6020815110613c045780806020019051810190613c019190614ada565b93505b505094509492505050565b613c17613f4d565b5f80613c2b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa158015613c78573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613c9f9190810190615240565b925060ff8516600b14613cfd57604083015160ff868116911614613cf857604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161097a565b613d99565b613d188360400151613d0d600c90565b60ff90811691161490565b80613d2e5750613d2e8360400151613d0d600f90565b80613d445750613d448360400151613d0d600e90565b80613d5a5750613d5a8360400151613d0d600d90565b613d9957604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161097a565b613da68360200151613ebd565b91508315613ea357816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e0e9190614772565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613e56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e7a9190614ada565b15613ea357604051637d71120960e11b81526001600160601b038716600482015260240161097a565b50935093915050565b613eb4613700565b611fcf81613995565b5f613ed06001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613f1c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613f439190810190615240565b6080015192915050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215613f9a575f80fd5b81356001600160e01b0319811681146137c1575f80fd5b6001600160601b0381168114611fcf575f80fd5b8035613fd081613fb1565b919050565b6001600160c01b031981168114611fcf575f80fd5b5f8060408385031215613ffb575f80fd5b823561400681613fb1565b9150602083013561401681613fd5565b809150509250929050565b5f8060408385031215614032575f80fd5b823561403d81613fb1565b9150602083013561401681613fb1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f60608301516140c3608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261410761010084018261404d565b949350505050565b6001600160a01b0381168114611fcf575f80fd5b60ff81168114611fcf575f80fd5b8015158114611fcf575f80fd5b8035613fd081614131565b634e487b7160e01b5f52604160045260245ffd5b60405161024081016001600160401b038111828210171561418057614180614149565b60405290565b60405160e081016001600160401b038111828210171561418057614180614149565b60405160c081016001600160401b038111828210171561418057614180614149565b60405161012081016001600160401b038111828210171561418057614180614149565b604051608081016001600160401b038111828210171561418057614180614149565b604051601f8201601f191681016001600160401b038111828210171561423757614237614149565b604052919050565b5f6001600160401b0382111561425757614257614149565b50601f01601f191660200190565b5f82601f830112614274575f80fd5b8135602083015f61428c6142878461423f565b61420f565b905082815285838301111561429f575f80fd5b828260208301375f92810160200192909252509392505050565b5f805f805f8060c087890312156142ce575f80fd5b86356142d98161410f565b955060208701356142e981613fb1565b945060408701356142f981614123565b9350606087013561430981614131565b925060808701356143198161410f565b915060a08701356001600160401b03811115614333575f80fd5b61433f89828a01614265565b9150509295509295509295565b63ffffffff81168114611fcf575f80fd5b8035613fd08161434c565b5f805f805f805f805f6101208a8c031215614381575f80fd5b89356001600160401b03811115614396575f80fd5b6143a28c828d01614265565b99505060208a0135975060408a0135965060608a0135955060808a01356143c88161434c565b94506143d660a08b0161435d565b93506143e460c08b0161413e565b92506143f260e08b0161413e565b91506101008a01356001600160401b0381111561440d575f80fd5b6144198c828d01614265565b9150509295985092959850929598565b6001600160c01b031991909116815260200190565b5f6020828403121561444e575f80fd5b81356001600160401b03811115614463575f80fd5b61410784828501614265565b5f8060408385031215614480575f80fd5b823561448b8161410f565b915060208301356001600160401b038111156144a5575f80fd5b6144b185828601614265565b9150509250929050565b5f805f606084860312156144cd575f80fd5b83356144d88161410f565b925060208401356144e881613fd5565b915060408401356001600160401b03811115614502575f80fd5b61450e86828701614265565b9150509250925092565b5f60208284031215614528575f80fd5b81356137c18161410f565b64ffffffffff81168114611fcf575f80fd5b5f805f805f8060c0878903121561455a575f80fd5b863561456581613fb1565b955060208701356001600160401b0381111561457f575f80fd5b61458b89828a01614265565b9550506040870135935060608701356145a38161434c565b9250608087013561431981614533565b5f805f606084860312156145c5575f80fd5b83356145d08161410f565b925060208401356145e08161410f565b915060408401356145f08161410f565b809150509250925092565b5f805f83850361028081121561460f575f80fd5b843561461a81613fb1565b9350602085013561462a81613fd5565b9250610240603f198201121561463e575f80fd5b5061464761415d565b61465360408601613fc5565b815261466160608601613fc5565b602082015261467260808601613fc5565b604082015260a085810135606083015260c080870135608084015260e08088013592840192909252610100808801359184019190915261012080880135928401929092526101408088013591840191909152610160808801359284019290925261018080880135918401919091526101a080880135928401929092526101c080880135918401919091526101e0808801359284019290925261020080880135918401919091526102208088013592840192909252610240870135908301526102609095013594810194909452509093909250565b5f8060408385031215614757575f80fd5b82356147628161410f565b915060208301356140168161410f565b5f60208284031215614782575f80fd5b81516137c18161410f565b8051613fd081613fb1565b5f82601f8301126147a7575f80fd5b8151602083015f6147ba6142878461423f565b90508281528583830111156147cd575f80fd5b8282602083015e5f92810160200192909252509392505050565b8051613fd08161434c565b8051613fd081614533565b5f6020828403121561480d575f80fd5b81516001600160401b03811115614822575f80fd5b820160e08185031215614833575f80fd5b61483b614186565b6148448261478d565b815260208201516001600160401b0381111561485e575f80fd5b61486a86828501614798565b60208301525060408281015190820152614886606083016147e7565b6060820152614897608083016147e7565b60808201526148a860a083016147f2565b60a082015260c08201516001600160401b038111156148c5575f80fd5b6148d186828501614798565b60c083015250949350505050565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff818116838216019081111561137b5761137b6148df565b6001600160601b0381511682525f602082015160e0602085015261493660e085018261404d565b90506040830151604085015263ffffffff60608401511660608501526080830151614969608086018263ffffffff169052565b5060a083015161498260a086018264ffffffffff169052565b5060c083015184820360c0860152611376828261404d565b6001600160401b0360c01b84168152606060208201525f6149be606083018561490f565b905060ff83166040830152949350505050565b8051613fd08161410f565b5f602082840312156149ec575f80fd5b81516001600160401b03811115614a01575f80fd5b820160c08185031215614a12575f80fd5b614a1a6141a8565b81516001600160401b03811115614a2f575f80fd5b614a3b86828501614798565b825250614a4a6020830161478d565b6020820152614a5b604083016149d1565b6040820152614a6c606083016149d1565b6060820152614a7d608083016149d1565b608082015260a08201516001600160401b03811115614a9a575f80fd5b614aa686828501614798565b60a083015250949350505050565b5f60208284031215614ac4575f80fd5b81516137c181613fb1565b8051613fd081614131565b5f60208284031215614aea575f80fd5b81516137c181614131565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f60208284031215614b37575f80fd5b815162ffffff811681146137c1575f80fd5b600181811c90821680614b5d57607f821691505b602082108103614b7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215614b91575f80fd5b81516137c181614533565b601f821115612bf357805f5260205f20601f840160051c81016020851015614bc15750805b601f840160051c820191505b81811015614be0575f8155600101614bcd565b5050505050565b81516001600160401b03811115614c0057614c00614149565b614c1481614c0e8454614b49565b84614b9c565b6020601f821160018114614c46575f8315614c2f5750848201515b5f19600385901b1c1916600184901b178455614be0565b5f84815260208120601f198516915b82811015614c755787850151825560209485019460019092019101614c55565b5084821015614c9257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60408284031215614cb1575f80fd5b604080519081016001600160401b0381118282101715614cd357614cd3614149565b604052825181526020928301519281019290925250919050565b5f610200828403128015614cff575f80fd5b50614d086141ca565b614d118361478d565b8152614d1f6020840161478d565b6020820152614d318460408501614ca1565b6040820152614d438460808501614ca1565b6060820152614d558460c08501614ca1565b6080820152614d68846101008501614ca1565b60a0820152614d7b846101408501614ca1565b60c0820152614d8e846101808501614ca1565b60e0820152614da1846101c08501614ca1565b6101008201529392505050565b5f60208284031215614dbe575f80fd5b5051919050565b6001600160601b0383168152604060208201525f614107604083018461404d565b5f60208284031215614df6575f80fd5b81516137c181613fd5565b6001600160401b0360c01b83168152604060208201525f82516101206040840152614e3061016084018261404d565b90506020840151606084015260408401516080840152606084015160a08401526080840151614e6760c085018263ffffffff169052565b5060a084015163ffffffff811660e08501525060c08401518015156101008501525060e084015180151561012085015250610100840151838203603f1901610140850152614eb5828261404d565b9695505050505050565b6001600160401b0381168114611fcf575f80fd5b5f60208284031215614ee3575f80fd5b81516137c181614ebf565b6001600160401b0360c01b81511682526020810151151560208301525f604082015160806040850152614f24608085018261404d565b60609384015163ffffffff16949093019390935250919050565b6001600160601b0383168152604060208201525f6141076040830184614eee565b8051613fd081614123565b5f60208284031215614f7a575f80fd5b81516137c181614123565b602081525f6137c1602083018461404d565b5f60208284031215614fa7575f80fd5b81516001600160401b03811115614fbc575f80fd5b820160808185031215614fcd575f80fd5b614fd56141ed565b8151614fe081613fd5565b81526020820151614ff081614131565b602082015260408201516001600160401b0381111561500d575f80fd5b61501986828501614798565b6040830152506060820151915061502f8261434c565b60608101919091529392505050565b5f6020828403121561504e575f80fd5b81516001600160401b03811115615063575f80fd5b82016101208185031215615075575f80fd5b61507d6141ca565b81516001600160401b03811115615092575f80fd5b61509e86828501614798565b8252506020828101519082015260408083015190820152606080830151908201526150cb608083016147e7565b60808201526150dc60a083016147e7565b60a08201526150ed60c08301614acf565b60c08201526150fe60e08301614acf565b60e08201526101008201516001600160401b0381111561511c575f80fd5b61512886828501614798565b61010083015250949350505050565b8181038181111561137b5761137b6148df565b6001600160401b0360c01b83168152604060208201525f614107604083018461490f565b8082018082111561137b5761137b6148df565b6001600160601b0384168152606060208201525f6149be6060830185614eee565b5f80858511156151b0575f80fd5b838611156151bc575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156151fa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215615250575f80fd5b81516001600160401b03811115615265575f80fd5b820160e08185031215615276575f80fd5b61527e614186565b6152878261478d565b81526152956020830161478d565b60208201526152a660408301614f5f565b60408201526152b760608301614acf565b60608201526152c8608083016149d1565b60808201526148a860a083016149d1565b5f80604083850312156152ea575f80fd5b82516152f58161410f565b60208401519092506140168161410f565b5f82518060208501845e5f920191825250919050565b5f806040838503121561532d575f80fd5b825161533881614131565b60208401519092506140168161434c56fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220dc18fe91ce910c06ea209397b588c749bf2bffbfe6b94fc804feffcd2419055864736f6c634300081a0033",
1127
- "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80635ab1bd53116100fe5780638dd2b7811161009e578063ada9652e1161006e578063ada9652e1461043d578063b68d180914610451578063bf7e214f14610460578063f7c34ee014610468575f80fd5b80638dd2b781146103e35780638e32e979146103f65780638fb3603714610409578063ab54c5451461042a575f80fd5b8063675393bf116100d9578063675393bf146103955780636c741e78146103a85780637a9e5e4b146103c8578063893d20e8146103db575f80fd5b80635ab1bd53146103405780635dcb3bae14610365578063644c45e014610378575f80fd5b8063214cdb80116101695780632b5198b1116101445780632b5198b1146102f2578063329d6e741461031257806336fc697e1461032557806349bb9e4b1461032d575f80fd5b8063214cdb80146102b957806325d07384146102cc57806327bb7a33146102df575f80fd5b80630d8e6e2c116101a45780630d8e6e2c1461024b5780630fec111c14610267578063138461e01461027c5780631eff4b2214610284575f80fd5b806301ffc9a7146101ca578063071e1e4a1461020b57806307e71a6e14610220575b5f80fd5b6101f66101d8366004613f8a565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e610219366004613fea565b61047b565b005b61023361022e366004614021565b610658565b6040516001600160601b039091168152602001610202565b610253610d09565b60405162ffffff9091168152602001610202565b61026f610d90565b604051610202919061407b565b610233610f1c565b6102ab7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b61021e6102c7366004613f8a565b610f26565b6101f66102da366004613fea565b610f52565b61021e6102ed3660046142b9565b611381565b610305610300366004614368565b61141c565b6040516102029190614429565b61021e61032036600461443e565b6119dd565b61021e611b27565b61021e61033b36600461446f565b611b6c565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b6102336103733660046144bb565b611c68565b5f8051602061534a833981519152546001600160601b0316610233565b61021e6103a3366004614518565b611ec7565b6103b0611fd2565b6040516001600160401b039091168152602001610202565b61021e6103d6366004614518565b6120c8565b61034d61214a565b6103056103f1366004614545565b61227b565b61021e6104043660046145b3565b612abb565b610411612bf8565b6040516001600160e01b03199091168152602001610202565b61021e6104383660046145fb565b612c2d565b6102ab5f8051602061534a83398151915281565b604051600e8152602001610202565b61034d6131bd565b61021e610476366004614746565b6131d8565b610487335b5f3661324e565b6104918282610f52565b15610654575f6104a08361334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105039190614772565b6001600160a01b0316631d3be477846040518263ffffffff1660e01b815260040161052e9190614429565b5f60405180830381865afa158015610548573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261056f91908101906147fd565b905060018160800181815161058491906148f3565b63ffffffff1690525060408051631a99b41b60e31b815290516001600160a01b0384169163d4cda0d89160048083019260209291908290030181865afa1580156105d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f49190614772565b6001600160a01b03166361105e0e848360ff6040518463ffffffff1660e01b81526004016106249392919061499a565b5f604051808303815f87803b15801561063b575f80fd5b505af115801561064d573d5f803e3d5ffd5b5050505050505b5050565b5f8080610665600e61346b565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cb9190614772565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa15801561071a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261074191908101906149dc565b6080810151604051630232ca4960e01b81526001600160601b038a166004820152919250905f906001600160a01b03851690630232ca4990602401602060405180830381865afa158015610797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb9190614ab4565b9050879650866001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63262b32d2909173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561082d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108519190614ab4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af415801561089a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108be9190614ada565b156108cb57809650610983565b604051632601631360e21b81526001600160601b0388811660048301528216602482015273__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015610929573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190614ada565b15610983576040516322d98b0960e11b81526001600160601b038089166004830152821660248201526044015b60405180910390fd5b5f856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e49190614772565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166311a1467782898b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a779190614ab4565b6040518563ffffffff1660e01b8152600401610a969493929190614af5565b5f604051808303815f87803b158015610aad575f80fd5b505af1158015610abf573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166366101781828c73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b539190614ab4565b8c6040518563ffffffff1660e01b8152600401610b739493929190614af5565b5f604051808303815f87803b158015610b8a575f80fd5b505af1158015610b9c573d5f803e3d5ffd5b50505050505f610bb46001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610c01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c259190614772565b60408581015181516001600160601b038e811682526001600160a01b03858116602084015290921681840152908b16606082015290519192507f81c27687c85b82d25896110abb95c71bcbe0f90ff15274c4f0dbc5710a43ec3f919081900360800190a1606084015160405163153c361360e21b81526001600160a01b03858116600483015283811660248301526001600160601b038b166044830152909116906354f0d84c906064015f604051808303815f87803b158015610ce6575f80fd5b505af1158015610cf8573d5f803e3d5ffd5b505050505050505050505092915050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610d67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8b9190614b27565b905090565b610d98613f4d565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610e0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e329190614ab4565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610e7a61214a565b6001600160a01b03168152602001826001018054610e9790614b49565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390614b49565b8015610f0e5780601f10610ee557610100808354040283529160200191610f0e565b820191905f5260205f20905b815481529060010190602001808311610ef157829003601f168201915b505050505081525091505090565b5f610d8b30613507565b610f2e613700565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b604051630a4d29dd60e31b81526001600160601b03831660048201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015610faa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fce9190614ada565b806110545750604051637bc32ecf60e01b815273__$05887d5853069c88bcd4c0a2107db45f29$__90637bc32ecf90611015906001600160c01b0319861690600401614429565b602060405180830381865af4158015611030573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110549190614ada565b1561106057505f61137b565b5f61106a8461334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cd9190614772565b6001600160a01b0316631d3be477856040518263ffffffff1660e01b81526004016110f89190614429565b5f60405180830381865afa158015611112573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261113991908101906147fd565b8051604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611195573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b99190614ada565b156111c8575f9250505061137b565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015611222573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112469190614ada565b80611354575060a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af41580156112a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ca9190614ada565b8015611354575061135473__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190614b81565b8260a0015164ffffffffff9081169116111590565b92508280156113765750806060015163ffffffff16816080015163ffffffff16105b925050505b92915050565b611389613700565b61139382876131d8565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161064d8382614be7565b5f8080611429600e61346b565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148f9190614772565b90505f61149c8285613738565b90505f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ff9190614772565b6040516302d764c760e21b81526001600160601b03841660048201526001600160a01b039190911690630b5d931c9060240161020060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190614ced565b60808101515160a082015151919250905f9061158d908f6137b6565b90508082101561169d5760405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af41580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190614dae565b60405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af4158015611657573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167b9190614dae565b604051632d8d32a560e21b81526004810192909252602482015260440161097a565b5f6116a883836137c8565b90508f73__$bf7bc340cbb9229ef1de2c568356e67902$__6321e5749b9091836040518363ffffffff1660e01b81526004016116ee929190918252602082015260400190565b602060405180830381865af4158015611709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172d9190614ada565b15611840578f73__$bf7bc340cbb9229ef1de2c568356e67902$__63916c5c5790916040518263ffffffff1660e01b815260040161176d91815260200190565b602060405180830381865af4158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac9190614dae565b60405163916c5c5760e01b81526004810183905273__$bf7bc340cbb9229ef1de2c568356e67902$__9063916c5c5790602401602060405180830381865af41580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e9190614dae565b6040516306990c9f60e11b81526004810192909252602482015260440161097a565b505050505073__$1919c6d2c69d787ccb2653a371d7e5737d$__63578c3039848f6040518363ffffffff1660e01b815260040161187e929190614dc5565b602060405180830381865af4158015611899573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bd9190614de6565b93505f6040518061012001604052808f81526020018e81526020018d81526020018c81526020018b63ffffffff1681526020018a63ffffffff16815260200189151581526020018815158152602001878152509050826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119729190614772565b6001600160a01b03166330a130ba86836040518363ffffffff1660e01b815260040161199f929190614e01565b5f604051808303815f87803b1580156119b6575f80fd5b505af11580156119c8573d5f803e3d5ffd5b50505050505050509998505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6119ff610d09565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a619190614ed3565b5f8051602061538a8339815191528054600160401b900460ff1680611a93575080546001600160401b03808416911610155b15611ab15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611adb836137f4565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b611b2f613700565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f8051602061538a8339815191528054600160401b810460ff1615906001600160401b03165f81158015611b9d5750825b90505f826001600160401b03166001148015611bb85750303b155b905081158015611bc6575080155b15611be45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c0e57845460ff60401b1916600160401b1785555b611c1887876137fc565b8315611c5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f8080611c75600e61346b565b6004546040805160e0810180835263bc1b392d60e01b905290519496509194506001600160a01b0316926357a8fba79250819073__$94a2c899be079b00d952d0d84fffaa5c34$__9063bc1b392d9060e4808501916020918187030181865af4158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d089190614ab4565b6001600160601b03168152602001856001600160601b03168152602001611d2d601d90565b60ff1681526020016001151581526020015f6001600160a01b03168152602001896001600160a01b0316815260200160405180602001604052805f8152508152506040518263ffffffff1660e01b8152600401611d8a919061407b565b6020604051808303815f875af1158015611da6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dca9190614ab4565b92505f6040518060800160405280876001600160c01b03191681526020016001151581526020018681526020015f63ffffffff168152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e639190614772565b6001600160a01b031663f71d7ffe85836040518363ffffffff1660e01b8152600401611e90929190614f3e565b5f604051808303815f87803b158015611ea7575f80fd5b505af1158015611eb9573d5f803e3d5ffd5b505050505050509392505050565b611ecf613700565b806001600160a01b03163b5f03611f045760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097a565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526318788cbb60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611f7e575060408051601f3d908101601f19168201909252611f7b91810190614ada565b60015b611fa65760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097a565b806106545760405163fdeac91f60e01b81526001600160a01b038316600482015260240161097a565b50565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600e604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801561203d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120619190614f6a565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156120a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8b9190614ed3565b336120d16131bd565b6001600160a01b0316816001600160a01b03161461210c5760405162d1953b60e31b81526001600160a01b038216600482015260240161097a565b816001600160a01b03163b5f03612141576040516361798f2f60e11b81526001600160a01b038316600482015260240161097a565b61065482613995565b5f805f8051602061534a83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156121b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121da9190614ada565b15612265576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561223b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061225f9190614772565b91505090565b54600160601b90046001600160a01b0316919050565b5f8080612288600e61346b565b925050915087515f036122b05787604051634fad6a5360e11b815260040161097a9190614f85565b60405163790a38ad60e01b815264ffffffffff8616600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015612304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123289190614ada565b1561234f5760405163df85467b60e01b815264ffffffffff8616600482015260240161097a565b5f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b09190614772565b6040516313d8ebc960e11b81526001600160601b038c1660048201529091505f906001600160a01b038316906327b1d792906024015f60405180830381865afa1580156123ff573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124269190810190614f97565b516040516368322c6360e11b81529091505f906001600160a01b0384169063d06458c690612458908590600401614429565b5f60405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612499919081019061503e565b90508863ffffffff16816080015163ffffffff1610156124da576080810151604051636fcee12560e01b815263ffffffff909116600482015260240161097a565b60208101518a10156125f2576020810151604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af415801561253a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255e9190614dae565b604051632255341b60e11b8152600481018c905273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af41580156125ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d09190614dae565b6040516338a25a8b60e21b81526004810192909252602482015260440161097a565b60408101518a111561270a576040818101519051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015612652573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126769190614dae565b604051632255341b60e11b8152600481018c905273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af41580156126c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e89190614dae565b604051631e1ea4f360e31b81526004810192909252602482015260440161097a565b8060a0015163ffffffff1673__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561275c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127809190614b81565b604051633682752160e21b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156127d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f99190614dae565b604051633682752160e21b815264ffffffffff8b16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af415801561284d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128719190614dae565b61287b9190615137565b11156129255760a0810151604051633682752160e21b815264ffffffffff8a16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156128da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fe9190614dae565b6040516331fa6ab160e11b815263ffffffff9092166004830152602482015260440161097a565b604051631f849e6b60e11b815273__$05887d5853069c88bcd4c0a2107db45f29$__90633f093cd69061295e9088908f90600401614dc5565b602060405180830381865af4158015612979573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299d9190614de6565b95505f6040518060e001604052808e6001600160601b031681526020018d81526020018c81526020018b63ffffffff1681526020015f63ffffffff1681526020018a64ffffffffff168152602001898152509050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a519190614772565b6001600160a01b031663ca0e7f0888836040518363ffffffff1660e01b8152600401612a7e92919061514a565b5f604051808303815f87803b158015612a95575f80fd5b505af1158015612aa7573d5f803e3d5ffd5b505050505050505050509695505050505050565b612ac3613700565b612b3f83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b279190614ab4565b60085f8560405180602001604052805f815250611381565b6001600160a01b03821615612b5c57612b57826139f5565b612bd3565b5f612b676002613a06565b9050612bd1816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bcc9190614772565b6139f5565b505b612be3634a531f3360e01b610f26565b612bf363daf9067160e01b610f26565b505050565b5f8051602061536a83398151915280545f9190600160a01b900460ff16612c1f575f61225f565b638fb3603760e01b91505090565b612c3633610480565b5f612c408461334c565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca39190614772565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d069190614772565b90505f73__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866101e00151876101c00151612d39919061516e565b6040518263ffffffff1660e01b8152600401612d5791815260200190565b602060405180830381865af4158015612d72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d969190614ab4565b9050612da28787610f52565b156130d757610200850151604051632620eecb60e11b81525f9173__$3bac17678db7ae928afa209f2f44deec9c$__91634c41dd9691612de89160040190815260200190565b602060405180830381865af4158015612e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e279190614ab4565b6002546040516374933c2f60e01b81529192506001600160a01b0316906374933c2f90612e5e9086908c9086908890600401614af5565b5f604051808303815f87803b158015612e75575f80fd5b505af1158015612e87573d5f803e3d5ffd5b5050604051631d3be47760e01b81525f92506001600160a01b0387169150631d3be47790612eb9908b90600401614429565b5f60405180830381865afa158015612ed3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612efa91908101906147fd565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663d165cb6485835f015173__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f8f9190614ab4565b866040518563ffffffff1660e01b8152600401612faf9493929190614af5565b5f604051808303815f87803b158015612fc6575f80fd5b505af1158015612fd8573d5f803e3d5ffd5b505082516040516313d8ebc960e11b81526001600160601b0390911660048201525f92506001600160a01b03881691506327b1d792906024015f60405180830381865afa15801561302b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130529190810190614f97565b905060018160600181815161306791906148f3565b63ffffffff169052508151604051632a72b0c760e11b81526001600160a01b038716916354e5618e916130a29190859060ff90600401615181565b5f604051808303815f87803b1580156130b9575f80fd5b505af11580156130cb573d5f803e3d5ffd5b50505050505050611c5f565b60025f9054906101000a90046001600160a01b03166001600160a01b03166374933c2f838973__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131679190614ab4565b856040518563ffffffff1660e01b81526004016131879493929190614af5565b5f604051808303815f87803b15801561319e575f80fd5b505af11580156131b0573d5f803e3d5ffd5b5050505050505050505050565b5f8051602061536a833981519152546001600160a01b031690565b6131e0613700565b6131e981611ec7565b6131f1611b27565b6001600160a01b0382166132185760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061534a83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b5f8051602061536a8339815191525f806132866132696131bd565b873061327860045f8a8c6151a2565b613281916151c9565b613b07565b91509150816133445763ffffffff81161561332157825460ff60a01b1916600160a01b1783556132b46131bd565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016132e393929190615201565b5f604051808303815f87803b1580156132fa575f80fd5b505af115801561330c573d5f803e3d5ffd5b5050845460ff60a01b19168555506133449050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161097a565b505050505050565b5f806133606001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156133ac573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133d39190810190615240565b6020015190505f6133ec6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613438573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261345f9190810190615240565b60800151949350505050565b5f613474613f4d565b5f6134876001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156134cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ef9190614ab4565b92506134fd83856001613c0f565b9395909450915050565b5f805f8051602061534a83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135979190614ada565b156135c35780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161097a565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136399190614ada565b6136615760405163b9304b0d60e01b81526001600160a01b038416600482015260240161097a565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa1580156136b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136d79190614ab4565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f8051602061538a83398151915254600160401b900460ff1661373657604051631afcd79f60e31b815260040160405180910390fd5b565b60405163f0ea17c360e01b81526001600160601b03821660048201525f906001600160a01b0384169063f0ea17c3906024015f60405180830381865afa158015613784573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526137ab91908101906149dc565b602001519392505050565b5f6137c1828461516e565b9392505050565b5f828211156137ea5760405163117efe6d60e31b815260040160405180910390fd5b6137c18284615137565b6101c6613700565b5f8051602061538a8339815191528054600160401b810460ff1615906001600160401b03165f8115801561382d5750825b90505f826001600160401b031660011480156138485750303b155b905081158015613856575080155b156138745760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561389e57845460ff60401b1916600160401b1785555b5f80878060200190518101906138b491906152d9565b925090506138c3815f8b612abb565b6138cd600b613a06565b600280546001600160a01b0319166001600160a01b03929092169190911790556138f7600a613a06565b600380546001600160a01b0319166001600160a01b03929092169190911790556139216002613a06565b600480546001600160a01b0319166001600160a01b0392909216919091179055613951637535a67b60e01b610f26565b50508315611c5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611c56565b5f8051602061536a83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6139fd613700565b611fcf81613eac565b5f613a196001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015613a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aa09190614f6a565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613ae3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137b9190614772565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613b759190615306565b5f60405180830381855afa9150503d805f8114613bad576040519150601f19603f3d011682016040523d82523d5f602084013e613bb2565b606091505b50915091508115613c04576040815110613be45780806020019051810190613bda919061531c565b9094509250613c04565b6020815110613c045780806020019051810190613c019190614ada565b93505b505094509492505050565b613c17613f4d565b5f80613c2b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa158015613c78573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613c9f9190810190615240565b925060ff8516600b14613cfd57604083015160ff868116911614613cf857604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161097a565b613d99565b613d188360400151613d0d600c90565b60ff90811691161490565b80613d2e5750613d2e8360400151613d0d600f90565b80613d445750613d448360400151613d0d600e90565b80613d5a5750613d5a8360400151613d0d600d90565b613d9957604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161097a565b613da68360200151613ebd565b91508315613ea357816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e0e9190614772565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613e56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e7a9190614ada565b15613ea357604051637d71120960e11b81526001600160601b038716600482015260240161097a565b50935093915050565b613eb4613700565b611fcf81613995565b5f613ed06001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613f1c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613f439190810190615240565b6080015192915050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215613f9a575f80fd5b81356001600160e01b0319811681146137c1575f80fd5b6001600160601b0381168114611fcf575f80fd5b8035613fd081613fb1565b919050565b6001600160c01b031981168114611fcf575f80fd5b5f8060408385031215613ffb575f80fd5b823561400681613fb1565b9150602083013561401681613fd5565b809150509250929050565b5f8060408385031215614032575f80fd5b823561403d81613fb1565b9150602083013561401681613fb1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f60608301516140c3608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261410761010084018261404d565b949350505050565b6001600160a01b0381168114611fcf575f80fd5b60ff81168114611fcf575f80fd5b8015158114611fcf575f80fd5b8035613fd081614131565b634e487b7160e01b5f52604160045260245ffd5b60405161024081016001600160401b038111828210171561418057614180614149565b60405290565b60405160e081016001600160401b038111828210171561418057614180614149565b60405160c081016001600160401b038111828210171561418057614180614149565b60405161012081016001600160401b038111828210171561418057614180614149565b604051608081016001600160401b038111828210171561418057614180614149565b604051601f8201601f191681016001600160401b038111828210171561423757614237614149565b604052919050565b5f6001600160401b0382111561425757614257614149565b50601f01601f191660200190565b5f82601f830112614274575f80fd5b8135602083015f61428c6142878461423f565b61420f565b905082815285838301111561429f575f80fd5b828260208301375f92810160200192909252509392505050565b5f805f805f8060c087890312156142ce575f80fd5b86356142d98161410f565b955060208701356142e981613fb1565b945060408701356142f981614123565b9350606087013561430981614131565b925060808701356143198161410f565b915060a08701356001600160401b03811115614333575f80fd5b61433f89828a01614265565b9150509295509295509295565b63ffffffff81168114611fcf575f80fd5b8035613fd08161434c565b5f805f805f805f805f6101208a8c031215614381575f80fd5b89356001600160401b03811115614396575f80fd5b6143a28c828d01614265565b99505060208a0135975060408a0135965060608a0135955060808a01356143c88161434c565b94506143d660a08b0161435d565b93506143e460c08b0161413e565b92506143f260e08b0161413e565b91506101008a01356001600160401b0381111561440d575f80fd5b6144198c828d01614265565b9150509295985092959850929598565b6001600160c01b031991909116815260200190565b5f6020828403121561444e575f80fd5b81356001600160401b03811115614463575f80fd5b61410784828501614265565b5f8060408385031215614480575f80fd5b823561448b8161410f565b915060208301356001600160401b038111156144a5575f80fd5b6144b185828601614265565b9150509250929050565b5f805f606084860312156144cd575f80fd5b83356144d88161410f565b925060208401356144e881613fd5565b915060408401356001600160401b03811115614502575f80fd5b61450e86828701614265565b9150509250925092565b5f60208284031215614528575f80fd5b81356137c18161410f565b64ffffffffff81168114611fcf575f80fd5b5f805f805f8060c0878903121561455a575f80fd5b863561456581613fb1565b955060208701356001600160401b0381111561457f575f80fd5b61458b89828a01614265565b9550506040870135935060608701356145a38161434c565b9250608087013561431981614533565b5f805f606084860312156145c5575f80fd5b83356145d08161410f565b925060208401356145e08161410f565b915060408401356145f08161410f565b809150509250925092565b5f805f83850361028081121561460f575f80fd5b843561461a81613fb1565b9350602085013561462a81613fd5565b9250610240603f198201121561463e575f80fd5b5061464761415d565b61465360408601613fc5565b815261466160608601613fc5565b602082015261467260808601613fc5565b604082015260a085810135606083015260c080870135608084015260e08088013592840192909252610100808801359184019190915261012080880135928401929092526101408088013591840191909152610160808801359284019290925261018080880135918401919091526101a080880135928401929092526101c080880135918401919091526101e0808801359284019290925261020080880135918401919091526102208088013592840192909252610240870135908301526102609095013594810194909452509093909250565b5f8060408385031215614757575f80fd5b82356147628161410f565b915060208301356140168161410f565b5f60208284031215614782575f80fd5b81516137c18161410f565b8051613fd081613fb1565b5f82601f8301126147a7575f80fd5b8151602083015f6147ba6142878461423f565b90508281528583830111156147cd575f80fd5b8282602083015e5f92810160200192909252509392505050565b8051613fd08161434c565b8051613fd081614533565b5f6020828403121561480d575f80fd5b81516001600160401b03811115614822575f80fd5b820160e08185031215614833575f80fd5b61483b614186565b6148448261478d565b815260208201516001600160401b0381111561485e575f80fd5b61486a86828501614798565b60208301525060408281015190820152614886606083016147e7565b6060820152614897608083016147e7565b60808201526148a860a083016147f2565b60a082015260c08201516001600160401b038111156148c5575f80fd5b6148d186828501614798565b60c083015250949350505050565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff818116838216019081111561137b5761137b6148df565b6001600160601b0381511682525f602082015160e0602085015261493660e085018261404d565b90506040830151604085015263ffffffff60608401511660608501526080830151614969608086018263ffffffff169052565b5060a083015161498260a086018264ffffffffff169052565b5060c083015184820360c0860152611376828261404d565b6001600160401b0360c01b84168152606060208201525f6149be606083018561490f565b905060ff83166040830152949350505050565b8051613fd08161410f565b5f602082840312156149ec575f80fd5b81516001600160401b03811115614a01575f80fd5b820160c08185031215614a12575f80fd5b614a1a6141a8565b81516001600160401b03811115614a2f575f80fd5b614a3b86828501614798565b825250614a4a6020830161478d565b6020820152614a5b604083016149d1565b6040820152614a6c606083016149d1565b6060820152614a7d608083016149d1565b608082015260a08201516001600160401b03811115614a9a575f80fd5b614aa686828501614798565b60a083015250949350505050565b5f60208284031215614ac4575f80fd5b81516137c181613fb1565b8051613fd081614131565b5f60208284031215614aea575f80fd5b81516137c181614131565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f60208284031215614b37575f80fd5b815162ffffff811681146137c1575f80fd5b600181811c90821680614b5d57607f821691505b602082108103614b7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215614b91575f80fd5b81516137c181614533565b601f821115612bf357805f5260205f20601f840160051c81016020851015614bc15750805b601f840160051c820191505b81811015614be0575f8155600101614bcd565b5050505050565b81516001600160401b03811115614c0057614c00614149565b614c1481614c0e8454614b49565b84614b9c565b6020601f821160018114614c46575f8315614c2f5750848201515b5f19600385901b1c1916600184901b178455614be0565b5f84815260208120601f198516915b82811015614c755787850151825560209485019460019092019101614c55565b5084821015614c9257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60408284031215614cb1575f80fd5b604080519081016001600160401b0381118282101715614cd357614cd3614149565b604052825181526020928301519281019290925250919050565b5f610200828403128015614cff575f80fd5b50614d086141ca565b614d118361478d565b8152614d1f6020840161478d565b6020820152614d318460408501614ca1565b6040820152614d438460808501614ca1565b6060820152614d558460c08501614ca1565b6080820152614d68846101008501614ca1565b60a0820152614d7b846101408501614ca1565b60c0820152614d8e846101808501614ca1565b60e0820152614da1846101c08501614ca1565b6101008201529392505050565b5f60208284031215614dbe575f80fd5b5051919050565b6001600160601b0383168152604060208201525f614107604083018461404d565b5f60208284031215614df6575f80fd5b81516137c181613fd5565b6001600160401b0360c01b83168152604060208201525f82516101206040840152614e3061016084018261404d565b90506020840151606084015260408401516080840152606084015160a08401526080840151614e6760c085018263ffffffff169052565b5060a084015163ffffffff811660e08501525060c08401518015156101008501525060e084015180151561012085015250610100840151838203603f1901610140850152614eb5828261404d565b9695505050505050565b6001600160401b0381168114611fcf575f80fd5b5f60208284031215614ee3575f80fd5b81516137c181614ebf565b6001600160401b0360c01b81511682526020810151151560208301525f604082015160806040850152614f24608085018261404d565b60609384015163ffffffff16949093019390935250919050565b6001600160601b0383168152604060208201525f6141076040830184614eee565b8051613fd081614123565b5f60208284031215614f7a575f80fd5b81516137c181614123565b602081525f6137c1602083018461404d565b5f60208284031215614fa7575f80fd5b81516001600160401b03811115614fbc575f80fd5b820160808185031215614fcd575f80fd5b614fd56141ed565b8151614fe081613fd5565b81526020820151614ff081614131565b602082015260408201516001600160401b0381111561500d575f80fd5b61501986828501614798565b6040830152506060820151915061502f8261434c565b60608101919091529392505050565b5f6020828403121561504e575f80fd5b81516001600160401b03811115615063575f80fd5b82016101208185031215615075575f80fd5b61507d6141ca565b81516001600160401b03811115615092575f80fd5b61509e86828501614798565b8252506020828101519082015260408083015190820152606080830151908201526150cb608083016147e7565b60808201526150dc60a083016147e7565b60a08201526150ed60c08301614acf565b60c08201526150fe60e08301614acf565b60e08201526101008201516001600160401b0381111561511c575f80fd5b61512886828501614798565b61010083015250949350505050565b8181038181111561137b5761137b6148df565b6001600160401b0360c01b83168152604060208201525f614107604083018461490f565b8082018082111561137b5761137b6148df565b6001600160601b0384168152606060208201525f6149be6060830185614eee565b5f80858511156151b0575f80fd5b838611156151bc575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156151fa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215615250575f80fd5b81516001600160401b03811115615265575f80fd5b820160e08185031215615276575f80fd5b61527e614186565b6152878261478d565b81526152956020830161478d565b60208201526152a660408301614f5f565b60408201526152b760608301614acf565b60608201526152c8608083016149d1565b60808201526148a860a083016149d1565b5f80604083850312156152ea575f80fd5b82516152f58161410f565b60208401519092506140168161410f565b5f82518060208501845e5f920191825250919050565b5f806040838503121561532d575f80fd5b825161533881614131565b60208401519092506140168161434c56fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220dc18fe91ce910c06ea209397b588c749bf2bffbfe6b94fc804feffcd2419055864736f6c634300081a0033",
1311
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615d94806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c80635dcb3bae116100f35780638fb3603711610093578063ada9652e1161006e578063ada9652e146103f9578063b68d18091461040d578063bf7e214f14610414578063eed283151461041c575f80fd5b80638fb36037146103b2578063987cb161146103d3578063ab3fc75f146103e6575f80fd5b806376b707b7116100ce57806376b707b71461036a5780637950d0e2146103845780637a9e5e4b14610397578063893d20e8146103aa575f80fd5b80635dcb3bae1461031a578063644c45e01461032d5780636c741e781461034a575f80fd5b80631bda5efa1161015e57806325d073841161013957806325d07384146102bc578063329d6e74146102cf57806349bb9e4b146102e25780635ab1bd53146102f5575f80fd5b80631bda5efa1461025f5780631eff4b221461027f57806322f3e2d4146102b4575f80fd5b806301ffc9a7146101a5578063071e1e4a146101e657806307e71a6e146101fb5780630d8e6e2c146102265780630fec111c14610242578063138461e014610257575b5f80fd5b6101d16101b33660046148a0565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f96101f4366004614907565b610450565b005b61020e61020936600461493e565b610735565b6040516001600160601b0390911681526020016101dd565b61022e610d3f565b60405162ffffff90911681526020016101dd565b61024a610dc6565b6040516101dd9190614998565b61020e610f80565b61027261026d366004614c0d565b610f8a565b6040516101dd9190614ce3565b6102a67f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101dd565b6101d1611597565b6101d16102ca366004614907565b61160e565b6101f96102dd366004614cf8565b611aff565b6101f96102f0366004614d29565b611c49565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b61020e610328366004614d75565b611d45565b5f80516020615cff833981519152546001600160601b031661020e565b610352612082565b6040516001600160401b0390911681526020016101dd565b61037261210e565b60405160ff90911681526020016101dd565b6101f9610392366004614dd2565b612176565b6101f96103a5366004614f6e565b6126f4565b61030261277a565b6103ba6128ab565b6040516001600160e01b031990911681526020016101dd565b6102726103e1366004614f89565b6128e0565b6101f96103f4366004615033565b613386565b6102a65f80516020615cff83398151915281565b600e610372565b61030261361a565b61042f61042a366004615050565b613635565b604080516001600160a01b03909316835260ff9091166020830152016101dd565b61045c335b5f3661393b565b81600e6104698282613a39565b610473848461160e565b1561072f575f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816104a56001546001600160a01b031690565b876040518363ffffffff1660e01b81526004016104c392919061506c565b602060405180830381865af41580156104de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610502919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610541573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610565919061508e565b6001600160a01b0316631d3be477866040518263ffffffff1660e01b81526004016105909190614ce3565b5f60405180830381865afa1580156105aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105d19190810190615124565b90506001816060018181516105e69190615233565b63ffffffff1690525060408051631a99b41b60e31b815290516001600160a01b0384169163d4cda0d89160048083019260209291908290030181865afa158015610632573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610656919061508e565b6001600160a01b03166396260559868360ff6040518463ffffffff1660e01b815260040161068693929190615319565b5f604051808303815f87803b15801561069d575f80fd5b505af11580156106af573d5f803e3d5ffd5b505050507fd0fb19cbe3e6c7666a69cce6e9e84c1d4d23353bb2023d89040efa1ce3e5a82e86826020015187846060015160405161072494939291906001600160601b0394851681529290931660208301526001600160c01b031916604082015263ffffffff91909116606082015260800190565b60405180910390a150505b50505050565b5f61073f33610455565b82601761074c8282613a39565b5f80610756613b6d565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061508e565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa15801561080a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108319190810190615350565b604051630232ca4960e01b81526001600160601b038b1660048201529091505f906001600160a01b03841690630232ca4990602401602060405180830381865afa158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a591906153f7565b905088975061091e8873__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091991906153f7565b613c19565b1561092b5780975061096b565b6109358882613ca7565b1561096b576040516322d98b0960e11b81526001600160601b03808a166004830152821660248201526044015b60405180910390fd5b5f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cc919061508e565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166311a1467782888c73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5f91906153f7565b6040518563ffffffff1660e01b8152600401610a7e9493929190615412565b5f604051808303815f87803b158015610a95575f80fd5b505af1158015610aa7573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166366101781828d73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3b91906153f7565b8d6040518563ffffffff1660e01b8152600401610b5b9493929190615412565b5f604051808303815f87803b158015610b72575f80fd5b505af1158015610b84573d5f803e3d5ffd5b50505050505f610b9c6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0d919061508e565b90507f81c27687c85b82d25896110abb95c71bcbe0f90ff15274c4f0dbc5710a43ec3f8b8285602001516001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c96919061508e565b604080516001600160601b0394851681526001600160a01b0393841660208201529290911690820152908b16606082015260800160405180910390a182602001516001600160a01b03166367ed5f36828b6040518363ffffffff1660e01b8152600401610d0492919061506c565b5f604051808303815f87803b158015610d1b575f80fd5b505af1158015610d2d573d5f803e3d5ffd5b50505050505050505050505092915050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190615444565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610e72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9691906153f7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ede61277a565b6001600160a01b03168152602001826001018054610efb90615466565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790615466565b8015610f725780601f10610f4957610100808354040283529160200191610f72565b820191905f5260205f20905b815481529060010190602001808311610f5557829003601f168201915b505050505081525091505090565b5f610dc130613cf1565b5f610f9433610455565b5f80610f9e613b6d565b915091505f610fb56001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03851660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015611002573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102691906153f7565b90505f826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611065573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061508e565b604051636a05a41360e01b81526001600160601b03841660048201526001600160a01b039190911690636a05a413906024016101c060405180830381865afa1580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb9190615500565b604081015151606082015151919250905f90611117908e613eea565b90506001600160a01b03808316908216111561124357604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af4158015611183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a791906155ba565b604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af41580156111fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122191906155ba565b604051632d8d32a560e21b815260048101929092526024820152604401610962565b5f61124e8383613ef5565b90506112668f826001600160a01b0390811691161190565b15611397578e6001600160a01b031673__$bf7bc340cbb9229ef1de2c568356e67902$__635ff51efe90916040518263ffffffff1660e01b81526004016112bc91906001600160a01b0391909116815260200190565b602060405180830381865af41580156112d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fb91906155ba565b604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af4158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906155ba565b6040516306990c9f60e11b815260048101929092526024820152604401610962565b505050505073__$1919c6d2c69d787ccb2653a371d7e5737d$__63578c3039838e6040518363ffffffff1660e01b81526004016113d59291906155d1565b602060405180830381865af41580156113f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141491906155f2565b92505f6040518061014001604052808d6001600160a01b03168152602001846001600160601b031681526020018c6001600160a01b031681526020018a63ffffffff1681526020018964ffffffffff168152602001881515815260200187151581526020018b6001600160a01b031681526020018e8152602001868152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f4919061508e565b6001600160a01b0316634bb2d19785836040518363ffffffff1660e01b815260040161152192919061560d565b5f604051808303815f87803b158015611538575f80fd5b505af115801561154a573d5f803e3d5ffd5b505050507fcd159579c9776c25aaa89df3e9e0e273cbd95c8827ec72a5e8c28aa21c34c01b838e60405161157f9291906155d1565b60405180910390a15050509998505050505050505050565b5f6115a061361a565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa1580156115e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611608919061570a565b15905090565b5f82600e61161c8282613a39565b604051630a4d29dd60e31b81526001600160601b038616600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611696919061570a565b8061171c5750604051637bc32ecf60e01b815273__$05887d5853069c88bcd4c0a2107db45f29$__90637bc32ecf906116dd906001600160c01b0319881690600401614ce3565b602060405180830381865af41580156116f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171c919061570a565b15611729575f9250611af7565b5f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816117566001546001600160a01b031690565b886040518363ffffffff1660e01b815260040161177492919061506c565b602060405180830381865af415801561178f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b3919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611816919061508e565b6001600160a01b0316631d3be477876040518263ffffffff1660e01b81526004016118419190614ce3565b5f60405180830381865afa15801561185b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118829190810190615124565b6020810151604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af41580156118e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611905919061570a565b15611914575f94505050611af7565b80516119209088613f2d565b1561194457805160405163232e27d560e21b81526109629188918a90600401615725565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af415801561199e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c2919061570a565b80611ad0575060a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015611a22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a46919061570a565b8015611ad05750611ad073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611a97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abb9190615750565b8260a0015164ffffffffff9081169116111590565b9450848015611af25750806040015163ffffffff16816060015163ffffffff16105b945050505b505092915050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c611b21610d3f565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b83919061577f565b5f80516020615d3f8339815191528054600160401b900460ff1680611bb5575080546001600160401b03808416911610155b15611bd35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611bfd83613f77565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020615d3f8339815191528054600160401b810460ff1615906001600160401b03165f81158015611c7a5750825b90505f826001600160401b03166001148015611c955750303b155b905081158015611ca3575080155b15611cc15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ceb57845460ff60401b1916600160401b1785555b611cf58787613f7f565b8315611d3c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f611d4f33610455565b5f80611d59613b6d565b91509150611dc7816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc0919061508e565b8684614142565b60055f9054906101000a90046001600160a01b03166001600160a01b03166357a8fba76040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6091906153f7565b6001600160601b03168152602001856001600160601b03168152602001611e85601790565b60ff1681526020016001151581526020015f6001600160a01b03168152602001896001600160a01b0316815260200160405180602001604052805f8152508152506040518263ffffffff1660e01b8152600401611ee29190614998565b6020604051808303815f875af1158015611efe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2291906153f7565b92505f6040518060800160405280876001600160c01b03191681526020016001151581526020015f63ffffffff168152602001868152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fbb919061508e565b6001600160a01b031663f9b3fe3c85836040518363ffffffff1660e01b8152600401611fe89291906157e0565b5f604051808303815f87803b158015611fff575f80fd5b505af1158015612011573d5f803e3d5ffd5b5050604080516001600160601b038781168252881660208201526001600160c01b03198a16818301526001600160a01b038b16606082015290517f4a9178ebf2691f0cc04ca591663061f3c23c8b96b53097cfa0289437162c992e9350908190036080019150a15050509392505050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63645ceefe600e6120a761210e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156120ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc1919061577f565b5f61211761361a565b6001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612152573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190615801565b61217f33610455565b82600e61218c8282613a39565b5f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816121b96001546001600160a01b031690565b886040518363ffffffff1660e01b81526004016121d792919061506c565b602060405180830381865af41580156121f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612216919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612255573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612279919061508e565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122dc919061508e565b90505f6122f3876101c00151886101e001516141e5565b90506122ff898961160e565b156125c0576102008701516002546040516374933c2f60e01b81526001600160a01b03909116906374933c2f906123409086908e9086908890600401615412565b5f604051808303815f87803b158015612357575f80fd5b505af1158015612369573d5f803e3d5ffd5b5050604051631d3be47760e01b81525f92506001600160a01b0387169150631d3be4779061239b908d90600401614ce3565b5f60405180830381865afa1580156123b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123dc9190810190615124565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663d165cb6485836020015173__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561244e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247291906153f7565b866040518563ffffffff1660e01b81526004016124929493929190615412565b5f604051808303815f87803b1580156124a9575f80fd5b505af11580156124bb573d5f803e3d5ffd5b5050505060208101516040516313d8ebc960e11b81526001600160601b0390911660048201525f906001600160a01b038716906327b1d792906024015f60405180830381865afa158015612511573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125389190810190615821565b905060018160400181815161254d9190615233565b63ffffffff169052506020820151604051630af38b5f60e21b81526001600160a01b03871691632bce2d7c9161258b9190859060ff906004016158c4565b5f604051808303815f87803b1580156125a2575f80fd5b505af11580156125b4573d5f803e3d5ffd5b5050505050505061269e565b60025f9054906101000a90046001600160a01b03166001600160a01b03166374933c2f838b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561262c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061265091906153f7565b856040518563ffffffff1660e01b81526004016126709493929190615412565b5f604051808303815f87803b158015612687575f80fd5b505af1158015612699573d5f803e3d5ffd5b505050505b604080516001600160601b038b1681526001600160c01b03198a1660208201527f1ada02426ee529031fdddc0d25489621c399116f75cb4bbf31ec18c7c7c3e3ef910160405180910390a1505050505050505050565b336126fd61361a565b6001600160a01b0316816001600160a01b0316146127385760405162d1953b60e31b81526001600160a01b0382166004820152602401610962565b816001600160a01b03163b5f0361276d576040516361798f2f60e11b81526001600160a01b0383166004820152602401610962565b61277682614269565b5050565b5f805f80516020615cff83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156127e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280a919061570a565b15612895576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561286b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288f919061508e565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020615d1f83398151915280545f9190600160a01b900460ff166128d2575f61288f565b638fb3603760e01b91505090565b5f6128ea33610455565b8660176128f78282613a39565b5f80612901613b6d565b9150915089515f0361292857896040516337b67ced60e01b815260040161096291906158e5565b60405163790a38ad60e01b815264ffffffffff8816600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af415801561297c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a0919061570a565b80612aa057508664ffffffffff1673__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__6394335b1a909173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612a11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a359190615750565b6040516001600160e01b031960e085901b16815264ffffffffff928316600482015291166024820152604401602060405180830381865af4158015612a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aa0919061570a565b15612ac75760405163186399e560e31b815264ffffffffff88166004820152602401610962565b5f612ada6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b038e1660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015612b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4b91906153f7565b9050612b578184613f2d565b15612b905760405163e172170d60e01b81526001600160601b03808e166004830152808316602483015284166044820152606401610962565b5f826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf1919061508e565b6040516313d8ebc960e11b81526001600160601b038f1660048201529091505f906001600160a01b038316906327b1d792906024015f60405180830381865afa158015612c40573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c679190810190615821565b516040516368322c6360e11b81529091505f906001600160a01b0384169063d06458c690612c99908590600401614ce3565b5f60405180830381865afa158015612cb3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612cda91908101906158f7565b90508b63ffffffff16816060015163ffffffff161015612d1b576060810151604051631bdd82b160e31b815263ffffffff9091166004820152602401610962565b80516001600160a01b03808f1691161115612e4957805160405163e2eb023b60e01b81526001600160a01b03909116600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dad91906155ba565b60405163e2eb023b60e01b81526001600160a01b038f16600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2791906155ba565b604051637025bb8d60e11b815260048101929092526024820152604401610962565b60408101516001600160a01b03808f1691161015612f7d57604081810151905163e2eb023b60e01b81526001600160a01b03909116600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612ebd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee191906155ba565b60405163e2eb023b60e01b81526001600160a01b038f16600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612f37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f5b91906155ba565b60405163d80ce0cf60e01b815260048101929092526024820152604401610962565b6080810151604051633682752160e21b815264ffffffffff909116600482015273__$71e292c09eace9601b3e21e68a1278917a$__9063da09d48490602401602060405180830381865af4158015612fd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ffb91906155ba565b73__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015613042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190615750565b604051633682752160e21b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156130bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130df91906155ba565b604051633682752160e21b815264ffffffffff8e16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af4158015613133573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315791906155ba565b6131619190615a18565b111561319757608081015160405163941185d360e01b815264ffffffffff9182166004820152908c166024820152604401610962565b5050604051631f849e6b60e11b815273__$05887d5853069c88bcd4c0a2107db45f29$__9150633f093cd6906131d39086908f906004016155d1565b602060405180830381865af41580156131ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061321291906155f2565b95505f604051806101000160405280856001600160601b031681526020018e6001600160601b031681526020018b63ffffffff1681526020015f63ffffffff1681526020018c6001600160a01b031681526020018a64ffffffffff1681526020018d8152602001898152509050826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132df919061508e565b6001600160a01b0316634a82439288836040518363ffffffff1660e01b815260040161330c929190615a2b565b5f604051808303815f87803b158015613323575f80fd5b505af1158015613335573d5f803e3d5ffd5b505050507f75877f30372d5d5274d26a87127a9dcb9944f7fc094a00f5e126ea90220d46e0848e898f60405161336e9493929190615a4f565b60405180910390a15050505050509695505050505050565b61338f33610455565b61339a836017613a39565b5f806133a4613b6d565b91509150613412816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340b919061508e565b8584614142565b5f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561344f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613473919061508e565b6040516313d8ebc960e11b81526001600160601b03881660048201526001600160a01b0391909116906327b1d792906024015f60405180830381865afa1580156134bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134e69190810190615821565b80516001600160c01b0319871682526060820186905260408051631a99b41b60e31b8152905192935090916001600160a01b0385169163d4cda0d89160048083019260209291908290030181865afa158015613544573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613568919061508e565b6001600160a01b0316632bce2d7c888460ff6040518463ffffffff1660e01b8152600401613598939291906158c4565b5f604051808303815f87803b1580156135af575f80fd5b505af11580156135c1573d5f803e3d5ffd5b5050604080516001600160601b038b1681526001600160c01b031980861660208301528a16918101919091527fbc91a707be82165c58e12c3cdd805449dbceec4592db04a692e68b120a4daa7792506060019050611d33565b5f80516020615d1f833981519152546001600160a01b031690565b5f805f846001600160a01b0316631d3be477856040518263ffffffff1660e01b81526004016136649190614ce3565b5f60405180830381865afa15801561367e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136a59190810190615124565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015613702573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613726919061570a565b156137a35773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613772573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613796919061508e565b60645b9250925050613934565b6138258160a0015173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156137f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138169190615750565b64ffffffffff90811691161090565b1561389c5773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613895919061508e565b606e613799565b806040015163ffffffff16816060015163ffffffff16106139295773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156138fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613922919061508e565b6078613799565b608001519150600a90505b9250929050565b5f80516020615d1f8339815191525f8061397361395661361a565b873061396560045f8a8c615a91565b61396e91615ab8565b6142c9565b9150915081613a315763ffffffff811615613a0e57825460ff60a01b1916600160a01b1783556139a161361a565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016139d093929190615af0565b5f604051808303815f87803b1580156139e7575f80fd5b505af11580156139f9573d5f803e3d5ffd5b5050845460ff60a01b1916855550613a319050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610962565b505050505050565b60405163037c8cb160e51b815260ff8216600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015613a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aad919061570a565b80613b3b57506001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b39919061570a565b155b156127765760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610962565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__63ed352647613b9b6001546001600160a01b031690565b6040805160e084901b6001600160e01b03191681526001600160a01b03929092166004830152336024830152600e604483015280516064808401938290030181865af4158015613bed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c119190615b2f565b915091509091565b604051631315996960e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063262b32d2906044015b602060405180830381865af4158015613c7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c9e919061570a565b90505b92915050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401613c5f565b5f805f80516020615cff83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613d5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d81919061570a565b15613dad5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610962565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613dff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e23919061570a565b613e4b5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610962565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ec191906153f7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f613c9e8284615b5c565b5f6001600160a01b038083169084161015613f235760405163117efe6d60e31b815260040160405180910390fd5b613c9e8284615b7b565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401613c5f565b6101a16143d1565b5f80516020615d3f8339815191528054600160401b810460ff1615906001600160401b03165f81158015613fb05750825b90505f826001600160401b03166001148015613fcb5750303b155b905081158015613fd9575080155b15613ff75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561402157845460ff60401b1916600160401b1785555b5f80878060200190518101906140379190615b9a565b9150915061404682828b614409565b61405060286144ab565b600280546001600160a01b0319166001600160a01b039290921691909117905561407a600b6144ab565b600380546001600160a01b0319166001600160a01b03929092169190911790556140a4600a6144ab565b600480546001600160a01b0319166001600160a01b03929092169190911790556140ce60026144ab565b600580546001600160a01b0319166001600160a01b03929092169190911790556140fe63c7f9373d60e01b61453c565b50508315611d3c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611d33565b6040516368322c6360e11b81525f906001600160a01b0385169063d06458c690614170908690600401614ce3565b5f60405180830381865afa15801561418a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b191908101906158f7565b6020015190506141c18183613f2d565b1561072f578281836040516313bf6c4560e21b815260040161096293929190615725565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401602060405180830381865af4158015614245573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c9e91906153f7565b5f80516020615d1f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516143379190615bb6565b5f60405180830381855afa9150503d805f811461436f576040519150601f19603f3d011682016040523d82523d5f602084013e614374565b606091505b509150915081156143c65760408151106143a6578080602001905181019061439c9190615bcc565b90945092506143c6565b60208151106143c657808060200190518101906143c3919061570a565b93505b505094509492505050565b5f80516020615d3f83398151915254600160401b900460ff1661440757604051631afcd79f60e31b815260040160405180910390fd5b565b6144116143d1565b61441961456f565b6144968383846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561445a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447e91906153f7565b60085f8660405180602001604052805f81525061457f565b6144a663daf9067160e01b61453c565b505050565b5f6144be6001546001600160a01b031690565b6001600160a01b031663d39e6043836144d561210e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614518573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca1919061508e565b6145446143d1565b61456c816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b6145776143d1565b6144076146c6565b6145876143d1565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af41580156145dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614601919061570a565b6146295760405163cf6935e560e01b81526001600160a01b0388166004820152602401610962565b614632876146f4565b61463c8683614705565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016146ab8382615c44565b506146bc634a531f3360e01b61453c565b5050505050505050565b6146ce6143d1565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6146fc6143d1565b61456c8161477b565b61470d6143d1565b61471561478c565b61471e826147d4565b6001600160a01b0381166147455760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615cff83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6147836143d1565b61456c81614269565b6147946143d1565b6144076301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6147dc6143d1565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614832573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614856919061570a565b61487e5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610962565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f602082840312156148b0575f80fd5b81356001600160e01b0319811681146148c7575f80fd5b9392505050565b6001600160601b038116811461456c575f80fd5b80356148ed816148ce565b919050565b6001600160c01b03198116811461456c575f80fd5b5f8060408385031215614918575f80fd5b8235614923816148ce565b91506020830135614933816148f2565b809150509250929050565b5f806040838503121561494f575f80fd5b823561495a816148ce565b91506020830135614933816148ce565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f60608301516149e0608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614a2461010084018261496a565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b60405161024081016001600160401b0381118282101715614a6357614a63614a2c565b60405290565b60405161010081016001600160401b0381118282101715614a6357614a63614a2c565b604051606081016001600160401b0381118282101715614a6357614a63614a2c565b604051608081016001600160401b0381118282101715614a6357614a63614a2c565b60405161014081016001600160401b0381118282101715614a6357614a63614a2c565b604051601f8201601f191681016001600160401b0381118282101715614b1b57614b1b614a2c565b604052919050565b5f6001600160401b03821115614b3b57614b3b614a2c565b50601f01601f191660200190565b5f82601f830112614b58575f80fd5b8135602083015f614b70614b6b84614b23565b614af3565b9050828152858383011115614b83575f80fd5b828260208301375f92810160200192909252509392505050565b6001600160a01b038116811461456c575f80fd5b80356148ed81614b9d565b63ffffffff8116811461456c575f80fd5b80356148ed81614bbc565b64ffffffffff8116811461456c575f80fd5b80356148ed81614bd8565b801515811461456c575f80fd5b80356148ed81614bf5565b5f805f805f805f805f6101208a8c031215614c26575f80fd5b89356001600160401b03811115614c3b575f80fd5b614c478c828d01614b49565b99505060208a0135614c5881614b9d565b9750614c6660408b01614bb1565b9650614c7460608b01614bb1565b9550614c8260808b01614bcd565b9450614c9060a08b01614bea565b9350614c9e60c08b01614c02565b9250614cac60e08b01614c02565b91506101008a01356001600160401b03811115614cc7575f80fd5b614cd38c828d01614b49565b9150509295985092959850929598565b6001600160c01b031991909116815260200190565b5f60208284031215614d08575f80fd5b81356001600160401b03811115614d1d575f80fd5b614a2484828501614b49565b5f8060408385031215614d3a575f80fd5b8235614d4581614b9d565b915060208301356001600160401b03811115614d5f575f80fd5b614d6b85828601614b49565b9150509250929050565b5f805f60608486031215614d87575f80fd5b8335614d9281614b9d565b92506020840135614da2816148f2565b915060408401356001600160401b03811115614dbc575f80fd5b614dc886828701614b49565b9150509250925092565b5f805f838503610280811215614de6575f80fd5b8435614df1816148ce565b93506020850135614e01816148f2565b9250610240603f1982011215614e15575f80fd5b50614e1e614a40565b614e2a604086016148e2565b8152614e38606086016148e2565b6020820152614e49608086016148e2565b6040820152614e5a60a086016148e2565b6060820152614e6b60c086016148e2565b6080820152614e7c60e086016148e2565b60a0820152614e8e61010086016148e2565b60c0820152614ea061012086016148e2565b60e0820152614eb261014086016148e2565b610100820152614ec561016086016148e2565b610120820152614ed861018086016148e2565b610140820152614eeb6101a086016148e2565b610160820152614efe6101c086016148e2565b610180820152614f116101e086016148e2565b6101a0820152614f2461020086016148e2565b6101c0820152614f3761022086016148e2565b6101e0820152614f4a61024086016148e2565b610200820152614f5d61026086016148e2565b610220820152809150509250925092565b5f60208284031215614f7e575f80fd5b81356148c781614b9d565b5f805f805f8060c08789031215614f9e575f80fd5b8635614fa9816148ce565b955060208701356001600160401b03811115614fc3575f80fd5b614fcf89828a01614b49565b9550506040870135614fe081614b9d565b93506060870135614ff081614bbc565b9250608087013561500081614bd8565b915060a08701356001600160401b0381111561501a575f80fd5b61502689828a01614b49565b9150509295509295509295565b5f805f60608486031215615045575f80fd5b8335614d92816148ce565b5f8060408385031215615061575f80fd5b823561492381614b9d565b6001600160a01b039290921682526001600160601b0316602082015260400190565b5f6020828403121561509e575f80fd5b81516148c781614b9d565b80516148ed816148ce565b80516148ed81614bbc565b80516148ed81614b9d565b80516148ed81614bd8565b5f82601f8301126150e4575f80fd5b8151602083015f6150f7614b6b84614b23565b905082815285838301111561510a575f80fd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215615134575f80fd5b81516001600160401b03811115615149575f80fd5b8201610100818503121561515b575f80fd5b615163614a69565b61516c826150a9565b815261517a602083016150a9565b602082015261518b604083016150b4565b604082015261519c606083016150b4565b60608201526151ad608083016150bf565b60808201526151be60a083016150ca565b60a082015260c08201516001600160401b038111156151db575f80fd5b6151e7868285016150d5565b60c08301525060e08201516001600160401b03811115615205575f80fd5b615211868285016150d5565b60e083015250949350505050565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8181168382160190811115613ca157613ca161521f565b6001600160601b0381511682525f602082015161527760208501826001600160601b03169052565b50604082015161528f604085018263ffffffff169052565b5060608201516152a7606085018263ffffffff169052565b5060808201516152c260808501826001600160a01b03169052565b5060a08201516152db60a085018264ffffffffff169052565b5060c082015161010060c08501526152f761010085018261496a565b905060e083015184820360e0860152615310828261496a565b95945050505050565b6001600160401b0360c01b84168152606060208201525f61533d606083018561524f565b905060ff83166040830152949350505050565b5f60208284031215615360575f80fd5b81516001600160401b03811115615375575f80fd5b820160608185031215615386575f80fd5b61538e614a8c565b81516001600160401b038111156153a3575f80fd5b6153af868285016150d5565b82525060208201516153c081614b9d565b602082015260408201516001600160401b038111156153dd575f80fd5b6153e9868285016150d5565b604083015250949350505050565b5f60208284031215615407575f80fd5b81516148c7816148ce565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f60208284031215615454575f80fd5b815162ffffff811681146148c7575f80fd5b600181811c9082168061547a57607f821691505b60208210810361549857634e487b7160e01b5f52602260045260245ffd5b50919050565b5f604082840312156154ae575f80fd5b604080519081016001600160401b03811182821017156154d0576154d0614a2c565b806040525080915082516154e381614b9d565b815260208301516154f3816148ce565b6020919091015292915050565b5f6101c0828403128015615512575f80fd5b5060405160e081016001600160401b038111828210171561553557615535614a2c565b604052615542848461549e565b8152615551846040850161549e565b6020820152615563846080850161549e565b60408201526155758460c0850161549e565b606082015261558884610100850161549e565b608082015261559b84610140850161549e565b60a08201526155ae84610180850161549e565b60c08201529392505050565b5f602082840312156155ca575f80fd5b5051919050565b6001600160601b0383168152604060208201525f614a24604083018461496a565b5f60208284031215615602575f80fd5b81516148c7816148f2565b6001600160c01b03198316815260406020820181905282516001600160a01b0316908201525f602083015161564d60608401826001600160601b03169052565b5060408301516001600160a01b038116608084015250606083015163ffffffff811660a084015250608083015164ffffffffff811660c08401525060a083015180151560e08401525060c08301518015156101008401525060e08301516001600160a01b03811661012084015250610100830151610140808401526156d661018084018261496a565b9050610120840151603f19848303016101608501526156f5828261496a565b9695505050505050565b80516148ed81614bf5565b5f6020828403121561571a575f80fd5b81516148c781614bf5565b6001600160c01b03199390931683526001600160601b03918216602084015216604082015260600190565b5f60208284031215615760575f80fd5b81516148c781614bd8565b6001600160401b038116811461456c575f80fd5b5f6020828403121561578f575f80fd5b81516148c78161576b565b6001600160401b0360c01b815116825260208101511515602083015263ffffffff60408201511660408301525f606082015160806060850152614a24608085018261496a565b6001600160601b0383168152604060208201525f614a24604083018461579a565b5f60208284031215615811575f80fd5b815160ff811681146148c7575f80fd5b5f60208284031215615831575f80fd5b81516001600160401b03811115615846575f80fd5b820160808185031215615857575f80fd5b61585f614aae565b815161586a816148f2565b8152602082015161587a81614bf5565b6020820152604082015161588d81614bbc565b604082015260608201516001600160401b038111156158aa575f80fd5b6158b6868285016150d5565b606083015250949350505050565b6001600160601b0384168152606060208201525f61533d606083018561579a565b602081525f613c9e602083018461496a565b5f60208284031215615907575f80fd5b81516001600160401b0381111561591c575f80fd5b8201610140818503121561592e575f80fd5b615936614ad0565b61593f826150bf565b815261594d602083016150a9565b602082015261595e604083016150bf565b604082015261596f606083016150b4565b6060820152615980608083016150ca565b608082015261599160a083016156ff565b60a08201526159a260c083016156ff565b60c08201526159b360e083016150bf565b60e08201526101008201516001600160401b038111156159d1575f80fd5b6159dd868285016150d5565b610100830152506101208201516001600160401b038111156159fd575f80fd5b615a09868285016150d5565b61012083015250949350505050565b81810381811115613ca157613ca161521f565b6001600160401b0360c01b83168152604060208201525f614a24604083018461524f565b6001600160601b03851681526001600160601b03841660208201526001600160401b0360c01b83166040820152608060608201525f6156f5608083018461496a565b5f8085851115615a9f575f80fd5b83861115615aab575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615ae9576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615b40575f80fd5b8251615b4b816148ce565b602084015190925061493381614b9d565b6001600160a01b038181168382160190811115613ca157613ca161521f565b6001600160a01b038281168282160390811115613ca157613ca161521f565b5f8060408385031215615bab575f80fd5b8251615b4b81614b9d565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615bdd575f80fd5b8251615be881614bf5565b602084015190925061493381614bbc565b601f8211156144a657805f5260205f20601f840160051c81016020851015615c1e5750805b601f840160051c820191505b81811015615c3d575f8155600101615c2a565b5050505050565b81516001600160401b03811115615c5d57615c5d614a2c565b615c7181615c6b8454615466565b84615bf9565b6020601f821160018114615ca3575f8315615c8c5750848201515b5f19600385901b1c1916600184901b178455615c3d565b5f84815260208120601f198516915b82811015615cd25787850151825560209485019460019092019101615cb2565b5084821015615cef57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e7d4ecf9f72cb180bf02ffa27c0f22561451931677e188d9087d49347fbf64da64736f6c634300081a0033",
1312
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101a1575f3560e01c80635dcb3bae116100f35780638fb3603711610093578063ada9652e1161006e578063ada9652e146103f9578063b68d18091461040d578063bf7e214f14610414578063eed283151461041c575f80fd5b80638fb36037146103b2578063987cb161146103d3578063ab3fc75f146103e6575f80fd5b806376b707b7116100ce57806376b707b71461036a5780637950d0e2146103845780637a9e5e4b14610397578063893d20e8146103aa575f80fd5b80635dcb3bae1461031a578063644c45e01461032d5780636c741e781461034a575f80fd5b80631bda5efa1161015e57806325d073841161013957806325d07384146102bc578063329d6e74146102cf57806349bb9e4b146102e25780635ab1bd53146102f5575f80fd5b80631bda5efa1461025f5780631eff4b221461027f57806322f3e2d4146102b4575f80fd5b806301ffc9a7146101a5578063071e1e4a146101e657806307e71a6e146101fb5780630d8e6e2c146102265780630fec111c14610242578063138461e014610257575b5f80fd5b6101d16101b33660046148a0565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f96101f4366004614907565b610450565b005b61020e61020936600461493e565b610735565b6040516001600160601b0390911681526020016101dd565b61022e610d3f565b60405162ffffff90911681526020016101dd565b61024a610dc6565b6040516101dd9190614998565b61020e610f80565b61027261026d366004614c0d565b610f8a565b6040516101dd9190614ce3565b6102a67f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101dd565b6101d1611597565b6101d16102ca366004614907565b61160e565b6101f96102dd366004614cf8565b611aff565b6101f96102f0366004614d29565b611c49565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b61020e610328366004614d75565b611d45565b5f80516020615cff833981519152546001600160601b031661020e565b610352612082565b6040516001600160401b0390911681526020016101dd565b61037261210e565b60405160ff90911681526020016101dd565b6101f9610392366004614dd2565b612176565b6101f96103a5366004614f6e565b6126f4565b61030261277a565b6103ba6128ab565b6040516001600160e01b031990911681526020016101dd565b6102726103e1366004614f89565b6128e0565b6101f96103f4366004615033565b613386565b6102a65f80516020615cff83398151915281565b600e610372565b61030261361a565b61042f61042a366004615050565b613635565b604080516001600160a01b03909316835260ff9091166020830152016101dd565b61045c335b5f3661393b565b81600e6104698282613a39565b610473848461160e565b1561072f575f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816104a56001546001600160a01b031690565b876040518363ffffffff1660e01b81526004016104c392919061506c565b602060405180830381865af41580156104de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610502919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610541573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610565919061508e565b6001600160a01b0316631d3be477866040518263ffffffff1660e01b81526004016105909190614ce3565b5f60405180830381865afa1580156105aa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105d19190810190615124565b90506001816060018181516105e69190615233565b63ffffffff1690525060408051631a99b41b60e31b815290516001600160a01b0384169163d4cda0d89160048083019260209291908290030181865afa158015610632573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610656919061508e565b6001600160a01b03166396260559868360ff6040518463ffffffff1660e01b815260040161068693929190615319565b5f604051808303815f87803b15801561069d575f80fd5b505af11580156106af573d5f803e3d5ffd5b505050507fd0fb19cbe3e6c7666a69cce6e9e84c1d4d23353bb2023d89040efa1ce3e5a82e86826020015187846060015160405161072494939291906001600160601b0394851681529290931660208301526001600160c01b031916604082015263ffffffff91909116606082015260800190565b60405180910390a150505b50505050565b5f61073f33610455565b82601761074c8282613a39565b5f80610756613b6d565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061508e565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa15801561080a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108319190810190615350565b604051630232ca4960e01b81526001600160601b038b1660048201529091505f906001600160a01b03841690630232ca4990602401602060405180830381865afa158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a591906153f7565b905088975061091e8873__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091991906153f7565b613c19565b1561092b5780975061096b565b6109358882613ca7565b1561096b576040516322d98b0960e11b81526001600160601b03808a166004830152821660248201526044015b60405180910390fd5b5f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cc919061508e565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166311a1467782888c73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5f91906153f7565b6040518563ffffffff1660e01b8152600401610a7e9493929190615412565b5f604051808303815f87803b158015610a95575f80fd5b505af1158015610aa7573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166366101781828d73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3b91906153f7565b8d6040518563ffffffff1660e01b8152600401610b5b9493929190615412565b5f604051808303815f87803b158015610b72575f80fd5b505af1158015610b84573d5f803e3d5ffd5b50505050505f610b9c6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0d919061508e565b90507f81c27687c85b82d25896110abb95c71bcbe0f90ff15274c4f0dbc5710a43ec3f8b8285602001516001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c96919061508e565b604080516001600160601b0394851681526001600160a01b0393841660208201529290911690820152908b16606082015260800160405180910390a182602001516001600160a01b03166367ed5f36828b6040518363ffffffff1660e01b8152600401610d0492919061506c565b5f604051808303815f87803b158015610d1b575f80fd5b505af1158015610d2d573d5f803e3d5ffd5b50505050505050505050505092915050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190615444565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610e72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9691906153f7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ede61277a565b6001600160a01b03168152602001826001018054610efb90615466565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790615466565b8015610f725780601f10610f4957610100808354040283529160200191610f72565b820191905f5260205f20905b815481529060010190602001808311610f5557829003601f168201915b505050505081525091505090565b5f610dc130613cf1565b5f610f9433610455565b5f80610f9e613b6d565b915091505f610fb56001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03851660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015611002573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102691906153f7565b90505f826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611065573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061508e565b604051636a05a41360e01b81526001600160601b03841660048201526001600160a01b039190911690636a05a413906024016101c060405180830381865afa1580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb9190615500565b604081015151606082015151919250905f90611117908e613eea565b90506001600160a01b03808316908216111561124357604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af4158015611183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a791906155ba565b604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af41580156111fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122191906155ba565b604051632d8d32a560e21b815260048101929092526024820152604401610962565b5f61124e8383613ef5565b90506112668f826001600160a01b0390811691161190565b15611397578e6001600160a01b031673__$bf7bc340cbb9229ef1de2c568356e67902$__635ff51efe90916040518263ffffffff1660e01b81526004016112bc91906001600160a01b0391909116815260200190565b602060405180830381865af41580156112d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fb91906155ba565b604051632ffa8f7f60e11b81526001600160a01b038316600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90635ff51efe90602401602060405180830381865af4158015611351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137591906155ba565b6040516306990c9f60e11b815260048101929092526024820152604401610962565b505050505073__$1919c6d2c69d787ccb2653a371d7e5737d$__63578c3039838e6040518363ffffffff1660e01b81526004016113d59291906155d1565b602060405180830381865af41580156113f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141491906155f2565b92505f6040518061014001604052808d6001600160a01b03168152602001846001600160601b031681526020018c6001600160a01b031681526020018a63ffffffff1681526020018964ffffffffff168152602001881515815260200187151581526020018b6001600160a01b031681526020018e8152602001868152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f4919061508e565b6001600160a01b0316634bb2d19785836040518363ffffffff1660e01b815260040161152192919061560d565b5f604051808303815f87803b158015611538575f80fd5b505af115801561154a573d5f803e3d5ffd5b505050507fcd159579c9776c25aaa89df3e9e0e273cbd95c8827ec72a5e8c28aa21c34c01b838e60405161157f9291906155d1565b60405180910390a15050509998505050505050505050565b5f6115a061361a565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa1580156115e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611608919061570a565b15905090565b5f82600e61161c8282613a39565b604051630a4d29dd60e31b81526001600160601b038616600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611696919061570a565b8061171c5750604051637bc32ecf60e01b815273__$05887d5853069c88bcd4c0a2107db45f29$__90637bc32ecf906116dd906001600160c01b0319881690600401614ce3565b602060405180830381865af41580156116f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171c919061570a565b15611729575f9250611af7565b5f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816117566001546001600160a01b031690565b886040518363ffffffff1660e01b815260040161177492919061506c565b602060405180830381865af415801561178f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b3919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611816919061508e565b6001600160a01b0316631d3be477876040518263ffffffff1660e01b81526004016118419190614ce3565b5f60405180830381865afa15801561185b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118829190810190615124565b6020810151604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af41580156118e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611905919061570a565b15611914575f94505050611af7565b80516119209088613f2d565b1561194457805160405163232e27d560e21b81526109629188918a90600401615725565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af415801561199e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c2919061570a565b80611ad0575060a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015611a22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a46919061570a565b8015611ad05750611ad073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611a97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abb9190615750565b8260a0015164ffffffffff9081169116111590565b9450848015611af25750806040015163ffffffff16816060015163ffffffff16105b945050505b505092915050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c611b21610d3f565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b83919061577f565b5f80516020615d3f8339815191528054600160401b900460ff1680611bb5575080546001600160401b03808416911610155b15611bd35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611bfd83613f77565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020615d3f8339815191528054600160401b810460ff1615906001600160401b03165f81158015611c7a5750825b90505f826001600160401b03166001148015611c955750303b155b905081158015611ca3575080155b15611cc15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ceb57845460ff60401b1916600160401b1785555b611cf58787613f7f565b8315611d3c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f611d4f33610455565b5f80611d59613b6d565b91509150611dc7816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc0919061508e565b8684614142565b60055f9054906101000a90046001600160a01b03166001600160a01b03166357a8fba76040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6091906153f7565b6001600160601b03168152602001856001600160601b03168152602001611e85601790565b60ff1681526020016001151581526020015f6001600160a01b03168152602001896001600160a01b0316815260200160405180602001604052805f8152508152506040518263ffffffff1660e01b8152600401611ee29190614998565b6020604051808303815f875af1158015611efe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2291906153f7565b92505f6040518060800160405280876001600160c01b03191681526020016001151581526020015f63ffffffff168152602001868152509050816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fbb919061508e565b6001600160a01b031663f9b3fe3c85836040518363ffffffff1660e01b8152600401611fe89291906157e0565b5f604051808303815f87803b158015611fff575f80fd5b505af1158015612011573d5f803e3d5ffd5b5050604080516001600160601b038781168252881660208201526001600160c01b03198a16818301526001600160a01b038b16606082015290517f4a9178ebf2691f0cc04ca591663061f3c23c8b96b53097cfa0289437162c992e9350908190036080019150a15050509392505050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63645ceefe600e6120a761210e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156120ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc1919061577f565b5f61211761361a565b6001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612152573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190615801565b61217f33610455565b82600e61218c8282613a39565b5f73__$fb599632d08395912d9d70eb2f0f93b5e2$__63ce64d2816121b96001546001600160a01b031690565b886040518363ffffffff1660e01b81526004016121d792919061506c565b602060405180830381865af41580156121f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612216919061508e565b90505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612255573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612279919061508e565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122dc919061508e565b90505f6122f3876101c00151886101e001516141e5565b90506122ff898961160e565b156125c0576102008701516002546040516374933c2f60e01b81526001600160a01b03909116906374933c2f906123409086908e9086908890600401615412565b5f604051808303815f87803b158015612357575f80fd5b505af1158015612369573d5f803e3d5ffd5b5050604051631d3be47760e01b81525f92506001600160a01b0387169150631d3be4779061239b908d90600401614ce3565b5f60405180830381865afa1580156123b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123dc9190810190615124565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663d165cb6485836020015173__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561244e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247291906153f7565b866040518563ffffffff1660e01b81526004016124929493929190615412565b5f604051808303815f87803b1580156124a9575f80fd5b505af11580156124bb573d5f803e3d5ffd5b5050505060208101516040516313d8ebc960e11b81526001600160601b0390911660048201525f906001600160a01b038716906327b1d792906024015f60405180830381865afa158015612511573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125389190810190615821565b905060018160400181815161254d9190615233565b63ffffffff169052506020820151604051630af38b5f60e21b81526001600160a01b03871691632bce2d7c9161258b9190859060ff906004016158c4565b5f604051808303815f87803b1580156125a2575f80fd5b505af11580156125b4573d5f803e3d5ffd5b5050505050505061269e565b60025f9054906101000a90046001600160a01b03166001600160a01b03166374933c2f838b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561262c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061265091906153f7565b856040518563ffffffff1660e01b81526004016126709493929190615412565b5f604051808303815f87803b158015612687575f80fd5b505af1158015612699573d5f803e3d5ffd5b505050505b604080516001600160601b038b1681526001600160c01b03198a1660208201527f1ada02426ee529031fdddc0d25489621c399116f75cb4bbf31ec18c7c7c3e3ef910160405180910390a1505050505050505050565b336126fd61361a565b6001600160a01b0316816001600160a01b0316146127385760405162d1953b60e31b81526001600160a01b0382166004820152602401610962565b816001600160a01b03163b5f0361276d576040516361798f2f60e11b81526001600160a01b0383166004820152602401610962565b61277682614269565b5050565b5f805f80516020615cff83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156127e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280a919061570a565b15612895576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561286b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288f919061508e565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020615d1f83398151915280545f9190600160a01b900460ff166128d2575f61288f565b638fb3603760e01b91505090565b5f6128ea33610455565b8660176128f78282613a39565b5f80612901613b6d565b9150915089515f0361292857896040516337b67ced60e01b815260040161096291906158e5565b60405163790a38ad60e01b815264ffffffffff8816600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af415801561297c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a0919061570a565b80612aa057508664ffffffffff1673__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__6394335b1a909173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612a11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a359190615750565b6040516001600160e01b031960e085901b16815264ffffffffff928316600482015291166024820152604401602060405180830381865af4158015612a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aa0919061570a565b15612ac75760405163186399e560e31b815264ffffffffff88166004820152602401610962565b5f612ada6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b038e1660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015612b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4b91906153f7565b9050612b578184613f2d565b15612b905760405163e172170d60e01b81526001600160601b03808e166004830152808316602483015284166044820152606401610962565b5f826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf1919061508e565b6040516313d8ebc960e11b81526001600160601b038f1660048201529091505f906001600160a01b038316906327b1d792906024015f60405180830381865afa158015612c40573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c679190810190615821565b516040516368322c6360e11b81529091505f906001600160a01b0384169063d06458c690612c99908590600401614ce3565b5f60405180830381865afa158015612cb3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612cda91908101906158f7565b90508b63ffffffff16816060015163ffffffff161015612d1b576060810151604051631bdd82b160e31b815263ffffffff9091166004820152602401610962565b80516001600160a01b03808f1691161115612e4957805160405163e2eb023b60e01b81526001600160a01b03909116600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dad91906155ba565b60405163e2eb023b60e01b81526001600160a01b038f16600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2791906155ba565b604051637025bb8d60e11b815260048101929092526024820152604401610962565b60408101516001600160a01b03808f1691161015612f7d57604081810151905163e2eb023b60e01b81526001600160a01b03909116600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612ebd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee191906155ba565b60405163e2eb023b60e01b81526001600160a01b038f16600482015273__$bf7bc340cbb9229ef1de2c568356e67902$__9063e2eb023b90602401602060405180830381865af4158015612f37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f5b91906155ba565b60405163d80ce0cf60e01b815260048101929092526024820152604401610962565b6080810151604051633682752160e21b815264ffffffffff909116600482015273__$71e292c09eace9601b3e21e68a1278917a$__9063da09d48490602401602060405180830381865af4158015612fd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ffb91906155ba565b73__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015613042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190615750565b604051633682752160e21b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af41580156130bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130df91906155ba565b604051633682752160e21b815264ffffffffff8e16600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af4158015613133573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315791906155ba565b6131619190615a18565b111561319757608081015160405163941185d360e01b815264ffffffffff9182166004820152908c166024820152604401610962565b5050604051631f849e6b60e11b815273__$05887d5853069c88bcd4c0a2107db45f29$__9150633f093cd6906131d39086908f906004016155d1565b602060405180830381865af41580156131ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061321291906155f2565b95505f604051806101000160405280856001600160601b031681526020018e6001600160601b031681526020018b63ffffffff1681526020015f63ffffffff1681526020018c6001600160a01b031681526020018a64ffffffffff1681526020018d8152602001898152509050826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132df919061508e565b6001600160a01b0316634a82439288836040518363ffffffff1660e01b815260040161330c929190615a2b565b5f604051808303815f87803b158015613323575f80fd5b505af1158015613335573d5f803e3d5ffd5b505050507f75877f30372d5d5274d26a87127a9dcb9944f7fc094a00f5e126ea90220d46e0848e898f60405161336e9493929190615a4f565b60405180910390a15050505050509695505050505050565b61338f33610455565b61339a836017613a39565b5f806133a4613b6d565b91509150613412816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340b919061508e565b8584614142565b5f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561344f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613473919061508e565b6040516313d8ebc960e11b81526001600160601b03881660048201526001600160a01b0391909116906327b1d792906024015f60405180830381865afa1580156134bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134e69190810190615821565b80516001600160c01b0319871682526060820186905260408051631a99b41b60e31b8152905192935090916001600160a01b0385169163d4cda0d89160048083019260209291908290030181865afa158015613544573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613568919061508e565b6001600160a01b0316632bce2d7c888460ff6040518463ffffffff1660e01b8152600401613598939291906158c4565b5f604051808303815f87803b1580156135af575f80fd5b505af11580156135c1573d5f803e3d5ffd5b5050604080516001600160601b038b1681526001600160c01b031980861660208301528a16918101919091527fbc91a707be82165c58e12c3cdd805449dbceec4592db04a692e68b120a4daa7792506060019050611d33565b5f80516020615d1f833981519152546001600160a01b031690565b5f805f846001600160a01b0316631d3be477856040518263ffffffff1660e01b81526004016136649190614ce3565b5f60405180830381865afa15801561367e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136a59190810190615124565b60a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063790a38ad90602401602060405180830381865af4158015613702573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613726919061570a565b156137a35773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613772573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613796919061508e565b60645b9250925050613934565b6138258160a0015173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156137f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138169190615750565b64ffffffffff90811691161090565b1561389c5773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613871573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613895919061508e565b606e613799565b806040015163ffffffff16816060015163ffffffff16106139295773__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156138fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613922919061508e565b6078613799565b608001519150600a90505b9250929050565b5f80516020615d1f8339815191525f8061397361395661361a565b873061396560045f8a8c615a91565b61396e91615ab8565b6142c9565b9150915081613a315763ffffffff811615613a0e57825460ff60a01b1916600160a01b1783556139a161361a565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016139d093929190615af0565b5f604051808303815f87803b1580156139e7575f80fd5b505af11580156139f9573d5f803e3d5ffd5b5050845460ff60a01b1916855550613a319050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610962565b505050505050565b60405163037c8cb160e51b815260ff8216600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015613a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aad919061570a565b80613b3b57506001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b39919061570a565b155b156127765760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610962565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__63ed352647613b9b6001546001600160a01b031690565b6040805160e084901b6001600160e01b03191681526001600160a01b03929092166004830152336024830152600e604483015280516064808401938290030181865af4158015613bed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c119190615b2f565b915091509091565b604051631315996960e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063262b32d2906044015b602060405180830381865af4158015613c7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c9e919061570a565b90505b92915050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401613c5f565b5f805f80516020615cff83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613d5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d81919061570a565b15613dad5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610962565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613dff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e23919061570a565b613e4b5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610962565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ec191906153f7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f613c9e8284615b5c565b5f6001600160a01b038083169084161015613f235760405163117efe6d60e31b815260040160405180910390fd5b613c9e8284615b7b565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401613c5f565b6101a16143d1565b5f80516020615d3f8339815191528054600160401b810460ff1615906001600160401b03165f81158015613fb05750825b90505f826001600160401b03166001148015613fcb5750303b155b905081158015613fd9575080155b15613ff75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561402157845460ff60401b1916600160401b1785555b5f80878060200190518101906140379190615b9a565b9150915061404682828b614409565b61405060286144ab565b600280546001600160a01b0319166001600160a01b039290921691909117905561407a600b6144ab565b600380546001600160a01b0319166001600160a01b03929092169190911790556140a4600a6144ab565b600480546001600160a01b0319166001600160a01b03929092169190911790556140ce60026144ab565b600580546001600160a01b0319166001600160a01b03929092169190911790556140fe63c7f9373d60e01b61453c565b50508315611d3c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611d33565b6040516368322c6360e11b81525f906001600160a01b0385169063d06458c690614170908690600401614ce3565b5f60405180830381865afa15801561418a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b191908101906158f7565b6020015190506141c18183613f2d565b1561072f578281836040516313bf6c4560e21b815260040161096293929190615725565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401602060405180830381865af4158015614245573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c9e91906153f7565b5f80516020615d1f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516143379190615bb6565b5f60405180830381855afa9150503d805f811461436f576040519150601f19603f3d011682016040523d82523d5f602084013e614374565b606091505b509150915081156143c65760408151106143a6578080602001905181019061439c9190615bcc565b90945092506143c6565b60208151106143c657808060200190518101906143c3919061570a565b93505b505094509492505050565b5f80516020615d3f83398151915254600160401b900460ff1661440757604051631afcd79f60e31b815260040160405180910390fd5b565b6144116143d1565b61441961456f565b6144968383846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561445a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061447e91906153f7565b60085f8660405180602001604052805f81525061457f565b6144a663daf9067160e01b61453c565b505050565b5f6144be6001546001600160a01b031690565b6001600160a01b031663d39e6043836144d561210e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614518573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca1919061508e565b6145446143d1565b61456c816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b6145776143d1565b6144076146c6565b6145876143d1565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af41580156145dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614601919061570a565b6146295760405163cf6935e560e01b81526001600160a01b0388166004820152602401610962565b614632876146f4565b61463c8683614705565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016146ab8382615c44565b506146bc634a531f3360e01b61453c565b5050505050505050565b6146ce6143d1565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6146fc6143d1565b61456c8161477b565b61470d6143d1565b61471561478c565b61471e826147d4565b6001600160a01b0381166147455760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615cff83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6147836143d1565b61456c81614269565b6147946143d1565b6144076301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6147dc6143d1565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614832573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614856919061570a565b61487e5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610962565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f602082840312156148b0575f80fd5b81356001600160e01b0319811681146148c7575f80fd5b9392505050565b6001600160601b038116811461456c575f80fd5b80356148ed816148ce565b919050565b6001600160c01b03198116811461456c575f80fd5b5f8060408385031215614918575f80fd5b8235614923816148ce565b91506020830135614933816148f2565b809150509250929050565b5f806040838503121561494f575f80fd5b823561495a816148ce565b91506020830135614933816148ce565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f60608301516149e0608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614a2461010084018261496a565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b60405161024081016001600160401b0381118282101715614a6357614a63614a2c565b60405290565b60405161010081016001600160401b0381118282101715614a6357614a63614a2c565b604051606081016001600160401b0381118282101715614a6357614a63614a2c565b604051608081016001600160401b0381118282101715614a6357614a63614a2c565b60405161014081016001600160401b0381118282101715614a6357614a63614a2c565b604051601f8201601f191681016001600160401b0381118282101715614b1b57614b1b614a2c565b604052919050565b5f6001600160401b03821115614b3b57614b3b614a2c565b50601f01601f191660200190565b5f82601f830112614b58575f80fd5b8135602083015f614b70614b6b84614b23565b614af3565b9050828152858383011115614b83575f80fd5b828260208301375f92810160200192909252509392505050565b6001600160a01b038116811461456c575f80fd5b80356148ed81614b9d565b63ffffffff8116811461456c575f80fd5b80356148ed81614bbc565b64ffffffffff8116811461456c575f80fd5b80356148ed81614bd8565b801515811461456c575f80fd5b80356148ed81614bf5565b5f805f805f805f805f6101208a8c031215614c26575f80fd5b89356001600160401b03811115614c3b575f80fd5b614c478c828d01614b49565b99505060208a0135614c5881614b9d565b9750614c6660408b01614bb1565b9650614c7460608b01614bb1565b9550614c8260808b01614bcd565b9450614c9060a08b01614bea565b9350614c9e60c08b01614c02565b9250614cac60e08b01614c02565b91506101008a01356001600160401b03811115614cc7575f80fd5b614cd38c828d01614b49565b9150509295985092959850929598565b6001600160c01b031991909116815260200190565b5f60208284031215614d08575f80fd5b81356001600160401b03811115614d1d575f80fd5b614a2484828501614b49565b5f8060408385031215614d3a575f80fd5b8235614d4581614b9d565b915060208301356001600160401b03811115614d5f575f80fd5b614d6b85828601614b49565b9150509250929050565b5f805f60608486031215614d87575f80fd5b8335614d9281614b9d565b92506020840135614da2816148f2565b915060408401356001600160401b03811115614dbc575f80fd5b614dc886828701614b49565b9150509250925092565b5f805f838503610280811215614de6575f80fd5b8435614df1816148ce565b93506020850135614e01816148f2565b9250610240603f1982011215614e15575f80fd5b50614e1e614a40565b614e2a604086016148e2565b8152614e38606086016148e2565b6020820152614e49608086016148e2565b6040820152614e5a60a086016148e2565b6060820152614e6b60c086016148e2565b6080820152614e7c60e086016148e2565b60a0820152614e8e61010086016148e2565b60c0820152614ea061012086016148e2565b60e0820152614eb261014086016148e2565b610100820152614ec561016086016148e2565b610120820152614ed861018086016148e2565b610140820152614eeb6101a086016148e2565b610160820152614efe6101c086016148e2565b610180820152614f116101e086016148e2565b6101a0820152614f2461020086016148e2565b6101c0820152614f3761022086016148e2565b6101e0820152614f4a61024086016148e2565b610200820152614f5d61026086016148e2565b610220820152809150509250925092565b5f60208284031215614f7e575f80fd5b81356148c781614b9d565b5f805f805f8060c08789031215614f9e575f80fd5b8635614fa9816148ce565b955060208701356001600160401b03811115614fc3575f80fd5b614fcf89828a01614b49565b9550506040870135614fe081614b9d565b93506060870135614ff081614bbc565b9250608087013561500081614bd8565b915060a08701356001600160401b0381111561501a575f80fd5b61502689828a01614b49565b9150509295509295509295565b5f805f60608486031215615045575f80fd5b8335614d92816148ce565b5f8060408385031215615061575f80fd5b823561492381614b9d565b6001600160a01b039290921682526001600160601b0316602082015260400190565b5f6020828403121561509e575f80fd5b81516148c781614b9d565b80516148ed816148ce565b80516148ed81614bbc565b80516148ed81614b9d565b80516148ed81614bd8565b5f82601f8301126150e4575f80fd5b8151602083015f6150f7614b6b84614b23565b905082815285838301111561510a575f80fd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215615134575f80fd5b81516001600160401b03811115615149575f80fd5b8201610100818503121561515b575f80fd5b615163614a69565b61516c826150a9565b815261517a602083016150a9565b602082015261518b604083016150b4565b604082015261519c606083016150b4565b60608201526151ad608083016150bf565b60808201526151be60a083016150ca565b60a082015260c08201516001600160401b038111156151db575f80fd5b6151e7868285016150d5565b60c08301525060e08201516001600160401b03811115615205575f80fd5b615211868285016150d5565b60e083015250949350505050565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8181168382160190811115613ca157613ca161521f565b6001600160601b0381511682525f602082015161527760208501826001600160601b03169052565b50604082015161528f604085018263ffffffff169052565b5060608201516152a7606085018263ffffffff169052565b5060808201516152c260808501826001600160a01b03169052565b5060a08201516152db60a085018264ffffffffff169052565b5060c082015161010060c08501526152f761010085018261496a565b905060e083015184820360e0860152615310828261496a565b95945050505050565b6001600160401b0360c01b84168152606060208201525f61533d606083018561524f565b905060ff83166040830152949350505050565b5f60208284031215615360575f80fd5b81516001600160401b03811115615375575f80fd5b820160608185031215615386575f80fd5b61538e614a8c565b81516001600160401b038111156153a3575f80fd5b6153af868285016150d5565b82525060208201516153c081614b9d565b602082015260408201516001600160401b038111156153dd575f80fd5b6153e9868285016150d5565b604083015250949350505050565b5f60208284031215615407575f80fd5b81516148c7816148ce565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f60208284031215615454575f80fd5b815162ffffff811681146148c7575f80fd5b600181811c9082168061547a57607f821691505b60208210810361549857634e487b7160e01b5f52602260045260245ffd5b50919050565b5f604082840312156154ae575f80fd5b604080519081016001600160401b03811182821017156154d0576154d0614a2c565b806040525080915082516154e381614b9d565b815260208301516154f3816148ce565b6020919091015292915050565b5f6101c0828403128015615512575f80fd5b5060405160e081016001600160401b038111828210171561553557615535614a2c565b604052615542848461549e565b8152615551846040850161549e565b6020820152615563846080850161549e565b60408201526155758460c0850161549e565b606082015261558884610100850161549e565b608082015261559b84610140850161549e565b60a08201526155ae84610180850161549e565b60c08201529392505050565b5f602082840312156155ca575f80fd5b5051919050565b6001600160601b0383168152604060208201525f614a24604083018461496a565b5f60208284031215615602575f80fd5b81516148c7816148f2565b6001600160c01b03198316815260406020820181905282516001600160a01b0316908201525f602083015161564d60608401826001600160601b03169052565b5060408301516001600160a01b038116608084015250606083015163ffffffff811660a084015250608083015164ffffffffff811660c08401525060a083015180151560e08401525060c08301518015156101008401525060e08301516001600160a01b03811661012084015250610100830151610140808401526156d661018084018261496a565b9050610120840151603f19848303016101608501526156f5828261496a565b9695505050505050565b80516148ed81614bf5565b5f6020828403121561571a575f80fd5b81516148c781614bf5565b6001600160c01b03199390931683526001600160601b03918216602084015216604082015260600190565b5f60208284031215615760575f80fd5b81516148c781614bd8565b6001600160401b038116811461456c575f80fd5b5f6020828403121561578f575f80fd5b81516148c78161576b565b6001600160401b0360c01b815116825260208101511515602083015263ffffffff60408201511660408301525f606082015160806060850152614a24608085018261496a565b6001600160601b0383168152604060208201525f614a24604083018461579a565b5f60208284031215615811575f80fd5b815160ff811681146148c7575f80fd5b5f60208284031215615831575f80fd5b81516001600160401b03811115615846575f80fd5b820160808185031215615857575f80fd5b61585f614aae565b815161586a816148f2565b8152602082015161587a81614bf5565b6020820152604082015161588d81614bbc565b604082015260608201516001600160401b038111156158aa575f80fd5b6158b6868285016150d5565b606083015250949350505050565b6001600160601b0384168152606060208201525f61533d606083018561579a565b602081525f613c9e602083018461496a565b5f60208284031215615907575f80fd5b81516001600160401b0381111561591c575f80fd5b8201610140818503121561592e575f80fd5b615936614ad0565b61593f826150bf565b815261594d602083016150a9565b602082015261595e604083016150bf565b604082015261596f606083016150b4565b6060820152615980608083016150ca565b608082015261599160a083016156ff565b60a08201526159a260c083016156ff565b60c08201526159b360e083016150bf565b60e08201526101008201516001600160401b038111156159d1575f80fd5b6159dd868285016150d5565b610100830152506101208201516001600160401b038111156159fd575f80fd5b615a09868285016150d5565b61012083015250949350505050565b81810381811115613ca157613ca161521f565b6001600160401b0360c01b83168152604060208201525f614a24604083018461524f565b6001600160601b03851681526001600160601b03841660208201526001600160401b0360c01b83166040820152608060608201525f6156f5608083018461496a565b5f8085851115615a9f575f80fd5b83861115615aab575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615ae9576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615b40575f80fd5b8251615b4b816148ce565b602084015190925061493381614b9d565b6001600160a01b038181168382160190811115613ca157613ca161521f565b6001600160a01b038281168282160390811115613ca157613ca161521f565b5f8060408385031215615bab575f80fd5b8251615b4b81614b9d565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615bdd575f80fd5b8251615be881614bf5565b602084015190925061493381614bbc565b601f8211156144a657805f5260205f20601f840160051c81016020851015615c1e5750805b601f840160051c820191505b81811015615c3d575f8155600101615c2a565b5050505050565b81516001600160401b03811115615c5d57615c5d614a2c565b615c7181615c6b8454615466565b84615bf9565b6020601f821160018114615ca3575f8315615c8c5750848201515b5f19600385901b1c1916600184901b178455615c3d565b5f84815260208120601f198516915b82811015615cd25787850151825560209485019460019092019101615cb2565b5084821015615cef57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e7d4ecf9f72cb180bf02ffa27c0f22561451931677e188d9087d49347fbf64da64736f6c634300081a0033",
1128
1313
  "linkReferences": {
1129
- "contracts/type/Amount.sol": {
1130
- "AmountLib": [
1314
+ "contracts/pool/PoolLib.sol": {
1315
+ "PoolLib": [
1316
+ {
1317
+ "length": 20,
1318
+ "start": 15431
1319
+ }
1320
+ ]
1321
+ },
1322
+ "contracts/shared/ContractLib.sol": {
1323
+ "ContractLib": [
1324
+ {
1325
+ "length": 20,
1326
+ "start": 1361
1327
+ },
1328
+ {
1329
+ "length": 20,
1330
+ "start": 6146
1331
+ },
1332
+ {
1333
+ "length": 20,
1334
+ "start": 8805
1335
+ },
1131
1336
  {
1132
1337
  "length": 20,
1133
- "start": 2210
1338
+ "start": 18043
1134
1339
  },
1135
1340
  {
1136
1341
  "length": 20,
1137
- "start": 2238
1342
+ "start": 18640
1343
+ }
1344
+ ]
1345
+ },
1346
+ "contracts/type/Amount.sol": {
1347
+ "AmountLib": [
1348
+ {
1349
+ "length": 20,
1350
+ "start": 2438
1138
1351
  },
1139
1352
  {
1140
1353
  "length": 20,
1141
- "start": 2503
1354
+ "start": 2764
1142
1355
  },
1143
1356
  {
1144
1357
  "length": 20,
1145
- "start": 2788
1358
+ "start": 2984
1146
1359
  },
1147
1360
  {
1148
1361
  "length": 20,
1149
- "start": 3008
1362
+ "start": 9439
1150
1363
  },
1151
1364
  {
1152
1365
  "length": 20,
1153
- "start": 11745
1366
+ "start": 9917
1154
1367
  },
1155
1368
  {
1156
1369
  "length": 20,
1157
- "start": 11924
1370
+ "start": 15639
1158
1371
  },
1159
1372
  {
1160
1373
  "length": 20,
1161
- "start": 12284
1374
+ "start": 15781
1162
1375
  },
1163
1376
  {
1164
1377
  "length": 20,
1165
- "start": 12756
1378
+ "start": 17123
1166
1379
  }
1167
1380
  ]
1168
1381
  },
@@ -1170,7 +1383,7 @@
1170
1383
  "DistributorTypeLib": [
1171
1384
  {
1172
1385
  "length": 20,
1173
- "start": 6429
1386
+ "start": 5236
1174
1387
  }
1175
1388
  ]
1176
1389
  },
@@ -1178,27 +1391,39 @@
1178
1391
  "NftIdLib": [
1179
1392
  {
1180
1393
  "length": 20,
1181
- "start": 3743
1394
+ "start": 3843
1395
+ },
1396
+ {
1397
+ "length": 20,
1398
+ "start": 5904
1182
1399
  },
1183
1400
  {
1184
1401
  "length": 20,
1185
- "start": 4168
1402
+ "start": 6527
1186
1403
  },
1187
1404
  {
1188
1405
  "length": 20,
1189
- "start": 4659
1406
+ "start": 7885
1190
1407
  },
1191
1408
  {
1192
1409
  "length": 20,
1193
- "start": 7552
1410
+ "start": 10372
1194
1411
  },
1195
1412
  {
1196
1413
  "length": 20,
1197
- "start": 8788
1414
+ "start": 15867
1198
1415
  },
1199
1416
  {
1200
1417
  "length": 20,
1201
- "start": 13841
1418
+ "start": 16427
1419
+ }
1420
+ ]
1421
+ },
1422
+ "contracts/type/ObjectType.sol": {
1423
+ "ObjectTypeLib": [
1424
+ {
1425
+ "length": 20,
1426
+ "start": 15143
1202
1427
  }
1203
1428
  ]
1204
1429
  },
@@ -1206,11 +1431,11 @@
1206
1431
  "ReferralLib": [
1207
1432
  {
1208
1433
  "length": 20,
1209
- "start": 4281
1434
+ "start": 6017
1210
1435
  },
1211
1436
  {
1212
1437
  "length": 20,
1213
- "start": 10762
1438
+ "start": 12926
1214
1439
  }
1215
1440
  ]
1216
1441
  },
@@ -1218,7 +1443,15 @@
1218
1443
  "RoleIdLib": [
1219
1444
  {
1220
1445
  "length": 20,
1221
- "start": 8363
1446
+ "start": 8539
1447
+ }
1448
+ ]
1449
+ },
1450
+ "contracts/type/Seconds.sol": {
1451
+ "SecondsLib": [
1452
+ {
1453
+ "length": 20,
1454
+ "start": 12405
1222
1455
  }
1223
1456
  ]
1224
1457
  },
@@ -1226,35 +1459,47 @@
1226
1459
  "TimestampLib": [
1227
1460
  {
1228
1461
  "length": 20,
1229
- "start": 4800
1462
+ "start": 6716
1463
+ },
1464
+ {
1465
+ "length": 20,
1466
+ "start": 6848
1467
+ },
1468
+ {
1469
+ "length": 20,
1470
+ "start": 6952
1230
1471
  },
1231
1472
  {
1232
1473
  "length": 20,
1233
- "start": 4932
1474
+ "start": 10778
1234
1475
  },
1235
1476
  {
1236
1477
  "length": 20,
1237
- "start": 5036
1478
+ "start": 10886
1238
1479
  },
1239
1480
  {
1240
1481
  "length": 20,
1241
- "start": 9122
1482
+ "start": 10914
1242
1483
  },
1243
1484
  {
1244
1485
  "length": 20,
1245
- "start": 10221
1486
+ "start": 12499
1246
1487
  },
1247
1488
  {
1248
1489
  "length": 20,
1249
- "start": 10355
1490
+ "start": 12633
1250
1491
  },
1251
1492
  {
1252
1493
  "length": 20,
1253
- "start": 10475
1494
+ "start": 12753
1254
1495
  },
1255
1496
  {
1256
1497
  "length": 20,
1257
- "start": 10616
1498
+ "start": 14240
1499
+ },
1500
+ {
1501
+ "length": 20,
1502
+ "start": 14467
1258
1503
  }
1259
1504
  ]
1260
1505
  },
@@ -1262,39 +1507,47 @@
1262
1507
  "UFixedLib": [
1263
1508
  {
1264
1509
  "length": 20,
1265
- "start": 5763
1510
+ "start": 4641
1511
+ },
1512
+ {
1513
+ "length": 20,
1514
+ "start": 4763
1515
+ },
1516
+ {
1517
+ "length": 20,
1518
+ "start": 4941
1266
1519
  },
1267
1520
  {
1268
1521
  "length": 20,
1269
- "start": 5877
1522
+ "start": 5103
1270
1523
  },
1271
1524
  {
1272
1525
  "length": 20,
1273
- "start": 6019
1526
+ "start": 11815
1274
1527
  },
1275
1528
  {
1276
1529
  "length": 20,
1277
- "start": 6155
1530
+ "start": 11937
1278
1531
  },
1279
1532
  {
1280
1533
  "length": 20,
1281
- "start": 6296
1534
+ "start": 12123
1282
1535
  },
1283
1536
  {
1284
1537
  "length": 20,
1285
- "start": 9688
1538
+ "start": 12245
1286
1539
  },
1287
1540
  {
1288
1541
  "length": 20,
1289
- "start": 9802
1542
+ "start": 14339
1290
1543
  },
1291
1544
  {
1292
1545
  "length": 20,
1293
- "start": 9968
1546
+ "start": 14594
1294
1547
  },
1295
1548
  {
1296
1549
  "length": 20,
1297
- "start": 10082
1550
+ "start": 14735
1298
1551
  }
1299
1552
  ]
1300
1553
  },
@@ -1302,63 +1555,81 @@
1302
1555
  "VersionLib": [
1303
1556
  {
1304
1557
  "length": 20,
1305
- "start": 3589
1558
+ "start": 3643
1306
1559
  },
1307
1560
  {
1308
1561
  "length": 20,
1309
- "start": 6837
1562
+ "start": 7127
1310
1563
  }
1311
- ],
1312
- "VersionPartLib": [
1564
+ ]
1565
+ }
1566
+ },
1567
+ "deployedLinkReferences": {
1568
+ "contracts/pool/PoolLib.sol": {
1569
+ "PoolLib": [
1570
+ {
1571
+ "length": 20,
1572
+ "start": 15217
1573
+ }
1574
+ ]
1575
+ },
1576
+ "contracts/shared/ContractLib.sol": {
1577
+ "ContractLib": [
1578
+ {
1579
+ "length": 20,
1580
+ "start": 1147
1581
+ },
1582
+ {
1583
+ "length": 20,
1584
+ "start": 5932
1585
+ },
1586
+ {
1587
+ "length": 20,
1588
+ "start": 8591
1589
+ },
1313
1590
  {
1314
1591
  "length": 20,
1315
- "start": 8411
1592
+ "start": 17829
1316
1593
  },
1317
1594
  {
1318
1595
  "length": 20,
1319
- "start": 15130
1596
+ "start": 18426
1320
1597
  }
1321
1598
  ]
1322
- }
1323
- },
1324
- "deployedLinkReferences": {
1599
+ },
1325
1600
  "contracts/type/Amount.sol": {
1326
1601
  "AmountLib": [
1327
1602
  {
1328
1603
  "length": 20,
1329
- "start": 1996
1604
+ "start": 2224
1330
1605
  },
1331
1606
  {
1332
1607
  "length": 20,
1333
- "start": 2024
1608
+ "start": 2550
1334
1609
  },
1335
1610
  {
1336
1611
  "length": 20,
1337
- "start": 2289
1612
+ "start": 2770
1338
1613
  },
1339
1614
  {
1340
1615
  "length": 20,
1341
- "start": 2574
1616
+ "start": 9225
1342
1617
  },
1343
1618
  {
1344
1619
  "length": 20,
1345
- "start": 2794
1620
+ "start": 9703
1346
1621
  },
1347
1622
  {
1348
1623
  "length": 20,
1349
- "start": 11531
1624
+ "start": 15425
1350
1625
  },
1351
1626
  {
1352
1627
  "length": 20,
1353
- "start": 11710
1628
+ "start": 15567
1354
1629
  },
1355
1630
  {
1356
1631
  "length": 20,
1357
- "start": 12070
1358
- },
1359
- {
1360
- "length": 20,
1361
- "start": 12542
1632
+ "start": 16909
1362
1633
  }
1363
1634
  ]
1364
1635
  },
@@ -1366,7 +1637,7 @@
1366
1637
  "DistributorTypeLib": [
1367
1638
  {
1368
1639
  "length": 20,
1369
- "start": 6215
1640
+ "start": 5022
1370
1641
  }
1371
1642
  ]
1372
1643
  },
@@ -1374,27 +1645,39 @@
1374
1645
  "NftIdLib": [
1375
1646
  {
1376
1647
  "length": 20,
1377
- "start": 3529
1648
+ "start": 3629
1649
+ },
1650
+ {
1651
+ "length": 20,
1652
+ "start": 5690
1378
1653
  },
1379
1654
  {
1380
1655
  "length": 20,
1381
- "start": 3954
1656
+ "start": 6313
1382
1657
  },
1383
1658
  {
1384
1659
  "length": 20,
1385
- "start": 4445
1660
+ "start": 7671
1386
1661
  },
1387
1662
  {
1388
1663
  "length": 20,
1389
- "start": 7338
1664
+ "start": 10158
1390
1665
  },
1391
1666
  {
1392
1667
  "length": 20,
1393
- "start": 8574
1668
+ "start": 15653
1394
1669
  },
1395
1670
  {
1396
1671
  "length": 20,
1397
- "start": 13627
1672
+ "start": 16213
1673
+ }
1674
+ ]
1675
+ },
1676
+ "contracts/type/ObjectType.sol": {
1677
+ "ObjectTypeLib": [
1678
+ {
1679
+ "length": 20,
1680
+ "start": 14929
1398
1681
  }
1399
1682
  ]
1400
1683
  },
@@ -1402,11 +1685,11 @@
1402
1685
  "ReferralLib": [
1403
1686
  {
1404
1687
  "length": 20,
1405
- "start": 4067
1688
+ "start": 5803
1406
1689
  },
1407
1690
  {
1408
1691
  "length": 20,
1409
- "start": 10548
1692
+ "start": 12712
1410
1693
  }
1411
1694
  ]
1412
1695
  },
@@ -1414,7 +1697,15 @@
1414
1697
  "RoleIdLib": [
1415
1698
  {
1416
1699
  "length": 20,
1417
- "start": 8149
1700
+ "start": 8325
1701
+ }
1702
+ ]
1703
+ },
1704
+ "contracts/type/Seconds.sol": {
1705
+ "SecondsLib": [
1706
+ {
1707
+ "length": 20,
1708
+ "start": 12191
1418
1709
  }
1419
1710
  ]
1420
1711
  },
@@ -1422,35 +1713,47 @@
1422
1713
  "TimestampLib": [
1423
1714
  {
1424
1715
  "length": 20,
1425
- "start": 4586
1716
+ "start": 6502
1717
+ },
1718
+ {
1719
+ "length": 20,
1720
+ "start": 6634
1721
+ },
1722
+ {
1723
+ "length": 20,
1724
+ "start": 6738
1725
+ },
1726
+ {
1727
+ "length": 20,
1728
+ "start": 10564
1426
1729
  },
1427
1730
  {
1428
1731
  "length": 20,
1429
- "start": 4718
1732
+ "start": 10672
1430
1733
  },
1431
1734
  {
1432
1735
  "length": 20,
1433
- "start": 4822
1736
+ "start": 10700
1434
1737
  },
1435
1738
  {
1436
1739
  "length": 20,
1437
- "start": 8908
1740
+ "start": 12285
1438
1741
  },
1439
1742
  {
1440
1743
  "length": 20,
1441
- "start": 10007
1744
+ "start": 12419
1442
1745
  },
1443
1746
  {
1444
1747
  "length": 20,
1445
- "start": 10141
1748
+ "start": 12539
1446
1749
  },
1447
1750
  {
1448
1751
  "length": 20,
1449
- "start": 10261
1752
+ "start": 14026
1450
1753
  },
1451
1754
  {
1452
1755
  "length": 20,
1453
- "start": 10402
1756
+ "start": 14253
1454
1757
  }
1455
1758
  ]
1456
1759
  },
@@ -1458,61 +1761,59 @@
1458
1761
  "UFixedLib": [
1459
1762
  {
1460
1763
  "length": 20,
1461
- "start": 5549
1764
+ "start": 4427
1462
1765
  },
1463
1766
  {
1464
1767
  "length": 20,
1465
- "start": 5663
1768
+ "start": 4549
1466
1769
  },
1467
1770
  {
1468
1771
  "length": 20,
1469
- "start": 5805
1772
+ "start": 4727
1470
1773
  },
1471
1774
  {
1472
1775
  "length": 20,
1473
- "start": 5941
1776
+ "start": 4889
1474
1777
  },
1475
1778
  {
1476
1779
  "length": 20,
1477
- "start": 6082
1780
+ "start": 11601
1478
1781
  },
1479
1782
  {
1480
1783
  "length": 20,
1481
- "start": 9474
1784
+ "start": 11723
1482
1785
  },
1483
1786
  {
1484
1787
  "length": 20,
1485
- "start": 9588
1788
+ "start": 11909
1486
1789
  },
1487
1790
  {
1488
1791
  "length": 20,
1489
- "start": 9754
1792
+ "start": 12031
1490
1793
  },
1491
1794
  {
1492
1795
  "length": 20,
1493
- "start": 9868
1494
- }
1495
- ]
1496
- },
1497
- "contracts/type/Version.sol": {
1498
- "VersionLib": [
1796
+ "start": 14125
1797
+ },
1499
1798
  {
1500
1799
  "length": 20,
1501
- "start": 3375
1800
+ "start": 14380
1502
1801
  },
1503
1802
  {
1504
1803
  "length": 20,
1505
- "start": 6623
1804
+ "start": 14521
1506
1805
  }
1507
- ],
1508
- "VersionPartLib": [
1806
+ ]
1807
+ },
1808
+ "contracts/type/Version.sol": {
1809
+ "VersionLib": [
1509
1810
  {
1510
1811
  "length": 20,
1511
- "start": 8197
1812
+ "start": 3429
1512
1813
  },
1513
1814
  {
1514
1815
  "length": 20,
1515
- "start": 14916
1816
+ "start": 6913
1516
1817
  }
1517
1818
  ]
1518
1819
  }