@etherisc/gif-next 0.0.2-d87995e-298 → 0.0.2-d8ddca8-422

Sign up to get free protection for your applications and to get access to all the features.
Files changed (551) hide show
  1. package/README.md +92 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  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 +183 -487
  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 +102 -387
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +209 -133
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
  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 +1484 -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 +2053 -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 +1439 -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 +1171 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -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 +2585 -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 +567 -67
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +385 -60
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +573 -165
  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 +1689 -773
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -231
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +976 -765
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  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/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -355
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +103 -133
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -323
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -438
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +502 -364
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -114
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -236
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -416
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +272 -431
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +405 -102
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  165. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +511 -303
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +264 -423
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +791 -377
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +183 -133
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -133
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +42 -6
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -322
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +48 -7
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1510 -191
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  275. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  276. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  277. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/Staking.sol/Staking.json +1651 -455
  279. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +199 -105
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1588 -765
  291. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  292. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +180 -77
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  298. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  300. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  336. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  342. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  346. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  347. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +118 -79
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  352. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  353. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  354. package/contracts/accounting/AccountingService.sol +274 -0
  355. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  356. package/contracts/accounting/IAccountingService.sol +47 -0
  357. package/contracts/authorization/AccessAdmin.sol +458 -269
  358. package/contracts/authorization/AccessAdminLib.sol +396 -0
  359. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  360. package/contracts/authorization/Authorization.sol +159 -208
  361. package/contracts/authorization/IAccess.sol +25 -6
  362. package/contracts/authorization/IAccessAdmin.sol +87 -79
  363. package/contracts/authorization/IAuthorization.sol +9 -37
  364. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  365. package/contracts/authorization/ServiceAuthorization.sol +255 -25
  366. package/contracts/distribution/BasicDistribution.sol +20 -17
  367. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  368. package/contracts/distribution/Distribution.sol +44 -92
  369. package/contracts/distribution/DistributionService.sol +243 -132
  370. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  371. package/contracts/distribution/IDistributionComponent.sol +4 -11
  372. package/contracts/distribution/IDistributionService.sol +47 -29
  373. package/contracts/examples/fire/DamageLevel.sol +59 -0
  374. package/contracts/examples/fire/FirePool.sol +86 -0
  375. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  376. package/contracts/examples/fire/FireProduct.sol +433 -0
  377. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  378. package/contracts/examples/fire/FireUSD.sol +26 -0
  379. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  380. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  381. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  382. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  383. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  384. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  385. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  386. package/contracts/instance/BundleSet.sol +42 -38
  387. package/contracts/instance/IInstance.sol +102 -43
  388. package/contracts/instance/IInstanceService.sol +59 -34
  389. package/contracts/instance/Instance.sol +193 -100
  390. package/contracts/instance/InstanceAdmin.sol +275 -158
  391. package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
  392. package/contracts/instance/InstanceReader.sol +478 -251
  393. package/contracts/instance/InstanceService.sol +293 -236
  394. package/contracts/instance/InstanceServiceManager.sol +6 -7
  395. package/contracts/instance/InstanceStore.sol +23 -2
  396. package/contracts/instance/RiskSet.sol +126 -0
  397. package/contracts/instance/base/BalanceStore.sol +4 -6
  398. package/contracts/instance/base/ObjectCounter.sol +1 -2
  399. package/contracts/instance/base/ObjectLifecycle.sol +13 -10
  400. package/contracts/instance/base/ObjectSet.sol +31 -33
  401. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  402. package/contracts/instance/module/IBundle.sol +6 -5
  403. package/contracts/instance/module/IComponents.sol +30 -19
  404. package/contracts/instance/module/IDistribution.sol +21 -8
  405. package/contracts/instance/module/IPolicy.sol +50 -29
  406. package/contracts/instance/module/IRisk.sol +5 -0
  407. package/contracts/mock/Dip.sol +1 -1
  408. package/contracts/oracle/BasicOracle.sol +2 -5
  409. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  410. package/contracts/oracle/IOracle.sol +9 -4
  411. package/contracts/oracle/IOracleService.sol +2 -1
  412. package/contracts/oracle/Oracle.sol +9 -21
  413. package/contracts/oracle/OracleService.sol +119 -87
  414. package/contracts/oracle/OracleServiceManager.sol +6 -6
  415. package/contracts/pool/BasicPool.sol +39 -41
  416. package/contracts/pool/BasicPoolAuthorization.sol +39 -13
  417. package/contracts/pool/BundleService.sol +200 -155
  418. package/contracts/pool/BundleServiceManager.sol +6 -6
  419. package/contracts/pool/IBundleService.sol +42 -46
  420. package/contracts/pool/IPoolComponent.sol +19 -15
  421. package/contracts/pool/IPoolService.sol +97 -77
  422. package/contracts/pool/Pool.sol +143 -138
  423. package/contracts/pool/PoolLib.sol +341 -0
  424. package/contracts/pool/PoolService.sol +413 -233
  425. package/contracts/pool/PoolServiceManager.sol +4 -4
  426. package/contracts/product/ApplicationService.sol +143 -46
  427. package/contracts/product/ApplicationServiceManager.sol +4 -4
  428. package/contracts/product/BasicProduct.sol +11 -14
  429. package/contracts/product/BasicProductAuthorization.sol +32 -12
  430. package/contracts/product/ClaimService.sol +385 -172
  431. package/contracts/product/ClaimServiceManager.sol +4 -4
  432. package/contracts/product/IApplicationService.sol +29 -3
  433. package/contracts/product/IClaimService.sol +48 -11
  434. package/contracts/product/IPolicyService.sol +61 -39
  435. package/contracts/product/IPricingService.sol +11 -10
  436. package/contracts/product/IProductComponent.sol +27 -5
  437. package/contracts/product/IRiskService.sol +48 -0
  438. package/contracts/product/PolicyService.sol +431 -285
  439. package/contracts/product/PolicyServiceLib.sol +139 -0
  440. package/contracts/product/PolicyServiceManager.sol +4 -4
  441. package/contracts/product/PricingService.sol +90 -84
  442. package/contracts/product/PricingServiceManager.sol +4 -4
  443. package/contracts/product/Product.sol +196 -104
  444. package/contracts/product/RiskService.sol +190 -0
  445. package/contracts/product/RiskServiceManager.sol +39 -0
  446. package/contracts/registry/ChainNft.sol +72 -40
  447. package/contracts/registry/IRegistry.sol +70 -32
  448. package/contracts/registry/IRegistryService.sol +5 -12
  449. package/contracts/registry/IRelease.sol +29 -0
  450. package/contracts/registry/ITransferInterceptor.sol +1 -2
  451. package/contracts/registry/Registry.sol +367 -207
  452. package/contracts/registry/RegistryAdmin.sol +114 -288
  453. package/contracts/registry/RegistryAuthorization.sol +336 -0
  454. package/contracts/registry/RegistryService.sol +38 -49
  455. package/contracts/registry/RegistryServiceManager.sol +3 -3
  456. package/contracts/registry/ReleaseAdmin.sol +195 -0
  457. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  458. package/contracts/registry/ReleaseRegistry.sol +279 -239
  459. package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
  460. package/contracts/registry/TokenRegistry.sol +61 -59
  461. package/contracts/shared/Component.sol +70 -136
  462. package/contracts/shared/ComponentService.sol +423 -387
  463. package/contracts/shared/ComponentServiceManager.sol +8 -5
  464. package/contracts/shared/ContractLib.sol +312 -0
  465. package/contracts/shared/IComponent.sol +6 -18
  466. package/contracts/shared/IComponentService.sol +43 -40
  467. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  468. package/contracts/shared/IKeyValueStore.sol +1 -1
  469. package/contracts/shared/ILifecycle.sol +3 -1
  470. package/contracts/shared/INftOwnable.sol +4 -0
  471. package/contracts/shared/IPolicyHolder.sol +12 -22
  472. package/contracts/shared/IRegisterable.sol +22 -1
  473. package/contracts/shared/IService.sol +3 -5
  474. package/contracts/shared/InitializableERC165.sol +10 -2
  475. package/contracts/shared/InstanceLinkedComponent.sol +73 -51
  476. package/contracts/shared/KeyValueStore.sol +4 -4
  477. package/contracts/shared/Lifecycle.sol +15 -4
  478. package/contracts/shared/NftOwnable.sol +31 -9
  479. package/contracts/shared/PolicyHolder.sol +18 -54
  480. package/contracts/shared/Registerable.sol +52 -21
  481. package/contracts/shared/RegistryLinked.sol +9 -14
  482. package/contracts/shared/Service.sol +20 -35
  483. package/contracts/shared/TokenHandler.sol +310 -26
  484. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  485. package/contracts/staking/IStaking.sol +271 -71
  486. package/contracts/staking/IStakingService.sol +45 -78
  487. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  488. package/contracts/staking/Staking.sol +524 -243
  489. package/contracts/staking/StakingLib.sol +195 -0
  490. package/contracts/staking/StakingManager.sol +12 -9
  491. package/contracts/staking/StakingReader.sol +70 -82
  492. package/contracts/staking/StakingService.sol +62 -152
  493. package/contracts/staking/StakingServiceManager.sol +7 -5
  494. package/contracts/staking/StakingStore.sol +1089 -330
  495. package/contracts/staking/TargetHandler.sol +132 -0
  496. package/contracts/staking/TargetManagerLib.sol +73 -46
  497. package/contracts/type/Amount.sol +19 -0
  498. package/contracts/type/Blocknumber.sol +22 -16
  499. package/contracts/type/ChainId.sol +101 -0
  500. package/contracts/type/ClaimId.sol +6 -1
  501. package/contracts/type/Fee.sol +8 -8
  502. package/contracts/type/Key32.sol +2 -2
  503. package/contracts/type/Key32Set.sol +62 -0
  504. package/contracts/type/NftId.sol +7 -0
  505. package/contracts/type/ObjectType.sol +73 -37
  506. package/contracts/type/PayoutId.sol +10 -10
  507. package/contracts/type/RiskId.sol +38 -6
  508. package/contracts/type/RoleId.sol +61 -55
  509. package/contracts/type/Seconds.sol +40 -1
  510. package/contracts/type/Selector.sol +5 -0
  511. package/contracts/type/StateId.sol +15 -1
  512. package/contracts/type/String.sol +12 -0
  513. package/contracts/type/Timestamp.sol +14 -7
  514. package/contracts/type/UFixed.sol +38 -126
  515. package/contracts/type/Version.sol +54 -5
  516. package/contracts/upgradeability/IVersionable.sol +3 -0
  517. package/contracts/upgradeability/ProxyManager.sol +93 -45
  518. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  519. package/contracts/upgradeability/Versionable.sol +8 -5
  520. package/package.json +5 -4
  521. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  522. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  523. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  524. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  525. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  526. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  527. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  528. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  529. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  530. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  531. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  532. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  533. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  534. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  535. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  536. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  537. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  538. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  539. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
  540. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  541. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  542. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  543. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  544. package/contracts/instance/module/IAccess.sol +0 -46
  545. package/contracts/product/IProductService.sol +0 -33
  546. package/contracts/product/ProductService.sol +0 -99
  547. package/contracts/product/ProductServiceManager.sol +0 -39
  548. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  549. package/contracts/shared/InitializableCustom.sol +0 -177
  550. package/contracts/staking/StakeManagerLib.sol +0 -231
  551. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -60,93 +60,108 @@
60
60
  {
61
61
  "inputs": [
62
62
  {
63
- "internalType": "ObjectType",
64
- "name": "objectType",
65
- "type": "uint8"
66
- },
67
- {
68
- "internalType": "StateId",
69
- "name": "fromStateId",
70
- "type": "uint8"
63
+ "internalType": "Seconds",
64
+ "name": "minLockingPeriod",
65
+ "type": "uint40"
71
66
  },
72
67
  {
73
- "internalType": "StateId",
74
- "name": "toStateId",
75
- "type": "uint8"
68
+ "internalType": "Seconds",
69
+ "name": "maxLockingPeriod",
70
+ "type": "uint40"
76
71
  }
77
72
  ],
78
- "name": "ErrorInvalidStateTransition",
73
+ "name": "ErrorStakingLockingPeriodsInvalid",
79
74
  "type": "error"
80
75
  },
81
76
  {
82
77
  "inputs": [
83
78
  {
84
- "internalType": "Key32",
85
- "name": "key",
86
- "type": "bytes32"
79
+ "internalType": "UFixed",
80
+ "name": "minRewardRate",
81
+ "type": "uint160"
87
82
  },
88
83
  {
89
- "internalType": "ObjectType",
90
- "name": "objectType",
91
- "type": "uint8"
84
+ "internalType": "UFixed",
85
+ "name": "maxRewardRate",
86
+ "type": "uint160"
92
87
  }
93
88
  ],
94
- "name": "ErrorKeyValueStoreAlreadyCreated",
89
+ "name": "ErrorStakingRewardRatesInvalid",
95
90
  "type": "error"
96
91
  },
97
92
  {
98
93
  "inputs": [
99
94
  {
100
- "internalType": "ObjectType",
101
- "name": "objectType",
102
- "type": "uint8"
95
+ "internalType": "NftId",
96
+ "name": "stakeNftId",
97
+ "type": "uint96"
98
+ },
99
+ {
100
+ "internalType": "Timestamp",
101
+ "name": "lockedUntil",
102
+ "type": "uint40"
103
103
  }
104
104
  ],
105
- "name": "ErrorKeyValueStoreNoLifecycle",
105
+ "name": "ErrorStakingStakeLocked",
106
106
  "type": "error"
107
107
  },
108
108
  {
109
109
  "inputs": [
110
110
  {
111
- "internalType": "Key32",
112
- "name": "key",
113
- "type": "bytes32"
111
+ "internalType": "Amount",
112
+ "name": "minStakingAmount",
113
+ "type": "uint96"
114
+ },
115
+ {
116
+ "internalType": "Amount",
117
+ "name": "maxStakingAmount",
118
+ "type": "uint96"
114
119
  }
115
120
  ],
116
- "name": "ErrorKeyValueStoreNotExisting",
121
+ "name": "ErrorStakingStakingAmountsInvalid",
117
122
  "type": "error"
118
123
  },
119
124
  {
120
125
  "inputs": [
121
126
  {
122
- "internalType": "Key32",
123
- "name": "key",
124
- "type": "bytes32"
127
+ "internalType": "NftId",
128
+ "name": "targetNftId",
129
+ "type": "uint96"
125
130
  }
126
131
  ],
127
- "name": "ErrorKeyValueStoreStateZero",
132
+ "name": "ErrorStakingStoreLimitNotInitialized",
128
133
  "type": "error"
129
134
  },
130
135
  {
131
136
  "inputs": [
132
137
  {
133
- "internalType": "ObjectType",
134
- "name": "objectType",
135
- "type": "uint8"
138
+ "internalType": "NftId",
139
+ "name": "targetNftId",
140
+ "type": "uint96"
136
141
  }
137
142
  ],
138
- "name": "ErrorKeyValueStoreTypeUndefined",
143
+ "name": "ErrorStakingStoreNotTarget",
139
144
  "type": "error"
140
145
  },
141
146
  {
142
147
  "inputs": [
143
148
  {
144
- "internalType": "ObjectType",
145
- "name": "objectType",
146
- "type": "uint8"
149
+ "internalType": "NftId",
150
+ "name": "targetNftId",
151
+ "type": "uint96"
152
+ },
153
+ {
154
+ "internalType": "Amount",
155
+ "name": "reserveAmount",
156
+ "type": "uint96"
157
+ },
158
+ {
159
+ "internalType": "Amount",
160
+ "name": "claimedAmount",
161
+ "type": "uint96"
147
162
  }
148
163
  ],
149
- "name": "ErrorNoLifecycle",
164
+ "name": "ErrorStakingStoreRewardReservesInsufficient",
150
165
  "type": "error"
151
166
  },
152
167
  {
@@ -157,29 +172,29 @@
157
172
  "type": "uint96"
158
173
  }
159
174
  ],
160
- "name": "ErrorStakingStoreBalanceAlreadyInitialized",
175
+ "name": "ErrorStakingStoreStakeBalanceAlreadyInitialized",
161
176
  "type": "error"
162
177
  },
163
178
  {
164
179
  "inputs": [
165
180
  {
166
181
  "internalType": "NftId",
167
- "name": "nftId",
182
+ "name": "nftI",
168
183
  "type": "uint96"
169
184
  }
170
185
  ],
171
- "name": "ErrorStakingStoreBalanceNotInitialized",
186
+ "name": "ErrorStakingStoreStakeBalanceNotInitialized",
172
187
  "type": "error"
173
188
  },
174
189
  {
175
190
  "inputs": [
176
191
  {
177
192
  "internalType": "NftId",
178
- "name": "targetNftId",
193
+ "name": "nftId",
179
194
  "type": "uint96"
180
195
  }
181
196
  ],
182
- "name": "ErrorStakingStoreNotTarget",
197
+ "name": "ErrorStakingStoreStakeNotInitialized",
183
198
  "type": "error"
184
199
  },
185
200
  {
@@ -191,125 +206,175 @@
191
206
  },
192
207
  {
193
208
  "internalType": "Amount",
194
- "name": "dipAmount",
209
+ "name": "stakeLimitAmount",
195
210
  "type": "uint96"
196
211
  },
197
212
  {
198
213
  "internalType": "Amount",
199
- "name": "reservesBalanceAmount",
214
+ "name": "newIStaking",
200
215
  "type": "uint96"
201
216
  }
202
217
  ],
203
- "name": "ErrorStakingStoreRewardReservesInsufficient",
218
+ "name": "ErrorStakingStoreStakesExceedingTargetMaxAmount",
204
219
  "type": "error"
205
220
  },
206
221
  {
207
222
  "inputs": [
208
223
  {
209
224
  "internalType": "NftId",
210
- "name": "nftId",
225
+ "name": "targetNftId",
211
226
  "type": "uint96"
212
227
  }
213
228
  ],
214
- "name": "ErrorStakingStoreTvlBalanceNotInitialized",
229
+ "name": "ErrorStakingStoreTargetNotInitialized",
215
230
  "type": "error"
216
231
  },
217
232
  {
218
- "inputs": [],
219
- "name": "MathLigMulDivOverflow",
233
+ "inputs": [
234
+ {
235
+ "internalType": "ChainId",
236
+ "name": "chainId",
237
+ "type": "uint96"
238
+ },
239
+ {
240
+ "internalType": "address",
241
+ "name": "token",
242
+ "type": "address"
243
+ }
244
+ ],
245
+ "name": "ErrorStakingStoreTokenAlreadyAdded",
220
246
  "type": "error"
221
247
  },
222
248
  {
223
- "anonymous": false,
224
249
  "inputs": [
225
250
  {
226
- "indexed": false,
251
+ "internalType": "ChainId",
252
+ "name": "chainId",
253
+ "type": "uint96"
254
+ },
255
+ {
227
256
  "internalType": "address",
228
- "name": "authority",
257
+ "name": "token",
229
258
  "type": "address"
230
259
  }
231
260
  ],
232
- "name": "AuthorityUpdated",
233
- "type": "event"
261
+ "name": "ErrorStakingStoreTokenNotRegistered",
262
+ "type": "error"
234
263
  },
235
264
  {
236
- "anonymous": false,
237
265
  "inputs": [
238
266
  {
239
- "indexed": false,
240
- "internalType": "ObjectType",
241
- "name": "objectType",
242
- "type": "uint8"
267
+ "internalType": "ChainId",
268
+ "name": "chainId",
269
+ "type": "uint96"
243
270
  },
244
271
  {
245
- "indexed": false,
246
- "internalType": "KeyId",
247
- "name": "keyId",
248
- "type": "bytes31"
249
- },
272
+ "internalType": "address",
273
+ "name": "token",
274
+ "type": "address"
275
+ }
276
+ ],
277
+ "name": "ErrorStakingStoreTokenUnknown",
278
+ "type": "error"
279
+ },
280
+ {
281
+ "inputs": [
250
282
  {
251
- "indexed": false,
252
- "internalType": "StateId",
253
- "name": "state",
254
- "type": "uint8"
283
+ "internalType": "NftId",
284
+ "name": "nftId",
285
+ "type": "uint96"
255
286
  },
256
287
  {
257
- "indexed": false,
258
288
  "internalType": "address",
259
- "name": "createdBy",
289
+ "name": "token",
260
290
  "type": "address"
291
+ }
292
+ ],
293
+ "name": "ErrorStakingStoreTvlBalanceAlreadyInitialized",
294
+ "type": "error"
295
+ },
296
+ {
297
+ "inputs": [
298
+ {
299
+ "internalType": "NftId",
300
+ "name": "nftId",
301
+ "type": "uint96"
261
302
  },
262
303
  {
263
- "indexed": false,
264
304
  "internalType": "address",
265
- "name": "txOrigin",
305
+ "name": "token",
266
306
  "type": "address"
267
307
  }
268
308
  ],
269
- "name": "LogInfoCreated",
270
- "type": "event"
309
+ "name": "ErrorStakingStoreTvlBalanceNotInitialized",
310
+ "type": "error"
271
311
  },
272
312
  {
273
- "anonymous": false,
274
313
  "inputs": [
275
314
  {
276
- "indexed": false,
277
315
  "internalType": "ObjectType",
278
- "name": "objectType",
316
+ "name": "targetType",
279
317
  "type": "uint8"
280
- },
318
+ }
319
+ ],
320
+ "name": "ErrorStakingSupportTypeInvalid",
321
+ "type": "error"
322
+ },
323
+ {
324
+ "inputs": [
281
325
  {
282
- "indexed": false,
283
- "internalType": "KeyId",
284
- "name": "keyId",
285
- "type": "bytes31"
326
+ "internalType": "NftId",
327
+ "name": "targetNftId",
328
+ "type": "uint96"
286
329
  },
287
330
  {
288
- "indexed": false,
289
- "internalType": "StateId",
290
- "name": "state",
291
- "type": "uint8"
331
+ "internalType": "Amount",
332
+ "name": "stakeLimitAmount",
333
+ "type": "uint96"
292
334
  },
293
335
  {
294
- "indexed": false,
295
- "internalType": "address",
296
- "name": "updatedBy",
297
- "type": "address"
298
- },
336
+ "internalType": "Amount",
337
+ "name": "stakedAmount",
338
+ "type": "uint96"
339
+ }
340
+ ],
341
+ "name": "ErrorStakingTargetMaxStakedAmountExceeded",
342
+ "type": "error"
343
+ },
344
+ {
345
+ "inputs": [],
346
+ "name": "InvalidInitialization",
347
+ "type": "error"
348
+ },
349
+ {
350
+ "inputs": [],
351
+ "name": "NotInitializing",
352
+ "type": "error"
353
+ },
354
+ {
355
+ "anonymous": false,
356
+ "inputs": [
299
357
  {
300
358
  "indexed": false,
301
359
  "internalType": "address",
302
- "name": "txOrigin",
360
+ "name": "authority",
303
361
  "type": "address"
304
- },
362
+ }
363
+ ],
364
+ "name": "AuthorityUpdated",
365
+ "type": "event"
366
+ },
367
+ {
368
+ "anonymous": false,
369
+ "inputs": [
305
370
  {
306
371
  "indexed": false,
307
- "internalType": "Blocknumber",
308
- "name": "lastUpdatedIn",
309
- "type": "uint32"
372
+ "internalType": "uint64",
373
+ "name": "version",
374
+ "type": "uint64"
310
375
  }
311
376
  ],
312
- "name": "LogInfoUpdated",
377
+ "name": "Initialized",
313
378
  "type": "event"
314
379
  },
315
380
  {
@@ -324,23 +389,23 @@
324
389
  {
325
390
  "indexed": false,
326
391
  "internalType": "Amount",
327
- "name": "dipAmount",
392
+ "name": "marginAmount",
328
393
  "type": "uint96"
329
394
  },
330
395
  {
331
396
  "indexed": false,
332
397
  "internalType": "Amount",
333
- "name": "reserveBalance",
398
+ "name": "hardLimitAmount",
334
399
  "type": "uint96"
335
400
  },
336
401
  {
337
402
  "indexed": false,
338
403
  "internalType": "Blocknumber",
339
- "name": "lastUpdatedIn",
340
- "type": "uint32"
404
+ "name": "lastUpdateIn",
405
+ "type": "uint40"
341
406
  }
342
407
  ],
343
- "name": "LogStakingStoreReserveBalanceDecreased",
408
+ "name": "LogStakingLimitsSet",
344
409
  "type": "event"
345
410
  },
346
411
  {
@@ -358,6 +423,12 @@
358
423
  "name": "dipAmount",
359
424
  "type": "uint96"
360
425
  },
426
+ {
427
+ "indexed": false,
428
+ "internalType": "address",
429
+ "name": "targetOwner",
430
+ "type": "address"
431
+ },
361
432
  {
362
433
  "indexed": false,
363
434
  "internalType": "Amount",
@@ -367,11 +438,11 @@
367
438
  {
368
439
  "indexed": false,
369
440
  "internalType": "Blocknumber",
370
- "name": "lastUpdatedIn",
371
- "type": "uint32"
441
+ "name": "lastUpdateIn",
442
+ "type": "uint40"
372
443
  }
373
444
  ],
374
- "name": "LogStakingStoreReserveBalanceIncreased",
445
+ "name": "LogStakingRewardReservesRefilled",
375
446
  "type": "event"
376
447
  },
377
448
  {
@@ -380,29 +451,29 @@
380
451
  {
381
452
  "indexed": false,
382
453
  "internalType": "NftId",
383
- "name": "nftId",
454
+ "name": "targetNftId",
384
455
  "type": "uint96"
385
456
  },
386
457
  {
387
458
  "indexed": false,
388
459
  "internalType": "Amount",
389
- "name": "addedAmount",
460
+ "name": "dipAmount",
390
461
  "type": "uint96"
391
462
  },
392
463
  {
393
464
  "indexed": false,
394
465
  "internalType": "Amount",
395
- "name": "newBalance",
466
+ "name": "reserveBalance",
396
467
  "type": "uint96"
397
468
  },
398
469
  {
399
470
  "indexed": false,
400
471
  "internalType": "Blocknumber",
401
- "name": "lastUpdatedIn",
402
- "type": "uint32"
472
+ "name": "lastUpdateIn",
473
+ "type": "uint40"
403
474
  }
404
475
  ],
405
- "name": "LogStakingStoreRewardsDecreased",
476
+ "name": "LogStakingRewardReservesSpent",
406
477
  "type": "event"
407
478
  },
408
479
  {
@@ -411,29 +482,35 @@
411
482
  {
412
483
  "indexed": false,
413
484
  "internalType": "NftId",
414
- "name": "nftId",
485
+ "name": "targetNftId",
415
486
  "type": "uint96"
416
487
  },
417
488
  {
418
489
  "indexed": false,
419
490
  "internalType": "Amount",
420
- "name": "addedAmount",
491
+ "name": "dipAmount",
421
492
  "type": "uint96"
422
493
  },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "address",
497
+ "name": "targetOwner",
498
+ "type": "address"
499
+ },
423
500
  {
424
501
  "indexed": false,
425
502
  "internalType": "Amount",
426
- "name": "newBalance",
503
+ "name": "reserveBalance",
427
504
  "type": "uint96"
428
505
  },
429
506
  {
430
507
  "indexed": false,
431
508
  "internalType": "Blocknumber",
432
- "name": "lastUpdatedIn",
433
- "type": "uint32"
509
+ "name": "lastUpdateIn",
510
+ "type": "uint40"
434
511
  }
435
512
  ],
436
- "name": "LogStakingStoreRewardsIncreased",
513
+ "name": "LogStakingRewardReservesWithdrawn",
437
514
  "type": "event"
438
515
  },
439
516
  {
@@ -442,41 +519,41 @@
442
519
  {
443
520
  "indexed": false,
444
521
  "internalType": "NftId",
445
- "name": "nftId",
522
+ "name": "stakeNftId",
446
523
  "type": "uint96"
447
524
  },
448
525
  {
449
526
  "indexed": false,
450
527
  "internalType": "Amount",
451
- "name": "amount",
528
+ "name": "claimedAmount",
452
529
  "type": "uint96"
453
530
  },
454
531
  {
455
532
  "indexed": false,
456
533
  "internalType": "Amount",
457
- "name": "rewardAmount",
534
+ "name": "stakeBalance",
458
535
  "type": "uint96"
459
536
  },
460
537
  {
461
538
  "indexed": false,
462
539
  "internalType": "Amount",
463
- "name": "rewardIncrementAmount",
540
+ "name": "rewardBalance",
464
541
  "type": "uint96"
465
542
  },
466
543
  {
467
544
  "indexed": false,
468
- "internalType": "Amount",
469
- "name": "newBalance",
470
- "type": "uint96"
545
+ "internalType": "Timestamp",
546
+ "name": "lockedUntil",
547
+ "type": "uint40"
471
548
  },
472
549
  {
473
550
  "indexed": false,
474
551
  "internalType": "Blocknumber",
475
- "name": "lastUpdatedIn",
476
- "type": "uint32"
552
+ "name": "lastUpdateIn",
553
+ "type": "uint40"
477
554
  }
478
555
  ],
479
- "name": "LogStakingStoreRewardsRestaked",
556
+ "name": "LogStakingRewardsClaimed",
480
557
  "type": "event"
481
558
  },
482
559
  {
@@ -485,29 +562,41 @@
485
562
  {
486
563
  "indexed": false,
487
564
  "internalType": "NftId",
488
- "name": "nftId",
565
+ "name": "stakeNftId",
489
566
  "type": "uint96"
490
567
  },
491
568
  {
492
569
  "indexed": false,
493
570
  "internalType": "Amount",
494
- "name": "addedAmount",
571
+ "name": "restakedAmount",
495
572
  "type": "uint96"
496
573
  },
497
574
  {
498
575
  "indexed": false,
499
576
  "internalType": "Amount",
500
- "name": "newBalance",
577
+ "name": "stakeBalance",
578
+ "type": "uint96"
579
+ },
580
+ {
581
+ "indexed": false,
582
+ "internalType": "Amount",
583
+ "name": "rewardBalance",
501
584
  "type": "uint96"
502
585
  },
586
+ {
587
+ "indexed": false,
588
+ "internalType": "Timestamp",
589
+ "name": "lockedUntil",
590
+ "type": "uint40"
591
+ },
503
592
  {
504
593
  "indexed": false,
505
594
  "internalType": "Blocknumber",
506
- "name": "lastUpdatedIn",
507
- "type": "uint32"
595
+ "name": "lastUpdateIn",
596
+ "type": "uint40"
508
597
  }
509
598
  ],
510
- "name": "LogStakingStoreStakesDecreased",
599
+ "name": "LogStakingRewardsRestaked",
511
600
  "type": "event"
512
601
  },
513
602
  {
@@ -516,29 +605,35 @@
516
605
  {
517
606
  "indexed": false,
518
607
  "internalType": "NftId",
519
- "name": "nftId",
608
+ "name": "stakeNftId",
520
609
  "type": "uint96"
521
610
  },
522
611
  {
523
612
  "indexed": false,
524
- "internalType": "Amount",
525
- "name": "addedAmount",
613
+ "internalType": "NftId",
614
+ "name": "targetNftId",
526
615
  "type": "uint96"
527
616
  },
528
617
  {
529
618
  "indexed": false,
530
619
  "internalType": "Amount",
531
- "name": "newBalance",
620
+ "name": "stakeAmount",
532
621
  "type": "uint96"
533
622
  },
534
623
  {
535
624
  "indexed": false,
536
- "internalType": "Blocknumber",
537
- "name": "lastUpdatedIn",
538
- "type": "uint32"
625
+ "internalType": "Timestamp",
626
+ "name": "lockedUntil",
627
+ "type": "uint40"
628
+ },
629
+ {
630
+ "indexed": false,
631
+ "internalType": "address",
632
+ "name": "stakeOwner",
633
+ "type": "address"
539
634
  }
540
635
  ],
541
- "name": "LogStakingStoreStakesIncreased",
636
+ "name": "LogStakingStakeCreated",
542
637
  "type": "event"
543
638
  },
544
639
  {
@@ -547,35 +642,41 @@
547
642
  {
548
643
  "indexed": false,
549
644
  "internalType": "NftId",
550
- "name": "targetNftId",
645
+ "name": "stakeNftId",
551
646
  "type": "uint96"
552
647
  },
553
648
  {
554
649
  "indexed": false,
555
- "internalType": "address",
556
- "name": "token",
557
- "type": "address"
650
+ "internalType": "Amount",
651
+ "name": "rewardIncrementAmount",
652
+ "type": "uint96"
558
653
  },
559
654
  {
560
655
  "indexed": false,
561
656
  "internalType": "Amount",
562
- "name": "amount",
657
+ "name": "stakeBalance",
563
658
  "type": "uint96"
564
659
  },
565
660
  {
566
661
  "indexed": false,
567
662
  "internalType": "Amount",
568
- "name": "newBalance",
663
+ "name": "rewardBalance",
569
664
  "type": "uint96"
570
665
  },
666
+ {
667
+ "indexed": false,
668
+ "internalType": "Timestamp",
669
+ "name": "lockedUntil",
670
+ "type": "uint40"
671
+ },
571
672
  {
572
673
  "indexed": false,
573
674
  "internalType": "Blocknumber",
574
- "name": "lastUpdatedIn",
575
- "type": "uint32"
675
+ "name": "lastUpdateIn",
676
+ "type": "uint40"
576
677
  }
577
678
  ],
578
- "name": "LogStakingStoreTotalValueLockedDecreased",
679
+ "name": "LogStakingStakeRewardsUpdated",
579
680
  "type": "event"
580
681
  },
581
682
  {
@@ -584,35 +685,60 @@
584
685
  {
585
686
  "indexed": false,
586
687
  "internalType": "NftId",
587
- "name": "targetNftId",
688
+ "name": "stakeNftId",
588
689
  "type": "uint96"
589
690
  },
590
691
  {
591
692
  "indexed": false,
592
- "internalType": "address",
593
- "name": "token",
594
- "type": "address"
693
+ "internalType": "Amount",
694
+ "name": "stakedAmount",
695
+ "type": "uint96"
595
696
  },
596
697
  {
597
698
  "indexed": false,
598
699
  "internalType": "Amount",
599
- "name": "amount",
700
+ "name": "stakeBalance",
600
701
  "type": "uint96"
601
702
  },
602
703
  {
603
704
  "indexed": false,
604
705
  "internalType": "Amount",
605
- "name": "newBalance",
706
+ "name": "rewardBalance",
606
707
  "type": "uint96"
607
708
  },
709
+ {
710
+ "indexed": false,
711
+ "internalType": "Timestamp",
712
+ "name": "lockedUntil",
713
+ "type": "uint40"
714
+ },
608
715
  {
609
716
  "indexed": false,
610
717
  "internalType": "Blocknumber",
611
- "name": "lastUpdatedIn",
612
- "type": "uint32"
718
+ "name": "lastUpdateIn",
719
+ "type": "uint40"
720
+ }
721
+ ],
722
+ "name": "LogStakingStaked",
723
+ "type": "event"
724
+ },
725
+ {
726
+ "anonymous": false,
727
+ "inputs": [
728
+ {
729
+ "indexed": false,
730
+ "internalType": "address",
731
+ "name": "stakingReader",
732
+ "type": "address"
733
+ },
734
+ {
735
+ "indexed": false,
736
+ "internalType": "address",
737
+ "name": "oldStakingReader",
738
+ "type": "address"
613
739
  }
614
740
  ],
615
- "name": "LogStakingStoreTotalValueLockedIncreased",
741
+ "name": "LogStakingStakingReaderSet",
616
742
  "type": "event"
617
743
  },
618
744
  {
@@ -626,265 +752,459 @@
626
752
  },
627
753
  {
628
754
  "indexed": false,
629
- "internalType": "KeyId",
630
- "name": "keyId",
631
- "type": "bytes31"
755
+ "internalType": "bool",
756
+ "name": "isSupported",
757
+ "type": "bool"
758
+ },
759
+ {
760
+ "indexed": false,
761
+ "internalType": "bool",
762
+ "name": "allowNewTargets",
763
+ "type": "bool"
632
764
  },
633
765
  {
634
766
  "indexed": false,
635
- "internalType": "StateId",
636
- "name": "stateOld",
637
- "type": "uint8"
767
+ "internalType": "bool",
768
+ "name": "allowCrossChain",
769
+ "type": "bool"
638
770
  },
639
771
  {
640
772
  "indexed": false,
641
- "internalType": "StateId",
642
- "name": "stateNew",
643
- "type": "uint8"
773
+ "internalType": "Amount",
774
+ "name": "minStakingAmount",
775
+ "type": "uint96"
644
776
  },
645
777
  {
646
778
  "indexed": false,
647
- "internalType": "address",
648
- "name": "updatedBy",
649
- "type": "address"
779
+ "internalType": "Amount",
780
+ "name": "maxStakingAmount",
781
+ "type": "uint96"
650
782
  },
651
783
  {
652
784
  "indexed": false,
653
- "internalType": "address",
654
- "name": "txOrigin",
655
- "type": "address"
785
+ "internalType": "Seconds",
786
+ "name": "minLockingPeriod",
787
+ "type": "uint40"
788
+ },
789
+ {
790
+ "indexed": false,
791
+ "internalType": "Seconds",
792
+ "name": "maxLockingPeriod",
793
+ "type": "uint40"
794
+ },
795
+ {
796
+ "indexed": false,
797
+ "internalType": "UFixed",
798
+ "name": "minRewardRate",
799
+ "type": "uint160"
800
+ },
801
+ {
802
+ "indexed": false,
803
+ "internalType": "UFixed",
804
+ "name": "maxRewardRate",
805
+ "type": "uint160"
656
806
  },
657
807
  {
658
808
  "indexed": false,
659
809
  "internalType": "Blocknumber",
660
- "name": "lastUpdatedIn",
661
- "type": "uint32"
810
+ "name": "lastUpdateIn",
811
+ "type": "uint40"
662
812
  }
663
813
  ],
664
- "name": "LogStateUpdated",
814
+ "name": "LogStakingSupportInfoSet",
665
815
  "type": "event"
666
816
  },
667
817
  {
668
- "inputs": [],
669
- "name": "authority",
670
- "outputs": [
818
+ "anonymous": false,
819
+ "inputs": [
820
+ {
821
+ "indexed": false,
822
+ "internalType": "NftId",
823
+ "name": "targetNftId",
824
+ "type": "uint96"
825
+ },
826
+ {
827
+ "indexed": false,
828
+ "internalType": "ObjectType",
829
+ "name": "objectType",
830
+ "type": "uint8"
831
+ },
832
+ {
833
+ "indexed": false,
834
+ "internalType": "Seconds",
835
+ "name": "lockingPeriod",
836
+ "type": "uint40"
837
+ },
671
838
  {
839
+ "indexed": false,
840
+ "internalType": "UFixed",
841
+ "name": "rewardRate",
842
+ "type": "uint160"
843
+ }
844
+ ],
845
+ "name": "LogStakingTargetCreated",
846
+ "type": "event"
847
+ },
848
+ {
849
+ "anonymous": false,
850
+ "inputs": [
851
+ {
852
+ "indexed": false,
672
853
  "internalType": "address",
673
- "name": "",
854
+ "name": "targetManager",
855
+ "type": "address"
856
+ },
857
+ {
858
+ "indexed": false,
859
+ "internalType": "address",
860
+ "name": "oldTargetHandler",
674
861
  "type": "address"
675
862
  }
676
863
  ],
677
- "stateMutability": "view",
678
- "type": "function"
864
+ "name": "LogStakingTargetHandlerSet",
865
+ "type": "event"
679
866
  },
680
867
  {
868
+ "anonymous": false,
681
869
  "inputs": [
682
870
  {
683
- "internalType": "ObjectType",
684
- "name": "objectType",
685
- "type": "uint8"
871
+ "indexed": false,
872
+ "internalType": "NftId",
873
+ "name": "targetNftId",
874
+ "type": "uint96"
686
875
  },
687
876
  {
688
- "internalType": "StateId",
689
- "name": "fromId",
690
- "type": "uint8"
877
+ "indexed": false,
878
+ "internalType": "Amount",
879
+ "name": "limitAmount",
880
+ "type": "uint96"
691
881
  },
692
882
  {
693
- "internalType": "StateId",
694
- "name": "toId",
695
- "type": "uint8"
883
+ "indexed": false,
884
+ "internalType": "Amount",
885
+ "name": "hardLimitAmount",
886
+ "type": "uint96"
887
+ },
888
+ {
889
+ "indexed": false,
890
+ "internalType": "Amount",
891
+ "name": "requiredStakeAmount",
892
+ "type": "uint96"
893
+ },
894
+ {
895
+ "indexed": false,
896
+ "internalType": "Amount",
897
+ "name": "actualStakeAmount",
898
+ "type": "uint96"
899
+ },
900
+ {
901
+ "indexed": false,
902
+ "internalType": "Blocknumber",
903
+ "name": "lastUpdateIn",
904
+ "type": "uint40"
696
905
  }
697
906
  ],
698
- "name": "checkTransition",
699
- "outputs": [],
700
- "stateMutability": "view",
701
- "type": "function"
907
+ "name": "LogStakingTargetLimitUpdated",
908
+ "type": "event"
702
909
  },
703
910
  {
911
+ "anonymous": false,
704
912
  "inputs": [
705
913
  {
914
+ "indexed": false,
706
915
  "internalType": "NftId",
707
- "name": "nftId",
916
+ "name": "targetNftId",
708
917
  "type": "uint96"
709
918
  },
710
919
  {
711
- "internalType": "NftId",
712
- "name": "targetNftId",
920
+ "indexed": false,
921
+ "internalType": "Amount",
922
+ "name": "marginAmount",
713
923
  "type": "uint96"
714
924
  },
715
925
  {
926
+ "indexed": false,
716
927
  "internalType": "Amount",
717
- "name": "maxClaimAmount",
928
+ "name": "hardLimitAmount",
718
929
  "type": "uint96"
930
+ },
931
+ {
932
+ "indexed": false,
933
+ "internalType": "Blocknumber",
934
+ "name": "lastUpdateIn",
935
+ "type": "uint40"
719
936
  }
720
937
  ],
721
- "name": "claimUpTo",
722
- "outputs": [
938
+ "name": "LogStakingTargetLimitsUpdated",
939
+ "type": "event"
940
+ },
941
+ {
942
+ "anonymous": false,
943
+ "inputs": [
723
944
  {
724
- "internalType": "Amount",
725
- "name": "claimedAmount",
945
+ "indexed": false,
946
+ "internalType": "NftId",
947
+ "name": "targetNftId",
726
948
  "type": "uint96"
949
+ },
950
+ {
951
+ "indexed": false,
952
+ "internalType": "Seconds",
953
+ "name": "oldLockingPeriod",
954
+ "type": "uint40"
955
+ },
956
+ {
957
+ "indexed": false,
958
+ "internalType": "Seconds",
959
+ "name": "lockingPeriod",
960
+ "type": "uint40"
961
+ },
962
+ {
963
+ "indexed": false,
964
+ "internalType": "Blocknumber",
965
+ "name": "lastUpdateIn",
966
+ "type": "uint40"
727
967
  }
728
968
  ],
729
- "stateMutability": "nonpayable",
730
- "type": "function"
969
+ "name": "LogStakingTargetLockingPeriodSet",
970
+ "type": "event"
731
971
  },
732
972
  {
973
+ "anonymous": false,
733
974
  "inputs": [
734
975
  {
976
+ "indexed": false,
735
977
  "internalType": "NftId",
736
- "name": "stakeNftId",
978
+ "name": "targetNftId",
737
979
  "type": "uint96"
738
980
  },
739
981
  {
740
- "components": [
741
- {
742
- "internalType": "Timestamp",
743
- "name": "lockedUntil",
744
- "type": "uint40"
745
- }
746
- ],
747
- "internalType": "struct IStaking.StakeInfo",
748
- "name": "stakeInfo",
749
- "type": "tuple"
982
+ "indexed": false,
983
+ "internalType": "Amount",
984
+ "name": "stakeLimitAmount",
985
+ "type": "uint96"
986
+ },
987
+ {
988
+ "indexed": false,
989
+ "internalType": "Blocknumber",
990
+ "name": "lastUpdateIn",
991
+ "type": "uint40"
750
992
  }
751
993
  ],
752
- "name": "create",
753
- "outputs": [],
754
- "stateMutability": "nonpayable",
755
- "type": "function"
994
+ "name": "LogStakingTargetMaxStakedAmountSet",
995
+ "type": "event"
756
996
  },
757
997
  {
998
+ "anonymous": false,
758
999
  "inputs": [
759
1000
  {
1001
+ "indexed": false,
760
1002
  "internalType": "NftId",
761
1003
  "name": "targetNftId",
762
1004
  "type": "uint96"
763
1005
  },
764
1006
  {
765
- "components": [
766
- {
767
- "internalType": "ObjectType",
768
- "name": "objectType",
769
- "type": "uint8"
770
- },
771
- {
772
- "internalType": "uint256",
773
- "name": "chainId",
774
- "type": "uint256"
775
- },
776
- {
777
- "internalType": "Seconds",
778
- "name": "lockingPeriod",
779
- "type": "uint40"
780
- },
781
- {
782
- "internalType": "UFixed",
783
- "name": "rewardRate",
784
- "type": "uint256"
785
- }
786
- ],
787
- "internalType": "struct IStaking.TargetInfo",
788
- "name": "targetInfo",
789
- "type": "tuple"
1007
+ "indexed": false,
1008
+ "internalType": "UFixed",
1009
+ "name": "rewardRate",
1010
+ "type": "uint160"
1011
+ },
1012
+ {
1013
+ "indexed": false,
1014
+ "internalType": "UFixed",
1015
+ "name": "oldRewardRate",
1016
+ "type": "uint160"
1017
+ },
1018
+ {
1019
+ "indexed": false,
1020
+ "internalType": "Blocknumber",
1021
+ "name": "lastUpdateIn",
1022
+ "type": "uint40"
790
1023
  }
791
1024
  ],
792
- "name": "createTarget",
793
- "outputs": [],
794
- "stateMutability": "nonpayable",
795
- "type": "function"
1025
+ "name": "LogStakingTargetRewardRateSet",
1026
+ "type": "event"
1027
+ },
1028
+ {
1029
+ "anonymous": false,
1030
+ "inputs": [
1031
+ {
1032
+ "indexed": false,
1033
+ "internalType": "ChainId",
1034
+ "name": "chainId",
1035
+ "type": "uint96"
1036
+ },
1037
+ {
1038
+ "indexed": false,
1039
+ "internalType": "address",
1040
+ "name": "token",
1041
+ "type": "address"
1042
+ }
1043
+ ],
1044
+ "name": "LogStakingTokenAdded",
1045
+ "type": "event"
796
1046
  },
797
1047
  {
1048
+ "anonymous": false,
798
1049
  "inputs": [
799
1050
  {
1051
+ "indexed": false,
800
1052
  "internalType": "NftId",
801
1053
  "name": "targetNftId",
802
1054
  "type": "uint96"
803
1055
  },
804
1056
  {
1057
+ "indexed": false,
1058
+ "internalType": "address",
1059
+ "name": "token",
1060
+ "type": "address"
1061
+ },
1062
+ {
1063
+ "indexed": false,
805
1064
  "internalType": "Amount",
806
- "name": "dipAmount",
1065
+ "name": "amount",
807
1066
  "type": "uint96"
808
- }
809
- ],
810
- "name": "decreaseReserves",
811
- "outputs": [
1067
+ },
812
1068
  {
1069
+ "indexed": false,
813
1070
  "internalType": "Amount",
814
- "name": "newReserveBalance",
1071
+ "name": "newBalance",
815
1072
  "type": "uint96"
1073
+ },
1074
+ {
1075
+ "indexed": false,
1076
+ "internalType": "Blocknumber",
1077
+ "name": "lastUpdateIn",
1078
+ "type": "uint40"
816
1079
  }
817
1080
  ],
818
- "stateMutability": "nonpayable",
819
- "type": "function"
1081
+ "name": "LogStakingTvlDecreased",
1082
+ "type": "event"
820
1083
  },
821
1084
  {
1085
+ "anonymous": false,
822
1086
  "inputs": [
823
1087
  {
1088
+ "indexed": false,
824
1089
  "internalType": "NftId",
825
1090
  "name": "targetNftId",
826
1091
  "type": "uint96"
827
1092
  },
828
1093
  {
829
- "internalType": "UFixed",
830
- "name": "stakingRate",
831
- "type": "uint256"
832
- },
833
- {
1094
+ "indexed": false,
834
1095
  "internalType": "address",
835
1096
  "name": "token",
836
1097
  "type": "address"
837
1098
  },
838
1099
  {
1100
+ "indexed": false,
839
1101
  "internalType": "Amount",
840
1102
  "name": "amount",
841
1103
  "type": "uint96"
842
- }
843
- ],
844
- "name": "decreaseTotalValueLocked",
845
- "outputs": [
1104
+ },
846
1105
  {
1106
+ "indexed": false,
847
1107
  "internalType": "Amount",
848
1108
  "name": "newBalance",
849
1109
  "type": "uint96"
1110
+ },
1111
+ {
1112
+ "indexed": false,
1113
+ "internalType": "Blocknumber",
1114
+ "name": "lastUpdateIn",
1115
+ "type": "uint40"
850
1116
  }
851
1117
  ],
852
- "stateMutability": "nonpayable",
853
- "type": "function"
1118
+ "name": "LogStakingTvlIncreased",
1119
+ "type": "event"
854
1120
  },
855
1121
  {
1122
+ "anonymous": false,
856
1123
  "inputs": [
857
1124
  {
858
- "internalType": "Key32",
859
- "name": "key32",
860
- "type": "bytes32"
1125
+ "indexed": false,
1126
+ "internalType": "NftId",
1127
+ "name": "stakeNftId",
1128
+ "type": "uint96"
1129
+ },
1130
+ {
1131
+ "indexed": false,
1132
+ "internalType": "Amount",
1133
+ "name": "unstakedAmount",
1134
+ "type": "uint96"
1135
+ },
1136
+ {
1137
+ "indexed": false,
1138
+ "internalType": "Amount",
1139
+ "name": "stakeBalance",
1140
+ "type": "uint96"
1141
+ },
1142
+ {
1143
+ "indexed": false,
1144
+ "internalType": "Amount",
1145
+ "name": "rewardBalance",
1146
+ "type": "uint96"
1147
+ },
1148
+ {
1149
+ "indexed": false,
1150
+ "internalType": "Timestamp",
1151
+ "name": "lockedUntil",
1152
+ "type": "uint40"
1153
+ },
1154
+ {
1155
+ "indexed": false,
1156
+ "internalType": "Blocknumber",
1157
+ "name": "lastUpdateIn",
1158
+ "type": "uint40"
861
1159
  }
862
1160
  ],
863
- "name": "exists",
864
- "outputs": [
1161
+ "name": "LogStakingUnstaked",
1162
+ "type": "event"
1163
+ },
1164
+ {
1165
+ "inputs": [
865
1166
  {
866
- "internalType": "bool",
867
- "name": "",
868
- "type": "bool"
1167
+ "internalType": "NftId",
1168
+ "name": "targetNftId",
1169
+ "type": "uint96"
1170
+ },
1171
+ {
1172
+ "internalType": "address",
1173
+ "name": "token",
1174
+ "type": "address"
869
1175
  }
870
1176
  ],
871
- "stateMutability": "view",
1177
+ "name": "addTargetToken",
1178
+ "outputs": [],
1179
+ "stateMutability": "nonpayable",
872
1180
  "type": "function"
873
1181
  },
874
1182
  {
875
1183
  "inputs": [
876
1184
  {
877
- "internalType": "NftId",
878
- "name": "stakeNftId",
1185
+ "internalType": "ChainId",
1186
+ "name": "chainId",
879
1187
  "type": "uint96"
1188
+ },
1189
+ {
1190
+ "internalType": "address",
1191
+ "name": "token",
1192
+ "type": "address"
880
1193
  }
881
1194
  ],
882
- "name": "exists",
1195
+ "name": "addToken",
1196
+ "outputs": [],
1197
+ "stateMutability": "nonpayable",
1198
+ "type": "function"
1199
+ },
1200
+ {
1201
+ "inputs": [],
1202
+ "name": "authority",
883
1203
  "outputs": [
884
1204
  {
885
- "internalType": "bool",
1205
+ "internalType": "address",
886
1206
  "name": "",
887
- "type": "bool"
1207
+ "type": "address"
888
1208
  }
889
1209
  ],
890
1210
  "stateMutability": "view",
@@ -893,127 +1213,137 @@
893
1213
  {
894
1214
  "inputs": [
895
1215
  {
896
- "internalType": "Key32",
897
- "name": "key32",
898
- "type": "bytes32"
1216
+ "internalType": "NftId",
1217
+ "name": "stakeNftId",
1218
+ "type": "uint96"
1219
+ },
1220
+ {
1221
+ "internalType": "bool",
1222
+ "name": "updateRewards",
1223
+ "type": "bool"
1224
+ },
1225
+ {
1226
+ "internalType": "Amount",
1227
+ "name": "maxClaimAmount",
1228
+ "type": "uint96"
899
1229
  }
900
1230
  ],
901
- "name": "get",
1231
+ "name": "claimRewards",
902
1232
  "outputs": [
903
1233
  {
904
- "components": [
905
- {
906
- "components": [
907
- {
908
- "internalType": "ObjectType",
909
- "name": "objectType",
910
- "type": "uint8"
911
- },
912
- {
913
- "internalType": "StateId",
914
- "name": "state",
915
- "type": "uint8"
916
- },
917
- {
918
- "internalType": "Blocknumber",
919
- "name": "updatedIn",
920
- "type": "uint32"
921
- },
922
- {
923
- "internalType": "Blocknumber",
924
- "name": "createdIn",
925
- "type": "uint32"
926
- }
927
- ],
928
- "internalType": "struct IKeyValueStore.Metadata",
929
- "name": "metadata",
930
- "type": "tuple"
931
- },
932
- {
933
- "internalType": "bytes",
934
- "name": "data",
935
- "type": "bytes"
936
- }
937
- ],
938
- "internalType": "struct IKeyValueStore.Value",
939
- "name": "value",
940
- "type": "tuple"
1234
+ "internalType": "Amount",
1235
+ "name": "claimedAmount",
1236
+ "type": "uint96"
941
1237
  }
942
1238
  ],
943
- "stateMutability": "view",
1239
+ "stateMutability": "nonpayable",
944
1240
  "type": "function"
945
1241
  },
946
1242
  {
947
1243
  "inputs": [
948
1244
  {
949
1245
  "internalType": "NftId",
950
- "name": "nftId",
1246
+ "name": "stakeNftId",
1247
+ "type": "uint96"
1248
+ },
1249
+ {
1250
+ "internalType": "NftId",
1251
+ "name": "targetNftId",
1252
+ "type": "uint96"
1253
+ },
1254
+ {
1255
+ "internalType": "address",
1256
+ "name": "stakeOwner",
1257
+ "type": "address"
1258
+ },
1259
+ {
1260
+ "internalType": "Amount",
1261
+ "name": "stakeAmount",
951
1262
  "type": "uint96"
952
1263
  }
953
1264
  ],
954
- "name": "getBalanceUpdatedAt",
1265
+ "name": "createStake",
955
1266
  "outputs": [
956
1267
  {
957
1268
  "internalType": "Timestamp",
958
- "name": "updatedAt",
1269
+ "name": "lockedUntil",
959
1270
  "type": "uint40"
960
1271
  }
961
1272
  ],
962
- "stateMutability": "view",
1273
+ "stateMutability": "nonpayable",
963
1274
  "type": "function"
964
1275
  },
965
1276
  {
966
1277
  "inputs": [
967
1278
  {
968
1279
  "internalType": "NftId",
969
- "name": "nftId",
1280
+ "name": "targetNftId",
970
1281
  "type": "uint96"
971
- }
972
- ],
973
- "name": "getBalanceUpdatedIn",
974
- "outputs": [
1282
+ },
975
1283
  {
976
- "internalType": "Blocknumber",
977
- "name": "blocknumber",
978
- "type": "uint32"
1284
+ "internalType": "ObjectType",
1285
+ "name": "objectType",
1286
+ "type": "uint8"
1287
+ },
1288
+ {
1289
+ "internalType": "Seconds",
1290
+ "name": "lockingPeriod",
1291
+ "type": "uint40"
1292
+ },
1293
+ {
1294
+ "internalType": "UFixed",
1295
+ "name": "rewardRate",
1296
+ "type": "uint160"
979
1297
  }
980
1298
  ],
981
- "stateMutability": "view",
1299
+ "name": "createTarget",
1300
+ "outputs": [],
1301
+ "stateMutability": "nonpayable",
982
1302
  "type": "function"
983
1303
  },
984
1304
  {
985
1305
  "inputs": [
986
1306
  {
987
- "internalType": "Key32",
988
- "name": "key32",
989
- "type": "bytes32"
1307
+ "internalType": "NftId",
1308
+ "name": "targetNftId",
1309
+ "type": "uint96"
1310
+ },
1311
+ {
1312
+ "internalType": "address",
1313
+ "name": "token",
1314
+ "type": "address"
1315
+ },
1316
+ {
1317
+ "internalType": "Amount",
1318
+ "name": "amount",
1319
+ "type": "uint96"
990
1320
  }
991
1321
  ],
992
- "name": "getData",
1322
+ "name": "decreaseTotalValueLocked",
993
1323
  "outputs": [
994
1324
  {
995
- "internalType": "bytes",
996
- "name": "data",
997
- "type": "bytes"
1325
+ "internalType": "Amount",
1326
+ "name": "newBalance",
1327
+ "type": "uint96"
998
1328
  }
999
1329
  ],
1000
- "stateMutability": "view",
1330
+ "stateMutability": "nonpayable",
1001
1331
  "type": "function"
1002
1332
  },
1003
1333
  {
1004
1334
  "inputs": [
1005
1335
  {
1006
- "internalType": "ObjectType",
1007
- "name": "objectType",
1008
- "type": "uint8"
1336
+ "internalType": "NftId",
1337
+ "name": "stakeNftId",
1338
+ "type": "uint96"
1009
1339
  }
1010
1340
  ],
1011
- "name": "getInitialState",
1341
+ "name": "exists",
1012
1342
  "outputs": [
1013
1343
  {
1014
- "internalType": "StateId",
1344
+ "internalType": "bool",
1015
1345
  "name": "",
1016
- "type": "uint8"
1346
+ "type": "bool"
1017
1347
  }
1018
1348
  ],
1019
1349
  "stateMutability": "view",
@@ -1022,38 +1352,33 @@
1022
1352
  {
1023
1353
  "inputs": [
1024
1354
  {
1025
- "internalType": "Key32",
1026
- "name": "key32",
1027
- "type": "bytes32"
1355
+ "internalType": "NftId",
1356
+ "name": "targetNftId",
1357
+ "type": "uint96"
1028
1358
  }
1029
1359
  ],
1030
- "name": "getMetadata",
1360
+ "name": "getLimitInfo",
1031
1361
  "outputs": [
1032
1362
  {
1033
1363
  "components": [
1034
1364
  {
1035
- "internalType": "ObjectType",
1036
- "name": "objectType",
1037
- "type": "uint8"
1038
- },
1039
- {
1040
- "internalType": "StateId",
1041
- "name": "state",
1042
- "type": "uint8"
1365
+ "internalType": "Amount",
1366
+ "name": "marginAmount",
1367
+ "type": "uint96"
1043
1368
  },
1044
1369
  {
1045
- "internalType": "Blocknumber",
1046
- "name": "updatedIn",
1047
- "type": "uint32"
1370
+ "internalType": "Amount",
1371
+ "name": "hardLimitAmount",
1372
+ "type": "uint96"
1048
1373
  },
1049
1374
  {
1050
1375
  "internalType": "Blocknumber",
1051
- "name": "createdIn",
1052
- "type": "uint32"
1376
+ "name": "lastUpdateIn",
1377
+ "type": "uint40"
1053
1378
  }
1054
1379
  ],
1055
- "internalType": "struct IKeyValueStore.Metadata",
1056
- "name": "metadata",
1380
+ "internalType": "struct IStaking.LimitInfo",
1381
+ "name": "limitInfo",
1057
1382
  "type": "tuple"
1058
1383
  }
1059
1384
  ],
@@ -1064,15 +1389,20 @@
1064
1389
  "inputs": [
1065
1390
  {
1066
1391
  "internalType": "NftId",
1067
- "name": "nftId",
1392
+ "name": "targetNftId",
1068
1393
  "type": "uint96"
1394
+ },
1395
+ {
1396
+ "internalType": "bool",
1397
+ "name": "includeTargetTypeRequirements",
1398
+ "type": "bool"
1069
1399
  }
1070
1400
  ],
1071
1401
  "name": "getRequiredStakeBalance",
1072
1402
  "outputs": [
1073
1403
  {
1074
1404
  "internalType": "Amount",
1075
- "name": "requiredAmount",
1405
+ "name": "requiredStakeAmount",
1076
1406
  "type": "uint96"
1077
1407
  }
1078
1408
  ],
@@ -1083,16 +1413,48 @@
1083
1413
  "inputs": [
1084
1414
  {
1085
1415
  "internalType": "NftId",
1086
- "name": "nftId",
1416
+ "name": "stakeNftId",
1087
1417
  "type": "uint96"
1088
1418
  }
1089
1419
  ],
1090
- "name": "getReserveBalance",
1420
+ "name": "getStakeInfo",
1091
1421
  "outputs": [
1092
1422
  {
1093
- "internalType": "Amount",
1094
- "name": "balanceAmount",
1095
- "type": "uint96"
1423
+ "components": [
1424
+ {
1425
+ "internalType": "Amount",
1426
+ "name": "stakedAmount",
1427
+ "type": "uint96"
1428
+ },
1429
+ {
1430
+ "internalType": "Amount",
1431
+ "name": "rewardAmount",
1432
+ "type": "uint96"
1433
+ },
1434
+ {
1435
+ "internalType": "Timestamp",
1436
+ "name": "lockedUntil",
1437
+ "type": "uint40"
1438
+ },
1439
+ {
1440
+ "internalType": "NftId",
1441
+ "name": "targetNftId",
1442
+ "type": "uint96"
1443
+ },
1444
+ {
1445
+ "internalType": "Timestamp",
1446
+ "name": "lastUpdateAt",
1447
+ "type": "uint40"
1448
+ },
1449
+ {
1450
+ "internalType": "Blocknumber",
1451
+ "name": "lastUpdateIn",
1452
+ "type": "uint40"
1453
+ }
1454
+ ],
1455
+ "internalType": "struct IStaking.StakeInfo",
1456
+ "name": "stakeInfo",
1457
+ "type": "tuple"
1096
1458
  }
1097
1459
  ],
1098
1460
  "stateMutability": "view",
@@ -1102,35 +1464,100 @@
1102
1464
  "inputs": [
1103
1465
  {
1104
1466
  "internalType": "NftId",
1105
- "name": "nftId",
1467
+ "name": "stakeNftId",
1106
1468
  "type": "uint96"
1107
1469
  }
1108
1470
  ],
1109
- "name": "getRewardBalance",
1471
+ "name": "getStakeTarget",
1110
1472
  "outputs": [
1111
1473
  {
1112
- "internalType": "Amount",
1113
- "name": "rewardAmount",
1474
+ "internalType": "NftId",
1475
+ "name": "targetNftId",
1114
1476
  "type": "uint96"
1115
1477
  }
1116
1478
  ],
1117
1479
  "stateMutability": "view",
1118
1480
  "type": "function"
1119
1481
  },
1482
+ {
1483
+ "inputs": [],
1484
+ "name": "getStakingReader",
1485
+ "outputs": [
1486
+ {
1487
+ "internalType": "contract StakingReader",
1488
+ "name": "stakingReader",
1489
+ "type": "address"
1490
+ }
1491
+ ],
1492
+ "stateMutability": "view",
1493
+ "type": "function"
1494
+ },
1120
1495
  {
1121
1496
  "inputs": [
1122
1497
  {
1123
- "internalType": "NftId",
1124
- "name": "nftId",
1125
- "type": "uint96"
1498
+ "internalType": "ObjectType",
1499
+ "name": "targetType",
1500
+ "type": "uint8"
1126
1501
  }
1127
1502
  ],
1128
- "name": "getStakeBalance",
1503
+ "name": "getSupportInfo",
1129
1504
  "outputs": [
1130
1505
  {
1131
- "internalType": "Amount",
1132
- "name": "balanceAmount",
1133
- "type": "uint96"
1506
+ "components": [
1507
+ {
1508
+ "internalType": "bool",
1509
+ "name": "isSupported",
1510
+ "type": "bool"
1511
+ },
1512
+ {
1513
+ "internalType": "bool",
1514
+ "name": "allowNewTargets",
1515
+ "type": "bool"
1516
+ },
1517
+ {
1518
+ "internalType": "bool",
1519
+ "name": "allowCrossChain",
1520
+ "type": "bool"
1521
+ },
1522
+ {
1523
+ "internalType": "Amount",
1524
+ "name": "minStakingAmount",
1525
+ "type": "uint96"
1526
+ },
1527
+ {
1528
+ "internalType": "Amount",
1529
+ "name": "maxStakingAmount",
1530
+ "type": "uint96"
1531
+ },
1532
+ {
1533
+ "internalType": "Seconds",
1534
+ "name": "minLockingPeriod",
1535
+ "type": "uint40"
1536
+ },
1537
+ {
1538
+ "internalType": "Seconds",
1539
+ "name": "maxLockingPeriod",
1540
+ "type": "uint40"
1541
+ },
1542
+ {
1543
+ "internalType": "UFixed",
1544
+ "name": "minRewardRate",
1545
+ "type": "uint160"
1546
+ },
1547
+ {
1548
+ "internalType": "UFixed",
1549
+ "name": "maxRewardRate",
1550
+ "type": "uint160"
1551
+ },
1552
+ {
1553
+ "internalType": "Blocknumber",
1554
+ "name": "lastUpdateIn",
1555
+ "type": "uint40"
1556
+ }
1557
+ ],
1558
+ "internalType": "struct IStaking.SupportInfo",
1559
+ "name": "supportInfo",
1560
+ "type": "tuple"
1134
1561
  }
1135
1562
  ],
1136
1563
  "stateMutability": "view",
@@ -1140,50 +1567,76 @@
1140
1567
  "inputs": [
1141
1568
  {
1142
1569
  "internalType": "NftId",
1143
- "name": "nftId",
1570
+ "name": "targetNftId",
1144
1571
  "type": "uint96"
1145
1572
  }
1146
1573
  ],
1147
- "name": "getStakeBalances",
1574
+ "name": "getTargetInfo",
1148
1575
  "outputs": [
1149
1576
  {
1150
- "internalType": "Amount",
1151
- "name": "stakeBalance",
1152
- "type": "uint96"
1153
- },
1154
- {
1155
- "internalType": "Amount",
1156
- "name": "rewardBalance",
1157
- "type": "uint96"
1158
- },
1159
- {
1160
- "internalType": "Timestamp",
1161
- "name": "lastUpdatedAt",
1162
- "type": "uint40"
1577
+ "components": [
1578
+ {
1579
+ "internalType": "Amount",
1580
+ "name": "stakedAmount",
1581
+ "type": "uint96"
1582
+ },
1583
+ {
1584
+ "internalType": "Amount",
1585
+ "name": "rewardAmount",
1586
+ "type": "uint96"
1587
+ },
1588
+ {
1589
+ "internalType": "Blocknumber",
1590
+ "name": "lastUpdateIn",
1591
+ "type": "uint40"
1592
+ },
1593
+ {
1594
+ "internalType": "Amount",
1595
+ "name": "reserveAmount",
1596
+ "type": "uint96"
1597
+ },
1598
+ {
1599
+ "internalType": "Amount",
1600
+ "name": "limitAmount",
1601
+ "type": "uint96"
1602
+ },
1603
+ {
1604
+ "internalType": "Seconds",
1605
+ "name": "lockingPeriod",
1606
+ "type": "uint40"
1607
+ },
1608
+ {
1609
+ "internalType": "ObjectType",
1610
+ "name": "objectType",
1611
+ "type": "uint8"
1612
+ },
1613
+ {
1614
+ "internalType": "UFixed",
1615
+ "name": "rewardRate",
1616
+ "type": "uint160"
1617
+ },
1618
+ {
1619
+ "internalType": "ChainId",
1620
+ "name": "chainId",
1621
+ "type": "uint96"
1622
+ }
1623
+ ],
1624
+ "internalType": "struct IStaking.TargetInfo",
1625
+ "name": "targetInfo",
1626
+ "type": "tuple"
1163
1627
  }
1164
1628
  ],
1165
1629
  "stateMutability": "view",
1166
1630
  "type": "function"
1167
1631
  },
1168
1632
  {
1169
- "inputs": [
1170
- {
1171
- "internalType": "uint256",
1172
- "name": "chainId",
1173
- "type": "uint256"
1174
- },
1175
- {
1176
- "internalType": "address",
1177
- "name": "token",
1178
- "type": "address"
1179
- }
1180
- ],
1181
- "name": "getStakingRate",
1633
+ "inputs": [],
1634
+ "name": "getTargetManager",
1182
1635
  "outputs": [
1183
1636
  {
1184
- "internalType": "UFixed",
1185
- "name": "stakingRate",
1186
- "type": "uint256"
1637
+ "internalType": "contract ITargetLimitHandler",
1638
+ "name": "targetLimitHandler",
1639
+ "type": "address"
1187
1640
  }
1188
1641
  ],
1189
1642
  "stateMutability": "view",
@@ -1191,11 +1644,11 @@
1191
1644
  },
1192
1645
  {
1193
1646
  "inputs": [],
1194
- "name": "getStakingReader",
1647
+ "name": "getTargetSet",
1195
1648
  "outputs": [
1196
1649
  {
1197
- "internalType": "contract StakingReader",
1198
- "name": "stakingReader",
1650
+ "internalType": "contract NftIdSet",
1651
+ "name": "targetNftIdSet",
1199
1652
  "type": "address"
1200
1653
  }
1201
1654
  ],
@@ -1205,17 +1658,34 @@
1205
1658
  {
1206
1659
  "inputs": [
1207
1660
  {
1208
- "internalType": "Key32",
1209
- "name": "key32",
1210
- "type": "bytes32"
1661
+ "internalType": "ChainId",
1662
+ "name": "chainId",
1663
+ "type": "uint96"
1664
+ },
1665
+ {
1666
+ "internalType": "address",
1667
+ "name": "token",
1668
+ "type": "address"
1211
1669
  }
1212
1670
  ],
1213
- "name": "getState",
1671
+ "name": "getTokenInfo",
1214
1672
  "outputs": [
1215
1673
  {
1216
- "internalType": "StateId",
1217
- "name": "state",
1218
- "type": "uint8"
1674
+ "components": [
1675
+ {
1676
+ "internalType": "UFixed",
1677
+ "name": "stakingRate",
1678
+ "type": "uint160"
1679
+ },
1680
+ {
1681
+ "internalType": "Blocknumber",
1682
+ "name": "lastUpdateIn",
1683
+ "type": "uint40"
1684
+ }
1685
+ ],
1686
+ "internalType": "struct IStaking.TokenInfo",
1687
+ "name": "tokenInfo",
1688
+ "type": "tuple"
1219
1689
  }
1220
1690
  ],
1221
1691
  "stateMutability": "view",
@@ -1225,68 +1695,98 @@
1225
1695
  "inputs": [
1226
1696
  {
1227
1697
  "internalType": "NftId",
1228
- "name": "nftId",
1698
+ "name": "targetNftId",
1229
1699
  "type": "uint96"
1700
+ },
1701
+ {
1702
+ "internalType": "address",
1703
+ "name": "token",
1704
+ "type": "address"
1230
1705
  }
1231
1706
  ],
1232
- "name": "getTargetBalances",
1707
+ "name": "getTvlInfo",
1233
1708
  "outputs": [
1234
1709
  {
1235
- "internalType": "Amount",
1236
- "name": "stakeBalance",
1710
+ "components": [
1711
+ {
1712
+ "internalType": "Amount",
1713
+ "name": "tvlAmount",
1714
+ "type": "uint96"
1715
+ },
1716
+ {
1717
+ "internalType": "Amount",
1718
+ "name": "tvlBaselineAmount",
1719
+ "type": "uint96"
1720
+ },
1721
+ {
1722
+ "internalType": "uint16",
1723
+ "name": "updatesCounter",
1724
+ "type": "uint16"
1725
+ },
1726
+ {
1727
+ "internalType": "Blocknumber",
1728
+ "name": "lastUpdateIn",
1729
+ "type": "uint40"
1730
+ }
1731
+ ],
1732
+ "internalType": "struct IStaking.TvlInfo",
1733
+ "name": "tvlInfo",
1734
+ "type": "tuple"
1735
+ }
1736
+ ],
1737
+ "stateMutability": "view",
1738
+ "type": "function"
1739
+ },
1740
+ {
1741
+ "inputs": [
1742
+ {
1743
+ "internalType": "NftId",
1744
+ "name": "targetNftId",
1237
1745
  "type": "uint96"
1238
1746
  },
1239
1747
  {
1240
- "internalType": "Amount",
1241
- "name": "rewardBalance",
1242
- "type": "uint96"
1748
+ "internalType": "address",
1749
+ "name": "token",
1750
+ "type": "address"
1243
1751
  },
1244
1752
  {
1245
1753
  "internalType": "Amount",
1246
- "name": "reserveBalance",
1754
+ "name": "amount",
1247
1755
  "type": "uint96"
1248
- },
1249
- {
1250
- "internalType": "Blocknumber",
1251
- "name": "lastUpdatedIn",
1252
- "type": "uint32"
1253
1756
  }
1254
1757
  ],
1255
- "stateMutability": "view",
1256
- "type": "function"
1257
- },
1258
- {
1259
- "inputs": [],
1260
- "name": "getTargetNftIdSet",
1758
+ "name": "increaseTotalValueLocked",
1261
1759
  "outputs": [
1262
1760
  {
1263
- "internalType": "contract NftIdSet",
1264
- "name": "targetNftIdSet",
1265
- "type": "address"
1761
+ "internalType": "Amount",
1762
+ "name": "newBalance",
1763
+ "type": "uint96"
1266
1764
  }
1267
1765
  ],
1268
- "stateMutability": "view",
1766
+ "stateMutability": "nonpayable",
1269
1767
  "type": "function"
1270
1768
  },
1271
1769
  {
1272
1770
  "inputs": [
1273
- {
1274
- "internalType": "NftId",
1275
- "name": "nftId",
1276
- "type": "uint96"
1277
- },
1278
1771
  {
1279
1772
  "internalType": "address",
1280
- "name": "token",
1773
+ "name": "targetLimitHandler",
1281
1774
  "type": "address"
1282
1775
  }
1283
1776
  ],
1284
- "name": "getTotalValueLocked",
1777
+ "name": "initialize",
1778
+ "outputs": [],
1779
+ "stateMutability": "nonpayable",
1780
+ "type": "function"
1781
+ },
1782
+ {
1783
+ "inputs": [],
1784
+ "name": "isConsumingScheduledOp",
1285
1785
  "outputs": [
1286
1786
  {
1287
- "internalType": "Amount",
1288
- "name": "tvlBalanceAmount",
1289
- "type": "uint96"
1787
+ "internalType": "bytes4",
1788
+ "name": "",
1789
+ "type": "bytes4"
1290
1790
  }
1291
1791
  ],
1292
1792
  "stateMutability": "view",
@@ -1295,12 +1795,12 @@
1295
1795
  {
1296
1796
  "inputs": [
1297
1797
  {
1298
- "internalType": "ObjectType",
1299
- "name": "objectType",
1300
- "type": "uint8"
1798
+ "internalType": "NftId",
1799
+ "name": "stakeNftId",
1800
+ "type": "uint96"
1301
1801
  }
1302
1802
  ],
1303
- "name": "hasLifecycle",
1803
+ "name": "isStakeLocked",
1304
1804
  "outputs": [
1305
1805
  {
1306
1806
  "internalType": "bool",
@@ -1324,7 +1824,7 @@
1324
1824
  "type": "uint96"
1325
1825
  }
1326
1826
  ],
1327
- "name": "increaseReserves",
1827
+ "name": "refillRewardReserves",
1328
1828
  "outputs": [
1329
1829
  {
1330
1830
  "internalType": "Amount",
@@ -1339,21 +1839,47 @@
1339
1839
  "inputs": [
1340
1840
  {
1341
1841
  "internalType": "NftId",
1342
- "name": "nftId",
1842
+ "name": "stakeNftId",
1343
1843
  "type": "uint96"
1344
1844
  },
1845
+ {
1846
+ "internalType": "bool",
1847
+ "name": "updateRewards",
1848
+ "type": "bool"
1849
+ }
1850
+ ],
1851
+ "name": "restakeRewards",
1852
+ "outputs": [],
1853
+ "stateMutability": "nonpayable",
1854
+ "type": "function"
1855
+ },
1856
+ {
1857
+ "inputs": [
1858
+ {
1859
+ "internalType": "address",
1860
+ "name": "newAuthority",
1861
+ "type": "address"
1862
+ }
1863
+ ],
1864
+ "name": "setAuthority",
1865
+ "outputs": [],
1866
+ "stateMutability": "nonpayable",
1867
+ "type": "function"
1868
+ },
1869
+ {
1870
+ "inputs": [
1345
1871
  {
1346
1872
  "internalType": "NftId",
1347
1873
  "name": "targetNftId",
1348
1874
  "type": "uint96"
1349
1875
  },
1350
1876
  {
1351
- "internalType": "Amount",
1352
- "name": "amount",
1353
- "type": "uint96"
1877
+ "internalType": "Seconds",
1878
+ "name": "lockingPeriod",
1879
+ "type": "uint40"
1354
1880
  }
1355
1881
  ],
1356
- "name": "increaseStake",
1882
+ "name": "setLockingPeriod",
1357
1883
  "outputs": [],
1358
1884
  "stateMutability": "nonpayable",
1359
1885
  "type": "function"
@@ -1365,94 +1891,147 @@
1365
1891
  "name": "targetNftId",
1366
1892
  "type": "uint96"
1367
1893
  },
1368
- {
1369
- "internalType": "UFixed",
1370
- "name": "stakingRate",
1371
- "type": "uint256"
1372
- },
1373
- {
1374
- "internalType": "address",
1375
- "name": "token",
1376
- "type": "address"
1377
- },
1378
1894
  {
1379
1895
  "internalType": "Amount",
1380
- "name": "amount",
1896
+ "name": "stakeLimitAmount",
1381
1897
  "type": "uint96"
1382
1898
  }
1383
1899
  ],
1384
- "name": "increaseTotalValueLocked",
1900
+ "name": "setMaxStakedAmount",
1385
1901
  "outputs": [
1386
1902
  {
1387
1903
  "internalType": "Amount",
1388
- "name": "newBalance",
1904
+ "name": "oldLimitAmount",
1389
1905
  "type": "uint96"
1906
+ },
1907
+ {
1908
+ "internalType": "Blocknumber",
1909
+ "name": "lastUpdatedIn",
1910
+ "type": "uint40"
1390
1911
  }
1391
1912
  ],
1392
1913
  "stateMutability": "nonpayable",
1393
1914
  "type": "function"
1394
1915
  },
1395
1916
  {
1396
- "inputs": [],
1397
- "name": "isConsumingScheduledOp",
1398
- "outputs": [
1917
+ "inputs": [
1399
1918
  {
1400
- "internalType": "bytes4",
1401
- "name": "",
1402
- "type": "bytes4"
1919
+ "internalType": "NftId",
1920
+ "name": "targetNftId",
1921
+ "type": "uint96"
1922
+ },
1923
+ {
1924
+ "internalType": "UFixed",
1925
+ "name": "rewardRate",
1926
+ "type": "uint160"
1403
1927
  }
1404
1928
  ],
1405
- "stateMutability": "view",
1929
+ "name": "setRewardRate",
1930
+ "outputs": [],
1931
+ "stateMutability": "nonpayable",
1406
1932
  "type": "function"
1407
1933
  },
1408
1934
  {
1409
1935
  "inputs": [
1410
1936
  {
1411
- "internalType": "ObjectType",
1412
- "name": "objectType",
1413
- "type": "uint8"
1937
+ "internalType": "ChainId",
1938
+ "name": "chainId",
1939
+ "type": "uint96"
1414
1940
  },
1415
1941
  {
1416
- "internalType": "StateId",
1417
- "name": "fromId",
1418
- "type": "uint8"
1942
+ "internalType": "address",
1943
+ "name": "token",
1944
+ "type": "address"
1419
1945
  },
1420
1946
  {
1421
- "internalType": "StateId",
1422
- "name": "toId",
1423
- "type": "uint8"
1947
+ "internalType": "UFixed",
1948
+ "name": "stakingRate",
1949
+ "type": "uint160"
1424
1950
  }
1425
1951
  ],
1426
- "name": "isValidTransition",
1952
+ "name": "setStakingRate",
1427
1953
  "outputs": [
1428
1954
  {
1429
- "internalType": "bool",
1430
- "name": "",
1431
- "type": "bool"
1955
+ "internalType": "UFixed",
1956
+ "name": "oldStakingRate",
1957
+ "type": "uint160"
1958
+ },
1959
+ {
1960
+ "internalType": "Blocknumber",
1961
+ "name": "lastUpdatedIn",
1962
+ "type": "uint40"
1432
1963
  }
1433
1964
  ],
1434
- "stateMutability": "view",
1965
+ "stateMutability": "nonpayable",
1435
1966
  "type": "function"
1436
1967
  },
1437
1968
  {
1438
1969
  "inputs": [
1439
1970
  {
1440
- "internalType": "NftId",
1441
- "name": "nftId",
1442
- "type": "uint96"
1971
+ "internalType": "address",
1972
+ "name": "reader",
1973
+ "type": "address"
1974
+ }
1975
+ ],
1976
+ "name": "setStakingReader",
1977
+ "outputs": [],
1978
+ "stateMutability": "nonpayable",
1979
+ "type": "function"
1980
+ },
1981
+ {
1982
+ "inputs": [
1983
+ {
1984
+ "internalType": "ObjectType",
1985
+ "name": "targetType",
1986
+ "type": "uint8"
1443
1987
  },
1444
1988
  {
1445
- "internalType": "NftId",
1446
- "name": "targetNftId",
1989
+ "internalType": "bool",
1990
+ "name": "isSupported",
1991
+ "type": "bool"
1992
+ },
1993
+ {
1994
+ "internalType": "bool",
1995
+ "name": "allowNewTargets",
1996
+ "type": "bool"
1997
+ },
1998
+ {
1999
+ "internalType": "bool",
2000
+ "name": "allowCrossChain",
2001
+ "type": "bool"
2002
+ },
2003
+ {
2004
+ "internalType": "Amount",
2005
+ "name": "minStakingAmount",
1447
2006
  "type": "uint96"
1448
2007
  },
1449
2008
  {
1450
2009
  "internalType": "Amount",
1451
- "name": "rewardIncrementAmount",
2010
+ "name": "maxStakingAmount",
1452
2011
  "type": "uint96"
2012
+ },
2013
+ {
2014
+ "internalType": "Seconds",
2015
+ "name": "minLockingPeriod",
2016
+ "type": "uint40"
2017
+ },
2018
+ {
2019
+ "internalType": "Seconds",
2020
+ "name": "maxLockingPeriod",
2021
+ "type": "uint40"
2022
+ },
2023
+ {
2024
+ "internalType": "UFixed",
2025
+ "name": "minRewardRate",
2026
+ "type": "uint160"
2027
+ },
2028
+ {
2029
+ "internalType": "UFixed",
2030
+ "name": "maxRewardRate",
2031
+ "type": "uint160"
1453
2032
  }
1454
2033
  ],
1455
- "name": "restakeRewards",
2034
+ "name": "setSupportInfo",
1456
2035
  "outputs": [],
1457
2036
  "stateMutability": "nonpayable",
1458
2037
  "type": "function"
@@ -1461,11 +2040,11 @@
1461
2040
  "inputs": [
1462
2041
  {
1463
2042
  "internalType": "address",
1464
- "name": "newAuthority",
2043
+ "name": "targetLimitHandler",
1465
2044
  "type": "address"
1466
2045
  }
1467
2046
  ],
1468
- "name": "setAuthority",
2047
+ "name": "setTargetLimitHandler",
1469
2048
  "outputs": [],
1470
2049
  "stateMutability": "nonpayable",
1471
2050
  "type": "function"
@@ -1473,22 +2052,22 @@
1473
2052
  {
1474
2053
  "inputs": [
1475
2054
  {
1476
- "internalType": "uint256",
1477
- "name": "chainId",
1478
- "type": "uint256"
2055
+ "internalType": "NftId",
2056
+ "name": "targetNftId",
2057
+ "type": "uint96"
1479
2058
  },
1480
2059
  {
1481
- "internalType": "address",
1482
- "name": "token",
1483
- "type": "address"
2060
+ "internalType": "Amount",
2061
+ "name": "marginAmount",
2062
+ "type": "uint96"
1484
2063
  },
1485
2064
  {
1486
- "internalType": "UFixed",
1487
- "name": "stakingRate",
1488
- "type": "uint256"
2065
+ "internalType": "Amount",
2066
+ "name": "hardLimitAmount",
2067
+ "type": "uint96"
1489
2068
  }
1490
2069
  ],
1491
- "name": "setStakingRate",
2070
+ "name": "setTargetLimits",
1492
2071
  "outputs": [],
1493
2072
  "stateMutability": "nonpayable",
1494
2073
  "type": "function"
@@ -1496,61 +2075,65 @@
1496
2075
  {
1497
2076
  "inputs": [
1498
2077
  {
1499
- "internalType": "ObjectType",
1500
- "name": "objectType",
1501
- "type": "uint8"
2078
+ "internalType": "NftId",
2079
+ "name": "stakeNftId",
2080
+ "type": "uint96"
1502
2081
  },
1503
2082
  {
1504
- "internalType": "KeyId",
1505
- "name": "id",
1506
- "type": "bytes31"
1507
- }
1508
- ],
1509
- "name": "toKey32",
1510
- "outputs": [
2083
+ "internalType": "bool",
2084
+ "name": "updateRewards",
2085
+ "type": "bool"
2086
+ },
1511
2087
  {
1512
- "internalType": "Key32",
1513
- "name": "",
1514
- "type": "bytes32"
2088
+ "internalType": "bool",
2089
+ "name": "restakeRewards",
2090
+ "type": "bool"
2091
+ },
2092
+ {
2093
+ "internalType": "Seconds",
2094
+ "name": "additionalLockingPeriod",
2095
+ "type": "uint40"
2096
+ },
2097
+ {
2098
+ "internalType": "Amount",
2099
+ "name": "stakeAmount",
2100
+ "type": "uint96"
1515
2101
  }
1516
2102
  ],
1517
- "stateMutability": "pure",
2103
+ "name": "stake",
2104
+ "outputs": [],
2105
+ "stateMutability": "nonpayable",
1518
2106
  "type": "function"
1519
2107
  },
1520
2108
  {
1521
2109
  "inputs": [
1522
2110
  {
1523
2111
  "internalType": "NftId",
1524
- "name": "nftId",
2112
+ "name": "stakeNftId",
1525
2113
  "type": "uint96"
1526
2114
  },
1527
2115
  {
1528
- "internalType": "NftId",
1529
- "name": "targetNftId",
1530
- "type": "uint96"
2116
+ "internalType": "bool",
2117
+ "name": "updateRewards",
2118
+ "type": "bool"
1531
2119
  },
1532
2120
  {
1533
- "internalType": "Amount",
1534
- "name": "maxUnstakeAmount",
1535
- "type": "uint96"
2121
+ "internalType": "bool",
2122
+ "name": "restakeRewards",
2123
+ "type": "bool"
1536
2124
  },
1537
2125
  {
1538
2126
  "internalType": "Amount",
1539
- "name": "maxClaimAmount",
2127
+ "name": "maxUnstakeAmount",
1540
2128
  "type": "uint96"
1541
2129
  }
1542
2130
  ],
1543
- "name": "unstakeUpTo",
2131
+ "name": "unstake",
1544
2132
  "outputs": [
1545
2133
  {
1546
2134
  "internalType": "Amount",
1547
2135
  "name": "unstakedAmount",
1548
2136
  "type": "uint96"
1549
- },
1550
- {
1551
- "internalType": "Amount",
1552
- "name": "claimedAmount",
1553
- "type": "uint96"
1554
2137
  }
1555
2138
  ],
1556
2139
  "stateMutability": "nonpayable",
@@ -1562,45 +2145,29 @@
1562
2145
  "internalType": "NftId",
1563
2146
  "name": "stakeNftId",
1564
2147
  "type": "uint96"
1565
- },
1566
- {
1567
- "components": [
1568
- {
1569
- "internalType": "Timestamp",
1570
- "name": "lockedUntil",
1571
- "type": "uint40"
1572
- }
1573
- ],
1574
- "internalType": "struct IStaking.StakeInfo",
1575
- "name": "stakeInfo",
1576
- "type": "tuple"
1577
2148
  }
1578
2149
  ],
1579
- "name": "update",
2150
+ "name": "updateRewards",
1580
2151
  "outputs": [],
1581
2152
  "stateMutability": "nonpayable",
1582
2153
  "type": "function"
1583
2154
  },
1584
2155
  {
1585
2156
  "inputs": [
1586
- {
1587
- "internalType": "NftId",
1588
- "name": "nftId",
1589
- "type": "uint96"
1590
- },
1591
2157
  {
1592
2158
  "internalType": "NftId",
1593
2159
  "name": "targetNftId",
1594
2160
  "type": "uint96"
1595
- },
2161
+ }
2162
+ ],
2163
+ "name": "updateTargetLimit",
2164
+ "outputs": [
1596
2165
  {
1597
2166
  "internalType": "Amount",
1598
- "name": "rewardIncrementAmount",
2167
+ "name": "stakeLimitAmount",
1599
2168
  "type": "uint96"
1600
2169
  }
1601
2170
  ],
1602
- "name": "updateRewards",
1603
- "outputs": [],
1604
2171
  "stateMutability": "nonpayable",
1605
2172
  "type": "function"
1606
2173
  },
@@ -1612,51 +2179,59 @@
1612
2179
  "type": "uint96"
1613
2180
  },
1614
2181
  {
1615
- "components": [
1616
- {
1617
- "internalType": "ObjectType",
1618
- "name": "objectType",
1619
- "type": "uint8"
1620
- },
1621
- {
1622
- "internalType": "uint256",
1623
- "name": "chainId",
1624
- "type": "uint256"
1625
- },
1626
- {
1627
- "internalType": "Seconds",
1628
- "name": "lockingPeriod",
1629
- "type": "uint40"
1630
- },
1631
- {
1632
- "internalType": "UFixed",
1633
- "name": "rewardRate",
1634
- "type": "uint256"
1635
- }
1636
- ],
1637
- "internalType": "struct IStaking.TargetInfo",
1638
- "name": "targetInfo",
1639
- "type": "tuple"
2182
+ "internalType": "Amount",
2183
+ "name": "dipAmount",
2184
+ "type": "uint96"
2185
+ }
2186
+ ],
2187
+ "name": "withdrawRewardReserves",
2188
+ "outputs": [
2189
+ {
2190
+ "internalType": "Amount",
2191
+ "name": "newReserveBalance",
2192
+ "type": "uint96"
1640
2193
  }
1641
2194
  ],
1642
- "name": "updateTarget",
1643
- "outputs": [],
1644
2195
  "stateMutability": "nonpayable",
1645
2196
  "type": "function"
1646
2197
  }
1647
2198
  ],
1648
- "bytecode": "0x608060405234801561000f575f80fd5b50604051615a96380380615a9683398101604081905261002e91610e22565b33610038816102ae565b50610041610301565b6100a9826001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610080573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a49190610e5a565b610324565b600480546001600160a01b038085166001600160a01b03199283161790925560068054928416929091169190911790556040516100e590610dfe565b604051809103905ff0801580156100fe573d5f803e3d5ffd5b50600580546001600160a01b0319166001600160a01b039290921691909117905560405163efac97cf60e01b815261044d60048201526102a79073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015610172573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101969190610e90565b60405180608001604052806101af6103a160201b60201c565b60ff1681526020016001815260200173__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102299190610eab565b64ffffffffff16815260200173__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af415801561027c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a09190610ecf565b90526103a6565b50506110cf565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b61030e601f5b6001610597565b610318600b610307565b6103226020610307565b565b5f5433906001600160a01b0316811461035f5760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610394576040516361798f2f60e11b81526001600160a01b0383166004820152602401610356565b61039d826102ae565b5050565b600190565b61048a73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601f6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610419573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043d9190610ecf565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a00160408051601f198184030181529190526105d9565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156104d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f59190610ee6565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff9290921691909117905561052d8261099c565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b158015610578575f80fd5b505af115801561058a573d5f803e3d5ffd5b505050505050565b905090565b60ff8281165f9081526001602052604090205416156105b8576105b8610f09565b60ff9182165f908152600160205260409020805460ff191691909216179055565b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015610629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064d9190610f1d565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156106a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c49190610f3d565b156106e7576040516307014a8d60e51b815260ff82166004820152602401610356565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af415801561074d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107719190610f3d565b1561079b57604051633f92eac960e21b81526004810185905260ff83166024820152604401610356565b6107a482610d06565b6107c657604051636cb0978b60e11b815260ff83166004820152602401610356565b5f6107cf610d92565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021762010000600160501b0319166201000063ffffffff851690810263ffffffff60301b1916919091176601000000000000919091021784555f8781526003602052604090209091506001016108588682610ff4565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156108c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ed9190610f1d565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561093b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095f91906110ae565b6040805160ff938416815260ff199290921660208301529184168183015233606082015232608082015290519081900360a00190a1505050505050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015610a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2d9190610f3d565b15610a56576040516366d785a360e11b81526001600160601b0382166004820152602401610356565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac19190610e90565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b729190610e90565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610bff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c239190610e90565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610cb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd49190610ee6565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015610d68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8c9190610f3d565b92915050565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610dda573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105929190610ee6565b61074c8061534a83390190565b6001600160a01b0381168114610e1f575f80fd5b50565b5f8060408385031215610e33575f80fd5b8251610e3e81610e0b565b6020840151909250610e4f81610e0b565b809150509250929050565b5f60208284031215610e6a575f80fd5b8151610e7581610e0b565b9392505050565b6001600160601b0381168114610e1f575f80fd5b5f60208284031215610ea0575f80fd5b8151610e7581610e7c565b5f60208284031215610ebb575f80fd5b815164ffffffffff81168114610e75575f80fd5b5f60208284031215610edf575f80fd5b5051919050565b5f60208284031215610ef6575f80fd5b815163ffffffff81168114610e75575f80fd5b634e487b7160e01b5f52600160045260245ffd5b5f60208284031215610f2d575f80fd5b815160ff81168114610e75575f80fd5b5f60208284031215610f4d575f80fd5b81518015158114610e75575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610f8457607f821691505b602082108103610fa257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610fef57805f5260205f20601f840160051c81016020851015610fcd5750805b601f840160051c820191505b81811015610fec575f8155600101610fd9565b50505b505050565b81516001600160401b0381111561100d5761100d610f5c565b6110218161101b8454610f70565b84610fa8565b6020601f821160018114611053575f831561103c5750848201515b5f19600385901b1c1916600184901b178455610fec565b5f84815260208120601f198516915b828110156110825787850151825560209485019460019092019101611062565b508482101561109f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156110be575f80fd5b815160ff1981168114610e75575f80fd5b61426e806110dc5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c8063828227de11610135578063bf7e214f116100b4578063eb98e8a011610079578063eb98e8a01461074f578063f48016ce14610782578063fb14543214610795578063fb39549c146107c0578063ff86054d146107d3575f80fd5b8063bf7e214f146106a9578063d7537c37146106b9578063dfb7e337146106cc578063e067350f14610711578063e9e96c701461073c575f80fd5b8063a5961b4c116100fa578063a5961b4c14610562578063a8989675146105ee578063b04fa50614610601578063beba11201461066b578063bf1db3f914610696575f80fd5b8063828227de1461048b5780638eaa6ac0146104ce5780638fb36037146104ee57806391a2059f1461050f5780639a7263641461054f575f80fd5b80634b51da0c116101c15780636291423a116101865780636291423a146103e6578063717f1b98146103f757806377f91851146104225780637a9e5e4b146104355780637b21556114610448575f80fd5b80634b51da0c146103685780634f9c1c091461037b57806354f6127f1461038e5780635cce3fa1146103ae57806362841be2146103d3575f80fd5b806330f441991161020757806330f44199146102f95780633861317f1461030c57806338a699a41461031f5780633fbdfe32146103425780634a2101d114610355575f80fd5b806309648a9d146102435780630d35818114610281578063136cfef7146102a65780631807a488146102d15780632df8be9b146102e6575b5f80fd5b61026a610251366004613a07565b5f90815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61026a61028f366004613a2f565b60ff9081165f908152600160205260409020541690565b6102b96102b4366004613a5e565b61084d565b6040516001600160601b039091168152602001610278565b6102e46102df366004613abb565b610934565b005b6102e46102f4366004613abb565b610a2d565b6102e4610307366004613b52565b610a40565b6102e461031a366004613b52565b610be5565b61033261032d366004613a07565b610cee565b6040519015158152602001610278565b6102b9610350366004613b52565b610d7c565b6102e4610363366004613b52565b610f00565b6102e4610376366004613b9a565b610fdc565b610332610389366004613c0c565b611087565b6103a161039c366004613a07565b61111f565b6040516102789190613c55565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610278565b6102e46103e1366004613b9a565b6111c1565b6006546001600160a01b03166103bb565b6102b9610405366004613c0c565b6001600160601b039081165f908152600960205260409020541690565b6102b9610430366004613c7d565b611285565b6102e4610443366004613ccb565b6114e1565b61047d610456366004613ce4565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610278565b6104b9610499366004613c0c565b6001600160601b03165f908152600c602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610278565b6104e16104dc366004613a07565b611555565b6040516102789190613d0e565b6104f6611676565b6040516001600160e01b03199091168152602001610278565b6102b961051d366004613d74565b6001600160601b039182165f908152600d602090815260408083206001600160a01b0394909416835292905220541690565b6102e461055d366004613d9e565b61169a565b6105e1610570366004613a07565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260038552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516102789190613dd1565b6102e46105fc366004613e12565b6116c8565b61065b61060f366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600a845282852054600c90945291909320549284169490841693919091169163ffffffff1690565b6040516102789493929190613e4f565b6102b9610679366004613c0c565b6001600160601b039081165f908152600f60205260409020541690565b6103326106a4366004613a2f565b6117d3565b5f546001600160a01b03166103bb565b6102b96106c7366004613a5e565b61181f565b6106fb6106da366004613c0c565b6001600160601b03165f908152600b602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610278565b6102b961071f366004613c0c565b6001600160601b039081165f908152600a60205260409020541690565b61033261074a366004613e12565b6118a0565b61076261075d366004613e7e565b6118d3565b604080516001600160601b03938416815292909116602083015201610278565b61047d610790366004613ecb565b611b75565b6102b96107a3366004613c0c565b6001600160601b039081165f908152600860205260409020541690565b6102b96107ce366004613c7d565b611bf5565b6108206107e1366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600b9093529220549183169392169164ffffffffff90911690565b604080516001600160601b03948516815293909216602084015264ffffffffff1690820152606001610278565b5f61085a335b5f36611f13565b6001600160601b038084165f908152600a60205260409020541661087e8382612009565b156108bc576040516301a4b29960e11b81526001600160601b0380861660048301528085166024830152821660448201526064015b60405180910390fd5b6001600160601b038085165f908152600a60205260409020546108e091168461208d565b91505f6108ed8584612112565b90507fd3383e52279373b5cfb83f1b6d4bd83e415313626f418a63a24251420d4b96df858585846040516109249493929190613e4f565b60405180910390a1505092915050565b61093d33610853565b610a2973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601f6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156109b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d49190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052610a2460ff90565b6122b2565b5050565b610a3633610853565b610a298282612421565b610a4933610853565b5f610a53846125fd565b6001600160601b038086165f9081526008602090815260408083205460099092529091205492935081169116610b0686610a96610a9085856126bf565b876126bf565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b019190613f0e565b612709565b6001600160601b038086165f90815260086020526040902054610b5d918791610b3491610a909116856126bf565b6001600160601b038089165f90815260096020526040902054610b5891168561208d565b61289f565b6001600160601b038681165f8181526008602090815260409182902054825193845286851691840191909152848416918301919091528683166060830152909116608082015263ffffffff841660a08201527ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99060c0015b60405180910390a1505050505050565b610bee33610853565b5f610bf8846125fd565b6001600160601b038086165f90815260086020526040902054919250610c44918691610c259116856126bf565b6001600160601b038088165f9081526009602052604090205416612709565b6001600160601b038084165f90815260086020526040902054610c8d918591610c6e9116856126bf565b6001600160601b038087165f908152600960205260409020541661289f565b6001600160601b038085165f90815260086020526040908190205490517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f592610ce0928892879291909116908690613e4f565b60405180910390a150505050565b5f8181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610d52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190613f38565b92915050565b5f610d8633610853565b5f610d90856125fd565b6001600160601b038681165f9081526009602052604090819020549051637931c81160e01b815286831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015610e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e279190613f0e565b6001600160601b038087165f90815260086020908152604080832054600990925290912054929450610e6492889291821691610b0191168661208d565b6001600160601b038085165f90815260086020908152604080832054600990925290912054610e9d928792811691610b5891168661208d565b6001600160601b038086165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92610ef0928992879291909116908690613e4f565b60405180910390a1509392505050565b610f0933610853565b5f610f13846125fd565b6001600160601b038086165f90815260086020908152604080832054600990925290912054929350610f5092879291821691610b019116866126bf565b6001600160601b038084165f90815260086020908152604080832054600990925290912054610f89928692811691610b589116866126bf565b6001600160601b038085165f90815260096020526040908190205490517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610ce0928892879291909116908690613e4f565b610fe533610853565b60408051630711349960e31b81526001600160601b03841660048201526020602482018190529151610a299273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af415801561104b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f9190613ef7565b60408051845164ffffffffff16602082015201610a0d565b5f610d7673__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660206040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190613ef7565b5f81815260036020526040902060010180546060919061113e90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461116a90613f51565b80156111b55780601f1061118c576101008083540402835291602001916111b5565b820191905f5260205f20905b81548152906001019060200180831161119857829003601f168201915b50505050509050919050565b6111ca33610853565b60408051630711349960e31b81526001600160601b0384166004820152602060248201819052915161127c9273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af4158015611230573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112549190613ef7565b60408051845164ffffffffff166020820152015b60405160208183030381529060405261292f565b610a2982612cea565b5f61128f33610853565b5f805f61129c8887613050565b9250925092506112ac82866126bf565b604051632c34efe560e11b81526001600160601b0382166004820152602481018990529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90635869dfca90604401602060405180830381865af415801561130e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113329190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f905220549192506113b4916113ae91168461208d565b826126bf565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114659190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4bd4ee2e64e523eeed623045709eb9e7828b3b191c978feb362e5b600c7d4dd9906114cd908b908a908a908a908a90613fb5565b60405180910390a150505050949350505050565b5f5433906001600160a01b031681146115175760405162d1953b60e31b81526001600160a01b03821660048201526024016108b3565b816001600160a01b03163b5f0361154c576040516361798f2f60e11b81526001600160a01b03831660048201526024016108b3565b610a2982613160565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260036020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a082015292835260018101805491928401916115ef90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461161b90613f51565b80156116665780601f1061163d57610100808354040283529160200191611666565b820191905f5260205f20905b81548152906001019060200180831161164957829003601f168201915b5050505050815250509050919050565b5f8054600160a01b900460ff1661168c57505f90565b638fb3603760e01b5b905090565b6116a333610853565b5f9283526007602090815260408085206001600160a01b039094168552929052912055565b60ff8381165f908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561172a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174e9190613f38565b15611771576040516321b9f44760e01b815260ff841660048201526024016108b3565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054166117ce57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016108b3565b505050565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610d37565b5f61182933610853565b6001600160601b038084165f908152600a602052604090205461184d9116836126bf565b90505f61185a8483612112565b90507f15ce01bb869f4f5440b921c09a1c73e043269a1e29f44d11a7a899ed51fa67b8848484846040516118919493929190613e4f565b60405180910390a15092915050565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054165b9392505050565b5f806118de33610853565b5f6118e8876125fd565b6001600160601b038881165f9081526008602052604090819020549051637931c81160e01b815288831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af415801561195b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197f9190613f0e565b6001600160601b038881165f9081526009602052604090819020549051637931c81160e01b815287831660048201529116602482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156119f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a169190613f0e565b6001600160601b038089165f90815260086020526040902054919350611a67918991611a4391168661208d565b6001600160601b03808b165f90815260096020526040902054610b0191168661208d565b6001600160601b038087165f90815260086020526040902054611ab5918891611a9191168661208d565b6001600160601b03808a165f90815260096020526040902054610b5891168661208d565b6001600160601b038088165f90815260086020526040908190205490517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611b08928b92889291909116908690613e4f565b60405180910390a16001600160601b038088165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611b63928b92879291909116908690613e4f565b60405180910390a15094509492505050565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611bd1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613ef7565b5f611bff33610853565b5f805f611c0c8887613050565b925092509250611c1c828661208d565b6040516355205f0f60e01b81526001600160601b03821660048201529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd9690611cae908b9084906355205f0f90602401602060405180830381865af4158015611c85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca99190613ef7565b6131b3565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d219190613ef7565b6040518263ffffffff1660e01b8152600401611d3f91815260200190565b602060405180830381865af4158015611d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7e9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f90522054919250611dfa916113ae91168461208d565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eab9190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517ff9be485b3e2a5d1dc6dadfab8a9962c32cc55ac95a026b980452f8b138723789906114cd908b908a908a908a908a90613fb5565b5f80611f46611f295f546001600160a01b031690565b8630611f3860045f898b613ff6565b611f419161401d565b6131c7565b91509150816120025763ffffffff811615611fdf575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90611fa090889088908890600401614055565b5f604051808303815f87803b158015611fb7575f80fd5b505af1158015611fc9573d5f803e3d5ffd5b50505f805460ff60a01b19169055506120029050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016108b3565b5050505050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015612069573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613f38565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af41580156120ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613f0e565b6001600160601b0382165f908152600c602052604080822054905163010bd26b60e61b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561217e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a29190613f38565b156121cb576040516364692acf60e01b81526001600160601b03841660048201526024016108b3565b506001600160601b038281165f908152600c6020908152604080832054600a83529281902080546001600160601b03191694861694909417909355825163e8b7afe360e01b8152925163ffffffff9092169273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe3926004808401939192918290030181865af4158015612259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227d9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555090565b5f6122bd84836132cf565b5f8581526003602052604090209091506001016122da84826140d8565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561234b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236f9190614193565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156123bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e191906141ae565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610ce0565b6124f573__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601f6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015612494573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b89190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a001611268565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561253c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125609190613f9a565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612598826135ca565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b1580156125e3575f80fd5b505af11580156125f5573d5f803e3d5ffd5b505050505050565b6001600160601b0381165f908152600c60205260409081902054905163010bd26b60e61b815263ffffffff909116600482018190529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561266d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126919190613f38565b156126ba57604051631f7e16df60e01b81526001600160601b03831660048201526024016108b3565b919050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044016120d3565b6001600160601b038381165f90815260086020908152604080832080546001600160601b031990811688871617909155600983529281902080549093169385169390931790915581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015612799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bd91906141c9565b600b5f856001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555050565b6001600160601b038381165f90815260086020908152604080832080546001600160601b0319908116888716179091556009835292819020805490931693851693909317909155815163e8b7afe360e01b8152915173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe39260048083019391928290030181865af4158015612846573d5f803e3d5ffd5b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561297f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a39190614193565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156129f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1a9190613f38565b15612a3d576040516307014a8d60e51b815260ff821660048201526024016108b3565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac79190613f38565b15612af157604051633f92eac960e21b81526004810185905260ff831660248201526044016108b3565b612afa826117d3565b612b1c57604051636cb0978b60e11b815260ff831660048201526024016108b3565b5f612b256138de565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b919091021784555f878152600360205260409020909150600101612baf86826140d8565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c449190614193565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb691906141ae565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a001610bd5565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015612d57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7b9190613f38565b15612da4576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0f9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f7191906141c9565b600b5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301e9190613f9a565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b6001600160601b0382165f9081526010602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190529190819073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156130c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e69190613f38565b1561310f576040516362540e0360e11b81526001600160601b03861660048201526024016108b3565b50506001600160601b039283165f818152600d602090815260408083206001600160a01b0390961680845295825280832054938352600e825280832095835294905292909220549093918316921690565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f6118cc8383670de0b6b3a764000061394a565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161323591906141e4565b5f60405180830381855afa9150503d805f811461326d576040519150601f19603f3d011682016040523d82523d5f602084013e613272565b606091505b509150915081156132c45760408151106132a4578080602001905181019061329a91906141fa565b90945092506132c4565b60208151106132c457808060200190518101906132c19190613f38565b93505b505094509492505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190613f38565b156133665760405163093b89e160e11b8152600481018490526024016108b3565b505f82815260036020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156133dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134009190613f38565b156134215760405163566ebf7960e01b8152600481018690526024016108b3565b60ff8085161461359c57815461343b9060ff1682866116c8565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156134bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134e19190614193565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561352f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061355391906141ae565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b6135a46138de565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015613637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061365b9190613f38565b15613684576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561377c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561382d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138519190613f0e565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613926573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116959190613f9a565b5f80805f19858709858702925082811083820303915050805f036139815783828161397757613977614224565b04925050506118cc565b8084116139a057604051629540d960e61b815260040160405180910390fd5b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f60208284031215613a17575f80fd5b5035919050565b60ff81168114613a2c575f80fd5b50565b5f60208284031215613a3f575f80fd5b81356118cc81613a1e565b6001600160601b0381168114613a2c575f80fd5b5f8060408385031215613a6f575f80fd5b8235613a7a81613a4a565b91506020830135613a8a81613a4a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b64ffffffffff81168114613a2c575f80fd5b5f8082840360a0811215613acd575f80fd5b8335613ad881613a4a565b92506080601f1982011215613aeb575f80fd5b506040516080810167ffffffffffffffff81118282101715613b0f57613b0f613a95565b6040526020840135613b2081613a1e565b8152604084013560208201526060840135613b3a81613aa9565b60408201526080939093013560608401525092909150565b5f805f60608486031215613b64575f80fd5b8335613b6f81613a4a565b92506020840135613b7f81613a4a565b91506040840135613b8f81613a4a565b809150509250925092565b5f808284036040811215613bac575f80fd5b8335613bb781613a4a565b92506020601f1982011215613bca575f80fd5b506040516020810167ffffffffffffffff81118282101715613bee57613bee613a95565b6040526020840135613bff81613aa9565b8152919491935090915050565b5f60208284031215613c1c575f80fd5b81356118cc81613a4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6118cc6020830184613c27565b80356001600160a01b03811681146126ba575f80fd5b5f805f8060808587031215613c90575f80fd5b8435613c9b81613a4a565b935060208501359250613cb060408601613c67565b91506060850135613cc081613a4a565b939692955090935050565b5f60208284031215613cdb575f80fd5b6118cc82613c67565b5f8060408385031215613cf5575f80fd5b82359150613d0560208401613c67565b90509250929050565b60208152613d5360208201835160ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f602083015160a080840152613d6c60c0840182613c27565b949350505050565b5f8060408385031215613d85575f80fd5b8235613d9081613a4a565b9150613d0560208401613c67565b5f805f60608486031215613db0575f80fd5b83359250613dc060208501613c67565b929592945050506040919091013590565b60808101610d76828460ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f805f60608486031215613e24575f80fd5b8335613e2f81613a1e565b92506020840135613e3f81613a1e565b91506040840135613b8f81613a1e565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b5f805f8060808587031215613e91575f80fd5b8435613e9c81613a4a565b93506020850135613eac81613a4a565b92506040850135613cb081613a4a565b60ff1981168114613a2c575f80fd5b5f8060408385031215613edc575f80fd5b8235613ee781613a1e565b91506020830135613a8a81613ebc565b5f60208284031215613f07575f80fd5b5051919050565b5f60208284031215613f1e575f80fd5b81516118cc81613a4a565b805180151581146126ba575f80fd5b5f60208284031215613f48575f80fd5b6118cc82613f29565b600181811c90821680613f6557607f821691505b602082108103613f8357634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff81168114613a2c575f80fd5b5f60208284031215613faa575f80fd5b81516118cc81613f89565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015263ffffffff909116608082015260a00190565b5f8085851115614004575f80fd5b83861115614010575f80fd5b5050820193919092039150565b80356001600160e01b0319811690600484101561404e576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156117ce57805f5260205f20601f840160051c810160208510156140b95750805b601f840160051c820191505b81811015612002575f81556001016140c5565b815167ffffffffffffffff8111156140f2576140f2613a95565b614106816141008454613f51565b84614094565b6020601f821160018114614138575f83156141215750848201515b5f19600385901b1c1916600184901b178455612002565b5f84815260208120601f198516915b828110156141675787850151825560209485019460019092019101614147565b508482101561418457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156141a3575f80fd5b81516118cc81613a1e565b5f602082840312156141be575f80fd5b81516118cc81613ebc565b5f602082840312156141d9575f80fd5b81516118cc81613aa9565b5f82518060208501845e5f920191825250919050565b5f806040838503121561420b575f80fd5b61421483613f29565b91506020830151613a8a81613f89565b634e487b7160e01b5f52601260045260245ffdfea264697066735822122047223144a17d89fdc61109889f54fed83720cb69e4f9ddb6145b4a28a749ecd164736f6c634300081a00336080604052348015600e575f80fd5b50600480546001600160a01b0319163317905561071e8061002e5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c80638de1d14e116100635780638de1d14e1461010f578063954a317214610122578063996f8d9114610135578063ddfe867f1461014b578063f2b2978114610153575f80fd5b8063042f9da3146100945780634f9c1c09146100a9578063706e9ba9146100d1578063777d1857146100fc575b5f80fd5b6100a76100a2366004610627565b610166565b005b6100bc6100b736600461065e565b610221565b60405190151581526020015b60405180910390f35b6100e46100df366004610680565b6102ab565b6040516001600160601b0390911681526020016100c8565b6100bc61010a36600461065e565b610327565b6100a761011d36600461065e565b610370565b6100a7610130366004610627565b610491565b61013d61051b565b6040519081526020016100c8565b61013d610595565b6100e4610161366004610680565b6105cf565b6004546001600160a01b031633146101ae5760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b604051631461054360e31b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015b5f6040518083038186803b158015610207575f80fd5b505af4158015610219573d5f803e3d5ffd5b505050505050565b604051632bfdd6b960e01b81525f600482018190526001600160601b03831660248301529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b9906044015b602060405180830381865af4158015610281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a59190610697565b92915050565b60405163e797d89960e01b81525f60048201819052602482018390529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044015b602060405180830381865af4158015610303573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a591906106b6565b604051632bfdd6b960e01b8152600260048201526001600160601b03821660248201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b990604401610266565b6004546001600160a01b031633146103b35760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b604051631461054360e31b81525f60048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015f6040518083038186803b15801561040a575f80fd5b505af415801561041c573d5f803e3d5ffd5b5050604051631461054360e31b8152600260048201526001600160601b038416602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__925063a3082a1891506044015f6040518083038186803b158015610478575f80fd5b505af415801561048a573d5f803e3d5ffd5b5050505050565b6004546001600160a01b031633146104d45760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b60405163539eabab60e11b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a73d5756906044016101f1565b604051638b6233dd60e01b8152600260048201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd906024015b602060405180830381865af415801561056c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059091906106d1565b905090565b604051638b6233dd60e01b81525f600482018190529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd90602401610551565b60405163e797d89960e01b815260026004820152602481018290525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044016102e8565b6001600160601b0381168114610624575f80fd5b50565b5f8060408385031215610638575f80fd5b823561064381610610565b9150602083013561065381610610565b809150509250929050565b5f6020828403121561066e575f80fd5b813561067981610610565b9392505050565b5f60208284031215610690575f80fd5b5035919050565b5f602082840312156106a7575f80fd5b81518015158114610679575f80fd5b5f602082840312156106c6575f80fd5b815161067981610610565b5f602082840312156106e1575f80fd5b505191905056fea2646970667358221220e8bc5ac500c1408e0c0f00e06268f51ab5040a53dc7c97afd725ebecb8bafae164736f6c634300081a0033",
1649
- "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061023f575f3560e01c8063828227de11610135578063bf7e214f116100b4578063eb98e8a011610079578063eb98e8a01461074f578063f48016ce14610782578063fb14543214610795578063fb39549c146107c0578063ff86054d146107d3575f80fd5b8063bf7e214f146106a9578063d7537c37146106b9578063dfb7e337146106cc578063e067350f14610711578063e9e96c701461073c575f80fd5b8063a5961b4c116100fa578063a5961b4c14610562578063a8989675146105ee578063b04fa50614610601578063beba11201461066b578063bf1db3f914610696575f80fd5b8063828227de1461048b5780638eaa6ac0146104ce5780638fb36037146104ee57806391a2059f1461050f5780639a7263641461054f575f80fd5b80634b51da0c116101c15780636291423a116101865780636291423a146103e6578063717f1b98146103f757806377f91851146104225780637a9e5e4b146104355780637b21556114610448575f80fd5b80634b51da0c146103685780634f9c1c091461037b57806354f6127f1461038e5780635cce3fa1146103ae57806362841be2146103d3575f80fd5b806330f441991161020757806330f44199146102f95780633861317f1461030c57806338a699a41461031f5780633fbdfe32146103425780634a2101d114610355575f80fd5b806309648a9d146102435780630d35818114610281578063136cfef7146102a65780631807a488146102d15780632df8be9b146102e6575b5f80fd5b61026a610251366004613a07565b5f90815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61026a61028f366004613a2f565b60ff9081165f908152600160205260409020541690565b6102b96102b4366004613a5e565b61084d565b6040516001600160601b039091168152602001610278565b6102e46102df366004613abb565b610934565b005b6102e46102f4366004613abb565b610a2d565b6102e4610307366004613b52565b610a40565b6102e461031a366004613b52565b610be5565b61033261032d366004613a07565b610cee565b6040519015158152602001610278565b6102b9610350366004613b52565b610d7c565b6102e4610363366004613b52565b610f00565b6102e4610376366004613b9a565b610fdc565b610332610389366004613c0c565b611087565b6103a161039c366004613a07565b61111f565b6040516102789190613c55565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610278565b6102e46103e1366004613b9a565b6111c1565b6006546001600160a01b03166103bb565b6102b9610405366004613c0c565b6001600160601b039081165f908152600960205260409020541690565b6102b9610430366004613c7d565b611285565b6102e4610443366004613ccb565b6114e1565b61047d610456366004613ce4565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610278565b6104b9610499366004613c0c565b6001600160601b03165f908152600c602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610278565b6104e16104dc366004613a07565b611555565b6040516102789190613d0e565b6104f6611676565b6040516001600160e01b03199091168152602001610278565b6102b961051d366004613d74565b6001600160601b039182165f908152600d602090815260408083206001600160a01b0394909416835292905220541690565b6102e461055d366004613d9e565b61169a565b6105e1610570366004613a07565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260038552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516102789190613dd1565b6102e46105fc366004613e12565b6116c8565b61065b61060f366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600a845282852054600c90945291909320549284169490841693919091169163ffffffff1690565b6040516102789493929190613e4f565b6102b9610679366004613c0c565b6001600160601b039081165f908152600f60205260409020541690565b6103326106a4366004613a2f565b6117d3565b5f546001600160a01b03166103bb565b6102b96106c7366004613a5e565b61181f565b6106fb6106da366004613c0c565b6001600160601b03165f908152600b602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610278565b6102b961071f366004613c0c565b6001600160601b039081165f908152600a60205260409020541690565b61033261074a366004613e12565b6118a0565b61076261075d366004613e7e565b6118d3565b604080516001600160601b03938416815292909116602083015201610278565b61047d610790366004613ecb565b611b75565b6102b96107a3366004613c0c565b6001600160601b039081165f908152600860205260409020541690565b6102b96107ce366004613c7d565b611bf5565b6108206107e1366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600b9093529220549183169392169164ffffffffff90911690565b604080516001600160601b03948516815293909216602084015264ffffffffff1690820152606001610278565b5f61085a335b5f36611f13565b6001600160601b038084165f908152600a60205260409020541661087e8382612009565b156108bc576040516301a4b29960e11b81526001600160601b0380861660048301528085166024830152821660448201526064015b60405180910390fd5b6001600160601b038085165f908152600a60205260409020546108e091168461208d565b91505f6108ed8584612112565b90507fd3383e52279373b5cfb83f1b6d4bd83e415313626f418a63a24251420d4b96df858585846040516109249493929190613e4f565b60405180910390a1505092915050565b61093d33610853565b610a2973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601f6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156109b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d49190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052610a2460ff90565b6122b2565b5050565b610a3633610853565b610a298282612421565b610a4933610853565b5f610a53846125fd565b6001600160601b038086165f9081526008602090815260408083205460099092529091205492935081169116610b0686610a96610a9085856126bf565b876126bf565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b019190613f0e565b612709565b6001600160601b038086165f90815260086020526040902054610b5d918791610b3491610a909116856126bf565b6001600160601b038089165f90815260096020526040902054610b5891168561208d565b61289f565b6001600160601b038681165f8181526008602090815260409182902054825193845286851691840191909152848416918301919091528683166060830152909116608082015263ffffffff841660a08201527ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99060c0015b60405180910390a1505050505050565b610bee33610853565b5f610bf8846125fd565b6001600160601b038086165f90815260086020526040902054919250610c44918691610c259116856126bf565b6001600160601b038088165f9081526009602052604090205416612709565b6001600160601b038084165f90815260086020526040902054610c8d918591610c6e9116856126bf565b6001600160601b038087165f908152600960205260409020541661289f565b6001600160601b038085165f90815260086020526040908190205490517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f592610ce0928892879291909116908690613e4f565b60405180910390a150505050565b5f8181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610d52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190613f38565b92915050565b5f610d8633610853565b5f610d90856125fd565b6001600160601b038681165f9081526009602052604090819020549051637931c81160e01b815286831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015610e03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e279190613f0e565b6001600160601b038087165f90815260086020908152604080832054600990925290912054929450610e6492889291821691610b0191168661208d565b6001600160601b038085165f90815260086020908152604080832054600990925290912054610e9d928792811691610b5891168661208d565b6001600160601b038086165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92610ef0928992879291909116908690613e4f565b60405180910390a1509392505050565b610f0933610853565b5f610f13846125fd565b6001600160601b038086165f90815260086020908152604080832054600990925290912054929350610f5092879291821691610b019116866126bf565b6001600160601b038084165f90815260086020908152604080832054600990925290912054610f89928692811691610b589116866126bf565b6001600160601b038085165f90815260096020526040908190205490517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610ce0928892879291909116908690613e4f565b610fe533610853565b60408051630711349960e31b81526001600160601b03841660048201526020602482018190529151610a299273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af415801561104b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f9190613ef7565b60408051845164ffffffffff16602082015201610a0d565b5f610d7673__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660206040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190613ef7565b5f81815260036020526040902060010180546060919061113e90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461116a90613f51565b80156111b55780601f1061118c576101008083540402835291602001916111b5565b820191905f5260205f20905b81548152906001019060200180831161119857829003601f168201915b50505050509050919050565b6111ca33610853565b60408051630711349960e31b81526001600160601b0384166004820152602060248201819052915161127c9273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af4158015611230573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112549190613ef7565b60408051845164ffffffffff166020820152015b60405160208183030381529060405261292f565b610a2982612cea565b5f61128f33610853565b5f805f61129c8887613050565b9250925092506112ac82866126bf565b604051632c34efe560e11b81526001600160601b0382166004820152602481018990529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90635869dfca90604401602060405180830381865af415801561130e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113329190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f905220549192506113b4916113ae91168461208d565b826126bf565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114659190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4bd4ee2e64e523eeed623045709eb9e7828b3b191c978feb362e5b600c7d4dd9906114cd908b908a908a908a908a90613fb5565b60405180910390a150505050949350505050565b5f5433906001600160a01b031681146115175760405162d1953b60e31b81526001600160a01b03821660048201526024016108b3565b816001600160a01b03163b5f0361154c576040516361798f2f60e11b81526001600160a01b03831660048201526024016108b3565b610a2982613160565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260036020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a082015292835260018101805491928401916115ef90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461161b90613f51565b80156116665780601f1061163d57610100808354040283529160200191611666565b820191905f5260205f20905b81548152906001019060200180831161164957829003601f168201915b5050505050815250509050919050565b5f8054600160a01b900460ff1661168c57505f90565b638fb3603760e01b5b905090565b6116a333610853565b5f9283526007602090815260408085206001600160a01b039094168552929052912055565b60ff8381165f908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561172a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174e9190613f38565b15611771576040516321b9f44760e01b815260ff841660048201526024016108b3565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054166117ce57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016108b3565b505050565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610d37565b5f61182933610853565b6001600160601b038084165f908152600a602052604090205461184d9116836126bf565b90505f61185a8483612112565b90507f15ce01bb869f4f5440b921c09a1c73e043269a1e29f44d11a7a899ed51fa67b8848484846040516118919493929190613e4f565b60405180910390a15092915050565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054165b9392505050565b5f806118de33610853565b5f6118e8876125fd565b6001600160601b038881165f9081526008602052604090819020549051637931c81160e01b815288831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af415801561195b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197f9190613f0e565b6001600160601b038881165f9081526009602052604090819020549051637931c81160e01b815287831660048201529116602482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156119f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a169190613f0e565b6001600160601b038089165f90815260086020526040902054919350611a67918991611a4391168661208d565b6001600160601b03808b165f90815260096020526040902054610b0191168661208d565b6001600160601b038087165f90815260086020526040902054611ab5918891611a9191168661208d565b6001600160601b03808a165f90815260096020526040902054610b5891168661208d565b6001600160601b038088165f90815260086020526040908190205490517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611b08928b92889291909116908690613e4f565b60405180910390a16001600160601b038088165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611b63928b92879291909116908690613e4f565b60405180910390a15094509492505050565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611bd1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613ef7565b5f611bff33610853565b5f805f611c0c8887613050565b925092509250611c1c828661208d565b6040516355205f0f60e01b81526001600160601b03821660048201529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd9690611cae908b9084906355205f0f90602401602060405180830381865af4158015611c85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca99190613ef7565b6131b3565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d219190613ef7565b6040518263ffffffff1660e01b8152600401611d3f91815260200190565b602060405180830381865af4158015611d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7e9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f90522054919250611dfa916113ae91168461208d565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eab9190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517ff9be485b3e2a5d1dc6dadfab8a9962c32cc55ac95a026b980452f8b138723789906114cd908b908a908a908a908a90613fb5565b5f80611f46611f295f546001600160a01b031690565b8630611f3860045f898b613ff6565b611f419161401d565b6131c7565b91509150816120025763ffffffff811615611fdf575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90611fa090889088908890600401614055565b5f604051808303815f87803b158015611fb7575f80fd5b505af1158015611fc9573d5f803e3d5ffd5b50505f805460ff60a01b19169055506120029050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016108b3565b5050505050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015612069573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613f38565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af41580156120ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc9190613f0e565b6001600160601b0382165f908152600c602052604080822054905163010bd26b60e61b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561217e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a29190613f38565b156121cb576040516364692acf60e01b81526001600160601b03841660048201526024016108b3565b506001600160601b038281165f908152600c6020908152604080832054600a83529281902080546001600160601b03191694861694909417909355825163e8b7afe360e01b8152925163ffffffff9092169273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe3926004808401939192918290030181865af4158015612259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227d9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555090565b5f6122bd84836132cf565b5f8581526003602052604090209091506001016122da84826140d8565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561234b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236f9190614193565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156123bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e191906141ae565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610ce0565b6124f573__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601f6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015612494573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b89190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a001611268565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561253c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125609190613f9a565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612598826135ca565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b1580156125e3575f80fd5b505af11580156125f5573d5f803e3d5ffd5b505050505050565b6001600160601b0381165f908152600c60205260409081902054905163010bd26b60e61b815263ffffffff909116600482018190529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561266d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126919190613f38565b156126ba57604051631f7e16df60e01b81526001600160601b03831660048201526024016108b3565b919050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044016120d3565b6001600160601b038381165f90815260086020908152604080832080546001600160601b031990811688871617909155600983529281902080549093169385169390931790915581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015612799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bd91906141c9565b600b5f856001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555050565b6001600160601b038381165f90815260086020908152604080832080546001600160601b0319908116888716179091556009835292819020805490931693851693909317909155815163e8b7afe360e01b8152915173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe39260048083019391928290030181865af4158015612846573d5f803e3d5ffd5b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561297f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a39190614193565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156129f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1a9190613f38565b15612a3d576040516307014a8d60e51b815260ff821660048201526024016108b3565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac79190613f38565b15612af157604051633f92eac960e21b81526004810185905260ff831660248201526044016108b3565b612afa826117d3565b612b1c57604051636cb0978b60e11b815260ff831660048201526024016108b3565b5f612b256138de565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b919091021784555f878152600360205260409020909150600101612baf86826140d8565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c449190614193565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb691906141ae565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a001610bd5565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015612d57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7b9190613f38565b15612da4576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0f9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f7191906141c9565b600b5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301e9190613f9a565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b6001600160601b0382165f9081526010602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190529190819073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156130c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e69190613f38565b1561310f576040516362540e0360e11b81526001600160601b03861660048201526024016108b3565b50506001600160601b039283165f818152600d602090815260408083206001600160a01b0390961680845295825280832054938352600e825280832095835294905292909220549093918316921690565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f6118cc8383670de0b6b3a764000061394a565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161323591906141e4565b5f60405180830381855afa9150503d805f811461326d576040519150601f19603f3d011682016040523d82523d5f602084013e613272565b606091505b509150915081156132c45760408151106132a4578080602001905181019061329a91906141fa565b90945092506132c4565b60208151106132c457808060200190518101906132c19190613f38565b93505b505094509492505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190613f38565b156133665760405163093b89e160e11b8152600481018490526024016108b3565b505f82815260036020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156133dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134009190613f38565b156134215760405163566ebf7960e01b8152600481018690526024016108b3565b60ff8085161461359c57815461343b9060ff1682866116c8565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156134bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134e19190614193565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561352f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061355391906141ae565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b6135a46138de565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015613637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061365b9190613f38565b15613684576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561377c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561382d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138519190613f0e565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613926573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116959190613f9a565b5f80805f19858709858702925082811083820303915050805f036139815783828161397757613977614224565b04925050506118cc565b8084116139a057604051629540d960e61b815260040160405180910390fd5b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f60208284031215613a17575f80fd5b5035919050565b60ff81168114613a2c575f80fd5b50565b5f60208284031215613a3f575f80fd5b81356118cc81613a1e565b6001600160601b0381168114613a2c575f80fd5b5f8060408385031215613a6f575f80fd5b8235613a7a81613a4a565b91506020830135613a8a81613a4a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b64ffffffffff81168114613a2c575f80fd5b5f8082840360a0811215613acd575f80fd5b8335613ad881613a4a565b92506080601f1982011215613aeb575f80fd5b506040516080810167ffffffffffffffff81118282101715613b0f57613b0f613a95565b6040526020840135613b2081613a1e565b8152604084013560208201526060840135613b3a81613aa9565b60408201526080939093013560608401525092909150565b5f805f60608486031215613b64575f80fd5b8335613b6f81613a4a565b92506020840135613b7f81613a4a565b91506040840135613b8f81613a4a565b809150509250925092565b5f808284036040811215613bac575f80fd5b8335613bb781613a4a565b92506020601f1982011215613bca575f80fd5b506040516020810167ffffffffffffffff81118282101715613bee57613bee613a95565b6040526020840135613bff81613aa9565b8152919491935090915050565b5f60208284031215613c1c575f80fd5b81356118cc81613a4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6118cc6020830184613c27565b80356001600160a01b03811681146126ba575f80fd5b5f805f8060808587031215613c90575f80fd5b8435613c9b81613a4a565b935060208501359250613cb060408601613c67565b91506060850135613cc081613a4a565b939692955090935050565b5f60208284031215613cdb575f80fd5b6118cc82613c67565b5f8060408385031215613cf5575f80fd5b82359150613d0560208401613c67565b90509250929050565b60208152613d5360208201835160ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f602083015160a080840152613d6c60c0840182613c27565b949350505050565b5f8060408385031215613d85575f80fd5b8235613d9081613a4a565b9150613d0560208401613c67565b5f805f60608486031215613db0575f80fd5b83359250613dc060208501613c67565b929592945050506040919091013590565b60808101610d76828460ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f805f60608486031215613e24575f80fd5b8335613e2f81613a1e565b92506020840135613e3f81613a1e565b91506040840135613b8f81613a1e565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b5f805f8060808587031215613e91575f80fd5b8435613e9c81613a4a565b93506020850135613eac81613a4a565b92506040850135613cb081613a4a565b60ff1981168114613a2c575f80fd5b5f8060408385031215613edc575f80fd5b8235613ee781613a1e565b91506020830135613a8a81613ebc565b5f60208284031215613f07575f80fd5b5051919050565b5f60208284031215613f1e575f80fd5b81516118cc81613a4a565b805180151581146126ba575f80fd5b5f60208284031215613f48575f80fd5b6118cc82613f29565b600181811c90821680613f6557607f821691505b602082108103613f8357634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff81168114613a2c575f80fd5b5f60208284031215613faa575f80fd5b81516118cc81613f89565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015263ffffffff909116608082015260a00190565b5f8085851115614004575f80fd5b83861115614010575f80fd5b5050820193919092039150565b80356001600160e01b0319811690600484101561404e576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156117ce57805f5260205f20601f840160051c810160208510156140b95750805b601f840160051c820191505b81811015612002575f81556001016140c5565b815167ffffffffffffffff8111156140f2576140f2613a95565b614106816141008454613f51565b84614094565b6020601f821160018114614138575f83156141215750848201515b5f19600385901b1c1916600184901b178455612002565b5f84815260208120601f198516915b828110156141675787850151825560209485019460019092019101614147565b508482101561418457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156141a3575f80fd5b81516118cc81613a1e565b5f602082840312156141be575f80fd5b81516118cc81613ebc565b5f602082840312156141d9575f80fd5b81516118cc81613aa9565b5f82518060208501845e5f920191825250919050565b5f806040838503121561420b575f80fd5b61421483613f29565b91506020830151613a8a81613f89565b634e487b7160e01b5f52601260045260245ffdfea264697066735822122047223144a17d89fdc61109889f54fed83720cb69e4f9ddb6145b4a28a749ecd164736f6c634300081a0033",
2199
+ "bytecode": "0x608060405234801561000f575f80fd5b50604051617db3380380617db383398101604081905261002e916116ae565b3361003881610126565b506100a1826001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610078573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c91906116e6565b610179565b600180546001600160a01b038085166001600160a01b03199283161790925560038054928416929091169190911790556040516100dd9061168a565b604051809103905ff0801580156100f6573d5f803e3d5ffd5b50600480546001600160a01b0319166001600160a01b039290921691909117905561011f6101f6565b50506117b2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f5433906001600160a01b031681146101b45760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f036101e9576040516361798f2f60e11b81526001600160a01b03831660048201526024016101ab565b6101f282610126565b5050565b6104966001805f600173__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026a9190611715565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156102b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d59190611715565b73__$71e292c09eace9601b3e21e68a1278917a$__634bd9351b6040518163ffffffff1660e01b8152600401602060405180830381865af415801561031c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103409190611742565b73__$71e292c09eace9601b3e21e68a1278917a$__63f27c3bf66040518163ffffffff1660e01b8152600401602060405180830381865af4158015610387573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ab9190611742565b73__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156103f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041691906116e6565b604051631488c84560e01b8152600f6004820152600119602482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90631488c845906044015b602060405180830381865af415801561046d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049191906116e6565b61085f565b60405163efac97cf60e01b815261044d60048201526105eb9073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af41580156104e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050d9190611715565b600173__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610556573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057a9190611742565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af41580156105c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e591906116e6565b5f610d18565b61085d600a604051632620eecb60e11b815269152d02c7e14af680000060048201526001908190819073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd9690602401602060405180830381865af415801561064e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106729190611715565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156106b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106dd9190611715565b73__$71e292c09eace9601b3e21e68a1278917a$__634bd9351b6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610724573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107489190611742565b73__$71e292c09eace9601b3e21e68a1278917a$__63f27c3bf66040518163ffffffff1660e01b8152600401602060405180830381865af415801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b39190611742565b73__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156107fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081e91906116e6565b604051631488c84560e01b8152600360048201525f19602482015273__$bf7bc340cbb9229ef1de2c568356e67902$__90631488c84590604401610452565b565b60405163037c8cb160e51b815260ff8b16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156108af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d3919061175d565b156108f657604051633c00d02760e01b815260ff8b1660048201526024016101ab565b610900868661146d565b1561093057604051622a505160e91b81526001600160601b038088166004830152861660248201526044016101ab565b61093a84846114f9565b15610969576040516338157c8960e21b815264ffffffffff8086166004830152841660248201526044016101ab565b6001600160a01b0380821690831611156109a957604051638ae671e360e01b81526001600160a01b038084166004830152821660248201526044016101ab565b5f60055f8c60ff1660ff1681526020019081526020015f2060020160149054906101000a900464ffffffffff1690508960055f8d60ff1660ff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508860055f8d60ff1660ff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055508760055f8d60ff1660ff1681526020019081526020015f205f0160026101000a81548160ff0219169083151502179055508660055f8d60ff1660ff1681526020019081526020015f205f0160036101000a8154816001600160601b0302191690836001600160601b031602179055508560055f8d60ff1660ff1681526020019081526020015f205f01600f6101000a8154816001600160601b0302191690836001600160601b031602179055508460055f8d60ff1660ff1681526020019081526020015f205f01601b6101000a81548164ffffffffff021916908364ffffffffff1602179055508360055f8d60ff1660ff1681526020019081526020015f206001015f6101000a81548164ffffffffff021916908364ffffffffff1602179055508260055f8d60ff1660ff1681526020019081526020015f2060010160056101000a8154816001600160a01b0302191690836001600160a01b031602179055508160055f8d60ff1660ff1681526020019081526020015f206002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c429190611742565b60ff8c165f81815260056020908152604091829020600201805464ffffffffff60a01b1916600160a01b64ffffffffff9687160217905581519283528d1515908301528b15159082015289151560608201526001600160601b03808a166080830152881660a082015286821660c082015285821660e08201526001600160a01b0380861661010083015284166101208201529082166101408201527fb24c8b320e3f99e0aef480e78c342643583880e3f5a1c392a85a4c51f76799f8906101600160405180910390a15050505050505050505050565b8015610dc25760015460035460405163647b8c2f60e01b81526001600160a01b03928316600482015290821660248201526001600160601b038716604482015260ff8616606482015264ffffffffff8516608482015290831660a482015273__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063647b8c2f9060c4015f6040518083038186803b158015610dab575f80fd5b505af4158015610dbd573d5f803e3d5ffd5b505050505b6001600160601b0385165f90815260066020908152604091829020825163bc1b392d60e01b81529251909273__$3bac17678db7ae928afa209f2f44deec9c$__9263bc1b392d926004808401938290030181865af4158015610e26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4a9190611715565b81546001600160601b0319166001600160601b03919091161781556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af4158015610eb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed79190611715565b815f01600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f699190611715565b816001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015610fd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffb9190611715565b600182018054600160601b65ff000000000160c01b0319166c010000000000000000000000006001600160601b039384160260ff60e81b191617600160e81b60ff8916021764ffffffffff60c01b1916600160c01b64ffffffffff8816021790556002820180546001600160a01b0319166001600160a01b0386161790556040516301f8588560e51b8152908716600482015273__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af41580156110c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ec9190611715565b8160020160146101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af415801561115b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117f9190611742565b815f0160186101000a81548164ffffffffff021916908364ffffffffff1602179055506113a260075f886001600160601b03166001600160601b031681526020019081526020015f208773__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96600273__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561122c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112509190611715565b60405163046e44af60e11b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af41580156112a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cb919061177c565b6112d59190611793565b6040518263ffffffff1660e01b81526004016112f391815260200190565b602060405180830381865af415801561130e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113329190611715565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139d9190611715565b611541565b600480546040516346f0e8a760e11b81526001600160601b038916928101929092526001600160a01b031690638de1d14e906024015f604051808303815f87803b1580156113ee575f80fd5b505af1158015611400573d5f803e3d5ffd5b5050604080516001600160601b038a16815260ff8916602082015264ffffffffff8816818301526001600160a01b038716606082015290517f086dbed771133d4ebbe0285c0df8231e94a664efbae4bd66c0e3e9f11c7fd0f09350908190036080019150a1505050505050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044015b602060405180830381865af41580156114ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f2919061175d565b9392505050565b6040516383ffcdef60e01b815264ffffffffff8084166004830152821660248201525f9073__$71e292c09eace9601b3e21e68a1278917a$__906383ffcdef906044016114b3565b83546001600160601b038381166001600160c01b03198316176c010000000000000000000000009184169190910217855560408051639fa6a6e360e01b81529051600160c01b90920464ffffffffff169173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af41580156115d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f49190611742565b855464ffffffffff918216600160c01b0264ffffffffff60c01b1982168117808955604080516001600160601b038a811682529384169484169490941760208501526c010000000000000000000000009091049091169082015290821660608201527f05c35323706f609643b5b81348a27fedbbaf7ae364b4d43f69a8853c024f20479060800160405180910390a15050505050565b61074c8061766783390190565b6001600160a01b03811681146116ab575f80fd5b50565b5f80604083850312156116bf575f80fd5b82516116ca81611697565b60208401519092506116db81611697565b809150509250929050565b5f602082840312156116f6575f80fd5b81516114f281611697565b6001600160601b03811681146116ab575f80fd5b5f60208284031215611725575f80fd5b81516114f281611701565b64ffffffffff811681146116ab575f80fd5b5f60208284031215611752575f80fd5b81516114f281611730565b5f6020828403121561176d575f80fd5b815180151581146114f2575f80fd5b5f6020828403121561178c575f80fd5b5051919050565b5f826117ad57634e487b7160e01b5f52601260045260245ffd5b500490565b615ea8806117bf5f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80636291423a11610135578063b4485022116100b4578063d44f8a4b11610079578063d44f8a4b1461094c578063de0eb85f1461095f578063e8ce883d14610972578063ea48ce9b14610985578063f55a7d1e14610998575f80fd5b8063b448502214610804578063b9a5c03014610903578063bac475b714610916578063bf7e214f14610929578063c4d66de814610939575f80fd5b80638fb36037116100fa5780638fb36037146106745780639a148b7f14610695578063a6bc7cb8146106a8578063a71bfbb7146106e0578063a9ea0928146106f3575f80fd5b80636291423a146105f457806363fe327a146106055780636d387fe414610616578063770838131461064e5780637a9e5e4b14610661575f80fd5b8063493eaa13116101c15780635809c85d116101865780635809c85d1461056a57806359386f8e146105a85780635b0ee099146105bb5780635ecf260f146105ce5780635fd1efec146105e1575f80fd5b8063493eaa131461044e5780634a923f0c146104f85780634f9c1c091461050b57806351486e7d1461052e578063553b210114610557575f80fd5b806319f47dfc1161020757806319f47dfc146103c25780631b50e10b146103f057806322e164061461040357806325c083cf146104165780633a208dc714610429575f80fd5b80630345861d1461023857806307ccf38c1461024d5780630ad044ce1461038457806310a0638a146103af575b5f80fd5b61024b6102463660046155b4565b610ad0565b005b61030061025b3660046155eb565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a09586018490526001600160601b039788168452600b8352928690208651948501875280548089168652600160601b8082048a1694870194909452600160c01b900464ffffffffff9081169786019790975260010154968716908401528504841690820152600160881b9093049091169082015290565b60405161037b91905f60c0820190506001600160601b0383511682526001600160601b03602084015116602083015264ffffffffff60408401511660408301526001600160601b03606084015116606083015264ffffffffff608084015116608083015264ffffffffff60a08401511660a083015292915050565b60405180910390f35b610397610392366004615613565b610ca0565b6040516001600160601b03909116815260200161037b565b61024b6103bd3660046155eb565b610d11565b6103976103d03660046155eb565b6001600160601b039081165f908152600b60205260409020600101541690565b61024b6103fe36600461566c565b610d53565b61024b6104113660046155b4565b610dbc565b6103976104243660046155eb565b610ff6565b6004546001600160a01b03165b6040516001600160a01b03909116815260200161037b565b6104c161045c3660046155eb565b60408051606080820183525f80835260208084018290529284018190526001600160601b0394851681526007835283902083519182018452548085168252600160601b810490941691810191909152600160c01b90920464ffffffffff169082015290565b6040805182516001600160601b039081168252602080850151909116908201529181015164ffffffffff169082015260600161037b565b610397610506366004615687565b611011565b61051e6105193660046155eb565b61106c565b604051901515815260200161037b565b61054161053c3660046156cf565b611106565b60405164ffffffffff909116815260200161037b565b61024b61056536600461570d565b611478565b61057d6105783660046155b4565b6114ce565b6040805182516001600160a01b0316815260209283015164ffffffffff16928101929092520161037b565b61024b6105b636600461574b565b611531565b61024b6105c93660046157c8565b61159e565b61024b6105dc366004615890565b6115c5565b61024b6105ef36600461566c565b61178c565b6003546001600160a01b0316610436565b6002546001600160a01b0316610436565b6106296106243660046158bc565b6117ed565b604080516001600160601b03909316835264ffffffffff90911660208301520161037b565b61039761065c36600461570d565b61188c565b61024b61066f36600461566c565b611ccd565b61067c611d45565b6040516001600160e01b0319909116815260200161037b565b61024b6106a33660046158e8565b611d67565b6106bb6106b6366004615934565b611d7e565b604080516001600160a01b03909316835264ffffffffff90911660208301520161037b565b61024b6106ee3660046155b4565b611f2b565b6107f76107013660046155eb565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152506001600160601b039081165f9081526006602090815260409182902082516101208101845281548086168252600160601b808204871694830194909452600160c01b9081900464ffffffffff908116958301959095526001830154808716606084015293840486166080830152830490931660a0840152600160e81b90910460ff1660c0830152600201546001600160a01b03811660e0830152600160a01b900490911661010082015290565b60405161037b9190615971565b6108af6108123660046155b4565b604080516080810182525f808252602082018190529181018290526060810191909152506001600160601b039182165f9081526008602090815260408083206001600160a01b0394909416835292815290829020825160808101845290548085168252600160601b810490941691810191909152600160c01b830461ffff1691810191909152600160d01b90910464ffffffffff16606082015290565b60405161037b91905f6080820190506001600160601b0383511682526001600160601b03602084015116602083015261ffff604084015116604083015264ffffffffff606084015116606083015292915050565b61051e6109113660046155eb565b6122a5565b61024b610924366004615a5a565b61234e565b5f546001600160a01b0316610436565b61024b61094736600461566c565b612466565b61039761095a366004615a87565b612587565b61039761096d3660046158bc565b6126d1565b6103976109803660046158bc565b6128ba565b610397610993366004615a87565b612947565b610ac36109a6366004615ab4565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091525060ff9081165f9081526005602090815260409182902082516101408101845281548086161515825261010080820487161515948301949094526201000081049095161515938101939093526001600160601b036301000000850481166060850152600160781b850416608084015264ffffffffff600160d81b909404841660a0840152600181015480851660c08501526001600160a01b0365010000000000909104811660e085015260029091015490811691830191909152600160a01b900490911661012082015290565b60405161037b9190615acd565b610adc335b5f36612a80565b5f80610ae784612b6f565b6003546001830154604051631e74126560e21b81526001600160a01b0392831660048201526001600160601b0389166024820152600160e81b90910460ff1660448201529086166064820152919350915073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__906379d04994906084015f6040518083038186803b158015610b6d575f80fd5b505af4158015610b7f573d5f803e3d5ffd5b5050506002830180546001600160a01b038681166001600160a01b031983161790925560408051639fa6a6e360e01b8152905192909116925073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e3916004808201926020929091908290030181865af4158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b9190615bba565b835464ffffffffff60c01b1916600160c01b64ffffffffff92831602178455604080516001600160601b03881681526001600160a01b03808816602083015284169181019190915290831660608201527fd0227ef9a17652cfa7e48ccd5c6f70bf4d13dfe2eb71df80aa62881a3240d773906080015b60405180910390a15050505050565b5f610caa33610ad5565b5f610cb486612c27565b60018101549091505f90610cd0906001600160601b0316612cec565b90508515610ce557610ce3878383612daf565b505b8415610cf857610cf68783836131bb565b505b610d0487838387613481565b925050505b949350505050565b610d1a33610ad5565b5f610d2482612c27565b60018101549091505f90610d40906001600160601b0316612cec565b9050610d4d838383612daf565b50505050565b610d5c33610ad5565b600280546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f960b8b5c264ebbae758850aa1b8e20d698fe852b7c686ee4ee8e991602c42cbe91015b60405180910390a15050565b610dc533610ad5565b6001600160601b0382165f908152600a602090815260408083206001600160a01b03851684529091529081902080549151638d38cd4b60e01b8152600160a01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015610e4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e739190615bd5565b15610e9e578282604051633cdee7f960e01b8152600401610e95929190615bf0565b60405180910390fd5b73__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f099190615c12565b81546001600160a01b0319166001600160a01b039190911617815560408051639fa6a6e360e01b8152905173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015610f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f969190615bba565b815464ffffffffff91909116600160a01b0264ffffffffff60a01b199091161781556040517e2713bc0b3137ab1236c169e5d41bf95db32cea0a163dc838d6842c6410b99a90610fe99085908590615bf0565b60405180910390a1505050565b5f61100033610ad5565b611009826136a3565b90505b919050565b5f61101b33610ad5565b5f61102585612c27565b60018101549091505f90611041906001600160601b0316612cec565b9050841561105657611054868383612daf565b505b611062868383876138bc565b9695505050505050565b6001600160601b0381165f908152600b6020526040808220600101549051638d38cd4b60e01b8152600160881b90910464ffffffffff16600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156110e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110099190615bd5565b5f61111033610ad5565b6001600160601b0385165f908152600b60205260409081902060018101549151638d38cd4b60e01b8152600160881b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015611189573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ad9190615bd5565b156111d657604051630e5c323960e01b81526001600160601b0387166004820152602401610e95565b5f6111e086612cec565b90506111ed868286613ac8565b6001820180546001600160601b0319166001600160601b0388161790556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af4158015611258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127c9190615c2d565b82546001600160601b0319166001600160601b03919091161782556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af41580156112e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113099190615c2d565b825f01600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139b9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556113c682613b61565b5060018201548254604080516001600160601b03808c168252938416602082015292821690830152600160c01b900464ffffffffff1660608201526001600160a01b03861660808201527fd3ee63d0421bec5f3bb2d1f810b978739c31bb1e1f31c7113739eca75026933b9060a00160405180910390a161145f8783838460010160189054906101000a900464ffffffffff1688613c9d565b5054600160c01b900464ffffffffff1695945050505050565b61148133610ad5565b5f61148b83612c27565b60018101549091505f906114a7906001600160601b0316612cec565b905082156114bc576114ba848383612daf565b505b6114c78483836131bb565b5050505050565b6040805180820182525f80825260209182018190526001600160601b0385168152600a82528281206001600160a01b038581168352908352908390208351808501909452549081168352600160a01b900464ffffffffff16908201525b92915050565b61153a33610ad5565b5f61154486612c27565b60018101549091505f90611560906001600160601b0316612cec565b9050851561157557611573878383612daf565b505b8415611588576115868783836131bb565b505b6115958783838787613c9d565b50505050505050565b6115a733610ad5565b6115b98a8a8a8a8a8a8a8a8a8a614044565b50505050505050505050565b6115ce33610ad5565b5f806115d984612b6f565b6003546001830154604051632048909b60e21b81526001600160a01b0390921660048301526001600160601b0388166024830152600160e81b900460ff16604482015264ffffffffff86166064820152919350915073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__90638122426c906084015f6040518083038186803b158015611663575f80fd5b505af4158015611675573d5f803e3d5ffd5b50505060018301805464ffffffffff868116600160c01b90810264ffffffffff60c01b1984161790935560408051639fa6a6e360e01b815290519390920416925073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e3916004808201926020929091908290030181865af41580156116f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117199190615bba565b835464ffffffffff60c01b1916600160c01b64ffffffffff92831602178455604080516001600160601b038816815286831660208201528383169181019190915290831660608201527f63545c71b15de59d1463d3e2577b64bc3c5510cd1dd0243eb030f9da55a65fe090608001610c91565b61179533610ad5565b600380546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f8414c1d6352c513484c229579bca3842a94d9c46e1dd28ec9b03c9b3d5a4ae429101610db0565b5f806117f833610ad5565b5f61180285612b6f565b6001820180546001600160601b03888116600160601b818102600160601b600160c01b0319851617909455604080518c84168152602081019290925264ffffffffff861690820152929091041695509093509091507f74cf98e0b0178be4925e6447d2bdeea75507d176a76652c4b0eda5f06da689c39060600160405180910390a1509250929050565b6001600160601b0382165f908152600960209081526040808320805482518185028101850190935280835284938301828280156118f057602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116118d2575b5050505050905080515f036119725773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611946573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196a9190615c2d565b91505061152b565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd9190615c2d565b6001600160601b038086165f90815260066020526040812060020154929450600160a01b90920416908080805b8551811015611c1657858181518110611a2557611a25615c48565b6020908102919091018101516001600160601b038b81165f9081526008845260408082206001600160a01b0385168352909452839020549251630a4d29dd60e31b8152921660048301819052909550935073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015611ab0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad49190615bd5565b611c0e576001600160601b0385165f908152600a602090815260408083206001600160a01b038881168552925291829020549151636a88f0a760e11b8152911660048201819052925073__$bf7bc340cbb9229ef1de2c568356e67902$__9063d511e14e90602401602060405180830381865af4158015611b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7b9190615bd5565b611c0e57604051636e5912e760e01b8152611c0b90889073__$3bac17678db7ae928afa209f2f44deec9c$__90636e5912e790611bc7906001600160601b038916908890600401615bf0565b602060405180830381865af4158015611be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c069190615c2d565b6144fd565b96505b600101611a0a565b508615611cc2576001600160601b038881165f90815260066020908152604080832060010154600160e81b900460ff168084526005909252909120805491929091611c6a918a916301000000900416614582565b15611c88578054630100000090046001600160601b03169750611cbf565b8054611ca5908990600160781b90046001600160601b0316614607565b15611cbf578054600160781b90046001600160601b031697505b50505b505050505092915050565b5f5433906001600160a01b03168114611d035760405162d1953b60e31b81526001600160a01b0382166004820152602401610e95565b816001600160a01b03163b5f03611d38576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e95565b611d4182614651565b5050565b5f8054600160a01b900460ff16611d5b57505f90565b50638fb3603760e01b90565b611d7033610ad5565b610d4d8484848460016146a4565b5f80611d8933610ad5565b6001600160601b0385165f908152600a602090815260408083206001600160a01b0388168452909152908190208054915163790a38ad60e01b8152600160a01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015611e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e379190615bd5565b15611e5957858560405163020c3e0f60e31b8152600401610e95929190615bf0565b80546001600160a01b038581166001600160a01b0319831617835560408051639fa6a6e360e01b81529051918316955064ffffffffff600160a01b90930492909216935073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015611edb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eff9190615bba565b815464ffffffffff91909116600160a01b0264ffffffffff60a01b199091161790559094909350915050565b611f3433610ad5565b6001600160601b0382165f9081526008602090815260408083206001600160a01b03851684529091529081902080549151638d38cd4b60e01b8152600160d01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015611fbe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe29190615bd5565b15611fec57505050565b611ff583612cec565b506040516301f8588560e51b81526001600160601b03841660048201525f9073__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af415801561204e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120729190615c2d565b6001600160601b0381165f908152600a602090815260408083206001600160a01b03881684529091529081902054905163790a38ad60e01b8152600160a01b90910464ffffffffff16600482015290915073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af41580156120fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121219190615bd5565b1561214357808360405163020c3e0f60e31b8152600401610e95929190615bf0565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561218a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae9190615c2d565b82546001600160601b0319166001600160601b039190911617825560408051639fa6a6e360e01b8152905173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015612217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223b9190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b1990911617909155506001600160601b0382165f9081526009602090815260408220805460018101825590835291200180546001600160a01b0383166001600160a01b03199091161790555050565b6001600160601b0381165f908152600b60209081526040808320548151639fa6a6e360e01b8152915161100993600160c01b90920464ffffffffff169273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__92639fa6a6e3926004808401938290030181865af415801561231b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233f9190615bba565b64ffffffffff90811691161190565b61235733610ad5565b5f61236184614def565b80546001600160601b038581166001600160c01b0319831617600160601b9186169190910217825560408051639fa6a6e360e01b81529051929350600160c01b90910464ffffffffff169173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af41580156123ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240e9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556040517ff247f9f8f9c455e0928cd8b5f34ef2567264cde4001db187c3e930c25e08fc1590610c91908790879087908690615c5c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156124ab5750825b90505f8267ffffffffffffffff1660011480156124c75750303b155b9050811580156124d5575080155b156124f35760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561251d57845460ff60401b1916600160401b1785555b600280546001600160a01b0319166001600160a01b038816179055831561257f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050565b5f61259133610ad5565b5f61259c8585614eb2565b805490915064ffffffffff600160d01b820416906125c3906001600160601b031685614f82565b82546001600160601b0319166001600160601b03919091161782556125e9868684614fcc565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612630573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126549190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b198216811784556040516001600160601b03918216919092161793507f6eea09d3401164101f559606e8c76aca972689ba8330a579bd6507b5889d153f906126c09088908890889088908790615c8c565b60405180910390a150509392505050565b5f6126db33610ad5565b5f6126e584612cec565b80546001820154919250600160c01b900464ffffffffff1690612711906001600160601b0316856144fd565b826001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af415801561277f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a39190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556001808301549054604051631c5da14d60e11b81526001600160601b03888116600483015290921694507f317c91a4e8d5e9d4af7c5e856f79e6db430257dabe4a32a352ef58b9ba000f3d91879187916001600160a01b03909116906338bb429a906024015b602060405180830381865afa158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190615c12565b604080516001600160601b03948516815292841660208401526001600160a01b0390911690820152908516606082015264ffffffffff8316608082015260a00160405180910390a1505092915050565b5f6128c433610ad5565b5f6128ce84612cec565b90505f6128dc8583866150e9565b6001838101549054604051631c5da14d60e11b81526001600160601b03898116600483015290921695509192507fb144c2ad8fd690acb16f40becc8acde92c8694ef99952f875213f57ce1b7acef91879187916001600160a01b0316906338bb429a9060240161282b565b5f61295133610ad5565b5f61295c8585614eb2565b805490915064ffffffffff600160d01b82041690612983906001600160601b0316856144fd565b82546001600160601b0319166001600160601b03919091161782556129a9868684614fcc565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156129f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a149190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b198216811784556040516001600160601b03918216919092161793507f05e52d64c754f7a526cf0704e8cfe26c04e8b656e7b493f61fbda7109a326f42906126c09088908890889088908790615c8c565b5f80612ab3612a965f546001600160a01b031690565b8630612aa560045f898b615cce565b612aae91615cf5565b615226565b91509150816114c75763ffffffff811615612b4c575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90612b0d90889088908890600401615d2b565b5f604051808303815f87803b158015612b24575f80fd5b505af1158015612b36573d5f803e3d5ffd5b50505f805460ff60a01b19169055506114c79050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e95565b5f80612b7a83612cec565b9150815f0160189054906101000a900464ffffffffff16905073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612bda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfe9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782559092909150565b6001600160601b0381165f908152600b6020526040908190206001810154915163790a38ad60e01b8152600160881b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015612ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc49190615bd5565b1561100c5760405162af6eb360e61b81526001600160601b0383166004820152602401610e95565b6001600160601b0381165f90815260066020526040908190208054915163790a38ad60e01b8152600160c01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015612d62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d869190615bd5565b1561100c5760405163091c22d760e41b81526001600160601b0383166004820152602401610e95565b6002810154604051636a88f0a760e11b81526001600160a01b0390911660048201525f9073__$bf7bc340cbb9229ef1de2c568356e67902$__9063d511e14e90602401602060405180830381865af4158015612e0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e319190615bd5565b6131b4576001830154604051633682752160e21b8152600160601b90910464ffffffffff1660048201525f9073__$71e292c09eace9601b3e21e68a1278917a$__90630c67422c9073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af4158015612eb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed79190615d6a565b612ee19042615d95565b6040518263ffffffff1660e01b8152600401612eff91815260200190565b602060405180830381865af4158015612f1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f3e9190615bba565b60405163790a38ad60e01b815264ffffffffff8216600482015290915073__$71e292c09eace9601b3e21e68a1278917a$__9063790a38ad90602401602060405180830381865af4158015612f95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fb99190615bd5565b156130315773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613005573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130299190615c2d565b9150506131b4565b60028301548454604051635bdf11e360e11b81526001600160a01b03909216600483015264ffffffffff831660248301526001600160601b0316604482015273__$f048dbd5170c0ac319fa0222065b281d84$__9063b7be23c690606401602060405180830381865af41580156130aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ce9190615c2d565b83549092506130ed90600160601b90046001600160601b0316836144fd565b8354600160601b600160c01b031916600160601b6001600160601b03928316810291909117855585546131249291900416836144fd565b84546001600160601b0391909116600160601b02600160601b600160c01b03199091161784555f613155858561532e565b85546040519192507fed4853b0609e21bd14ba3f580ebca5d25c21bc024161fd250b6b33c768c1c872916126c091899187916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b9392505050565b8154604051630a4d29dd60e31b8152600160601b9091046001600160601b0316600482018190529073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af415801561321d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132419190615bd5565b6131b457600183015461325e906001600160601b03168383613ac8565b6001830154613277906001600160601b031683836153c5565b815461328c906001600160601b0316826144fd565b82546001600160601b0319166001600160601b03918216178084556132ba91600160601b9091041682614f82565b8254600160601b600160c01b031916600160601b6001600160601b039283160217835583546132ea9116826144fd565b83546001600160601b0319166001600160601b03919091161783556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af4158015613353573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133779190615c2d565b83546001600160601b0391909116600160601b02600160601b600160c01b03199091161783555f6133a8848461532e565b90507f38151af1adffdc3651d3f7917ea0e90417d40e286b11741dd01a3e3228d96c598583865f015f9054906101000a90046001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061344e9190615c2d565b88546040516134719594939291600160c01b900464ffffffffff16908890615da8565b60405180910390a1509392505050565b8254604051637931c81160e01b81526001600160601b03808416600483015290911660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156134e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135089190615c2d565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015613561573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135859190615bd5565b610d0957613592856122a5565b156135d157835460405163187bc0bd60e21b81526001600160601b0387166004820152600160c01b90910464ffffffffff166024820152604401610e95565b82546135e6906001600160601b031682614f82565b83546001600160601b0319166001600160601b03918216178455845461360d911682614f82565b84546001600160601b0319166001600160601b03919091161784555f613633858561532e565b85546040519192507fed7a6a5cb58253a85b06a414d4fb43855fc759e9f19af28b775bf2b47ec7bf709161369291899186916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b60405180910390a150949350505050565b5f806136ae83612cec565b90505f6136ba84614def565b8054909150600160c01b900464ffffffffff165f6136d8868261188c565b83549091506136f19082906001600160601b03166144fd565b8354604051637931c81160e01b81526001600160601b038084166004830152600160601b909204909116602482015290955073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af415801561375d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137819190615c2d565b94508484600101600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156137f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138179190615bba565b845464ffffffffff60c01b198116600160c01b64ffffffffff93841602908117875560018701548654604080516001600160601b03808e168252600160601b9485900481166020830152939092048316908201528582166060820152928116911617608082015290831660a08201527f816866bb29a0d245f04a0179c957b4495d86447de93a8a4962fd3528510991429060c00160405180910390a150505050919050565b8254604051637931c81160e01b81526001600160601b038084166004830152600160601b90920490911660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015613927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061394b9190615c2d565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af41580156139a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139c89190615bd5565b610d095760018401546139e5906001600160601b031684836153c5565b8254613a0190600160601b90046001600160601b031682614f82565b8354600160601b600160c01b031916600160601b6001600160601b0392831681029190911785558554613a38929190041682614f82565b84546001600160601b0391909116600160601b02600160601b600160c01b03199091161784555f613a69858561532e565b85546040519192507f39ee77ec34c101210194f9f2c8be592bf5ef303db8e68adf58b4fbe747a134829161369291899186916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b8154613afb90613ae1906001600160601b0316836144fd565b6001840154600160601b90046001600160601b0316614607565b15613b5c576001820154825484916001600160601b03600160601b909104811691613b279116846144fd565b604051631946161f60e01b81526001600160601b03938416600482015291831660248301529091166044820152606401610e95565b505050565b5f8160010160119054906101000a900464ffffffffff16905073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613bc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613be59190615bba565b8260010160116101000a81548164ffffffffff021916908364ffffffffff16021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613c50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c749190615bba565b82600101600c6101000a81548164ffffffffff021916908364ffffffffff160217905550919050565b604051630a4d29dd60e31b81526001600160601b038216600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015613cf3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d179190615bd5565b6114c7576001840154613d34906001600160601b03168483613ac8565b8254613d49906001600160601b0316826144fd565b83546001600160601b0319166001600160601b039182161784558454613d709116826144fd565b84546001600160601b0319166001600160601b0391909116178455600183015460405163e83da7ad60e01b815264ffffffffff8085166004830152600160c01b90920490911660248201525f9073__$71e292c09eace9601b3e21e68a1278917a$__9063e83da7ad90604401602060405180830381865af4158015613df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1b9190615bba565b6040516330b8415f60e01b81526001600160601b038416600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015613e74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e989190615bd5565b8015613f175750604051638d38cd4b60e01b815264ffffffffff8216600482015273__$71e292c09eace9601b3e21e68a1278917a$__90638d38cd4b90602401602060405180830381865af4158015613ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f179190615bd5565b15613fc95784546040516352bcc5a760e11b8152600160c01b90910464ffffffffff90811660048301528216602482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063a5798b4e90604401602060405180830381865af4158015613f82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fa69190615bba565b855464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161785555b5f613fd4868661532e565b86546040519192507f15d4969bfd34a12fabf5d09d2615ffc4f81d206e7756d9e3c0919ba800d57e4191614033918a9187916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b60405180910390a150505050505050565b60405163037c8cb160e51b815260ff8b16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015614094573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140b89190615bd5565b156140db57604051633c00d02760e01b815260ff8b166004820152602401610e95565b6140e58686614607565b1561411557604051622a505160e91b81526001600160601b03808816600483015286166024820152604401610e95565b61411f8484615425565b1561414e576040516338157c8960e21b815264ffffffffff808616600483015284166024820152604401610e95565b6001600160a01b03808216908316111561418e57604051638ae671e360e01b81526001600160a01b03808416600483015282166024820152604401610e95565b5f60055f8c60ff1660ff1681526020019081526020015f2060020160149054906101000a900464ffffffffff1690508960055f8d60ff1660ff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508860055f8d60ff1660ff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055508760055f8d60ff1660ff1681526020019081526020015f205f0160026101000a81548160ff0219169083151502179055508660055f8d60ff1660ff1681526020019081526020015f205f0160036101000a8154816001600160601b0302191690836001600160601b031602179055508560055f8d60ff1660ff1681526020019081526020015f205f01600f6101000a8154816001600160601b0302191690836001600160601b031602179055508460055f8d60ff1660ff1681526020019081526020015f205f01601b6101000a81548164ffffffffff021916908364ffffffffff1602179055508360055f8d60ff1660ff1681526020019081526020015f206001015f6101000a81548164ffffffffff021916908364ffffffffff1602179055508260055f8d60ff1660ff1681526020019081526020015f2060010160056101000a8154816001600160a01b0302191690836001600160a01b031602179055508160055f8d60ff1660ff1681526020019081526020015f206002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015614403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144279190615bba565b60ff8c165f81815260056020908152604091829020600201805464ffffffffff60a01b1916600160a01b64ffffffffff9687160217905581519283528d1515908301528b15159082015289151560608201526001600160601b03808a166080830152881660a082015286821660c082015285821660e08201526001600160a01b0380861661010083015284166101208201529082166101408201527fb24c8b320e3f99e0aef480e78c342643583880e3f5a1c392a85a4c51f76799f8906101600160405180910390a15050505050505050505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801561455e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b49190615c2d565b6040516304d40eb160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906309a81d62906044015b602060405180830381865af41580156145e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b49190615bd5565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044016145c8565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b801561474e5760015460035460405163647b8c2f60e01b81526001600160a01b03928316600482015290821660248201526001600160601b038716604482015260ff8616606482015264ffffffffff8516608482015290831660a482015273__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063647b8c2f9060c4015f6040518083038186803b158015614737575f80fd5b505af4158015614749573d5f803e3d5ffd5b505050505b6001600160601b0385165f90815260066020908152604091829020825163bc1b392d60e01b81529251909273__$3bac17678db7ae928afa209f2f44deec9c$__9263bc1b392d926004808401938290030181865af41580156147b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147d69190615c2d565b81546001600160601b0319166001600160601b03919091161781556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af415801561483f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148639190615c2d565b815f01600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156148d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148f59190615c2d565b816001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614963573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149879190615c2d565b60018201805471ff0000000000ffffffffffffffffffffffff60601b1916600160601b6001600160601b039384160260ff60e81b191617600160e81b60ff8916021764ffffffffff60c01b1916600160c01b64ffffffffff8816021790556002820180546001600160a01b0319166001600160a01b0386161790556040516301f8588560e51b8152908716600482015273__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af4158015614a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a759190615c2d565b8160020160146101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015614ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b089190615bba565b815f0160186101000a81548164ffffffffff021916908364ffffffffff160217905550614d2b60075f886001600160601b03166001600160601b031681526020019081526020015f208773__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96600273__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614bb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614bd99190615c2d565b60405163046e44af60e11b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015614c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614c549190615d6a565b614c5e9190615de8565b6040518263ffffffff1660e01b8152600401614c7c91815260200190565b602060405180830381865af4158015614c97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614cbb9190615c2d565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d269190615c2d565b61546d565b600480546040516346f0e8a760e11b81526001600160601b038916928101929092526001600160a01b031690638de1d14e906024015f604051808303815f87803b158015614d77575f80fd5b505af1158015614d89573d5f803e3d5ffd5b5050604080516001600160601b038a16815260ff8916602082015264ffffffffff8816918101919091526001600160a01b03861660608201527f086dbed771133d4ebbe0285c0df8231e94a664efbae4bd66c0e3e9f11c7fd0f092506080019050612576565b6001600160601b0381165f90815260076020526040908190208054915163790a38ad60e01b8152600160c01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015614e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614e899190615bd5565b1561100c576040516384bdfa9560e01b81526001600160601b0383166004820152602401610e95565b6001600160601b0382165f9081526008602090815260408083206001600160a01b0385168452909152908190208054915163790a38ad60e01b8152600160d01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015614f3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614f609190615bd5565b1561152b57828260405163688e635d60e11b8152600401610e95929190615bf0565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401614543565b8054600160c01b900461ffff16816018614fe583615e07565b82546101009290920a61ffff8181021990931691831602179091556002548354604051638755a73f60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152600160c01b84049095166044830152600160601b83048116606483015290911660848201525f9350911690638755a73f9060a401602060405180830381865afa158015615081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906150a59190615bd5565b90508015610d4d57815461ffff60c01b19600160601b6001600160601b03831602166dffffffffffffffffffffffffffff60601b199091161782556114c7846136a3565b81546001830154600160c01b90910464ffffffffff16906151149083906001600160601b0316614607565b156151535760018301546040516301a4b29960e11b81526001600160601b03808716600483015291821660248201529083166044820152606401610e95565b600183015461516b906001600160601b031683614f82565b836001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156151d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906151fd9190615bba565b835464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161790925550919050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516152949190615e27565b5f60405180830381855afa9150503d805f81146152cc576040519150601f19603f3d011682016040523d82523d5f602084013e6152d1565b606091505b5091509150811561532357604081511061530357808060200190518101906152f99190615e3d565b9094509250615323565b602081511061532357808060200190518101906153209190615bd5565b93505b505094509492505050565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015615376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061539a9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556131b483613b61565b5f6153d18484846150e9565b60018401546040519192507fc0f991fc396647cd10937655916d61916ae77295c1d6a67e335bc8f5024174919161541791879186916001600160601b0316908690615c5c565b60405180910390a150505050565b6040516383ffcdef60e01b815264ffffffffff8084166004830152821660248201525f9073__$71e292c09eace9601b3e21e68a1278917a$__906383ffcdef906044016145c8565b83546001600160601b038381166001600160c01b0319831617600160601b9184169190910217855560408051639fa6a6e360e01b81529051600160c01b90920464ffffffffff169173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af41580156154f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906155179190615bba565b855464ffffffffff91909116600160c01b0264ffffffffff60c01b19821681178088556040517f05c35323706f609643b5b81348a27fedbbaf7ae364b4d43f69a8853c024f204793610c919389936001600160601b039182169282169290921792600160601b90920416908690615c5c565b6001600160601b038116811461559d575f80fd5b50565b6001600160a01b038116811461559d575f80fd5b5f80604083850312156155c5575f80fd5b82356155d081615589565b915060208301356155e0816155a0565b809150509250929050565b5f602082840312156155fb575f80fd5b81356131b481615589565b801515811461559d575f80fd5b5f805f8060808587031215615626575f80fd5b843561563181615589565b9350602085013561564181615606565b9250604085013561565181615606565b9150606085013561566181615589565b939692955090935050565b5f6020828403121561567c575f80fd5b81356131b4816155a0565b5f805f60608486031215615699575f80fd5b83356156a481615589565b925060208401356156b481615606565b915060408401356156c481615589565b809150509250925092565b5f805f80608085870312156156e2575f80fd5b84356156ed81615589565b935060208501356156fd81615589565b92506040850135615651816155a0565b5f806040838503121561571e575f80fd5b823561572981615589565b915060208301356155e081615606565b64ffffffffff8116811461559d575f80fd5b5f805f805f60a0868803121561575f575f80fd5b853561576a81615589565b9450602086013561577a81615606565b9350604086013561578a81615606565b9250606086013561579a81615739565b915060808601356157aa81615589565b809150509295509295909350565b803560ff8116811461100c575f80fd5b5f805f805f805f805f806101408b8d0312156157e2575f80fd5b6157eb8b6157b8565b995060208b01356157fb81615606565b985060408b013561580b81615606565b975060608b013561581b81615606565b965060808b013561582b81615589565b955060a08b013561583b81615589565b945060c08b013561584b81615739565b935060e08b013561585b81615739565b92506101008b013561586c816155a0565b91506101208b013561587d816155a0565b809150509295989b9194979a5092959850565b5f80604083850312156158a1575f80fd5b82356158ac81615589565b915060208301356155e081615739565b5f80604083850312156158cd575f80fd5b82356158d881615589565b915060208301356155e081615589565b5f805f80608085870312156158fb575f80fd5b843561590681615589565b9350615914602086016157b8565b9250604085013561592481615739565b91506060850135615661816155a0565b5f805f60608486031215615946575f80fd5b833561595181615589565b92506020840135615961816155a0565b915060408401356156c4816155a0565b81516001600160601b0316815260208083015161012083019161599e908401826001600160601b03169052565b5060408301516159b7604084018264ffffffffff169052565b5060608301516159d260608401826001600160601b03169052565b5060808301516159ed60808401826001600160601b03169052565b5060a0830151615a0660a084018264ffffffffff169052565b5060c0830151615a1b60c084018260ff169052565b5060e0830151615a3660e08401826001600160a01b03169052565b50610100830151615a536101008401826001600160601b03169052565b5092915050565b5f805f60608486031215615a6c575f80fd5b8335615a7781615589565b925060208401356156b481615589565b5f805f60608486031215615a99575f80fd5b8335615aa481615589565b925060208401356156b4816155a0565b5f60208284031215615ac4575f80fd5b6131b4826157b8565b81511515815261014081016020830151615aeb602084018215159052565b506040830151615aff604084018215159052565b506060830151615b1a60608401826001600160601b03169052565b506080830151615b3560808401826001600160601b03169052565b5060a0830151615b4e60a084018264ffffffffff169052565b5060c0830151615b6760c084018264ffffffffff169052565b5060e0830151615b8260e08401826001600160a01b03169052565b50610100830151615b9f6101008401826001600160a01b03169052565b50610120830151615a5361012084018264ffffffffff169052565b5f60208284031215615bca575f80fd5b81516131b481615739565b5f60208284031215615be5575f80fd5b81516131b481615606565b6001600160601b039290921682526001600160a01b0316602082015260400190565b5f60208284031215615c22575f80fd5b81516131b4816155a0565b5f60208284031215615c3d575f80fd5b81516131b481615589565b634e487b7160e01b5f52603260045260245ffd5b6001600160601b03948516815292841660208401529216604082015264ffffffffff909116606082015260800190565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015264ffffffffff909116608082015260a00190565b5f8085851115615cdc575f80fd5b83861115615ce8575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615a53576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215615d7a575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561152b5761152b615d81565b6001600160601b039687168152948616602086015292851660408501529316606083015264ffffffffff928316608083015290911660a082015260c00190565b5f82615e0257634e487b7160e01b5f52601260045260245ffd5b500490565b5f61ffff821661ffff8103615e1e57615e1e615d81565b60010192915050565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e4e575f80fd5b8251615e5981615606565b602084015190925063ffffffff811681146155e0575f80fdfea264697066735822122074f0e0c89fe8af9fa03992c53540120d4569a643307cd0a1579a332b0937094a64736f6c634300081a00336080604052348015600e575f80fd5b50600480546001600160a01b0319163317905561071e8061002e5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c80638de1d14e116100635780638de1d14e1461010f578063954a317214610122578063996f8d9114610135578063ddfe867f1461014b578063f2b2978114610153575f80fd5b8063042f9da3146100945780634f9c1c09146100a9578063706e9ba9146100d1578063777d1857146100fc575b5f80fd5b6100a76100a2366004610627565b610166565b005b6100bc6100b736600461065e565b610221565b60405190151581526020015b60405180910390f35b6100e46100df366004610680565b6102ab565b6040516001600160601b0390911681526020016100c8565b6100bc61010a36600461065e565b610327565b6100a761011d36600461065e565b610370565b6100a7610130366004610627565b610491565b61013d61051b565b6040519081526020016100c8565b61013d610595565b6100e4610161366004610680565b6105cf565b6004546001600160a01b031633146101ae5760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b604051631461054360e31b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015b5f6040518083038186803b158015610207575f80fd5b505af4158015610219573d5f803e3d5ffd5b505050505050565b604051632bfdd6b960e01b81525f600482018190526001600160601b03831660248301529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b9906044015b602060405180830381865af4158015610281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a59190610697565b92915050565b60405163e797d89960e01b81525f60048201819052602482018390529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044015b602060405180830381865af4158015610303573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a591906106b6565b604051632bfdd6b960e01b8152600260048201526001600160601b03821660248201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b990604401610266565b6004546001600160a01b031633146103b35760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b604051631461054360e31b81525f60048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015f6040518083038186803b15801561040a575f80fd5b505af415801561041c573d5f803e3d5ffd5b5050604051631461054360e31b8152600260048201526001600160601b038416602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__925063a3082a1891506044015f6040518083038186803b158015610478575f80fd5b505af415801561048a573d5f803e3d5ffd5b5050505050565b6004546001600160a01b031633146104d45760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b60405163539eabab60e11b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a73d5756906044016101f1565b604051638b6233dd60e01b8152600260048201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd906024015b602060405180830381865af415801561056c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059091906106d1565b905090565b604051638b6233dd60e01b81525f600482018190529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd90602401610551565b60405163e797d89960e01b815260026004820152602481018290525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044016102e8565b6001600160601b0381168114610624575f80fd5b50565b5f8060408385031215610638575f80fd5b823561064381610610565b9150602083013561065381610610565b809150509250929050565b5f6020828403121561066e575f80fd5b813561067981610610565b9392505050565b5f60208284031215610690575f80fd5b5035919050565b5f602082840312156106a7575f80fd5b81518015158114610679575f80fd5b5f602082840312156106c6575f80fd5b815161067981610610565b5f602082840312156106e1575f80fd5b505191905056fea264697066735822122096ea3341864adfa8ac3d3866a69da65a8783093e1a865236fbe311962824969764736f6c634300081a0033",
2200
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610234575f3560e01c80636291423a11610135578063b4485022116100b4578063d44f8a4b11610079578063d44f8a4b1461094c578063de0eb85f1461095f578063e8ce883d14610972578063ea48ce9b14610985578063f55a7d1e14610998575f80fd5b8063b448502214610804578063b9a5c03014610903578063bac475b714610916578063bf7e214f14610929578063c4d66de814610939575f80fd5b80638fb36037116100fa5780638fb36037146106745780639a148b7f14610695578063a6bc7cb8146106a8578063a71bfbb7146106e0578063a9ea0928146106f3575f80fd5b80636291423a146105f457806363fe327a146106055780636d387fe414610616578063770838131461064e5780637a9e5e4b14610661575f80fd5b8063493eaa13116101c15780635809c85d116101865780635809c85d1461056a57806359386f8e146105a85780635b0ee099146105bb5780635ecf260f146105ce5780635fd1efec146105e1575f80fd5b8063493eaa131461044e5780634a923f0c146104f85780634f9c1c091461050b57806351486e7d1461052e578063553b210114610557575f80fd5b806319f47dfc1161020757806319f47dfc146103c25780631b50e10b146103f057806322e164061461040357806325c083cf146104165780633a208dc714610429575f80fd5b80630345861d1461023857806307ccf38c1461024d5780630ad044ce1461038457806310a0638a146103af575b5f80fd5b61024b6102463660046155b4565b610ad0565b005b61030061025b3660046155eb565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a09586018490526001600160601b039788168452600b8352928690208651948501875280548089168652600160601b8082048a1694870194909452600160c01b900464ffffffffff9081169786019790975260010154968716908401528504841690820152600160881b9093049091169082015290565b60405161037b91905f60c0820190506001600160601b0383511682526001600160601b03602084015116602083015264ffffffffff60408401511660408301526001600160601b03606084015116606083015264ffffffffff608084015116608083015264ffffffffff60a08401511660a083015292915050565b60405180910390f35b610397610392366004615613565b610ca0565b6040516001600160601b03909116815260200161037b565b61024b6103bd3660046155eb565b610d11565b6103976103d03660046155eb565b6001600160601b039081165f908152600b60205260409020600101541690565b61024b6103fe36600461566c565b610d53565b61024b6104113660046155b4565b610dbc565b6103976104243660046155eb565b610ff6565b6004546001600160a01b03165b6040516001600160a01b03909116815260200161037b565b6104c161045c3660046155eb565b60408051606080820183525f80835260208084018290529284018190526001600160601b0394851681526007835283902083519182018452548085168252600160601b810490941691810191909152600160c01b90920464ffffffffff169082015290565b6040805182516001600160601b039081168252602080850151909116908201529181015164ffffffffff169082015260600161037b565b610397610506366004615687565b611011565b61051e6105193660046155eb565b61106c565b604051901515815260200161037b565b61054161053c3660046156cf565b611106565b60405164ffffffffff909116815260200161037b565b61024b61056536600461570d565b611478565b61057d6105783660046155b4565b6114ce565b6040805182516001600160a01b0316815260209283015164ffffffffff16928101929092520161037b565b61024b6105b636600461574b565b611531565b61024b6105c93660046157c8565b61159e565b61024b6105dc366004615890565b6115c5565b61024b6105ef36600461566c565b61178c565b6003546001600160a01b0316610436565b6002546001600160a01b0316610436565b6106296106243660046158bc565b6117ed565b604080516001600160601b03909316835264ffffffffff90911660208301520161037b565b61039761065c36600461570d565b61188c565b61024b61066f36600461566c565b611ccd565b61067c611d45565b6040516001600160e01b0319909116815260200161037b565b61024b6106a33660046158e8565b611d67565b6106bb6106b6366004615934565b611d7e565b604080516001600160a01b03909316835264ffffffffff90911660208301520161037b565b61024b6106ee3660046155b4565b611f2b565b6107f76107013660046155eb565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152506001600160601b039081165f9081526006602090815260409182902082516101208101845281548086168252600160601b808204871694830194909452600160c01b9081900464ffffffffff908116958301959095526001830154808716606084015293840486166080830152830490931660a0840152600160e81b90910460ff1660c0830152600201546001600160a01b03811660e0830152600160a01b900490911661010082015290565b60405161037b9190615971565b6108af6108123660046155b4565b604080516080810182525f808252602082018190529181018290526060810191909152506001600160601b039182165f9081526008602090815260408083206001600160a01b0394909416835292815290829020825160808101845290548085168252600160601b810490941691810191909152600160c01b830461ffff1691810191909152600160d01b90910464ffffffffff16606082015290565b60405161037b91905f6080820190506001600160601b0383511682526001600160601b03602084015116602083015261ffff604084015116604083015264ffffffffff606084015116606083015292915050565b61051e6109113660046155eb565b6122a5565b61024b610924366004615a5a565b61234e565b5f546001600160a01b0316610436565b61024b61094736600461566c565b612466565b61039761095a366004615a87565b612587565b61039761096d3660046158bc565b6126d1565b6103976109803660046158bc565b6128ba565b610397610993366004615a87565b612947565b610ac36109a6366004615ab4565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091525060ff9081165f9081526005602090815260409182902082516101408101845281548086161515825261010080820487161515948301949094526201000081049095161515938101939093526001600160601b036301000000850481166060850152600160781b850416608084015264ffffffffff600160d81b909404841660a0840152600181015480851660c08501526001600160a01b0365010000000000909104811660e085015260029091015490811691830191909152600160a01b900490911661012082015290565b60405161037b9190615acd565b610adc335b5f36612a80565b5f80610ae784612b6f565b6003546001830154604051631e74126560e21b81526001600160a01b0392831660048201526001600160601b0389166024820152600160e81b90910460ff1660448201529086166064820152919350915073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__906379d04994906084015f6040518083038186803b158015610b6d575f80fd5b505af4158015610b7f573d5f803e3d5ffd5b5050506002830180546001600160a01b038681166001600160a01b031983161790925560408051639fa6a6e360e01b8152905192909116925073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e3916004808201926020929091908290030181865af4158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b9190615bba565b835464ffffffffff60c01b1916600160c01b64ffffffffff92831602178455604080516001600160601b03881681526001600160a01b03808816602083015284169181019190915290831660608201527fd0227ef9a17652cfa7e48ccd5c6f70bf4d13dfe2eb71df80aa62881a3240d773906080015b60405180910390a15050505050565b5f610caa33610ad5565b5f610cb486612c27565b60018101549091505f90610cd0906001600160601b0316612cec565b90508515610ce557610ce3878383612daf565b505b8415610cf857610cf68783836131bb565b505b610d0487838387613481565b925050505b949350505050565b610d1a33610ad5565b5f610d2482612c27565b60018101549091505f90610d40906001600160601b0316612cec565b9050610d4d838383612daf565b50505050565b610d5c33610ad5565b600280546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f960b8b5c264ebbae758850aa1b8e20d698fe852b7c686ee4ee8e991602c42cbe91015b60405180910390a15050565b610dc533610ad5565b6001600160601b0382165f908152600a602090815260408083206001600160a01b03851684529091529081902080549151638d38cd4b60e01b8152600160a01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015610e4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e739190615bd5565b15610e9e578282604051633cdee7f960e01b8152600401610e95929190615bf0565b60405180910390fd5b73__$bf7bc340cbb9229ef1de2c568356e67902$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f099190615c12565b81546001600160a01b0319166001600160a01b039190911617815560408051639fa6a6e360e01b8152905173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015610f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f969190615bba565b815464ffffffffff91909116600160a01b0264ffffffffff60a01b199091161781556040517e2713bc0b3137ab1236c169e5d41bf95db32cea0a163dc838d6842c6410b99a90610fe99085908590615bf0565b60405180910390a1505050565b5f61100033610ad5565b611009826136a3565b90505b919050565b5f61101b33610ad5565b5f61102585612c27565b60018101549091505f90611041906001600160601b0316612cec565b9050841561105657611054868383612daf565b505b611062868383876138bc565b9695505050505050565b6001600160601b0381165f908152600b6020526040808220600101549051638d38cd4b60e01b8152600160881b90910464ffffffffff16600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156110e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110099190615bd5565b5f61111033610ad5565b6001600160601b0385165f908152600b60205260409081902060018101549151638d38cd4b60e01b8152600160881b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015611189573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ad9190615bd5565b156111d657604051630e5c323960e01b81526001600160601b0387166004820152602401610e95565b5f6111e086612cec565b90506111ed868286613ac8565b6001820180546001600160601b0319166001600160601b0388161790556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af4158015611258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127c9190615c2d565b82546001600160601b0319166001600160601b03919091161782556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af41580156112e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113099190615c2d565b825f01600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139b9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556113c682613b61565b5060018201548254604080516001600160601b03808c168252938416602082015292821690830152600160c01b900464ffffffffff1660608201526001600160a01b03861660808201527fd3ee63d0421bec5f3bb2d1f810b978739c31bb1e1f31c7113739eca75026933b9060a00160405180910390a161145f8783838460010160189054906101000a900464ffffffffff1688613c9d565b5054600160c01b900464ffffffffff1695945050505050565b61148133610ad5565b5f61148b83612c27565b60018101549091505f906114a7906001600160601b0316612cec565b905082156114bc576114ba848383612daf565b505b6114c78483836131bb565b5050505050565b6040805180820182525f80825260209182018190526001600160601b0385168152600a82528281206001600160a01b038581168352908352908390208351808501909452549081168352600160a01b900464ffffffffff16908201525b92915050565b61153a33610ad5565b5f61154486612c27565b60018101549091505f90611560906001600160601b0316612cec565b9050851561157557611573878383612daf565b505b8415611588576115868783836131bb565b505b6115958783838787613c9d565b50505050505050565b6115a733610ad5565b6115b98a8a8a8a8a8a8a8a8a8a614044565b50505050505050505050565b6115ce33610ad5565b5f806115d984612b6f565b6003546001830154604051632048909b60e21b81526001600160a01b0390921660048301526001600160601b0388166024830152600160e81b900460ff16604482015264ffffffffff86166064820152919350915073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__90638122426c906084015f6040518083038186803b158015611663575f80fd5b505af4158015611675573d5f803e3d5ffd5b50505060018301805464ffffffffff868116600160c01b90810264ffffffffff60c01b1984161790935560408051639fa6a6e360e01b815290519390920416925073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e3916004808201926020929091908290030181865af41580156116f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117199190615bba565b835464ffffffffff60c01b1916600160c01b64ffffffffff92831602178455604080516001600160601b038816815286831660208201528383169181019190915290831660608201527f63545c71b15de59d1463d3e2577b64bc3c5510cd1dd0243eb030f9da55a65fe090608001610c91565b61179533610ad5565b600380546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f8414c1d6352c513484c229579bca3842a94d9c46e1dd28ec9b03c9b3d5a4ae429101610db0565b5f806117f833610ad5565b5f61180285612b6f565b6001820180546001600160601b03888116600160601b818102600160601b600160c01b0319851617909455604080518c84168152602081019290925264ffffffffff861690820152929091041695509093509091507f74cf98e0b0178be4925e6447d2bdeea75507d176a76652c4b0eda5f06da689c39060600160405180910390a1509250929050565b6001600160601b0382165f908152600960209081526040808320805482518185028101850190935280835284938301828280156118f057602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116118d2575b5050505050905080515f036119725773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611946573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196a9190615c2d565b91505061152b565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd9190615c2d565b6001600160601b038086165f90815260066020526040812060020154929450600160a01b90920416908080805b8551811015611c1657858181518110611a2557611a25615c48565b6020908102919091018101516001600160601b038b81165f9081526008845260408082206001600160a01b0385168352909452839020549251630a4d29dd60e31b8152921660048301819052909550935073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015611ab0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad49190615bd5565b611c0e576001600160601b0385165f908152600a602090815260408083206001600160a01b038881168552925291829020549151636a88f0a760e11b8152911660048201819052925073__$bf7bc340cbb9229ef1de2c568356e67902$__9063d511e14e90602401602060405180830381865af4158015611b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7b9190615bd5565b611c0e57604051636e5912e760e01b8152611c0b90889073__$3bac17678db7ae928afa209f2f44deec9c$__90636e5912e790611bc7906001600160601b038916908890600401615bf0565b602060405180830381865af4158015611be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c069190615c2d565b6144fd565b96505b600101611a0a565b508615611cc2576001600160601b038881165f90815260066020908152604080832060010154600160e81b900460ff168084526005909252909120805491929091611c6a918a916301000000900416614582565b15611c88578054630100000090046001600160601b03169750611cbf565b8054611ca5908990600160781b90046001600160601b0316614607565b15611cbf578054600160781b90046001600160601b031697505b50505b505050505092915050565b5f5433906001600160a01b03168114611d035760405162d1953b60e31b81526001600160a01b0382166004820152602401610e95565b816001600160a01b03163b5f03611d38576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e95565b611d4182614651565b5050565b5f8054600160a01b900460ff16611d5b57505f90565b50638fb3603760e01b90565b611d7033610ad5565b610d4d8484848460016146a4565b5f80611d8933610ad5565b6001600160601b0385165f908152600a602090815260408083206001600160a01b0388168452909152908190208054915163790a38ad60e01b8152600160a01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015611e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e379190615bd5565b15611e5957858560405163020c3e0f60e31b8152600401610e95929190615bf0565b80546001600160a01b038581166001600160a01b0319831617835560408051639fa6a6e360e01b81529051918316955064ffffffffff600160a01b90930492909216935073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015611edb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eff9190615bba565b815464ffffffffff91909116600160a01b0264ffffffffff60a01b199091161790559094909350915050565b611f3433610ad5565b6001600160601b0382165f9081526008602090815260408083206001600160a01b03851684529091529081902080549151638d38cd4b60e01b8152600160d01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015611fbe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe29190615bd5565b15611fec57505050565b611ff583612cec565b506040516301f8588560e51b81526001600160601b03841660048201525f9073__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af415801561204e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120729190615c2d565b6001600160601b0381165f908152600a602090815260408083206001600160a01b03881684529091529081902054905163790a38ad60e01b8152600160a01b90910464ffffffffff16600482015290915073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af41580156120fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121219190615bd5565b1561214357808360405163020c3e0f60e31b8152600401610e95929190615bf0565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561218a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae9190615c2d565b82546001600160601b0319166001600160601b039190911617825560408051639fa6a6e360e01b8152905173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af4158015612217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223b9190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b1990911617909155506001600160601b0382165f9081526009602090815260408220805460018101825590835291200180546001600160a01b0383166001600160a01b03199091161790555050565b6001600160601b0381165f908152600b60209081526040808320548151639fa6a6e360e01b8152915161100993600160c01b90920464ffffffffff169273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__92639fa6a6e3926004808401938290030181865af415801561231b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233f9190615bba565b64ffffffffff90811691161190565b61235733610ad5565b5f61236184614def565b80546001600160601b038581166001600160c01b0319831617600160601b9186169190910217825560408051639fa6a6e360e01b81529051929350600160c01b90910464ffffffffff169173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af41580156123ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240e9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556040517ff247f9f8f9c455e0928cd8b5f34ef2567264cde4001db187c3e930c25e08fc1590610c91908790879087908690615c5c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156124ab5750825b90505f8267ffffffffffffffff1660011480156124c75750303b155b9050811580156124d5575080155b156124f35760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561251d57845460ff60401b1916600160401b1785555b600280546001600160a01b0319166001600160a01b038816179055831561257f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050565b5f61259133610ad5565b5f61259c8585614eb2565b805490915064ffffffffff600160d01b820416906125c3906001600160601b031685614f82565b82546001600160601b0319166001600160601b03919091161782556125e9868684614fcc565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612630573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126549190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b198216811784556040516001600160601b03918216919092161793507f6eea09d3401164101f559606e8c76aca972689ba8330a579bd6507b5889d153f906126c09088908890889088908790615c8c565b60405180910390a150509392505050565b5f6126db33610ad5565b5f6126e584612cec565b80546001820154919250600160c01b900464ffffffffff1690612711906001600160601b0316856144fd565b826001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af415801561277f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a39190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556001808301549054604051631c5da14d60e11b81526001600160601b03888116600483015290921694507f317c91a4e8d5e9d4af7c5e856f79e6db430257dabe4a32a352ef58b9ba000f3d91879187916001600160a01b03909116906338bb429a906024015b602060405180830381865afa158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190615c12565b604080516001600160601b03948516815292841660208401526001600160a01b0390911690820152908516606082015264ffffffffff8316608082015260a00160405180910390a1505092915050565b5f6128c433610ad5565b5f6128ce84612cec565b90505f6128dc8583866150e9565b6001838101549054604051631c5da14d60e11b81526001600160601b03898116600483015290921695509192507fb144c2ad8fd690acb16f40becc8acde92c8694ef99952f875213f57ce1b7acef91879187916001600160a01b0316906338bb429a9060240161282b565b5f61295133610ad5565b5f61295c8585614eb2565b805490915064ffffffffff600160d01b82041690612983906001600160601b0316856144fd565b82546001600160601b0319166001600160601b03919091161782556129a9868684614fcc565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156129f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a149190615bba565b825464ffffffffff91909116600160d01b0264ffffffffff60d01b198216811784556040516001600160601b03918216919092161793507f05e52d64c754f7a526cf0704e8cfe26c04e8b656e7b493f61fbda7109a326f42906126c09088908890889088908790615c8c565b5f80612ab3612a965f546001600160a01b031690565b8630612aa560045f898b615cce565b612aae91615cf5565b615226565b91509150816114c75763ffffffff811615612b4c575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90612b0d90889088908890600401615d2b565b5f604051808303815f87803b158015612b24575f80fd5b505af1158015612b36573d5f803e3d5ffd5b50505f805460ff60a01b19169055506114c79050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e95565b5f80612b7a83612cec565b9150815f0160189054906101000a900464ffffffffff16905073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612bda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfe9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782559092909150565b6001600160601b0381165f908152600b6020526040908190206001810154915163790a38ad60e01b8152600160881b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015612ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc49190615bd5565b1561100c5760405162af6eb360e61b81526001600160601b0383166004820152602401610e95565b6001600160601b0381165f90815260066020526040908190208054915163790a38ad60e01b8152600160c01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015612d62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d869190615bd5565b1561100c5760405163091c22d760e41b81526001600160601b0383166004820152602401610e95565b6002810154604051636a88f0a760e11b81526001600160a01b0390911660048201525f9073__$bf7bc340cbb9229ef1de2c568356e67902$__9063d511e14e90602401602060405180830381865af4158015612e0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e319190615bd5565b6131b4576001830154604051633682752160e21b8152600160601b90910464ffffffffff1660048201525f9073__$71e292c09eace9601b3e21e68a1278917a$__90630c67422c9073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063da09d48490602401602060405180830381865af4158015612eb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed79190615d6a565b612ee19042615d95565b6040518263ffffffff1660e01b8152600401612eff91815260200190565b602060405180830381865af4158015612f1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f3e9190615bba565b60405163790a38ad60e01b815264ffffffffff8216600482015290915073__$71e292c09eace9601b3e21e68a1278917a$__9063790a38ad90602401602060405180830381865af4158015612f95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fb99190615bd5565b156130315773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015613005573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130299190615c2d565b9150506131b4565b60028301548454604051635bdf11e360e11b81526001600160a01b03909216600483015264ffffffffff831660248301526001600160601b0316604482015273__$f048dbd5170c0ac319fa0222065b281d84$__9063b7be23c690606401602060405180830381865af41580156130aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ce9190615c2d565b83549092506130ed90600160601b90046001600160601b0316836144fd565b8354600160601b600160c01b031916600160601b6001600160601b03928316810291909117855585546131249291900416836144fd565b84546001600160601b0391909116600160601b02600160601b600160c01b03199091161784555f613155858561532e565b85546040519192507fed4853b0609e21bd14ba3f580ebca5d25c21bc024161fd250b6b33c768c1c872916126c091899187916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b9392505050565b8154604051630a4d29dd60e31b8152600160601b9091046001600160601b0316600482018190529073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af415801561321d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132419190615bd5565b6131b457600183015461325e906001600160601b03168383613ac8565b6001830154613277906001600160601b031683836153c5565b815461328c906001600160601b0316826144fd565b82546001600160601b0319166001600160601b03918216178084556132ba91600160601b9091041682614f82565b8254600160601b600160c01b031916600160601b6001600160601b039283160217835583546132ea9116826144fd565b83546001600160601b0319166001600160601b03919091161783556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af4158015613353573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133779190615c2d565b83546001600160601b0391909116600160601b02600160601b600160c01b03199091161783555f6133a8848461532e565b90507f38151af1adffdc3651d3f7917ea0e90417d40e286b11741dd01a3e3228d96c598583865f015f9054906101000a90046001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561342a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061344e9190615c2d565b88546040516134719594939291600160c01b900464ffffffffff16908890615da8565b60405180910390a1509392505050565b8254604051637931c81160e01b81526001600160601b03808416600483015290911660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156134e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135089190615c2d565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015613561573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135859190615bd5565b610d0957613592856122a5565b156135d157835460405163187bc0bd60e21b81526001600160601b0387166004820152600160c01b90910464ffffffffff166024820152604401610e95565b82546135e6906001600160601b031682614f82565b83546001600160601b0319166001600160601b03918216178455845461360d911682614f82565b84546001600160601b0319166001600160601b03919091161784555f613633858561532e565b85546040519192507fed7a6a5cb58253a85b06a414d4fb43855fc759e9f19af28b775bf2b47ec7bf709161369291899186916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b60405180910390a150949350505050565b5f806136ae83612cec565b90505f6136ba84614def565b8054909150600160c01b900464ffffffffff165f6136d8868261188c565b83549091506136f19082906001600160601b03166144fd565b8354604051637931c81160e01b81526001600160601b038084166004830152600160601b909204909116602482015290955073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af415801561375d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137819190615c2d565b94508484600101600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156137f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138179190615bba565b845464ffffffffff60c01b198116600160c01b64ffffffffff93841602908117875560018701548654604080516001600160601b03808e168252600160601b9485900481166020830152939092048316908201528582166060820152928116911617608082015290831660a08201527f816866bb29a0d245f04a0179c957b4495d86447de93a8a4962fd3528510991429060c00160405180910390a150505050919050565b8254604051637931c81160e01b81526001600160601b038084166004830152600160601b90920490911660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015613927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061394b9190615c2d565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af41580156139a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139c89190615bd5565b610d095760018401546139e5906001600160601b031684836153c5565b8254613a0190600160601b90046001600160601b031682614f82565b8354600160601b600160c01b031916600160601b6001600160601b0392831681029190911785558554613a38929190041682614f82565b84546001600160601b0391909116600160601b02600160601b600160c01b03199091161784555f613a69858561532e565b85546040519192507f39ee77ec34c101210194f9f2c8be592bf5ef303db8e68adf58b4fbe747a134829161369291899186916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b8154613afb90613ae1906001600160601b0316836144fd565b6001840154600160601b90046001600160601b0316614607565b15613b5c576001820154825484916001600160601b03600160601b909104811691613b279116846144fd565b604051631946161f60e01b81526001600160601b03938416600482015291831660248301529091166044820152606401610e95565b505050565b5f8160010160119054906101000a900464ffffffffff16905073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613bc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613be59190615bba565b8260010160116101000a81548164ffffffffff021916908364ffffffffff16021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613c50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c749190615bba565b82600101600c6101000a81548164ffffffffff021916908364ffffffffff160217905550919050565b604051630a4d29dd60e31b81526001600160601b038216600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906352694ee890602401602060405180830381865af4158015613cf3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d179190615bd5565b6114c7576001840154613d34906001600160601b03168483613ac8565b8254613d49906001600160601b0316826144fd565b83546001600160601b0319166001600160601b039182161784558454613d709116826144fd565b84546001600160601b0319166001600160601b0391909116178455600183015460405163e83da7ad60e01b815264ffffffffff8085166004830152600160c01b90920490911660248201525f9073__$71e292c09eace9601b3e21e68a1278917a$__9063e83da7ad90604401602060405180830381865af4158015613df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1b9190615bba565b6040516330b8415f60e01b81526001600160601b038416600482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015613e74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e989190615bd5565b8015613f175750604051638d38cd4b60e01b815264ffffffffff8216600482015273__$71e292c09eace9601b3e21e68a1278917a$__90638d38cd4b90602401602060405180830381865af4158015613ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f179190615bd5565b15613fc95784546040516352bcc5a760e11b8152600160c01b90910464ffffffffff90811660048301528216602482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9063a5798b4e90604401602060405180830381865af4158015613f82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fa69190615bba565b855464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161785555b5f613fd4868661532e565b86546040519192507f15d4969bfd34a12fabf5d09d2615ffc4f81d206e7756d9e3c0919ba800d57e4191614033918a9187916001600160601b0380821692600160601b830490911691600160c01b900464ffffffffff16908890615da8565b60405180910390a150505050505050565b60405163037c8cb160e51b815260ff8b16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015614094573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140b89190615bd5565b156140db57604051633c00d02760e01b815260ff8b166004820152602401610e95565b6140e58686614607565b1561411557604051622a505160e91b81526001600160601b03808816600483015286166024820152604401610e95565b61411f8484615425565b1561414e576040516338157c8960e21b815264ffffffffff808616600483015284166024820152604401610e95565b6001600160a01b03808216908316111561418e57604051638ae671e360e01b81526001600160a01b03808416600483015282166024820152604401610e95565b5f60055f8c60ff1660ff1681526020019081526020015f2060020160149054906101000a900464ffffffffff1690508960055f8d60ff1660ff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508860055f8d60ff1660ff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055508760055f8d60ff1660ff1681526020019081526020015f205f0160026101000a81548160ff0219169083151502179055508660055f8d60ff1660ff1681526020019081526020015f205f0160036101000a8154816001600160601b0302191690836001600160601b031602179055508560055f8d60ff1660ff1681526020019081526020015f205f01600f6101000a8154816001600160601b0302191690836001600160601b031602179055508460055f8d60ff1660ff1681526020019081526020015f205f01601b6101000a81548164ffffffffff021916908364ffffffffff1602179055508360055f8d60ff1660ff1681526020019081526020015f206001015f6101000a81548164ffffffffff021916908364ffffffffff1602179055508260055f8d60ff1660ff1681526020019081526020015f2060010160056101000a8154816001600160a01b0302191690836001600160a01b031602179055508160055f8d60ff1660ff1681526020019081526020015f206002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015614403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144279190615bba565b60ff8c165f81815260056020908152604091829020600201805464ffffffffff60a01b1916600160a01b64ffffffffff9687160217905581519283528d1515908301528b15159082015289151560608201526001600160601b03808a166080830152881660a082015286821660c082015285821660e08201526001600160a01b0380861661010083015284166101208201529082166101408201527fb24c8b320e3f99e0aef480e78c342643583880e3f5a1c392a85a4c51f76799f8906101600160405180910390a15050505050505050505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801561455e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b49190615c2d565b6040516304d40eb160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906309a81d62906044015b602060405180830381865af41580156145e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b49190615bd5565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044016145c8565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b801561474e5760015460035460405163647b8c2f60e01b81526001600160a01b03928316600482015290821660248201526001600160601b038716604482015260ff8616606482015264ffffffffff8516608482015290831660a482015273__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063647b8c2f9060c4015f6040518083038186803b158015614737575f80fd5b505af4158015614749573d5f803e3d5ffd5b505050505b6001600160601b0385165f90815260066020908152604091829020825163bc1b392d60e01b81529251909273__$3bac17678db7ae928afa209f2f44deec9c$__9263bc1b392d926004808401938290030181865af41580156147b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147d69190615c2d565b81546001600160601b0319166001600160601b03919091161781556040805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9163bc1b392d9160048083019260209291908290030181865af415801561483f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148639190615c2d565b815f01600c6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156148d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148f59190615c2d565b816001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614963573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149879190615c2d565b60018201805471ff0000000000ffffffffffffffffffffffff60601b1916600160601b6001600160601b039384160260ff60e81b191617600160e81b60ff8916021764ffffffffff60c01b1916600160c01b64ffffffffff8816021790556002820180546001600160a01b0319166001600160a01b0386161790556040516301f8588560e51b8152908716600482015273__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af4158015614a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a759190615c2d565b8160020160146101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015614ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b089190615bba565b815f0160186101000a81548164ffffffffff021916908364ffffffffff160217905550614d2b60075f886001600160601b03166001600160601b031681526020019081526020015f208773__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96600273__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614bb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614bd99190615c2d565b60405163046e44af60e11b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015614c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614c549190615d6a565b614c5e9190615de8565b6040518263ffffffff1660e01b8152600401614c7c91815260200190565b602060405180830381865af4158015614c97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614cbb9190615c2d565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d269190615c2d565b61546d565b600480546040516346f0e8a760e11b81526001600160601b038916928101929092526001600160a01b031690638de1d14e906024015f604051808303815f87803b158015614d77575f80fd5b505af1158015614d89573d5f803e3d5ffd5b5050604080516001600160601b038a16815260ff8916602082015264ffffffffff8816918101919091526001600160a01b03861660608201527f086dbed771133d4ebbe0285c0df8231e94a664efbae4bd66c0e3e9f11c7fd0f092506080019050612576565b6001600160601b0381165f90815260076020526040908190208054915163790a38ad60e01b8152600160c01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015614e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614e899190615bd5565b1561100c576040516384bdfa9560e01b81526001600160601b0383166004820152602401610e95565b6001600160601b0382165f9081526008602090815260408083206001600160a01b0385168452909152908190208054915163790a38ad60e01b8152600160d01b90920464ffffffffff1660048301529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015614f3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614f609190615bd5565b1561152b57828260405163688e635d60e11b8152600401610e95929190615bf0565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401614543565b8054600160c01b900461ffff16816018614fe583615e07565b82546101009290920a61ffff8181021990931691831602179091556002548354604051638755a73f60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152600160c01b84049095166044830152600160601b83048116606483015290911660848201525f9350911690638755a73f9060a401602060405180830381865afa158015615081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906150a59190615bd5565b90508015610d4d57815461ffff60c01b19600160601b6001600160601b03831602166dffffffffffffffffffffffffffff60601b199091161782556114c7846136a3565b81546001830154600160c01b90910464ffffffffff16906151149083906001600160601b0316614607565b156151535760018301546040516301a4b29960e11b81526001600160601b03808716600483015291821660248201529083166044820152606401610e95565b600183015461516b906001600160601b031683614f82565b836001015f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af41580156151d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906151fd9190615bba565b835464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161790925550919050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516152949190615e27565b5f60405180830381855afa9150503d805f81146152cc576040519150601f19603f3d011682016040523d82523d5f602084013e6152d1565b606091505b5091509150811561532357604081511061530357808060200190518101906152f99190615e3d565b9094509250615323565b602081511061532357808060200190518101906153209190615bd5565b93505b505094509492505050565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015615376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061539a9190615bba565b825464ffffffffff91909116600160c01b0264ffffffffff60c01b199091161782556131b483613b61565b5f6153d18484846150e9565b60018401546040519192507fc0f991fc396647cd10937655916d61916ae77295c1d6a67e335bc8f5024174919161541791879186916001600160601b0316908690615c5c565b60405180910390a150505050565b6040516383ffcdef60e01b815264ffffffffff8084166004830152821660248201525f9073__$71e292c09eace9601b3e21e68a1278917a$__906383ffcdef906044016145c8565b83546001600160601b038381166001600160c01b0319831617600160601b9184169190910217855560408051639fa6a6e360e01b81529051600160c01b90920464ffffffffff169173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__91639fa6a6e39160048083019260209291908290030181865af41580156154f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906155179190615bba565b855464ffffffffff91909116600160c01b0264ffffffffff60c01b19821681178088556040517f05c35323706f609643b5b81348a27fedbbaf7ae364b4d43f69a8853c024f204793610c919389936001600160601b039182169282169290921792600160601b90920416908690615c5c565b6001600160601b038116811461559d575f80fd5b50565b6001600160a01b038116811461559d575f80fd5b5f80604083850312156155c5575f80fd5b82356155d081615589565b915060208301356155e0816155a0565b809150509250929050565b5f602082840312156155fb575f80fd5b81356131b481615589565b801515811461559d575f80fd5b5f805f8060808587031215615626575f80fd5b843561563181615589565b9350602085013561564181615606565b9250604085013561565181615606565b9150606085013561566181615589565b939692955090935050565b5f6020828403121561567c575f80fd5b81356131b4816155a0565b5f805f60608486031215615699575f80fd5b83356156a481615589565b925060208401356156b481615606565b915060408401356156c481615589565b809150509250925092565b5f805f80608085870312156156e2575f80fd5b84356156ed81615589565b935060208501356156fd81615589565b92506040850135615651816155a0565b5f806040838503121561571e575f80fd5b823561572981615589565b915060208301356155e081615606565b64ffffffffff8116811461559d575f80fd5b5f805f805f60a0868803121561575f575f80fd5b853561576a81615589565b9450602086013561577a81615606565b9350604086013561578a81615606565b9250606086013561579a81615739565b915060808601356157aa81615589565b809150509295509295909350565b803560ff8116811461100c575f80fd5b5f805f805f805f805f806101408b8d0312156157e2575f80fd5b6157eb8b6157b8565b995060208b01356157fb81615606565b985060408b013561580b81615606565b975060608b013561581b81615606565b965060808b013561582b81615589565b955060a08b013561583b81615589565b945060c08b013561584b81615739565b935060e08b013561585b81615739565b92506101008b013561586c816155a0565b91506101208b013561587d816155a0565b809150509295989b9194979a5092959850565b5f80604083850312156158a1575f80fd5b82356158ac81615589565b915060208301356155e081615739565b5f80604083850312156158cd575f80fd5b82356158d881615589565b915060208301356155e081615589565b5f805f80608085870312156158fb575f80fd5b843561590681615589565b9350615914602086016157b8565b9250604085013561592481615739565b91506060850135615661816155a0565b5f805f60608486031215615946575f80fd5b833561595181615589565b92506020840135615961816155a0565b915060408401356156c4816155a0565b81516001600160601b0316815260208083015161012083019161599e908401826001600160601b03169052565b5060408301516159b7604084018264ffffffffff169052565b5060608301516159d260608401826001600160601b03169052565b5060808301516159ed60808401826001600160601b03169052565b5060a0830151615a0660a084018264ffffffffff169052565b5060c0830151615a1b60c084018260ff169052565b5060e0830151615a3660e08401826001600160a01b03169052565b50610100830151615a536101008401826001600160601b03169052565b5092915050565b5f805f60608486031215615a6c575f80fd5b8335615a7781615589565b925060208401356156b481615589565b5f805f60608486031215615a99575f80fd5b8335615aa481615589565b925060208401356156b4816155a0565b5f60208284031215615ac4575f80fd5b6131b4826157b8565b81511515815261014081016020830151615aeb602084018215159052565b506040830151615aff604084018215159052565b506060830151615b1a60608401826001600160601b03169052565b506080830151615b3560808401826001600160601b03169052565b5060a0830151615b4e60a084018264ffffffffff169052565b5060c0830151615b6760c084018264ffffffffff169052565b5060e0830151615b8260e08401826001600160a01b03169052565b50610100830151615b9f6101008401826001600160a01b03169052565b50610120830151615a5361012084018264ffffffffff169052565b5f60208284031215615bca575f80fd5b81516131b481615739565b5f60208284031215615be5575f80fd5b81516131b481615606565b6001600160601b039290921682526001600160a01b0316602082015260400190565b5f60208284031215615c22575f80fd5b81516131b4816155a0565b5f60208284031215615c3d575f80fd5b81516131b481615589565b634e487b7160e01b5f52603260045260245ffd5b6001600160601b03948516815292841660208401529216604082015264ffffffffff909116606082015260800190565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015264ffffffffff909116608082015260a00190565b5f8085851115615cdc575f80fd5b83861115615ce8575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615a53576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215615d7a575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561152b5761152b615d81565b6001600160601b039687168152948616602086015292851660408501529316606083015264ffffffffff928316608083015290911660a082015260c00190565b5f82615e0257634e487b7160e01b5f52601260045260245ffd5b500490565b5f61ffff821661ffff8103615e1e57615e1e615d81565b60010192915050565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e4e575f80fd5b8251615e5981615606565b602084015190925063ffffffff811681146155e0575f80fdfea264697066735822122074f0e0c89fe8af9fa03992c53540120d4569a643307cd0a1579a332b0937094a64736f6c634300081a0033",
1650
2201
  "linkReferences": {
2202
+ "contracts/staking/StakingLib.sol": {
2203
+ "StakingLib": [
2204
+ {
2205
+ "length": 20,
2206
+ "start": 18481
2207
+ }
2208
+ ]
2209
+ },
1651
2210
  "contracts/staking/TargetManagerLib.sol": {
1652
2211
  "TargetManagerLib": [
1653
2212
  {
1654
2213
  "length": 20,
1655
- "start": 448
2214
+ "start": 1297
2215
+ },
2216
+ {
2217
+ "length": 20,
2218
+ "start": 1404
2219
+ },
2220
+ {
2221
+ "length": 20,
2222
+ "start": 3448
2223
+ },
2224
+ {
2225
+ "length": 20,
2226
+ "start": 8953
1656
2227
  },
1657
2228
  {
1658
2229
  "length": 20,
1659
- "start": 567
2230
+ "start": 11759
2231
+ },
2232
+ {
2233
+ "length": 20,
2234
+ "start": 24259
1660
2235
  }
1661
2236
  ]
1662
2237
  },
@@ -1664,227 +2239,323 @@
1664
2239
  "AmountLib": [
1665
2240
  {
1666
2241
  "length": 20,
1667
- "start": 2648
2242
+ "start": 513
1668
2243
  },
1669
2244
  {
1670
2245
  "length": 20,
1671
- "start": 2825
2246
+ "start": 620
1672
2247
  },
1673
2248
  {
1674
2249
  "length": 20,
1675
- "start": 3002
2250
+ "start": 1558
1676
2251
  },
1677
2252
  {
1678
2253
  "length": 20,
1679
- "start": 7028
2254
+ "start": 1652
1680
2255
  },
1681
2256
  {
1682
2257
  "length": 20,
1683
- "start": 7847
2258
+ "start": 3567
1684
2259
  },
1685
2260
  {
1686
2261
  "length": 20,
1687
- "start": 9138
2262
+ "start": 3703
1688
2263
  },
1689
2264
  {
1690
2265
  "length": 20,
1691
- "start": 10751
2266
+ "start": 3840
1692
2267
  },
1693
2268
  {
1694
2269
  "length": 20,
1695
- "start": 10902
2270
+ "start": 3986
1696
2271
  },
1697
2272
  {
1698
2273
  "length": 20,
1699
- "start": 11547
2274
+ "start": 4555
1700
2275
  },
1701
2276
  {
1702
2277
  "length": 20,
1703
- "start": 12557
2278
+ "start": 4583
1704
2279
  },
1705
2280
  {
1706
2281
  "length": 20,
1707
- "start": 12689
2282
+ "start": 4719
1708
2283
  },
1709
2284
  {
1710
2285
  "length": 20,
1711
- "start": 14275
2286
+ "start": 4916
1712
2287
  },
1713
2288
  {
1714
2289
  "length": 20,
1715
- "start": 16002
2290
+ "start": 5269
1716
2291
  },
1717
2292
  {
1718
2293
  "length": 20,
1719
- "start": 16179
2294
+ "start": 10715
1720
2295
  },
1721
2296
  {
1722
2297
  "length": 20,
1723
- "start": 18274
2298
+ "start": 10856
1724
2299
  },
1725
2300
  {
1726
2301
  "length": 20,
1727
- "start": 18451
2302
+ "start": 12480
1728
2303
  },
1729
2304
  {
1730
2305
  "length": 20,
1731
- "start": 18628
1732
- }
1733
- ]
1734
- },
1735
- "contracts/type/Blocknumber.sol": {
1736
- "BlocknumberLib": [
2306
+ "start": 12595
2307
+ },
2308
+ {
2309
+ "length": 20,
2310
+ "start": 12855
2311
+ },
2312
+ {
2313
+ "length": 20,
2314
+ "start": 13139
2315
+ },
2316
+ {
2317
+ "length": 20,
2318
+ "start": 14596
2319
+ },
2320
+ {
2321
+ "length": 20,
2322
+ "start": 18303
2323
+ },
2324
+ {
2325
+ "length": 20,
2326
+ "start": 18852
2327
+ },
2328
+ {
2329
+ "length": 20,
2330
+ "start": 19158
2331
+ },
2332
+ {
2333
+ "length": 20,
2334
+ "start": 19364
2335
+ },
2336
+ {
2337
+ "length": 20,
2338
+ "start": 19563
2339
+ },
1737
2340
  {
1738
2341
  "length": 20,
1739
- "start": 1164
2342
+ "start": 19688
1740
2343
  },
1741
2344
  {
1742
2345
  "length": 20,
1743
- "start": 2513
2346
+ "start": 20196
1744
2347
  },
1745
2348
  {
1746
2349
  "length": 20,
1747
- "start": 3179
2350
+ "start": 20654
1748
2351
  },
1749
2352
  {
1750
2353
  "length": 20,
1751
- "start": 3477
2354
+ "start": 20779
1752
2355
  },
1753
2356
  {
1754
2357
  "length": 20,
1755
- "start": 9432
2358
+ "start": 21626
1756
2359
  },
1757
2360
  {
1758
2361
  "length": 20,
1759
- "start": 12062
2362
+ "start": 22011
1760
2363
  },
1761
2364
  {
1762
2365
  "length": 20,
1763
- "start": 12834
2366
+ "start": 23780
1764
2367
  },
1765
2368
  {
1766
2369
  "length": 20,
1767
- "start": 13051
2370
+ "start": 23913
1768
2371
  },
1769
2372
  {
1770
2373
  "length": 20,
1771
- "start": 13779
2374
+ "start": 24046
1772
2375
  },
1773
2376
  {
1774
2377
  "length": 20,
1775
- "start": 14097
2378
+ "start": 24378
1776
2379
  },
1777
2380
  {
1778
2381
  "length": 20,
1779
- "start": 14557
2382
+ "start": 24514
1780
2383
  },
1781
2384
  {
1782
2385
  "length": 20,
1783
- "start": 14802
2386
+ "start": 24651
1784
2387
  },
1785
2388
  {
1786
2389
  "length": 20,
1787
- "start": 15867
2390
+ "start": 24797
1788
2391
  },
1789
2392
  {
1790
2393
  "length": 20,
1791
- "start": 16529
2394
+ "start": 25363
1792
2395
  },
1793
2396
  {
1794
2397
  "length": 20,
1795
- "start": 16742
2398
+ "start": 25391
1796
2399
  },
1797
2400
  {
1798
2401
  "length": 20,
1799
- "start": 18139
2402
+ "start": 25527
1800
2403
  },
1801
2404
  {
1802
2405
  "length": 20,
1803
- "start": 18805
2406
+ "start": 25724
1804
2407
  },
1805
2408
  {
1806
2409
  "length": 20,
1807
- "start": 18877
2410
+ "start": 26473
1808
2411
  }
1809
2412
  ]
1810
2413
  },
1811
- "contracts/type/Key32.sol": {
1812
- "Key32Lib": [
2414
+ "contracts/type/Blocknumber.sol": {
2415
+ "BlocknumberLib": [
1813
2416
  {
1814
2417
  "length": 20,
1815
- "start": 1521
2418
+ "start": 3033
1816
2419
  },
1817
2420
  {
1818
2421
  "length": 20,
1819
- "start": 2193
2422
+ "start": 4374
1820
2423
  },
1821
2424
  {
1822
2425
  "length": 20,
1823
- "start": 2307
2426
+ "start": 5524
1824
2427
  },
1825
2428
  {
1826
2429
  "length": 20,
1827
- "start": 11381
2430
+ "start": 9081
1828
2431
  },
1829
2432
  {
1830
2433
  "length": 20,
1831
- "start": 13295
2434
+ "start": 9686
1832
2435
  },
1833
2436
  {
1834
2437
  "length": 20,
1835
- "start": 13409
2438
+ "start": 9973
1836
2439
  },
1837
2440
  {
1838
2441
  "length": 20,
1839
- "start": 14883
2442
+ "start": 10345
1840
2443
  },
1841
2444
  {
1842
2445
  "length": 20,
1843
- "start": 15556
2446
+ "start": 10512
1844
2447
  },
1845
2448
  {
1846
2449
  "length": 20,
1847
- "start": 15670
2450
+ "start": 11895
1848
2451
  },
1849
2452
  {
1850
2453
  "length": 20,
1851
- "start": 17761
2454
+ "start": 13722
1852
2455
  },
1853
2456
  {
1854
2457
  "length": 20,
1855
- "start": 17875
1856
- }
1857
- ]
1858
- },
1859
- "contracts/type/NftId.sol": {
1860
- "NftIdLib": [
2458
+ "start": 13918
2459
+ },
2460
+ {
2461
+ "length": 20,
2462
+ "start": 14149
2463
+ },
2464
+ {
2465
+ "length": 20,
2466
+ "start": 14468
2467
+ },
2468
+ {
2469
+ "length": 20,
2470
+ "start": 14746
2471
+ },
2472
+ {
2473
+ "length": 20,
2474
+ "start": 15213
2475
+ },
2476
+ {
2477
+ "length": 20,
2478
+ "start": 15786
2479
+ },
2480
+ {
2481
+ "length": 20,
2482
+ "start": 16121
2483
+ },
2484
+ {
2485
+ "length": 20,
2486
+ "start": 16746
2487
+ },
2488
+ {
2489
+ "length": 20,
2490
+ "start": 17236
2491
+ },
2492
+ {
2493
+ "length": 20,
2494
+ "start": 17447
2495
+ },
2496
+ {
2497
+ "length": 20,
2498
+ "start": 17641
2499
+ },
1861
2500
  {
1862
2501
  "length": 20,
1863
- "start": 314
2502
+ "start": 20333
1864
2503
  },
1865
2504
  {
1866
2505
  "length": 20,
1867
- "start": 939
2506
+ "start": 21307
1868
2507
  },
1869
2508
  {
1870
2509
  "length": 20,
1871
- "start": 6686
2510
+ "start": 23421
1872
2511
  },
1873
2512
  {
1874
2513
  "length": 20,
1875
- "start": 8431
2514
+ "start": 25182
1876
2515
  },
1877
2516
  {
1878
2517
  "length": 20,
1879
- "start": 8553
2518
+ "start": 26092
1880
2519
  },
1881
2520
  {
1882
2521
  "length": 20,
1883
- "start": 8916
2522
+ "start": 26307
1884
2523
  },
1885
2524
  {
1886
2525
  "length": 20,
1887
- "start": 13570
2526
+ "start": 26963
2527
+ },
2528
+ {
2529
+ "length": 20,
2530
+ "start": 27376
2531
+ },
2532
+ {
2533
+ "length": 20,
2534
+ "start": 27766
2535
+ }
2536
+ ]
2537
+ },
2538
+ "contracts/type/ChainId.sol": {
2539
+ "ChainIdLib": [
2540
+ {
2541
+ "length": 20,
2542
+ "start": 4240
2543
+ },
2544
+ {
2545
+ "length": 20,
2546
+ "start": 14293
2547
+ },
2548
+ {
2549
+ "length": 20,
2550
+ "start": 25048
2551
+ }
2552
+ ]
2553
+ },
2554
+ "contracts/type/NftId.sol": {
2555
+ "NftIdLib": [
2556
+ {
2557
+ "length": 20,
2558
+ "start": 1201
1888
2559
  }
1889
2560
  ]
1890
2561
  },
@@ -1892,43 +2563,43 @@
1892
2563
  "LibNftIdSet": [
1893
2564
  {
1894
2565
  "length": 20,
1895
- "start": 21835
2566
+ "start": 30824
1896
2567
  },
1897
2568
  {
1898
2569
  "length": 20,
1899
- "start": 21952
2570
+ "start": 30941
1900
2571
  },
1901
2572
  {
1902
2573
  "length": 20,
1903
- "start": 22082
2574
+ "start": 31071
1904
2575
  },
1905
2576
  {
1906
2577
  "length": 20,
1907
- "start": 22214
2578
+ "start": 31203
1908
2579
  },
1909
2580
  {
1910
2581
  "length": 20,
1911
- "start": 22351
2582
+ "start": 31340
1912
2583
  },
1913
2584
  {
1914
2585
  "length": 20,
1915
- "start": 22459
2586
+ "start": 31448
1916
2587
  },
1917
2588
  {
1918
2589
  "length": 20,
1919
- "start": 22641
2590
+ "start": 31630
1920
2591
  },
1921
2592
  {
1922
2593
  "length": 20,
1923
- "start": 22699
2594
+ "start": 31688
1924
2595
  },
1925
2596
  {
1926
2597
  "length": 20,
1927
- "start": 22821
2598
+ "start": 31810
1928
2599
  },
1929
2600
  {
1930
2601
  "length": 20,
1931
- "start": 22886
2602
+ "start": 31875
1932
2603
  }
1933
2604
  ]
1934
2605
  },
@@ -1936,47 +2607,55 @@
1936
2607
  "ObjectTypeLib": [
1937
2608
  {
1938
2609
  "length": 20,
1939
- "start": 1640
2610
+ "start": 2167
1940
2611
  },
1941
2612
  {
1942
2613
  "length": 20,
1943
- "start": 15002
2614
+ "start": 22555
1944
2615
  }
1945
2616
  ]
1946
2617
  },
1947
- "contracts/type/StateId.sol": {
1948
- "StateIdLib": [
2618
+ "contracts/type/Seconds.sol": {
2619
+ "SecondsLib": [
1949
2620
  {
1950
2621
  "length": 20,
1951
- "start": 1813
2622
+ "start": 727
1952
2623
  },
1953
2624
  {
1954
2625
  "length": 20,
1955
- "start": 3376
2626
+ "start": 834
1956
2627
  },
1957
2628
  {
1958
2629
  "length": 20,
1959
- "start": 7669
2630
+ "start": 1759
1960
2631
  },
1961
2632
  {
1962
2633
  "length": 20,
1963
- "start": 10190
2634
+ "start": 1866
1964
2635
  },
1965
2636
  {
1966
2637
  "length": 20,
1967
- "start": 10457
2638
+ "start": 5407
1968
2639
  },
1969
2640
  {
1970
2641
  "length": 20,
1971
- "start": 15175
2642
+ "start": 17950
1972
2643
  },
1973
2644
  {
1974
2645
  "length": 20,
1975
- "start": 17349
2646
+ "start": 18204
1976
2647
  },
1977
2648
  {
1978
2649
  "length": 20,
1979
- "start": 17536
2650
+ "start": 21886
2651
+ },
2652
+ {
2653
+ "length": 20,
2654
+ "start": 22138
2655
+ },
2656
+ {
2657
+ "length": 20,
2658
+ "start": 27658
1980
2659
  }
1981
2660
  ]
1982
2661
  },
@@ -1984,11 +2663,23 @@
1984
2663
  "TimestampLib": [
1985
2664
  {
1986
2665
  "length": 20,
1987
- "start": 14396
2666
+ "start": 10993
2667
+ },
2668
+ {
2669
+ "length": 20,
2670
+ "start": 15011
2671
+ },
2672
+ {
2673
+ "length": 20,
2674
+ "start": 17978
1988
2675
  },
1989
2676
  {
1990
2677
  "length": 20,
1991
- "start": 16356
2678
+ "start": 21450
2679
+ },
2680
+ {
2681
+ "length": 20,
2682
+ "start": 22281
1992
2683
  }
1993
2684
  ]
1994
2685
  },
@@ -1996,69 +2687,181 @@
1996
2687
  "UFixedLib": [
1997
2688
  {
1998
2689
  "length": 20,
1999
- "start": 11681
2690
+ "start": 941
2691
+ },
2692
+ {
2693
+ "length": 20,
2694
+ "start": 1076
2695
+ },
2696
+ {
2697
+ "length": 20,
2698
+ "start": 1973
2699
+ },
2700
+ {
2701
+ "length": 20,
2702
+ "start": 2107
2703
+ },
2704
+ {
2705
+ "length": 20,
2706
+ "start": 9823
2707
+ },
2708
+ {
2709
+ "length": 20,
2710
+ "start": 13022
2711
+ },
2712
+ {
2713
+ "length": 20,
2714
+ "start": 17812
2000
2715
  }
2001
2716
  ]
2002
2717
  }
2003
2718
  },
2004
2719
  "deployedLinkReferences": {
2720
+ "contracts/staking/StakingLib.sol": {
2721
+ "StakingLib": [
2722
+ {
2723
+ "length": 20,
2724
+ "start": 12402
2725
+ }
2726
+ ]
2727
+ },
2728
+ "contracts/staking/TargetManagerLib.sol": {
2729
+ "TargetManagerLib": [
2730
+ {
2731
+ "length": 20,
2732
+ "start": 2874
2733
+ },
2734
+ {
2735
+ "length": 20,
2736
+ "start": 5680
2737
+ },
2738
+ {
2739
+ "length": 20,
2740
+ "start": 18180
2741
+ }
2742
+ ]
2743
+ },
2005
2744
  "contracts/type/Amount.sol": {
2006
2745
  "AmountLib": [
2007
2746
  {
2008
2747
  "length": 20,
2009
- "start": 2712
2748
+ "start": 4636
2749
+ },
2750
+ {
2751
+ "length": 20,
2752
+ "start": 4777
2753
+ },
2754
+ {
2755
+ "length": 20,
2756
+ "start": 6401
2757
+ },
2758
+ {
2759
+ "length": 20,
2760
+ "start": 6516
2761
+ },
2762
+ {
2763
+ "length": 20,
2764
+ "start": 6776
2765
+ },
2766
+ {
2767
+ "length": 20,
2768
+ "start": 7060
2769
+ },
2770
+ {
2771
+ "length": 20,
2772
+ "start": 8517
2773
+ },
2774
+ {
2775
+ "length": 20,
2776
+ "start": 12224
2010
2777
  },
2011
2778
  {
2012
2779
  "length": 20,
2013
- "start": 3531
2780
+ "start": 12773
2014
2781
  },
2015
2782
  {
2016
2783
  "length": 20,
2017
- "start": 4822
2784
+ "start": 13079
2018
2785
  },
2019
2786
  {
2020
2787
  "length": 20,
2021
- "start": 6435
2788
+ "start": 13285
2022
2789
  },
2023
2790
  {
2024
2791
  "length": 20,
2025
- "start": 6586
2792
+ "start": 13484
2026
2793
  },
2027
2794
  {
2028
2795
  "length": 20,
2029
- "start": 7231
2796
+ "start": 13609
2030
2797
  },
2031
2798
  {
2032
2799
  "length": 20,
2033
- "start": 8241
2800
+ "start": 14117
2034
2801
  },
2035
2802
  {
2036
2803
  "length": 20,
2037
- "start": 8373
2804
+ "start": 14575
2038
2805
  },
2039
2806
  {
2040
2807
  "length": 20,
2041
- "start": 9959
2808
+ "start": 14700
2042
2809
  },
2043
2810
  {
2044
2811
  "length": 20,
2045
- "start": 11686
2812
+ "start": 15547
2046
2813
  },
2047
2814
  {
2048
2815
  "length": 20,
2049
- "start": 11863
2816
+ "start": 15932
2050
2817
  },
2051
2818
  {
2052
2819
  "length": 20,
2053
- "start": 13958
2820
+ "start": 17701
2054
2821
  },
2055
2822
  {
2056
2823
  "length": 20,
2057
- "start": 14135
2824
+ "start": 17834
2058
2825
  },
2059
2826
  {
2060
2827
  "length": 20,
2061
- "start": 14312
2828
+ "start": 17967
2829
+ },
2830
+ {
2831
+ "length": 20,
2832
+ "start": 18299
2833
+ },
2834
+ {
2835
+ "length": 20,
2836
+ "start": 18435
2837
+ },
2838
+ {
2839
+ "length": 20,
2840
+ "start": 18572
2841
+ },
2842
+ {
2843
+ "length": 20,
2844
+ "start": 18718
2845
+ },
2846
+ {
2847
+ "length": 20,
2848
+ "start": 19284
2849
+ },
2850
+ {
2851
+ "length": 20,
2852
+ "start": 19312
2853
+ },
2854
+ {
2855
+ "length": 20,
2856
+ "start": 19448
2857
+ },
2858
+ {
2859
+ "length": 20,
2860
+ "start": 19645
2861
+ },
2862
+ {
2863
+ "length": 20,
2864
+ "start": 20394
2062
2865
  }
2063
2866
  ]
2064
2867
  },
@@ -2066,155 +2869,155 @@
2066
2869
  "BlocknumberLib": [
2067
2870
  {
2068
2871
  "length": 20,
2069
- "start": 5116
2872
+ "start": 3002
2070
2873
  },
2071
2874
  {
2072
2875
  "length": 20,
2073
- "start": 7746
2876
+ "start": 3607
2074
2877
  },
2075
2878
  {
2076
2879
  "length": 20,
2077
- "start": 8518
2880
+ "start": 3894
2078
2881
  },
2079
2882
  {
2080
2883
  "length": 20,
2081
- "start": 8735
2884
+ "start": 4266
2082
2885
  },
2083
2886
  {
2084
2887
  "length": 20,
2085
- "start": 9463
2888
+ "start": 4433
2086
2889
  },
2087
2890
  {
2088
2891
  "length": 20,
2089
- "start": 9781
2892
+ "start": 5816
2090
2893
  },
2091
2894
  {
2092
2895
  "length": 20,
2093
- "start": 10241
2896
+ "start": 7643
2094
2897
  },
2095
2898
  {
2096
2899
  "length": 20,
2097
- "start": 10486
2900
+ "start": 7839
2098
2901
  },
2099
2902
  {
2100
2903
  "length": 20,
2101
- "start": 11551
2904
+ "start": 8070
2102
2905
  },
2103
2906
  {
2104
2907
  "length": 20,
2105
- "start": 12213
2908
+ "start": 8389
2106
2909
  },
2107
2910
  {
2108
2911
  "length": 20,
2109
- "start": 12426
2912
+ "start": 8667
2110
2913
  },
2111
2914
  {
2112
2915
  "length": 20,
2113
- "start": 13823
2916
+ "start": 9134
2114
2917
  },
2115
2918
  {
2116
2919
  "length": 20,
2117
- "start": 14489
2920
+ "start": 9707
2118
2921
  },
2119
2922
  {
2120
2923
  "length": 20,
2121
- "start": 14561
2122
- }
2123
- ]
2124
- },
2125
- "contracts/type/Key32.sol": {
2126
- "Key32Lib": [
2924
+ "start": 10042
2925
+ },
2127
2926
  {
2128
2927
  "length": 20,
2129
- "start": 7065
2928
+ "start": 10667
2130
2929
  },
2131
2930
  {
2132
2931
  "length": 20,
2133
- "start": 8979
2932
+ "start": 11157
2134
2933
  },
2135
2934
  {
2136
2935
  "length": 20,
2137
- "start": 9093
2936
+ "start": 11368
2138
2937
  },
2139
2938
  {
2140
2939
  "length": 20,
2141
- "start": 10567
2940
+ "start": 11562
2142
2941
  },
2143
2942
  {
2144
2943
  "length": 20,
2145
- "start": 11240
2944
+ "start": 14254
2146
2945
  },
2147
2946
  {
2148
2947
  "length": 20,
2149
- "start": 11354
2948
+ "start": 15228
2150
2949
  },
2151
2950
  {
2152
2951
  "length": 20,
2153
- "start": 13445
2952
+ "start": 17342
2154
2953
  },
2155
2954
  {
2156
2955
  "length": 20,
2157
- "start": 13559
2158
- }
2159
- ]
2160
- },
2161
- "contracts/type/NftId.sol": {
2162
- "NftIdLib": [
2956
+ "start": 19103
2957
+ },
2163
2958
  {
2164
2959
  "length": 20,
2165
- "start": 2370
2960
+ "start": 20013
2166
2961
  },
2167
2962
  {
2168
2963
  "length": 20,
2169
- "start": 4115
2964
+ "start": 20228
2170
2965
  },
2171
2966
  {
2172
2967
  "length": 20,
2173
- "start": 4237
2968
+ "start": 20884
2174
2969
  },
2175
2970
  {
2176
2971
  "length": 20,
2177
- "start": 4600
2972
+ "start": 21297
2178
2973
  },
2179
2974
  {
2180
2975
  "length": 20,
2181
- "start": 9254
2976
+ "start": 21687
2182
2977
  }
2183
2978
  ]
2184
2979
  },
2185
- "contracts/type/ObjectType.sol": {
2186
- "ObjectTypeLib": [
2980
+ "contracts/type/ChainId.sol": {
2981
+ "ChainIdLib": [
2187
2982
  {
2188
2983
  "length": 20,
2189
- "start": 10686
2984
+ "start": 8214
2985
+ },
2986
+ {
2987
+ "length": 20,
2988
+ "start": 18969
2190
2989
  }
2191
2990
  ]
2192
2991
  },
2193
- "contracts/type/StateId.sol": {
2194
- "StateIdLib": [
2992
+ "contracts/type/ObjectType.sol": {
2993
+ "ObjectTypeLib": [
2195
2994
  {
2196
2995
  "length": 20,
2197
- "start": 3353
2198
- },
2996
+ "start": 16476
2997
+ }
2998
+ ]
2999
+ },
3000
+ "contracts/type/Seconds.sol": {
3001
+ "SecondsLib": [
2199
3002
  {
2200
3003
  "length": 20,
2201
- "start": 5874
3004
+ "start": 11871
2202
3005
  },
2203
3006
  {
2204
3007
  "length": 20,
2205
- "start": 6141
3008
+ "start": 12125
2206
3009
  },
2207
3010
  {
2208
3011
  "length": 20,
2209
- "start": 10859
3012
+ "start": 15807
2210
3013
  },
2211
3014
  {
2212
3015
  "length": 20,
2213
- "start": 13033
3016
+ "start": 16059
2214
3017
  },
2215
3018
  {
2216
3019
  "length": 20,
2217
- "start": 13220
3020
+ "start": 21579
2218
3021
  }
2219
3022
  ]
2220
3023
  },
@@ -2222,11 +3025,23 @@
2222
3025
  "TimestampLib": [
2223
3026
  {
2224
3027
  "length": 20,
2225
- "start": 10080
3028
+ "start": 4914
3029
+ },
3030
+ {
3031
+ "length": 20,
3032
+ "start": 8932
3033
+ },
3034
+ {
3035
+ "length": 20,
3036
+ "start": 11899
3037
+ },
3038
+ {
3039
+ "length": 20,
3040
+ "start": 15371
2226
3041
  },
2227
3042
  {
2228
3043
  "length": 20,
2229
- "start": 12040
3044
+ "start": 16202
2230
3045
  }
2231
3046
  ]
2232
3047
  },
@@ -2234,7 +3049,15 @@
2234
3049
  "UFixedLib": [
2235
3050
  {
2236
3051
  "length": 20,
2237
- "start": 7365
3052
+ "start": 3744
3053
+ },
3054
+ {
3055
+ "length": 20,
3056
+ "start": 6943
3057
+ },
3058
+ {
3059
+ "length": 20,
3060
+ "start": 11733
2238
3061
  }
2239
3062
  ]
2240
3063
  }