@etherisc/gif-next 0.0.2-b38343e-249 → 0.0.2-b44ae3c-205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +115 -95
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +182 -195
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +190 -67
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +207 -150
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +389 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +213 -158
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +334 -249
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +135 -183
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +306 -2137
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -75
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2883
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +425 -242
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +231 -287
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -75
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +123 -33
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -126
  62. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -38
  64. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +443 -240
  66. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
  68. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +722 -81
  70. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +147 -32
  72. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +732 -111
  74. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +147 -44
  76. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +126 -95
  78. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +300 -187
  80. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +395 -50
  82. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +424 -64
  84. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +212 -133
  86. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +787 -46
  88. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -26
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +387 -215
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +84 -61
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +958 -52
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +96 -37
  100. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +152 -54
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -26
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -39
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  128. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +95 -26
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +7 -20
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Service.sol/Service.json +102 -28
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +7 -20
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +117 -39
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  173. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  177. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  179. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  203. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  209. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  213. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  217. package/contracts/components/Component.sol +115 -85
  218. package/contracts/components/Distribution.sol +27 -50
  219. package/contracts/components/IComponent.sol +52 -17
  220. package/contracts/components/IDistributionComponent.sol +1 -30
  221. package/contracts/components/IPoolComponent.sol +75 -48
  222. package/contracts/components/IProductComponent.sol +8 -6
  223. package/contracts/components/Pool.sol +178 -130
  224. package/contracts/components/Product.sol +164 -74
  225. package/contracts/instance/BundleManager.sol +10 -9
  226. package/contracts/instance/Cloneable.sol +7 -2
  227. package/contracts/instance/IInstance.sol +40 -55
  228. package/contracts/instance/IInstanceService.sol +28 -14
  229. package/contracts/instance/Instance.sol +123 -185
  230. package/contracts/instance/InstanceAccessManager.sol +404 -160
  231. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  232. package/contracts/instance/InstanceReader.sol +90 -15
  233. package/contracts/instance/InstanceService.sol +173 -341
  234. package/contracts/instance/InstanceStore.sol +212 -0
  235. package/contracts/instance/ObjectManager.sol +6 -8
  236. package/contracts/instance/base/ComponentService.sol +53 -39
  237. package/contracts/instance/base/KeyValueStore.sol +13 -36
  238. package/contracts/instance/base/Lifecycle.sol +26 -6
  239. package/contracts/instance/module/IAccess.sol +21 -14
  240. package/contracts/instance/module/IBundle.sol +8 -5
  241. package/contracts/instance/module/IComponents.sol +41 -0
  242. package/contracts/instance/module/IDistribution.sol +3 -0
  243. package/contracts/instance/module/IPolicy.sol +39 -9
  244. package/contracts/instance/module/ISetup.sol +7 -21
  245. package/contracts/instance/service/ApplicationService.sol +68 -150
  246. package/contracts/instance/service/BundleService.sol +223 -139
  247. package/contracts/instance/service/ClaimService.sol +318 -32
  248. package/contracts/instance/service/DistributionService.sol +171 -100
  249. package/contracts/instance/service/IApplicationService.sol +11 -31
  250. package/contracts/instance/service/IBundleService.sol +92 -28
  251. package/contracts/instance/service/IClaimService.sol +52 -23
  252. package/contracts/instance/service/IDistributionService.sol +33 -11
  253. package/contracts/instance/service/IPolicyService.sol +24 -33
  254. package/contracts/instance/service/IPoolService.sol +97 -3
  255. package/contracts/instance/service/IPricingService.sol +37 -0
  256. package/contracts/instance/service/PolicyService.sol +168 -266
  257. package/contracts/instance/service/PoolService.sol +313 -19
  258. package/contracts/instance/service/PricingService.sol +275 -0
  259. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  260. package/contracts/instance/service/ProductService.sol +37 -60
  261. package/contracts/registry/ChainNft.sol +8 -0
  262. package/contracts/registry/IRegistry.sol +2 -0
  263. package/contracts/registry/IRegistryService.sol +2 -3
  264. package/contracts/registry/ITransferInterceptor.sol +1 -0
  265. package/contracts/registry/Registry.sol +23 -20
  266. package/contracts/registry/RegistryService.sol +29 -26
  267. package/contracts/registry/ReleaseManager.sol +20 -18
  268. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  269. package/contracts/shared/IPolicyHolder.sol +23 -9
  270. package/contracts/shared/IRegistryLinked.sol +0 -1
  271. package/contracts/shared/IService.sol +6 -4
  272. package/contracts/shared/NftOwnable.sol +0 -2
  273. package/contracts/shared/PolicyHolder.sol +30 -17
  274. package/contracts/shared/Registerable.sol +12 -11
  275. package/contracts/shared/RegistryLinked.sol +0 -5
  276. package/contracts/shared/Service.sol +21 -7
  277. package/contracts/shared/TokenHandler.sol +14 -6
  278. package/contracts/test/TestService.sol +1 -1
  279. package/contracts/types/Amount.sol +109 -0
  280. package/contracts/types/Blocknumber.sol +1 -0
  281. package/contracts/types/ClaimId.sol +25 -2
  282. package/contracts/types/Fee.sol +17 -8
  283. package/contracts/types/NftId.sol +8 -0
  284. package/contracts/types/ObjectType.sol +10 -5
  285. package/contracts/types/PayoutId.sol +33 -5
  286. package/contracts/types/Referral.sol +4 -0
  287. package/contracts/types/RoleId.sol +13 -6
  288. package/contracts/types/Seconds.sol +54 -0
  289. package/contracts/types/StateId.sol +7 -2
  290. package/contracts/types/Timestamp.sol +18 -13
  291. package/contracts/types/UFixed.sol +1 -0
  292. package/contracts/types/Version.sol +1 -0
  293. package/package.json +1 -1
  294. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  296. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  298. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  300. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  302. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  304. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  306. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  308. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  310. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  312. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  314. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  316. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  318. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  320. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  322. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  324. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  326. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  328. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  330. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  332. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  334. package/contracts/experiment/cloning/Cloner.sol +0 -47
  335. package/contracts/experiment/errors/Require.sol +0 -38
  336. package/contracts/experiment/errors/Revert.sol +0 -44
  337. package/contracts/experiment/inheritance/A.sol +0 -53
  338. package/contracts/experiment/inheritance/B.sol +0 -28
  339. package/contracts/experiment/inheritance/C.sol +0 -34
  340. package/contracts/experiment/inheritance/IA.sol +0 -13
  341. package/contracts/experiment/inheritance/IB.sol +0 -10
  342. package/contracts/experiment/inheritance/IC.sol +0 -12
  343. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  344. package/contracts/experiment/statemachine/ISM.sol +0 -25
  345. package/contracts/experiment/statemachine/SM.sol +0 -57
  346. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  347. package/contracts/experiment/types/TypeA.sol +0 -47
  348. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -3,6 +3,44 @@
3
3
  "contractName": "BundleService",
4
4
  "sourceName": "contracts/instance/service/BundleService.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "authority",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "caller",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
6
44
  {
7
45
  "inputs": [
8
46
  {
@@ -11,50 +49,129 @@
11
49
  "type": "uint96"
12
50
  }
13
51
  ],
14
- "name": "ErrorBundleManagerErrorPolicyAlreadyActivated",
52
+ "name": "ErrorBundleManagerPolicyAlreadyActivated",
15
53
  "type": "error"
16
54
  },
17
55
  {
18
56
  "inputs": [
19
57
  {
20
58
  "internalType": "NftId",
21
- "name": "policyNftId",
59
+ "name": "bundleNftId",
22
60
  "type": "uint96"
61
+ },
62
+ {
63
+ "internalType": "StateId",
64
+ "name": "state",
65
+ "type": "uint8"
66
+ },
67
+ {
68
+ "internalType": "Timestamp",
69
+ "name": "expiredAt",
70
+ "type": "uint40"
23
71
  }
24
72
  ],
25
- "name": "ErrorBundleManagerPolicyNotCloseable",
73
+ "name": "ErrorBundleServiceBundleNotOpen",
26
74
  "type": "error"
27
75
  },
28
76
  {
29
77
  "inputs": [
30
78
  {
31
79
  "internalType": "NftId",
32
- "name": "policyNftId",
80
+ "name": "bundleNftId",
81
+ "type": "uint96"
82
+ },
83
+ {
84
+ "internalType": "NftId",
85
+ "name": "expectedPool",
86
+ "type": "uint96"
87
+ },
88
+ {
89
+ "internalType": "NftId",
90
+ "name": "actualPool",
91
+ "type": "uint96"
92
+ }
93
+ ],
94
+ "name": "ErrorBundleServiceBundlePoolMismatch",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [
99
+ {
100
+ "internalType": "NftId",
101
+ "name": "bundleNftId",
102
+ "type": "uint96"
103
+ }
104
+ ],
105
+ "name": "ErrorBundleServiceBundleUnknown",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [
110
+ {
111
+ "internalType": "NftId",
112
+ "name": "bundleNftId",
33
113
  "type": "uint96"
34
114
  },
35
115
  {
36
116
  "internalType": "uint256",
37
- "name": "openClaimsCount",
117
+ "name": "openPoliciesCount",
38
118
  "type": "uint256"
39
119
  }
40
120
  ],
41
- "name": "ErrorBundleManagerPolicyWithOpenClaims",
121
+ "name": "ErrorBundleServiceBundleWithOpenPolicies",
122
+ "type": "error"
123
+ },
124
+ {
125
+ "inputs": [
126
+ {
127
+ "internalType": "NftId",
128
+ "name": "bundleNftId",
129
+ "type": "uint96"
130
+ },
131
+ {
132
+ "internalType": "Amount",
133
+ "name": "capacityAmount",
134
+ "type": "uint96"
135
+ },
136
+ {
137
+ "internalType": "Amount",
138
+ "name": "collateralAmount",
139
+ "type": "uint96"
140
+ }
141
+ ],
142
+ "name": "ErrorBundleServiceCapacityInsufficient",
42
143
  "type": "error"
43
144
  },
44
145
  {
45
146
  "inputs": [
46
147
  {
47
148
  "internalType": "address",
48
- "name": "component",
149
+ "name": "bundleOwner",
49
150
  "type": "address"
50
151
  },
152
+ {
153
+ "internalType": "address",
154
+ "name": "tokenHandlerAddress",
155
+ "type": "address"
156
+ },
157
+ {
158
+ "internalType": "Amount",
159
+ "name": "amount",
160
+ "type": "uint96"
161
+ }
162
+ ],
163
+ "name": "ErrorBundleServiceInsufficientAllowance",
164
+ "type": "error"
165
+ },
166
+ {
167
+ "inputs": [
51
168
  {
52
169
  "internalType": "NftId",
53
- "name": "nftId",
170
+ "name": "policyNftId",
54
171
  "type": "uint96"
55
172
  }
56
173
  ],
57
- "name": "ErrorComponentServiceAlreadyRegistered",
174
+ "name": "ErrorBundleServicePolicyNotCloseable",
58
175
  "type": "error"
59
176
  },
60
177
  {
@@ -68,6 +185,27 @@
68
185
  "name": "ErrorComponentServiceComponentLocked",
69
186
  "type": "error"
70
187
  },
188
+ {
189
+ "inputs": [
190
+ {
191
+ "internalType": "address",
192
+ "name": "component",
193
+ "type": "address"
194
+ },
195
+ {
196
+ "internalType": "ObjectType",
197
+ "name": "expectedType",
198
+ "type": "uint8"
199
+ },
200
+ {
201
+ "internalType": "ObjectType",
202
+ "name": "foundType",
203
+ "type": "uint8"
204
+ }
205
+ ],
206
+ "name": "ErrorComponentServiceComponentTypeInvalid",
207
+ "type": "error"
208
+ },
71
209
  {
72
210
  "inputs": [
73
211
  {
@@ -146,32 +284,22 @@
146
284
  "inputs": [
147
285
  {
148
286
  "internalType": "address",
149
- "name": "target",
287
+ "name": "sender",
150
288
  "type": "address"
151
289
  }
152
290
  ],
153
- "name": "ErrorIAccessTargetLocked",
291
+ "name": "ErrorComponentServiceSenderNotService",
154
292
  "type": "error"
155
293
  },
156
294
  {
157
295
  "inputs": [
158
296
  {
159
297
  "internalType": "address",
160
- "name": "bundleOwner",
161
- "type": "address"
162
- },
163
- {
164
- "internalType": "address",
165
- "name": "tokenHandlerAddress",
298
+ "name": "target",
166
299
  "type": "address"
167
- },
168
- {
169
- "internalType": "uint256",
170
- "name": "amount",
171
- "type": "uint256"
172
300
  }
173
301
  ],
174
- "name": "ErrorIBundleServiceInsufficientAllowance",
302
+ "name": "ErrorIAccessTargetLocked",
175
303
  "type": "error"
176
304
  },
177
305
  {
@@ -223,6 +351,11 @@
223
351
  "name": "ErrorNotRegistry",
224
352
  "type": "error"
225
353
  },
354
+ {
355
+ "inputs": [],
356
+ "name": "ErrorServiceNotImplemented",
357
+ "type": "error"
358
+ },
226
359
  {
227
360
  "inputs": [],
228
361
  "name": "InvalidInitialization",
@@ -233,6 +366,19 @@
233
366
  "name": "NotInitializing",
234
367
  "type": "error"
235
368
  },
369
+ {
370
+ "anonymous": false,
371
+ "inputs": [
372
+ {
373
+ "indexed": false,
374
+ "internalType": "address",
375
+ "name": "authority",
376
+ "type": "address"
377
+ }
378
+ ],
379
+ "name": "AuthorityUpdated",
380
+ "type": "event"
381
+ },
236
382
  {
237
383
  "anonymous": false,
238
384
  "inputs": [
@@ -246,6 +392,32 @@
246
392
  "name": "Initialized",
247
393
  "type": "event"
248
394
  },
395
+ {
396
+ "anonymous": false,
397
+ "inputs": [
398
+ {
399
+ "indexed": false,
400
+ "internalType": "NftId",
401
+ "name": "bundleNftId",
402
+ "type": "uint96"
403
+ }
404
+ ],
405
+ "name": "LogBundleServiceBundleActivated",
406
+ "type": "event"
407
+ },
408
+ {
409
+ "anonymous": false,
410
+ "inputs": [
411
+ {
412
+ "indexed": false,
413
+ "internalType": "NftId",
414
+ "name": "bundleNftId",
415
+ "type": "uint96"
416
+ }
417
+ ],
418
+ "name": "LogBundleServiceBundleLocked",
419
+ "type": "event"
420
+ },
249
421
  {
250
422
  "inputs": [],
251
423
  "name": "NAME",
@@ -285,6 +457,19 @@
285
457
  "stateMutability": "view",
286
458
  "type": "function"
287
459
  },
460
+ {
461
+ "inputs": [],
462
+ "name": "authority",
463
+ "outputs": [
464
+ {
465
+ "internalType": "address",
466
+ "name": "",
467
+ "type": "address"
468
+ }
469
+ ],
470
+ "stateMutability": "view",
471
+ "type": "function"
472
+ },
288
473
  {
289
474
  "inputs": [
290
475
  {
@@ -292,29 +477,29 @@
292
477
  "name": "instance",
293
478
  "type": "address"
294
479
  },
295
- {
296
- "internalType": "NftId",
297
- "name": "policyNftId",
298
- "type": "uint96"
299
- },
300
480
  {
301
481
  "internalType": "NftId",
302
482
  "name": "bundleNftId",
303
483
  "type": "uint96"
304
- },
305
- {
306
- "internalType": "uint256",
307
- "name": "collateralAmount",
308
- "type": "uint256"
309
484
  }
310
485
  ],
311
- "name": "closePolicy",
486
+ "name": "close",
312
487
  "outputs": [],
313
488
  "stateMutability": "nonpayable",
314
489
  "type": "function"
315
490
  },
316
491
  {
317
492
  "inputs": [
493
+ {
494
+ "internalType": "contract IInstance",
495
+ "name": "instance",
496
+ "type": "address"
497
+ },
498
+ {
499
+ "internalType": "NftId",
500
+ "name": "poolNftId",
501
+ "type": "uint96"
502
+ },
318
503
  {
319
504
  "internalType": "address",
320
505
  "name": "owner",
@@ -334,18 +519,18 @@
334
519
  }
335
520
  ],
336
521
  "internalType": "struct Fee",
337
- "name": "fee",
522
+ "name": "bundleFee",
338
523
  "type": "tuple"
339
524
  },
340
525
  {
341
- "internalType": "uint256",
526
+ "internalType": "Amount",
342
527
  "name": "stakingAmount",
343
- "type": "uint256"
528
+ "type": "uint96"
344
529
  },
345
530
  {
346
- "internalType": "uint256",
531
+ "internalType": "Seconds",
347
532
  "name": "lifetime",
348
- "type": "uint256"
533
+ "type": "uint40"
349
534
  },
350
535
  {
351
536
  "internalType": "bytes",
@@ -353,7 +538,7 @@
353
538
  "type": "bytes"
354
539
  }
355
540
  ],
356
- "name": "createBundle",
541
+ "name": "create",
357
542
  "outputs": [
358
543
  {
359
544
  "internalType": "NftId",
@@ -440,19 +625,6 @@
440
625
  "stateMutability": "view",
441
626
  "type": "function"
442
627
  },
443
- {
444
- "inputs": [],
445
- "name": "getMajorVersion",
446
- "outputs": [
447
- {
448
- "internalType": "VersionPart",
449
- "name": "majorVersion",
450
- "type": "uint8"
451
- }
452
- ],
453
- "stateMutability": "view",
454
- "type": "function"
455
- },
456
628
  {
457
629
  "inputs": [],
458
630
  "name": "getNftId",
@@ -492,19 +664,6 @@
492
664
  "stateMutability": "view",
493
665
  "type": "function"
494
666
  },
495
- {
496
- "inputs": [],
497
- "name": "getRegistryAddress",
498
- "outputs": [
499
- {
500
- "internalType": "address",
501
- "name": "",
502
- "type": "address"
503
- }
504
- ],
505
- "stateMutability": "view",
506
- "type": "function"
507
- },
508
667
  {
509
668
  "inputs": [],
510
669
  "name": "getRegistryService",
@@ -544,9 +703,9 @@
544
703
  "type": "uint96"
545
704
  },
546
705
  {
547
- "internalType": "uint256",
548
- "name": "amount",
549
- "type": "uint256"
706
+ "internalType": "Amount",
707
+ "name": "premiumAmount",
708
+ "type": "uint96"
550
709
  }
551
710
  ],
552
711
  "name": "increaseBalance",
@@ -608,7 +767,7 @@
608
767
  },
609
768
  {
610
769
  "internalType": "bytes",
611
- "name": "data",
770
+ "name": "registryData",
612
771
  "type": "bytes"
613
772
  }
614
773
  ],
@@ -637,6 +796,11 @@
637
796
  "name": "registry",
638
797
  "type": "address"
639
798
  },
799
+ {
800
+ "internalType": "address",
801
+ "name": "authority",
802
+ "type": "address"
803
+ },
640
804
  {
641
805
  "internalType": "address",
642
806
  "name": "initialOwner",
@@ -666,6 +830,19 @@
666
830
  "stateMutability": "nonpayable",
667
831
  "type": "function"
668
832
  },
833
+ {
834
+ "inputs": [],
835
+ "name": "isConsumingScheduledOp",
836
+ "outputs": [
837
+ {
838
+ "internalType": "bytes4",
839
+ "name": "",
840
+ "type": "bytes4"
841
+ }
842
+ ],
843
+ "stateMutability": "view",
844
+ "type": "function"
845
+ },
669
846
  {
670
847
  "inputs": [],
671
848
  "name": "linkToRegisteredNftId",
@@ -681,7 +858,7 @@
681
858
  "type": "uint96"
682
859
  }
683
860
  ],
684
- "name": "lockBundle",
861
+ "name": "lock",
685
862
  "outputs": [],
686
863
  "stateMutability": "nonpayable",
687
864
  "type": "function"
@@ -704,83 +881,18 @@
704
881
  "type": "uint96"
705
882
  },
706
883
  {
707
- "internalType": "uint256",
884
+ "internalType": "Amount",
708
885
  "name": "collateralAmount",
709
- "type": "uint256"
886
+ "type": "uint96"
710
887
  },
711
888
  {
712
- "internalType": "uint256",
713
- "name": "netPremiumAmount",
714
- "type": "uint256"
889
+ "internalType": "Amount",
890
+ "name": "premiumAmount",
891
+ "type": "uint96"
715
892
  }
716
893
  ],
717
894
  "name": "lockCollateral",
718
- "outputs": [
719
- {
720
- "components": [
721
- {
722
- "internalType": "NftId",
723
- "name": "poolNftId",
724
- "type": "uint96"
725
- },
726
- {
727
- "components": [
728
- {
729
- "internalType": "UFixed",
730
- "name": "fractionalFee",
731
- "type": "uint256"
732
- },
733
- {
734
- "internalType": "uint256",
735
- "name": "fixedFee",
736
- "type": "uint256"
737
- }
738
- ],
739
- "internalType": "struct Fee",
740
- "name": "fee",
741
- "type": "tuple"
742
- },
743
- {
744
- "internalType": "bytes",
745
- "name": "filter",
746
- "type": "bytes"
747
- },
748
- {
749
- "internalType": "uint256",
750
- "name": "capitalAmount",
751
- "type": "uint256"
752
- },
753
- {
754
- "internalType": "uint256",
755
- "name": "lockedAmount",
756
- "type": "uint256"
757
- },
758
- {
759
- "internalType": "uint256",
760
- "name": "balanceAmount",
761
- "type": "uint256"
762
- },
763
- {
764
- "internalType": "uint256",
765
- "name": "lifetime",
766
- "type": "uint256"
767
- },
768
- {
769
- "internalType": "Timestamp",
770
- "name": "expiredAt",
771
- "type": "uint40"
772
- },
773
- {
774
- "internalType": "Timestamp",
775
- "name": "closedAt",
776
- "type": "uint40"
777
- }
778
- ],
779
- "internalType": "struct IBundle.BundleInfo",
780
- "name": "bundleInfo",
781
- "type": "tuple"
782
- }
783
- ],
895
+ "outputs": [],
784
896
  "stateMutability": "nonpayable",
785
897
  "type": "function"
786
898
  },
@@ -797,6 +909,47 @@
797
909
  "stateMutability": "nonpayable",
798
910
  "type": "function"
799
911
  },
912
+ {
913
+ "inputs": [
914
+ {
915
+ "internalType": "contract IInstance",
916
+ "name": "instance",
917
+ "type": "address"
918
+ },
919
+ {
920
+ "internalType": "NftId",
921
+ "name": "policyNftId",
922
+ "type": "uint96"
923
+ },
924
+ {
925
+ "internalType": "NftId",
926
+ "name": "bundleNftId",
927
+ "type": "uint96"
928
+ },
929
+ {
930
+ "internalType": "Amount",
931
+ "name": "collateralAmount",
932
+ "type": "uint96"
933
+ }
934
+ ],
935
+ "name": "releaseCollateral",
936
+ "outputs": [],
937
+ "stateMutability": "nonpayable",
938
+ "type": "function"
939
+ },
940
+ {
941
+ "inputs": [
942
+ {
943
+ "internalType": "address",
944
+ "name": "newAuthority",
945
+ "type": "address"
946
+ }
947
+ ],
948
+ "name": "setAuthority",
949
+ "outputs": [],
950
+ "stateMutability": "nonpayable",
951
+ "type": "function"
952
+ },
800
953
  {
801
954
  "inputs": [
802
955
  {
@@ -822,7 +975,7 @@
822
975
  "type": "tuple"
823
976
  }
824
977
  ],
825
- "name": "setBundleFee",
978
+ "name": "setFee",
826
979
  "outputs": [],
827
980
  "stateMutability": "nonpayable",
828
981
  "type": "function"
@@ -848,13 +1001,18 @@
848
1001
  },
849
1002
  {
850
1003
  "inputs": [
1004
+ {
1005
+ "internalType": "contract IInstance",
1006
+ "name": "instance",
1007
+ "type": "address"
1008
+ },
851
1009
  {
852
1010
  "internalType": "NftId",
853
- "name": "bundleNftId",
1011
+ "name": "policyNftId",
854
1012
  "type": "uint96"
855
1013
  }
856
1014
  ],
857
- "name": "unlockBundle",
1015
+ "name": "unlinkPolicy",
858
1016
  "outputs": [],
859
1017
  "stateMutability": "nonpayable",
860
1018
  "type": "function"
@@ -863,8 +1021,21 @@
863
1021
  "inputs": [
864
1022
  {
865
1023
  "internalType": "NftId",
866
- "name": "instanceNftId",
1024
+ "name": "bundleNftId",
867
1025
  "type": "uint96"
1026
+ }
1027
+ ],
1028
+ "name": "unlock",
1029
+ "outputs": [],
1030
+ "stateMutability": "nonpayable",
1031
+ "type": "function"
1032
+ },
1033
+ {
1034
+ "inputs": [
1035
+ {
1036
+ "internalType": "contract IInstance",
1037
+ "name": "instance",
1038
+ "type": "address"
868
1039
  },
869
1040
  {
870
1041
  "internalType": "NftId",
@@ -872,76 +1043,12 @@
872
1043
  "type": "uint96"
873
1044
  },
874
1045
  {
875
- "components": [
876
- {
877
- "internalType": "NftId",
878
- "name": "poolNftId",
879
- "type": "uint96"
880
- },
881
- {
882
- "components": [
883
- {
884
- "internalType": "UFixed",
885
- "name": "fractionalFee",
886
- "type": "uint256"
887
- },
888
- {
889
- "internalType": "uint256",
890
- "name": "fixedFee",
891
- "type": "uint256"
892
- }
893
- ],
894
- "internalType": "struct Fee",
895
- "name": "fee",
896
- "type": "tuple"
897
- },
898
- {
899
- "internalType": "bytes",
900
- "name": "filter",
901
- "type": "bytes"
902
- },
903
- {
904
- "internalType": "uint256",
905
- "name": "capitalAmount",
906
- "type": "uint256"
907
- },
908
- {
909
- "internalType": "uint256",
910
- "name": "lockedAmount",
911
- "type": "uint256"
912
- },
913
- {
914
- "internalType": "uint256",
915
- "name": "balanceAmount",
916
- "type": "uint256"
917
- },
918
- {
919
- "internalType": "uint256",
920
- "name": "lifetime",
921
- "type": "uint256"
922
- },
923
- {
924
- "internalType": "Timestamp",
925
- "name": "expiredAt",
926
- "type": "uint40"
927
- },
928
- {
929
- "internalType": "Timestamp",
930
- "name": "closedAt",
931
- "type": "uint40"
932
- }
933
- ],
934
- "internalType": "struct IBundle.BundleInfo",
935
- "name": "bundleInfo",
936
- "type": "tuple"
937
- },
938
- {
939
- "internalType": "StateId",
940
- "name": "state",
941
- "type": "uint8"
1046
+ "internalType": "Amount",
1047
+ "name": "feeAmount",
1048
+ "type": "uint96"
942
1049
  }
943
1050
  ],
944
- "name": "updateBundle",
1051
+ "name": "updateBundleFees",
945
1052
  "outputs": [],
946
1053
  "stateMutability": "nonpayable",
947
1054
  "type": "function"
@@ -960,18 +1067,46 @@
960
1067
  "type": "function"
961
1068
  }
962
1069
  ],
963
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613dac80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636f10e8a01161010f578063cc9fc59a116100a2578063ea86657211610071578063ea8665721461046f578063f21de1e814610303578063f7c34ee014610482578063fde0a3cd1461049557600080fd5b8063cc9fc59a14610439578063cde749f414610441578063cf7e5db814610449578063e3458d531461045c57600080fd5b8063a7e0dea7116100de578063a7e0dea7146103e7578063ada9652e14610407578063b68d18091461041c578063caf4e3d41461043157600080fd5b80636f10e8a014610380578063893d20e8146103935780639babe3bf1461039b578063a3f4df7e146103ae57600080fd5b8063329d6e74116101875780635ab1bd53116101565780635ab1bd5314610303578063636450f514610328578063644c45e01461033b578063675393bf1461036d57600080fd5b8063329d6e74146102c257806336fc697e146102d55780633c5c0610146102dd57806349bb9e4b146102f057600080fd5b8063138461e0116101c3578063138461e01461025d5780631eff4b2214610267578063214cdb801461029c57806327bb7a33146102af57600080fd5b806301ffc9a7146101ea5780630d8e6e2c1461022c5780630fec111c14610248575b600080fd5b6102176101f8366004612cc3565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102346104a8565b60405162ffffff9091168152602001610223565b610250610532565b6040516102239190612d44565b6102656106e6565b005b61028e7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b6102656102aa366004612cc3565b6108ed565b6102656102bd366004612fa7565b61091a565b6102656102d036600461303f565b6109a6565b610265610af3565b6102656102eb366004613073565b610b39565b6102656102fe3660046130c4565b610d40565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b610265610336366004613143565b610e3e565b600080516020613d37833981519152546001600160601b03165b6040516001600160601b039091168152602001610223565b61026561037b366004613179565b6110d9565b61026561038e366004613196565b6111e7565b6103106112bc565b6102656103a93660046131b3565b6113f3565b6103da6040518060400160405280600d81526020016c42756e646c655365727669636560981b81525081565b60405161022391906131f4565b6103fa6103f5366004613207565b6115ef565b6040516102239190613301565b61028e600080516020613d3783398151915281565b60dc5b60405160ff9091168152602001610223565b610310611814565b6103106118b1565b61041f6118db565b610265610457366004613332565b611952565b61035561046a366004613448565b611ab1565b61026561047d3660046134f0565b611e0d565b6102656104903660046134f0565b611ea5565b6102656104a3366004613196565b611f1c565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d9190613529565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b909104161515918101919091526001820180549192916060840191906105e29061354e565b80601f016020809104026020016040519081016040528092919081815260200182805461060e9061354e565b801561065b5780601f106106305761010080835404028352916020019161065b565b820191906000526020600020905b81548152906001019060200180831161063e57829003601f168201915b50505050508152505090506040518060e00160405280610679600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b031681526020016106ca6112bc565b6001600160a01b03168152602001826060015181525091505090565b6000600080516020613d3783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190613593565b156107aa5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306107bd6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190613593565b6108515760405163b9304b0d60e01b81526001600160a01b03821660048201526024016107a1565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c991906135bb565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b6108f5611fc7565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b610922611fc7565b61092c8287611ea5565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161099c8382613627565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6109c86104a8565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c91906136e6565b600080516020613d578339815191528054600160401b900460ff1680610a5f575080546001600160401b03808416911610155b15610a7d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610aa783612000565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610afb611fc7565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b33610b4c6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015610b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb89190613593565b610bd45760405162461bcd60e51b81526004016107a19061370f565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c38919061373a565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cb391908101906137d7565b90508381608001818151610cc791906138cd565b9052506040516307f8b57360e31b81526001600160a01b03881690633fc5ab9890610cfb908890859060ff906004016138e0565b600060405180830381600087803b158015610d1557600080fd5b505af1158015610d29573d6000803e3d6000fd5b50505050610d378787612008565b50505050505050565b600080516020613d578339815191528054600160401b810460ff1615906001600160401b0316600081158015610d735750825b90506000826001600160401b03166001148015610d8f5750303b155b905081158015610d9d575080155b15610dbb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610de557845460ff60401b1916600160401b1785555b610def8787612327565b8315610d3757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a150505050505050565b600080610e4b608c612446565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb3919061373a565b8351604051634793b4ab60e01b81526001600160601b0388166004820152919250906000906001600160a01b03841690634793b4ab90602401600060405180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3191908101906137d7565b80516040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb39190613593565b610fff5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a504c532d3031303a42554e444c455f554e4b4e4f574e0000000060448201526064016107a1565b80516001600160601b038084169116146110665760405162461bcd60e51b815260206004820152602260248201527f4552524f523a504c532d3031313a42554e444c455f504f4f4c5f4d49534d4154604482015261086960f31b60648201526084016107a1565b602081018690526040516307f8b57360e31b81526001600160a01b03851690633fc5ab989061109e908a90859060ff906004016138e0565b600060405180830381600087803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b5050505050505050505050565b6110e1611fc7565b806001600160a01b03163b6000036111175760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107a1565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611191575060408051601f3d908101601f1916820190925261118e91810190613593565b60015b6111b95760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107a1565b806111e25760405163fdeac91f60e01b81526001600160a01b03831660048201526024016107a1565b505b50565b60006111f3608c612446565b9150506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125a919061373a565b6040516306fa456560e01b81526001600160601b03851660048201529091506001600160a01b038216906306fa4565906024015b600060405180830381600087803b1580156112a857600080fd5b505af1158015610d37573d6000803e3d6000fd5b600080600080516020613d3783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190613593565b156113dd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d7919061373a565b91505090565b54600160601b90046001600160a01b0316919050565b336114066001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190613593565b61148e5760405162461bcd60e51b81526004016107a19061370f565b6000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061373a565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015611545573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261156d91908101906137d7565b9050838160a0018181516115819190613920565b9052506040516307f8b57360e31b81526001600160a01b03871690633fc5ab98906115b5908890859060ff906004016138e0565b600060405180830381600087803b1580156115cf57600080fd5b505af11580156115e3573d6000803e3d6000fd5b50505050505050505050565b6115f7612c45565b3361160a6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015611652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116769190613593565b6116925760405162461bcd60e51b81526004016107a19061370f565b6000876001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f6919061373a565b604051634793b4ab60e01b81526001600160601b03881660048201529091506001600160a01b03821690634793b4ab90602401600060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261176e91908101906137d7565b925084836080018181516117829190613920565b90525060a083018051859190611799908390613920565b9052506040516307f8b57360e31b81526001600160a01b03891690633fc5ab98906117cd908990879060ff906004016138e0565b600060405180830381600087803b1580156117e757600080fd5b505af11580156117fb573d6000803e3d6000fd5b5050505061180988886126e8565b505095945050505050565b6000806118296001546001600160a01b031690565b6001600160a01b031663d39e604360285b6118426118db565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab919061373a565b92915050565b6000806118c66001546001600160a01b031690565b6001600160a01b031663d39e6043604661183a565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af415801561192e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d919061393e565b336119656001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190613593565b6119ed5760405162461bcd60e51b81526004016107a19061370f565b6000611a016001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a78919081019061395b565b60808101516040516307f8b57360e31b8152919250906001600160a01b03821690633fc5ab989061109e908990899089906004016138e0565b60008080611abf608c612446565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b27919061373a565b90506000836000015190506000604051806101200160405280836001600160601b031681526020018c815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602082018d90526040820152606081018c9052608081018b905260a001611bb2600090565b64ffffffffff16815260006020909101529050611bcd611814565b6001600160a01b031663c2bf08c86040518060e00160405280611bee600090565b6001600160601b03168152602001856001600160601b03168152602001611c1360dc90565b60ff16815260200160001515815260200160006001600160a01b031681526020018f6001600160a01b0316815260200184604051602001611c549190613301565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401611c829190612d44565b6020604051808303816000875af1158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc591906135bb565b604051633038d34760e11b81529096506001600160a01b03851690636071a68e90611cf69089908590600401613a2d565b600060405180830381600087803b158015611d1057600080fd5b505af1158015611d24573d6000803e3d6000fd5b505050506000846001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c919061373a565b6040516346f0e8a760e11b81526001600160601b03891660048201529091506001600160a01b03821690638de1d14e90602401600060405180830381600087803b158015611dd957600080fd5b505af1158015611ded573d6000803e3d6000fd5b50505050611dfd8484898e6129ab565b5050505050509695505050505050565b611e15611fc7565b611e9582836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b91906135bb565b603c6000856040518060200160405280600081525061091a565b6111e2637b6a51fd60e01b6108ed565b611ead611fc7565b611eb6816110d9565b611ebe610af3565b6001600160a01b038216611ee55760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020613d3783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6000611f28608c612446565b9150506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061373a565b60405163b5346af560e01b81526001600160601b03851660048201529091506001600160a01b0382169063b5346af59060240161128e565b600080516020613d5783398151915254600160401b900460ff16611ffe57604051631afcd79f60e31b815260040160405180910390fd5b565b6101e5611fc7565b3361201b6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190613593565b6120a35760405162461bcd60e51b81526004016107a19061370f565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612107919061373a565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561215a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121829190810190613a79565b61016081015190915061ffff16156121c9576101608101516040516309fa740360e41b81526001600160601b038616600482015261ffff90911660248201526044016107a1565b61224e73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122399190613bde565b826101c0015164ffffffffff90811691161090565b801561226257508060800151816101800151105b1561228b576040516389670e9b60e01b81526001600160601b03851660048201526024016107a1565b6000856001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef919061373a565b604051631351fccf60e31b81526001600160601b03871660048201529091506001600160a01b03821690639a8fe678906024016115b5565b600080516020613d578339815191528054600160401b810460ff1615906001600160401b031660008115801561235a5750825b90506000826001600160401b031660011480156123765750303b155b905081158015612384575080155b156123a25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156123cc57845460ff60401b1916600160401b1785555b600080878060200190518101906123e39190613bfb565b90925090506123f2828a611e0d565b61240263ddb8f07b60e01b6108ed565b50508315610d3757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e2d565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082015260015490919081906001600160a01b03166040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124fd919081019061395b565b925061251383604001518560ff90811691161490565b6125555760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b60448201526064016107a1565b60208301516040516305247a1760e51b81526001600160601b0390911660048201526000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156125ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125d3919081019061395b565b6080015190508092506000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612640919061373a565b6080860151604051629b7b3560e61b81526001600160a01b0391821660048201529192508216906326decd4090602401602060405180830381865afa15801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613593565b156126e057608085015160405163d53987e560e01b81526001600160a01b0390911660048201526024016107a1565b505050915091565b336126fb6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127679190613593565b6127835760405162461bcd60e51b81526004016107a19061370f565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e7919061373a565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561283a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128629190810190613a79565b6101a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156128c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e69190613593565b1561290f57604051639218a15160e01b81526001600160601b03851660048201526024016107a1565b6000856001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612973919061373a565b604051630331f98560e21b81526001600160601b03871660048201529091506001600160a01b03821690630cc7e614906024016115b5565b8015612c3f576040516355e343a960e01b81526001600160601b03841660048201526000906001600160a01b038616906355e343a9906024016101c060405180830381865afa158015612a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a269190613c2a565b60208101519091506000612a426001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab5919061373a565b6101008401516101408501516040516317d5759960e31b81526001600160a01b03808516600483015291821660248201526044810188905292935090919084169063beabacc890606401600060405180830381600087803b158015612b1957600080fd5b505af1158015612b2d573d6000803e3d6000fd5b50506040516346f0526160e11b815273__$a23651848365a6a5ca15f07b4331037f48$__9250638de0a4c29150612b68908490600401613cfb565b602060405180830381865af4158015612b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba99190613593565b61099c5760405163012ebd8360e21b8152815160048201526020820151602482015260448101869052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015612c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c369190613d12565b50505050505050505b50505050565b60405180610120016040528060006001600160601b03168152602001612c7e604051806040016040528060008152602001600081525090565b81526020016060815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b600060208284031215612cd557600080fd5b81356001600160e01b031981168114612ced57600080fd5b9392505050565b60005b83811015612d0f578181015183820152602001612cf7565b50506000910152565b60008151808452612d30816020860160208601612cf4565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151612dad60c08401826001600160a01b03169052565b5060c083015160e080840152612dc7610100840182612d18565b949350505050565b6001600160a01b03811681146111e457600080fd5b6001600160601b03811681146111e457600080fd5b8035612e0481612de4565b919050565b60ff811681146111e457600080fd5b8035612e0481612e09565b80151581146111e457600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612e6957612e69612e31565b60405290565b60405161012081016001600160401b0381118282101715612e6957612e69612e31565b60405160e081016001600160401b0381118282101715612e6957612e69612e31565b60405161020081016001600160401b0381118282101715612e6957612e69612e31565b60405161016081016001600160401b0381118282101715612e6957612e69612e31565b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612e31565b604052919050565b60006001600160401b03821115612f4357612f43612e31565b50601f01601f191660200190565b600082601f830112612f6257600080fd5b8135612f75612f7082612f2a565b612efa565b818152846020838601011115612f8a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215612fc057600080fd5b8635612fcb81612dcf565b95506020870135612fdb81612de4565b94506040870135612feb81612e09565b93506060870135612ffb81612e23565b9250608087013561300b81612dcf565b915060a08701356001600160401b0381111561302657600080fd5b61303289828a01612f51565b9150509295509295509295565b60006020828403121561305157600080fd5b81356001600160401b0381111561306757600080fd5b612dc784828501612f51565b6000806000806080858703121561308957600080fd5b843561309481612dcf565b935060208501356130a481612de4565b925060408501356130b481612de4565b9396929550929360600135925050565b600080604083850312156130d757600080fd5b82356130e281612dcf565b915060208301356001600160401b038111156130fd57600080fd5b61310985828601612f51565b9150509250929050565b60006040828403121561312557600080fd5b61312d612e47565b9050813581526020820135602082015292915050565b6000806060838503121561315657600080fd5b823561316181612de4565b91506131708460208501613113565b90509250929050565b60006020828403121561318b57600080fd5b8135612ced81612dcf565b6000602082840312156131a857600080fd5b8135612ced81612de4565b6000806000606084860312156131c857600080fd5b83356131d381612dcf565b925060208401356131e381612de4565b929592945050506040919091013590565b602081526000612ced6020830184612d18565b600080600080600060a0868803121561321f57600080fd5b853561322a81612dcf565b9450602086013561323a81612de4565b9350604086013561324a81612de4565b94979396509394606081013594506080013592915050565b80516001600160601b0316825260006101406020838101518051868301529081015160408601525060408301518160608601526132a182860182612d18565b91505060608301516080850152608083015160a085015260a083015160c085015260c083015160e085015260e08301516101006132e68187018364ffffffffff169052565b84015164ffffffffff81166101208701529050509392505050565b602081526000612ced6020830184613262565b64ffffffffff811681146111e457600080fd5b8035612e0481613314565b6000806000806080858703121561334857600080fd5b843561335381612de4565b9350602085013561336381612de4565b925060408501356001600160401b038082111561337f57600080fd5b90860190610140828903121561339457600080fd5b61339c612e6f565b6133a583612df9565b81526133b48960208501613113565b60208201526060830135828111156133cb57600080fd5b6133d78a828601612f51565b6040830152506080830135606082015260a0830135608082015260c083013560a082015260e083013560c08201526101009150613415828401613327565b60e08201526134276101208401613327565b8282015280945050505061343d60608601612e18565b905092959194509250565b60008060008060008060c0878903121561346157600080fd5b863561346c81612dcf565b955061347b8860208901613113565b9450606087013593506080870135925060a08701356001600160401b03808211156134a557600080fd5b818901915089601f8301126134b957600080fd5b8135818111156134c857600080fd5b8a60208285010111156134da57600080fd5b6020830194508093505050509295509295509295565b6000806040838503121561350357600080fd5b823561350e81612dcf565b9150602083013561351e81612dcf565b809150509250929050565b60006020828403121561353b57600080fd5b815162ffffff81168114612ced57600080fd5b600181811c9082168061356257607f821691505b60208210810361358257634e487b7160e01b600052602260045260246000fd5b50919050565b8051612e0481612e23565b6000602082840312156135a557600080fd5b8151612ced81612e23565b8051612e0481612de4565b6000602082840312156135cd57600080fd5b8151612ced81612de4565b601f82111561362257600081815260208120601f850160051c810160208610156135ff5750805b601f850160051c820191505b8181101561361e5782815560010161360b565b5050505b505050565b81516001600160401b0381111561364057613640612e31565b6136548161364e845461354e565b846135d8565b602080601f83116001811461368957600084156136715750858301515b600019600386901b1c1916600185901b17855561361e565b600085815260208120601f198616915b828110156136b857888601518255948401946001909101908401613699565b50858210156136d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156136f857600080fd5b81516001600160401b0381168114612ced57600080fd5b6020808252601190820152704552524f525f4e4f545f5345525649434560781b604082015260600190565b60006020828403121561374c57600080fd5b8151612ced81612dcf565b60006040828403121561376957600080fd5b613771612e47565b9050815181526020820151602082015292915050565b600082601f83011261379857600080fd5b81516137a6612f7082612f2a565b8181528460208386010111156137bb57600080fd5b612dc7826020830160208701612cf4565b8051612e0481613314565b6000602082840312156137e957600080fd5b81516001600160401b038082111561380057600080fd5b90830190610140828603121561381557600080fd5b61381d612e6f565b613826836135b0565b81526138358660208501613757565b602082015260608301518281111561384c57600080fd5b61385887828601613787565b6040830152506080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010091506138968284016137cc565b60e08201526138a861012084016137cc565b91810191909152949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156118ab576118ab6138b7565b6001600160601b03841681526060602082015260006139026060830185613262565b905060ff83166040830152949350505050565b8051612e0481612dcf565b808201808211156118ab576118ab6138b7565b8051612e0481612e09565b60006020828403121561395057600080fd5b8151612ced81612e09565b60006020828403121561396d57600080fd5b81516001600160401b038082111561398457600080fd5b9083019060e0828603121561399857600080fd5b6139a0612e92565b6139a9836135b0565b81526139b7602084016135b0565b60208201526139c860408401613933565b60408201526139d960608401613588565b60608201526139ea60808401613915565b60808201526139fb60a08401613915565b60a082015260c083015182811115613a1257600080fd5b613a1e87828601613787565b60c08301525095945050505050565b6001600160601b0383168152604060208201526000612dc76040830184613262565b80516001600160c01b031981168114612e0457600080fd5b805161ffff81168114612e0457600080fd5b600060208284031215613a8b57600080fd5b81516001600160401b0380821115613aa257600080fd5b908301906102008286031215613ab757600080fd5b613abf612eb4565b613ac8836135b0565b8152613ad6602084016135b0565b6020820152613ae760408401613a4f565b6040820152613af860608401613a4f565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015183811115613b3957600080fd5b613b4588828701613787565b8284015250506101208084015183811115613b5f57600080fd5b613b6b88828701613787565b8284015250506101409150613b81828401613a67565b828201526101609150613b95828401613a67565b82820152610180915081830151828201526101a09150613bb68284016137cc565b828201526101c09150613bca8284016137cc565b828201526101e091506138a88284016137cc565b600060208284031215613bf057600080fd5b8151612ced81613314565b60008060408385031215613c0e57600080fd5b8251613c1981612dcf565b602084015190925061351e81612dcf565b60006101c08284031215613c3d57600080fd5b613c45612ed7565b613c4e836135b0565b8152613c5c60208401613915565b6020820152613c6d60408401613588565b6040820152613c7e60608401613588565b6060820152613c8f60808401613588565b608082015260a083015160a082015260c083015160c0820152613cb58460e08501613757565b60e0820152610120613cc985828601613757565b610100830152613cdd856101608601613757565b90820152613cee6101a08401613915565b6101408201529392505050565b8151815260208083015190820152604081016118ab565b60008060408385031215613d2557600080fd5b50508051602090910151909290915056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122035f55dbde7475708e02682301dfe33cb7d044fbf204ee8eefed38030dced110c64736f6c63430008140033",
964
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636f10e8a01161010f578063cc9fc59a116100a2578063ea86657211610071578063ea8665721461046f578063f21de1e814610303578063f7c34ee014610482578063fde0a3cd1461049557600080fd5b8063cc9fc59a14610439578063cde749f414610441578063cf7e5db814610449578063e3458d531461045c57600080fd5b8063a7e0dea7116100de578063a7e0dea7146103e7578063ada9652e14610407578063b68d18091461041c578063caf4e3d41461043157600080fd5b80636f10e8a014610380578063893d20e8146103935780639babe3bf1461039b578063a3f4df7e146103ae57600080fd5b8063329d6e74116101875780635ab1bd53116101565780635ab1bd5314610303578063636450f514610328578063644c45e01461033b578063675393bf1461036d57600080fd5b8063329d6e74146102c257806336fc697e146102d55780633c5c0610146102dd57806349bb9e4b146102f057600080fd5b8063138461e0116101c3578063138461e01461025d5780631eff4b2214610267578063214cdb801461029c57806327bb7a33146102af57600080fd5b806301ffc9a7146101ea5780630d8e6e2c1461022c5780630fec111c14610248575b600080fd5b6102176101f8366004612cc3565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102346104a8565b60405162ffffff9091168152602001610223565b610250610532565b6040516102239190612d44565b6102656106e6565b005b61028e7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b6102656102aa366004612cc3565b6108ed565b6102656102bd366004612fa7565b61091a565b6102656102d036600461303f565b6109a6565b610265610af3565b6102656102eb366004613073565b610b39565b6102656102fe3660046130c4565b610d40565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b610265610336366004613143565b610e3e565b600080516020613d37833981519152546001600160601b03165b6040516001600160601b039091168152602001610223565b61026561037b366004613179565b6110d9565b61026561038e366004613196565b6111e7565b6103106112bc565b6102656103a93660046131b3565b6113f3565b6103da6040518060400160405280600d81526020016c42756e646c655365727669636560981b81525081565b60405161022391906131f4565b6103fa6103f5366004613207565b6115ef565b6040516102239190613301565b61028e600080516020613d3783398151915281565b60dc5b60405160ff9091168152602001610223565b610310611814565b6103106118b1565b61041f6118db565b610265610457366004613332565b611952565b61035561046a366004613448565b611ab1565b61026561047d3660046134f0565b611e0d565b6102656104903660046134f0565b611ea5565b6102656104a3366004613196565b611f1c565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d9190613529565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b909104161515918101919091526001820180549192916060840191906105e29061354e565b80601f016020809104026020016040519081016040528092919081815260200182805461060e9061354e565b801561065b5780601f106106305761010080835404028352916020019161065b565b820191906000526020600020905b81548152906001019060200180831161063e57829003601f168201915b50505050508152505090506040518060e00160405280610679600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b031681526020016106ca6112bc565b6001600160a01b03168152602001826060015181525091505090565b6000600080516020613d3783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190613593565b156107aa5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306107bd6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108299190613593565b6108515760405163b9304b0d60e01b81526001600160a01b03821660048201526024016107a1565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c991906135bb565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b6108f5611fc7565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b610922611fc7565b61092c8287611ea5565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161099c8382613627565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6109c86104a8565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c91906136e6565b600080516020613d578339815191528054600160401b900460ff1680610a5f575080546001600160401b03808416911610155b15610a7d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610aa783612000565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610afb611fc7565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b33610b4c6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015610b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb89190613593565b610bd45760405162461bcd60e51b81526004016107a19061370f565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c38919061373a565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cb391908101906137d7565b90508381608001818151610cc791906138cd565b9052506040516307f8b57360e31b81526001600160a01b03881690633fc5ab9890610cfb908890859060ff906004016138e0565b600060405180830381600087803b158015610d1557600080fd5b505af1158015610d29573d6000803e3d6000fd5b50505050610d378787612008565b50505050505050565b600080516020613d578339815191528054600160401b810460ff1615906001600160401b0316600081158015610d735750825b90506000826001600160401b03166001148015610d8f5750303b155b905081158015610d9d575080155b15610dbb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610de557845460ff60401b1916600160401b1785555b610def8787612327565b8315610d3757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a150505050505050565b600080610e4b608c612446565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb3919061373a565b8351604051634793b4ab60e01b81526001600160601b0388166004820152919250906000906001600160a01b03841690634793b4ab90602401600060405180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3191908101906137d7565b80516040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb39190613593565b610fff5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a504c532d3031303a42554e444c455f554e4b4e4f574e0000000060448201526064016107a1565b80516001600160601b038084169116146110665760405162461bcd60e51b815260206004820152602260248201527f4552524f523a504c532d3031313a42554e444c455f504f4f4c5f4d49534d4154604482015261086960f31b60648201526084016107a1565b602081018690526040516307f8b57360e31b81526001600160a01b03851690633fc5ab989061109e908a90859060ff906004016138e0565b600060405180830381600087803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b5050505050505050505050565b6110e1611fc7565b806001600160a01b03163b6000036111175760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107a1565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611191575060408051601f3d908101601f1916820190925261118e91810190613593565b60015b6111b95760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107a1565b806111e25760405163fdeac91f60e01b81526001600160a01b03831660048201526024016107a1565b505b50565b60006111f3608c612446565b9150506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125a919061373a565b6040516306fa456560e01b81526001600160601b03851660048201529091506001600160a01b038216906306fa4565906024015b600060405180830381600087803b1580156112a857600080fd5b505af1158015610d37573d6000803e3d6000fd5b600080600080516020613d3783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190613593565b156113dd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d7919061373a565b91505090565b54600160601b90046001600160a01b0316919050565b336114066001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190613593565b61148e5760405162461bcd60e51b81526004016107a19061370f565b6000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061373a565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015611545573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261156d91908101906137d7565b9050838160a0018181516115819190613920565b9052506040516307f8b57360e31b81526001600160a01b03871690633fc5ab98906115b5908890859060ff906004016138e0565b600060405180830381600087803b1580156115cf57600080fd5b505af11580156115e3573d6000803e3d6000fd5b50505050505050505050565b6115f7612c45565b3361160a6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015611652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116769190613593565b6116925760405162461bcd60e51b81526004016107a19061370f565b6000876001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f6919061373a565b604051634793b4ab60e01b81526001600160601b03881660048201529091506001600160a01b03821690634793b4ab90602401600060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261176e91908101906137d7565b925084836080018181516117829190613920565b90525060a083018051859190611799908390613920565b9052506040516307f8b57360e31b81526001600160a01b03891690633fc5ab98906117cd908990879060ff906004016138e0565b600060405180830381600087803b1580156117e757600080fd5b505af11580156117fb573d6000803e3d6000fd5b5050505061180988886126e8565b505095945050505050565b6000806118296001546001600160a01b031690565b6001600160a01b031663d39e604360285b6118426118db565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab919061373a565b92915050565b6000806118c66001546001600160a01b031690565b6001600160a01b031663d39e6043604661183a565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af415801561192e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052d919061393e565b336119656001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190613593565b6119ed5760405162461bcd60e51b81526004016107a19061370f565b6000611a016001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a78919081019061395b565b60808101516040516307f8b57360e31b8152919250906001600160a01b03821690633fc5ab989061109e908990899089906004016138e0565b60008080611abf608c612446565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b27919061373a565b90506000836000015190506000604051806101200160405280836001600160601b031681526020018c815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602082018d90526040820152606081018c9052608081018b905260a001611bb2600090565b64ffffffffff16815260006020909101529050611bcd611814565b6001600160a01b031663c2bf08c86040518060e00160405280611bee600090565b6001600160601b03168152602001856001600160601b03168152602001611c1360dc90565b60ff16815260200160001515815260200160006001600160a01b031681526020018f6001600160a01b0316815260200184604051602001611c549190613301565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401611c829190612d44565b6020604051808303816000875af1158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc591906135bb565b604051633038d34760e11b81529096506001600160a01b03851690636071a68e90611cf69089908590600401613a2d565b600060405180830381600087803b158015611d1057600080fd5b505af1158015611d24573d6000803e3d6000fd5b505050506000846001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c919061373a565b6040516346f0e8a760e11b81526001600160601b03891660048201529091506001600160a01b03821690638de1d14e90602401600060405180830381600087803b158015611dd957600080fd5b505af1158015611ded573d6000803e3d6000fd5b50505050611dfd8484898e6129ab565b5050505050509695505050505050565b611e15611fc7565b611e9582836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7b91906135bb565b603c6000856040518060200160405280600081525061091a565b6111e2637b6a51fd60e01b6108ed565b611ead611fc7565b611eb6816110d9565b611ebe610af3565b6001600160a01b038216611ee55760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020613d3783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6000611f28608c612446565b9150506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061373a565b60405163b5346af560e01b81526001600160601b03851660048201529091506001600160a01b0382169063b5346af59060240161128e565b600080516020613d5783398151915254600160401b900460ff16611ffe57604051631afcd79f60e31b815260040160405180910390fd5b565b6101e5611fc7565b3361201b6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190613593565b6120a35760405162461bcd60e51b81526004016107a19061370f565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612107919061373a565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561215a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121829190810190613a79565b61016081015190915061ffff16156121c9576101608101516040516309fa740360e41b81526001600160601b038616600482015261ffff90911660248201526044016107a1565b61224e73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122399190613bde565b826101c0015164ffffffffff90811691161090565b801561226257508060800151816101800151105b1561228b576040516389670e9b60e01b81526001600160601b03851660048201526024016107a1565b6000856001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef919061373a565b604051631351fccf60e31b81526001600160601b03871660048201529091506001600160a01b03821690639a8fe678906024016115b5565b600080516020613d578339815191528054600160401b810460ff1615906001600160401b031660008115801561235a5750825b90506000826001600160401b031660011480156123765750303b155b905081158015612384575080155b156123a25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156123cc57845460ff60401b1916600160401b1785555b600080878060200190518101906123e39190613bfb565b90925090506123f2828a611e0d565b61240263ddb8f07b60e01b6108ed565b50508315610d3757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e2d565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082015260015490919081906001600160a01b03166040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124fd919081019061395b565b925061251383604001518560ff90811691161490565b6125555760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b60448201526064016107a1565b60208301516040516305247a1760e51b81526001600160601b0390911660048201526000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156125ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125d3919081019061395b565b6080015190508092506000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612640919061373a565b6080860151604051629b7b3560e61b81526001600160a01b0391821660048201529192508216906326decd4090602401602060405180830381865afa15801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613593565b156126e057608085015160405163d53987e560e01b81526001600160a01b0390911660048201526024016107a1565b505050915091565b336126fb6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127679190613593565b6127835760405162461bcd60e51b81526004016107a19061370f565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e7919061373a565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561283a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128629190810190613a79565b6101a0810151604051638d38cd4b60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156128c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e69190613593565b1561290f57604051639218a15160e01b81526001600160601b03851660048201526024016107a1565b6000856001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561294f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612973919061373a565b604051630331f98560e21b81526001600160601b03871660048201529091506001600160a01b03821690630cc7e614906024016115b5565b8015612c3f576040516355e343a960e01b81526001600160601b03841660048201526000906001600160a01b038616906355e343a9906024016101c060405180830381865afa158015612a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a269190613c2a565b60208101519091506000612a426001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab5919061373a565b6101008401516101408501516040516317d5759960e31b81526001600160a01b03808516600483015291821660248201526044810188905292935090919084169063beabacc890606401600060405180830381600087803b158015612b1957600080fd5b505af1158015612b2d573d6000803e3d6000fd5b50506040516346f0526160e11b815273__$a23651848365a6a5ca15f07b4331037f48$__9250638de0a4c29150612b68908490600401613cfb565b602060405180830381865af4158015612b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba99190613593565b61099c5760405163012ebd8360e21b8152815160048201526020820151602482015260448101869052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015612c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c369190613d12565b50505050505050505b50505050565b60405180610120016040528060006001600160601b03168152602001612c7e604051806040016040528060008152602001600081525090565b81526020016060815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b600060208284031215612cd557600080fd5b81356001600160e01b031981168114612ced57600080fd5b9392505050565b60005b83811015612d0f578181015183820152602001612cf7565b50506000910152565b60008151808452612d30816020860160208601612cf4565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151612dad60c08401826001600160a01b03169052565b5060c083015160e080840152612dc7610100840182612d18565b949350505050565b6001600160a01b03811681146111e457600080fd5b6001600160601b03811681146111e457600080fd5b8035612e0481612de4565b919050565b60ff811681146111e457600080fd5b8035612e0481612e09565b80151581146111e457600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612e6957612e69612e31565b60405290565b60405161012081016001600160401b0381118282101715612e6957612e69612e31565b60405160e081016001600160401b0381118282101715612e6957612e69612e31565b60405161020081016001600160401b0381118282101715612e6957612e69612e31565b60405161016081016001600160401b0381118282101715612e6957612e69612e31565b604051601f8201601f191681016001600160401b0381118282101715612f2257612f22612e31565b604052919050565b60006001600160401b03821115612f4357612f43612e31565b50601f01601f191660200190565b600082601f830112612f6257600080fd5b8135612f75612f7082612f2a565b612efa565b818152846020838601011115612f8a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215612fc057600080fd5b8635612fcb81612dcf565b95506020870135612fdb81612de4565b94506040870135612feb81612e09565b93506060870135612ffb81612e23565b9250608087013561300b81612dcf565b915060a08701356001600160401b0381111561302657600080fd5b61303289828a01612f51565b9150509295509295509295565b60006020828403121561305157600080fd5b81356001600160401b0381111561306757600080fd5b612dc784828501612f51565b6000806000806080858703121561308957600080fd5b843561309481612dcf565b935060208501356130a481612de4565b925060408501356130b481612de4565b9396929550929360600135925050565b600080604083850312156130d757600080fd5b82356130e281612dcf565b915060208301356001600160401b038111156130fd57600080fd5b61310985828601612f51565b9150509250929050565b60006040828403121561312557600080fd5b61312d612e47565b9050813581526020820135602082015292915050565b6000806060838503121561315657600080fd5b823561316181612de4565b91506131708460208501613113565b90509250929050565b60006020828403121561318b57600080fd5b8135612ced81612dcf565b6000602082840312156131a857600080fd5b8135612ced81612de4565b6000806000606084860312156131c857600080fd5b83356131d381612dcf565b925060208401356131e381612de4565b929592945050506040919091013590565b602081526000612ced6020830184612d18565b600080600080600060a0868803121561321f57600080fd5b853561322a81612dcf565b9450602086013561323a81612de4565b9350604086013561324a81612de4565b94979396509394606081013594506080013592915050565b80516001600160601b0316825260006101406020838101518051868301529081015160408601525060408301518160608601526132a182860182612d18565b91505060608301516080850152608083015160a085015260a083015160c085015260c083015160e085015260e08301516101006132e68187018364ffffffffff169052565b84015164ffffffffff81166101208701529050509392505050565b602081526000612ced6020830184613262565b64ffffffffff811681146111e457600080fd5b8035612e0481613314565b6000806000806080858703121561334857600080fd5b843561335381612de4565b9350602085013561336381612de4565b925060408501356001600160401b038082111561337f57600080fd5b90860190610140828903121561339457600080fd5b61339c612e6f565b6133a583612df9565b81526133b48960208501613113565b60208201526060830135828111156133cb57600080fd5b6133d78a828601612f51565b6040830152506080830135606082015260a0830135608082015260c083013560a082015260e083013560c08201526101009150613415828401613327565b60e08201526134276101208401613327565b8282015280945050505061343d60608601612e18565b905092959194509250565b60008060008060008060c0878903121561346157600080fd5b863561346c81612dcf565b955061347b8860208901613113565b9450606087013593506080870135925060a08701356001600160401b03808211156134a557600080fd5b818901915089601f8301126134b957600080fd5b8135818111156134c857600080fd5b8a60208285010111156134da57600080fd5b6020830194508093505050509295509295509295565b6000806040838503121561350357600080fd5b823561350e81612dcf565b9150602083013561351e81612dcf565b809150509250929050565b60006020828403121561353b57600080fd5b815162ffffff81168114612ced57600080fd5b600181811c9082168061356257607f821691505b60208210810361358257634e487b7160e01b600052602260045260246000fd5b50919050565b8051612e0481612e23565b6000602082840312156135a557600080fd5b8151612ced81612e23565b8051612e0481612de4565b6000602082840312156135cd57600080fd5b8151612ced81612de4565b601f82111561362257600081815260208120601f850160051c810160208610156135ff5750805b601f850160051c820191505b8181101561361e5782815560010161360b565b5050505b505050565b81516001600160401b0381111561364057613640612e31565b6136548161364e845461354e565b846135d8565b602080601f83116001811461368957600084156136715750858301515b600019600386901b1c1916600185901b17855561361e565b600085815260208120601f198616915b828110156136b857888601518255948401946001909101908401613699565b50858210156136d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156136f857600080fd5b81516001600160401b0381168114612ced57600080fd5b6020808252601190820152704552524f525f4e4f545f5345525649434560781b604082015260600190565b60006020828403121561374c57600080fd5b8151612ced81612dcf565b60006040828403121561376957600080fd5b613771612e47565b9050815181526020820151602082015292915050565b600082601f83011261379857600080fd5b81516137a6612f7082612f2a565b8181528460208386010111156137bb57600080fd5b612dc7826020830160208701612cf4565b8051612e0481613314565b6000602082840312156137e957600080fd5b81516001600160401b038082111561380057600080fd5b90830190610140828603121561381557600080fd5b61381d612e6f565b613826836135b0565b81526138358660208501613757565b602082015260608301518281111561384c57600080fd5b61385887828601613787565b6040830152506080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010091506138968284016137cc565b60e08201526138a861012084016137cc565b91810191909152949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156118ab576118ab6138b7565b6001600160601b03841681526060602082015260006139026060830185613262565b905060ff83166040830152949350505050565b8051612e0481612dcf565b808201808211156118ab576118ab6138b7565b8051612e0481612e09565b60006020828403121561395057600080fd5b8151612ced81612e09565b60006020828403121561396d57600080fd5b81516001600160401b038082111561398457600080fd5b9083019060e0828603121561399857600080fd5b6139a0612e92565b6139a9836135b0565b81526139b7602084016135b0565b60208201526139c860408401613933565b60408201526139d960608401613588565b60608201526139ea60808401613915565b60808201526139fb60a08401613915565b60a082015260c083015182811115613a1257600080fd5b613a1e87828601613787565b60c08301525095945050505050565b6001600160601b0383168152604060208201526000612dc76040830184613262565b80516001600160c01b031981168114612e0457600080fd5b805161ffff81168114612e0457600080fd5b600060208284031215613a8b57600080fd5b81516001600160401b0380821115613aa257600080fd5b908301906102008286031215613ab757600080fd5b613abf612eb4565b613ac8836135b0565b8152613ad6602084016135b0565b6020820152613ae760408401613a4f565b6040820152613af860608401613a4f565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015183811115613b3957600080fd5b613b4588828701613787565b8284015250506101208084015183811115613b5f57600080fd5b613b6b88828701613787565b8284015250506101409150613b81828401613a67565b828201526101609150613b95828401613a67565b82820152610180915081830151828201526101a09150613bb68284016137cc565b828201526101c09150613bca8284016137cc565b828201526101e091506138a88284016137cc565b600060208284031215613bf057600080fd5b8151612ced81613314565b60008060408385031215613c0e57600080fd5b8251613c1981612dcf565b602084015190925061351e81612dcf565b60006101c08284031215613c3d57600080fd5b613c45612ed7565b613c4e836135b0565b8152613c5c60208401613915565b6020820152613c6d60408401613588565b6040820152613c7e60608401613588565b6060820152613c8f60808401613588565b608082015260a083015160a082015260c083015160c0820152613cb58460e08501613757565b60e0820152610120613cc985828601613757565b610100830152613cdd856101608601613757565b90820152613cee6101a08401613915565b6101408201529392505050565b8151815260208083015190820152604081016118ab565b60008060408385031215613d2557600080fd5b50508051602090910151909290915056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122035f55dbde7475708e02682301dfe33cb7d044fbf204ee8eefed38030dced110c64736f6c63430008140033",
1070
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61485980620000e66000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806376429bc01161011a578063ada9652e116100ad578063bf7e214f1161007c578063bf7e214f146104d2578063caf4e3d4146104f0578063cc9fc59a146104f8578063e283b4a914610500578063f7c34ee01461051357600080fd5b8063ada9652e14610488578063b5346af51461049d578063b68d1809146104b0578063b7565f9c146104bf57600080fd5b80638fb36037116100e95780638fb3603714610408578063a3f4df7e14610429578063aa9acb2c14610462578063ad328d9f1461047557600080fd5b806376429bc0146103c75780637a9e5e4b146103da578063893d20e8146103ed5780638e32e979146103f557600080fd5b806327bb7a331161019d57806349bb9e4b1161016c57806349bb9e4b146103375780635ab1bd531461034a5780635ed325671461036f578063644c45e014610382578063675393bf146103b457600080fd5b806327bb7a33146102f6578063329d6e741461030957806336fc697e1461031c578063377a6db71461032457600080fd5b8063138461e0116101d9578063138461e0146102935780631eff4b221461029b5780631f8e8f36146102d0578063214cdb80146102e357600080fd5b806301ffc9a71461020b57806306fa45651461024d5780630d8e6e2c146102625780630fec111c1461027e575b600080fd5b610238610219366004613805565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026061025b366004613844565b610526565b005b61026a610716565b60405162ffffff9091168152602001610244565b6102866107a0565b60405161024491906138b1565b6102606108c1565b6102c27f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610244565b6102606102de366004613a42565b610ac8565b6102606102f1366004613805565b610d84565b610260610304366004613b1e565b610db1565b610260610317366004613bb6565b610e56565b610260610f9b565b610260610332366004613bea565b610fe1565b610260610345366004613c5b565b6113e0565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610244565b61026061037d366004613caa565b6114df565b6000805160206147c4833981519152546001600160601b03165b6040516001600160601b039091168152602001610244565b6102606103c2366004613cf5565b61167b565b6102606103d5366004613d12565b611789565b6102606103e8366004613cf5565b611948565b6103576119e2565b610260610403366004613d4b565b611b19565b610410611d52565b6040516001600160e01b03199091168152602001610244565b6104556040518060400160405280600d81526020016c42756e646c655365727669636560981b81525081565b6040516102449190613d8b565b610260610470366004613d12565b611d8a565b610260610483366004613d9e565b611fcb565b6102c26000805160206147c483398151915281565b6102606104ab366004613844565b612243565b60405160dc8152602001610244565b6102606104cd366004613caa565b61242a565b6000805160206147e4833981519152546001600160a01b0316610357565b61035761263a565b610357612646565b61039c61050e366004613e0d565b612652565b610260610521366004613eee565b612b59565b6000610532608c612bd0565b92505050806001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190613f1c565b6001600160a01b031663fe1f18d68360646040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613f1c565b6040516306fa456560e01b81526001600160601b03851660048201529091506001600160a01b038216906306fa456590602401600060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b50506040516001600160601b03861681527f87cfb697b5d649751f13ba6e2e51778a1fd0a1f260df7281952986c453708e71925060200190505b60405180910390a1505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190613f39565b905090565b6107a86137c7565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a0810161081d6119e2565b6001600160a01b0316815260200182600101805461083a90613f5e565b80601f016020809104026020016040519081016040528092919081815260200182805461086690613f5e565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b505050505081525091505090565b60006000805160206147c483398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190613fa8565b156109855780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306109986001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190613fa8565b610a2c5760405163b9304b0d60e01b81526001600160a01b038216600482015260240161097c565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa49190613fd0565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610ad5608c612bd0565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190613f1c565b604051634793b4ab60e01b81526001600160601b03871660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bb9919081019061406d565b8051604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190613fa8565b15610c64576040516349e9f38360e01b81526001600160601b038716600482015260240161097c565b80516001600160601b03858116911614610caf57805160405163dab86e4560e01b81526001600160601b0380891660048301529182166024820152908516604482015260640161097c565b848160200181905250826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190613f1c565b6001600160a01b03166359852426878360ff6040518463ffffffff1660e01b8152600401610d4a93929190614238565b600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b50505050505050505050565b610d8c612d72565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b610db9612d72565b610dc38287612b59565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301610e4c83826142b3565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e78610716565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190614372565b6000805160206148048339815191528054600160401b900460ff1680610f0f575080546001600160401b03808416911610155b15610f2d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610f5783612dab565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610709565b610fa3612d72565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b33610ff46001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190613fa8565b6110885760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000866001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ec9190613f1c565b905060006001600160a01b03821663a5961b4c73__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038a1660dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611171573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611195919061439b565b6040518263ffffffff1660e01b81526004016111b391815260200190565b60a060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f491906143de565b60200151604051634793b4ab60e01b81526001600160601b03881660048201529091506000906001600160a01b03841690634793b4ab90602401600060405180830381865afa15801561124b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611273919081019061406d565b905060ff8216606414158061130757506113078160e0015173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f89190614471565b64ffffffffff90811691161090565b1561134c5760e081015160405163bf5b8f0960e01b81526001600160601b038916600482015260ff8416602482015264ffffffffff909116604482015260640161097c565b600061136961135f836060015188612db3565b8360800151612e42565b90506113758188612e8d565b156113ae5760405163826a5ff960e01b81526001600160601b03808a16600483015280831660248301528816604482015260640161097c565b6113bc826080015188612db3565b6001600160601b031660808301526113d68a898489612f14565b610d788a8a6130c2565b6000805160206148048339815191528054600160401b810460ff1615906001600160401b03166000811580156114135750825b90506000826001600160401b0316600114801561142f5750303b155b90508115801561143d575080155b1561145b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561148557845460ff60401b1916600160401b1785555b61148f8787613377565b83156114d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b336114f26001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613fa8565b6115865760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ea9190613f1c565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611665919081019061406d565b905061167386868387612f14565b505050505050565b611683612d72565b806001600160a01b03163b6000036116b95760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097c565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa925050508015611733575060408051601f3d908101601f1916820190925261173091810190613fa8565b60015b61175b5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097c565b806117845760405163fdeac91f60e01b81526001600160a01b038316600482015260240161097c565b505b50565b816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117eb9190613f1c565b6040516375d357df60e01b81526001600160601b03831660048201526001600160a01b0391909116906375d357df90602401602060405180830381865afa15801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190613fa8565b611886576040516392bb4dff60e01b81526001600160601b038216600482015260240161097c565b816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190613f1c565b604051631351fccf60e31b81526001600160601b03831660048201526001600160a01b039190911690639a8fe67890602401600060405180830381600087803b15801561193457600080fd5b505af1158015611673573d6000803e3d6000fd5b336119686000805160206147e4833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146119a35760405162d1953b60e31b81526001600160a01b038216600482015260240161097c565b816001600160a01b03163b6000036119d9576040516361798f2f60e11b81526001600160a01b038316600482015260240161097c565b61178482613498565b6000806000805160206147c483398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a769190613fa8565b15611b03576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afd9190613f1c565b91505090565b54600160601b90046001600160a01b0316919050565b611b21612d72565b611ba183846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613fd0565b603c60008560405180602001604052806000815250610db1565b6001600160a01b03821615611bbe57611bb9826134f9565b611d2d565b6000611bd26001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061448e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190613f1c565b9050611d2b816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190613f1c565b6134f9565b505b611d3d634a531f3360e01b610d84565b611d4d63b68d180960e01b610d84565b505050565b6000805160206147e4833981519152805460009190600160a01b900460ff16611d7c576000611afd565b638fb3603760e01b91505090565b816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec9190613f1c565b6001600160a01b031663fe1f18d68260c86040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b158015611e4657600080fd5b505af1158015611e5a573d6000803e3d6000fd5b505050506000826001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec29190613f1c565b6040516322cc1d4560e11b81526001600160601b03841660048201529091506000906001600160a01b038316906345983a8a90602401602060405180830381865afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061439b565b90508015611f6c576040516356a410b760e01b81526001600160601b03841660048201526024810182905260440161097c565b60405163b5346af560e01b81526001600160601b03841660048201526001600160a01b0383169063b5346af5906024015b600060405180830381600087803b158015611fb757600080fd5b505af1158015610e4c573d6000803e3d6000fd5b33611fde6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204a9190613fa8565b6120725760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d69190613f1c565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015612129573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612151919081019061406d565b9050612161816080015185612e42565b6001600160601b0316608082015260408051631a99b41b60e31b815290516001600160a01b0389169163d4cda0d89160048083019260209291908290030181865afa1580156121b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d89190613f1c565b6001600160a01b03166359852426868360ff6040518463ffffffff1660e01b815260040161220893929190614238565b600060405180830381600087803b15801561222257600080fd5b505af1158015612236573d6000803e3d6000fd5b5050505050505050505050565b600061224f608c612bd0565b92505050806001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b59190613f1c565b6001600160a01b031663fe1f18d683606e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b505050506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238b9190613f1c565b60405163b5346af560e01b81526001600160601b03851660048201529091506001600160a01b0382169063b5346af590602401600060405180830381600087803b1580156123d857600080fd5b505af11580156123ec573d6000803e3d6000fd5b50506040516001600160601b03861681527f6764112d27879e5bb12f07fde08a48629ec22e603c75c9942ba62a06c95a55f492506020019050610709565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248e9190613f1c565b604051634793b4ab60e01b81526001600160601b03851660048201526001600160a01b039190911690634793b4ab90602401600060405180830381865afa1580156124dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612505919081019061406d565b60a081015160405163274acb3560e01b81526001600160601b039182166004820152908416602482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb3590604401602060405180830381865af415801561256e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125929190613fd0565b6001600160601b031660a082015260408051631a99b41b60e31b815290516001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa1580156125e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126099190613f1c565b6001600160a01b03166359852426848360ff5b6040518463ffffffff1660e01b8152600401611f9d93929190614238565b600061079b602861350a565b600061079b604661350a565b600061265c61263a565b6001600160a01b031663c2bf08c86040518060e0016040528061267d600090565b6001600160601b031681526020018b6001600160601b031681526020016126a260dc90565b60ff16815260200160001515815260200160006001600160a01b031681526020018a6001600160a01b03168152602001604051806020016040528060008152508152506040518263ffffffff1660e01b815260040161270191906138b1565b6020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190613fd0565b9050886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613f1c565b6001600160a01b03166397affbf5826040518061012001604052808c6001600160601b031681526020018a815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506001600160601b038a166020808301919091526040805163bc1b392d60e01b81528151919093019273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9263bc1b392d926004808401938290030181865af4158015612874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128989190613fd0565b6001600160601b0316815260200173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156128ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129139190613fd0565b6001600160601b031681526020018864ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299b9190614471565b6040516352bcc5a760e11b815264ffffffffff9182166004820152908a16602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af41580156129fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1e9190614471565b64ffffffffff16815260006020909101526040516001600160e01b031960e085901b168152612a519291906004016144ab565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b505050506000896001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae79190613f1c565b6040516346f0e8a760e11b81526001600160601b03841660048201529091506001600160a01b03821690638de1d14e90602401600060405180830381600087803b158015612b3457600080fd5b505af1158015612b48573d6000803e3d6000fd5b505050505098975050505050505050565b612b61612d72565b612b6a8161167b565b612b72610f9b565b6001600160a01b038216612b995760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206147c483398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6000612bda6137c7565b6000612bee6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c589190613fd0565b9250612c64838561361d565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce9190613f1c565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015612d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3c9190613fa8565b15612d6b57608082015160405163d53987e560e01b81526001600160a01b03909116600482015260240161097c565b9193909250565b60008051602061480483398151915254600160401b900460ff16612da957604051631afcd79f60e31b815260040160405180910390fd5b565b610206612d72565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb35906044015b602060405180830381865af4158015612e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fd0565b9392505050565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c79eaa2290604401612dfa565b6040516304d40eb160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906309a81d6290604401602060405180830381865af4158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fa8565b6040516330b8415f60e01b81526001600160601b038216600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906330b8415f90602401602060405180830381865af4158015612f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f909190613fa8565b1561304957602082810151604051634f69237560e11b81528151600482015291015160248201526001600160601b038216604482015260009073__$a23651848365a6a5ca15f07b4331037f48$__90639ed246ea906064016040805180830381865af4158015613004573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302891906144cd565b915050613039836060015182612db3565b6001600160601b03166060840152505b836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ab9190613f1c565b6001600160a01b03166359852426848460ff61261c565b6000826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131269190613f1c565b60405163bd7d9d8560e01b81526001600160601b03841660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015613179573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131a19190810190614526565b6101c0810151604051638d38cd4b60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015613201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132259190613fa8565b801561327e575061327e816101c0015173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156112d4573d6000803e3d6000fd5b156132a757604051630cd0c0b560e31b81526001600160601b038416600482015260240161097c565b6000846001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190613f1c565b604051630331f98560e21b81526001600160601b03861660048201529091506001600160a01b03821690630cc7e61490602401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050505050505050565b6000805160206148048339815191528054600160401b810460ff1615906001600160401b03166000811580156133aa5750825b90506000826001600160401b031660011480156133c65750303b155b9050811580156133d4575080155b156133f25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561341c57845460ff60401b1916600160401b1785555b6000808780602001905181019061343391906146c2565b90925090506134448260008b611b19565b613454630e1d6de360e41b610d84565b505083156114d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016114cd565b6000805160206147e483398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613501612d72565b61178681613721565b600061351e6001546001600160a01b031690565b6001600160a01b031663d39e604383613535610716565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561358a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ae919061448e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190613f1c565b92915050565b6136256137c7565b60006136396001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613688573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136b091908101906146f1565b91506136c782604001518460ff9081169116141590565b1561370b57608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff808616602484015216604482015260640161097c565b6137188260200151613732565b90509250929050565b613729612d72565b61178681613498565b60006137466001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd91908101906146f1565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561381757600080fd5b81356001600160e01b031981168114612e3b57600080fd5b6001600160601b038116811461178657600080fd5b60006020828403121561385657600080fd5b8135612e3b8161382f565b60005b8381101561387c578181015183820152602001613864565b50506000910152565b6000815180845261389d816020860160208601613861565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391a60c08401826001600160a01b03169052565b5060c083015160e080840152613934610100840182613885565b949350505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156139745761397461393c565b60405290565b60405161012081016001600160401b03811182821017156139745761397461393c565b60405161022081016001600160401b03811182821017156139745761397461393c565b60405160e081016001600160401b03811182821017156139745761397461393c565b604051601f8201601f191681016001600160401b0381118282101715613a0a57613a0a61393c565b604052919050565b600060408284031215613a2457600080fd5b613a2c613952565b9050813581526020820135602082015292915050565b60008060608385031215613a5557600080fd5b8235613a608161382f565b91506137188460208501613a12565b6001600160a01b038116811461178657600080fd5b60ff8116811461178657600080fd5b801515811461178657600080fd5b60006001600160401b03821115613aba57613aba61393c565b50601f01601f191660200190565b600082601f830112613ad957600080fd5b8135613aec613ae782613aa1565b6139e2565b818152846020838601011115613b0157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215613b3757600080fd5b8635613b4281613a6f565b95506020870135613b528161382f565b94506040870135613b6281613a84565b93506060870135613b7281613a93565b92506080870135613b8281613a6f565b915060a08701356001600160401b03811115613b9d57600080fd5b613ba989828a01613ac8565b9150509295509295509295565b600060208284031215613bc857600080fd5b81356001600160401b03811115613bde57600080fd5b61393484828501613ac8565b600080600080600060a08688031215613c0257600080fd5b8535613c0d81613a6f565b94506020860135613c1d8161382f565b93506040860135613c2d8161382f565b92506060860135613c3d8161382f565b91506080860135613c4d8161382f565b809150509295509295909350565b60008060408385031215613c6e57600080fd5b8235613c7981613a6f565b915060208301356001600160401b03811115613c9457600080fd5b613ca085828601613ac8565b9150509250929050565b600080600060608486031215613cbf57600080fd5b8335613cca81613a6f565b92506020840135613cda8161382f565b91506040840135613cea8161382f565b809150509250925092565b600060208284031215613d0757600080fd5b8135612e3b81613a6f565b60008060408385031215613d2557600080fd5b8235613d3081613a6f565b91506020830135613d408161382f565b809150509250929050565b600080600060608486031215613d6057600080fd5b8335613d6b81613a6f565b92506020840135613d7b81613a6f565b91506040840135613cea81613a6f565b602081526000612e3b6020830184613885565b60008060008060808587031215613db457600080fd5b8435613dbf81613a6f565b93506020850135613dcf8161382f565b92506040850135613ddf8161382f565b91506060850135613def8161382f565b939692955090935050565b64ffffffffff8116811461178657600080fd5b600080600080600080600080610100898b031215613e2a57600080fd5b8835613e3581613a6f565b97506020890135613e458161382f565b96506040890135613e5581613a6f565b9550613e648a60608b01613a12565b945060a0890135613e748161382f565b935060c0890135613e8481613dfa565b925060e08901356001600160401b0380821115613ea057600080fd5b818b0191508b601f830112613eb457600080fd5b813581811115613ec357600080fd5b8c6020828501011115613ed557600080fd5b6020830194508093505050509295985092959890939650565b60008060408385031215613f0157600080fd5b8235613f0c81613a6f565b91506020830135613d4081613a6f565b600060208284031215613f2e57600080fd5b8151612e3b81613a6f565b600060208284031215613f4b57600080fd5b815162ffffff81168114612e3b57600080fd5b600181811c90821680613f7257607f821691505b602082108103613f9257634e487b7160e01b600052602260045260246000fd5b50919050565b8051613fa381613a93565b919050565b600060208284031215613fba57600080fd5b8151612e3b81613a93565b8051613fa38161382f565b600060208284031215613fe257600080fd5b8151612e3b8161382f565b600060408284031215613fff57600080fd5b614007613952565b9050815181526020820151602082015292915050565b600082601f83011261402e57600080fd5b815161403c613ae782613aa1565b81815284602083860101111561405157600080fd5b613934826020830160208701613861565b8051613fa381613dfa565b60006020828403121561407f57600080fd5b81516001600160401b038082111561409657600080fd5b9083019061014082860312156140ab57600080fd5b6140b361397a565b6140bc83613fc5565b81526140cb8660208501613fed565b60208201526060830151828111156140e257600080fd5b6140ee8782860161401d565b60408301525061410060808401613fc5565b606082015261411160a08401613fc5565b608082015261412260c08401613fc5565b60a082015261413360e08401614062565b60c08201526101009150614148828401614062565b60e082015261415a6101208401614062565b91810191909152949350505050565b80516001600160601b0316825260006101406020838101518051868301529081015160408601525060408301518160608601526141a882860182613885565b91505060608301516141c560808601826001600160601b03169052565b5060808301516001600160601b03811660a08601525060a08301516001600160601b03811660c08601525060c083015164ffffffffff811660e08601525060e083015161010061421d8187018364ffffffffff169052565b84015164ffffffffff81166101208701529050509392505050565b6001600160601b038416815260606020820152600061425a6060830185614169565b905060ff83166040830152949350505050565b601f821115611d4d57600081815260208120601f850160051c810160208610156142945750805b601f850160051c820191505b81811015611673578281556001016142a0565b81516001600160401b038111156142cc576142cc61393c565b6142e0816142da8454613f5e565b8461426d565b602080601f83116001811461431557600084156142fd5750858301515b600019600386901b1c1916600185901b178555611673565b600085815260208120601f198616915b8281101561434457888601518255948401946001909101908401614325565b50858210156143625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561438457600080fd5b81516001600160401b0381168114612e3b57600080fd5b6000602082840312156143ad57600080fd5b5051919050565b8051613fa381613a84565b8051613fa381613a6f565b805163ffffffff81168114613fa357600080fd5b600060a082840312156143f057600080fd5b60405160a081018181106001600160401b03821117156144125761441261393c565b604052825161442081613a84565b8152602083015161443081613a84565b6020820152604083015161444381613a6f565b6040820152614454606084016143ca565b6060820152614465608084016143ca565b60808201529392505050565b60006020828403121561448357600080fd5b8151612e3b81613dfa565b6000602082840312156144a057600080fd5b8151612e3b81613a84565b6001600160601b03831681526040602082015260006139346040830184614169565b600080604083850312156144e057600080fd5b82516144eb8161382f565b6020840151909250613d408161382f565b80516001600160c01b031981168114613fa357600080fd5b805161ffff81168114613fa357600080fd5b60006020828403121561453857600080fd5b81516001600160401b038082111561454f57600080fd5b90830190610220828603121561456457600080fd5b61456c61399d565b61457583613fc5565b815261458360208401613fc5565b6020820152614594604084016144fc565b60408201526145a5606084016144fc565b60608201526145b660808401613fc5565b60808201526145c760a08401613fc5565b60a08201526145d860c08401613fc5565b60c08201526145e960e08401614062565b60e0820152610100808401518381111561460257600080fd5b61460e8882870161401d565b828401525050610120808401518381111561462857600080fd5b6146348882870161401d565b828401525050610140915061464a828401614514565b82820152610160915061465e828401614514565b828201526101809150614672828401613fc5565b828201526101a09150614686828401613fc5565b828201526101c0915061469a828401614062565b828201526101e091506146ae828401614062565b82820152610200915061415a828401614062565b600080604083850312156146d557600080fd5b82516146e081613a6f565b6020840151909250613d4081613a6f565b60006020828403121561470357600080fd5b81516001600160401b038082111561471a57600080fd5b9083019060e0828603121561472e57600080fd5b6147366139c0565b61473f83613fc5565b815261474d60208401613fc5565b602082015261475e604084016143b4565b604082015261476f60608401613f98565b6060820152614780608084016143bf565b608082015261479160a084016143bf565b60a082015260c0830151828111156147a857600080fd5b6147b48782860161401d565b60c0830152509594505050505056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122044754b03166633bf3bc953b8aa4dde4e2bdca3fcdb19223e4885ea2d7d9b778f64736f6c63430008140033",
1071
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c806376429bc01161011a578063ada9652e116100ad578063bf7e214f1161007c578063bf7e214f146104d2578063caf4e3d4146104f0578063cc9fc59a146104f8578063e283b4a914610500578063f7c34ee01461051357600080fd5b8063ada9652e14610488578063b5346af51461049d578063b68d1809146104b0578063b7565f9c146104bf57600080fd5b80638fb36037116100e95780638fb3603714610408578063a3f4df7e14610429578063aa9acb2c14610462578063ad328d9f1461047557600080fd5b806376429bc0146103c75780637a9e5e4b146103da578063893d20e8146103ed5780638e32e979146103f557600080fd5b806327bb7a331161019d57806349bb9e4b1161016c57806349bb9e4b146103375780635ab1bd531461034a5780635ed325671461036f578063644c45e014610382578063675393bf146103b457600080fd5b806327bb7a33146102f6578063329d6e741461030957806336fc697e1461031c578063377a6db71461032457600080fd5b8063138461e0116101d9578063138461e0146102935780631eff4b221461029b5780631f8e8f36146102d0578063214cdb80146102e357600080fd5b806301ffc9a71461020b57806306fa45651461024d5780630d8e6e2c146102625780630fec111c1461027e575b600080fd5b610238610219366004613805565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026061025b366004613844565b610526565b005b61026a610716565b60405162ffffff9091168152602001610244565b6102866107a0565b60405161024491906138b1565b6102606108c1565b6102c27f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610244565b6102606102de366004613a42565b610ac8565b6102606102f1366004613805565b610d84565b610260610304366004613b1e565b610db1565b610260610317366004613bb6565b610e56565b610260610f9b565b610260610332366004613bea565b610fe1565b610260610345366004613c5b565b6113e0565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610244565b61026061037d366004613caa565b6114df565b6000805160206147c4833981519152546001600160601b03165b6040516001600160601b039091168152602001610244565b6102606103c2366004613cf5565b61167b565b6102606103d5366004613d12565b611789565b6102606103e8366004613cf5565b611948565b6103576119e2565b610260610403366004613d4b565b611b19565b610410611d52565b6040516001600160e01b03199091168152602001610244565b6104556040518060400160405280600d81526020016c42756e646c655365727669636560981b81525081565b6040516102449190613d8b565b610260610470366004613d12565b611d8a565b610260610483366004613d9e565b611fcb565b6102c26000805160206147c483398151915281565b6102606104ab366004613844565b612243565b60405160dc8152602001610244565b6102606104cd366004613caa565b61242a565b6000805160206147e4833981519152546001600160a01b0316610357565b61035761263a565b610357612646565b61039c61050e366004613e0d565b612652565b610260610521366004613eee565b612b59565b6000610532608c612bd0565b92505050806001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190613f1c565b6001600160a01b031663fe1f18d68360646040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e9190613f1c565b6040516306fa456560e01b81526001600160601b03851660048201529091506001600160a01b038216906306fa456590602401600060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b50506040516001600160601b03861681527f87cfb697b5d649751f13ba6e2e51778a1fd0a1f260df7281952986c453708e71925060200190505b60405180910390a1505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190613f39565b905090565b6107a86137c7565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a0810161081d6119e2565b6001600160a01b0316815260200182600101805461083a90613f5e565b80601f016020809104026020016040519081016040528092919081815260200182805461086690613f5e565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b505050505081525091505090565b60006000805160206147c483398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190613fa8565b156109855780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306109986001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190613fa8565b610a2c5760405163b9304b0d60e01b81526001600160a01b038216600482015260240161097c565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa49190613fd0565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610ad5608c612bd0565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190613f1c565b604051634793b4ab60e01b81526001600160601b03871660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bb9919081019061406d565b8051604051630a4d29dd60e31b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b9190613fa8565b15610c64576040516349e9f38360e01b81526001600160601b038716600482015260240161097c565b80516001600160601b03858116911614610caf57805160405163dab86e4560e01b81526001600160601b0380891660048301529182166024820152908516604482015260640161097c565b848160200181905250826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190613f1c565b6001600160a01b03166359852426878360ff6040518463ffffffff1660e01b8152600401610d4a93929190614238565b600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b50505050505050505050565b610d8c612d72565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b610db9612d72565b610dc38287612b59565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301610e4c83826142b3565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e78610716565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190614372565b6000805160206148048339815191528054600160401b900460ff1680610f0f575080546001600160401b03808416911610155b15610f2d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610f5783612dab565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610709565b610fa3612d72565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b33610ff46001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190613fa8565b6110885760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000866001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ec9190613f1c565b905060006001600160a01b03821663a5961b4c73__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038a1660dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611171573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611195919061439b565b6040518263ffffffff1660e01b81526004016111b391815260200190565b60a060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f491906143de565b60200151604051634793b4ab60e01b81526001600160601b03881660048201529091506000906001600160a01b03841690634793b4ab90602401600060405180830381865afa15801561124b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611273919081019061406d565b905060ff8216606414158061130757506113078160e0015173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f89190614471565b64ffffffffff90811691161090565b1561134c5760e081015160405163bf5b8f0960e01b81526001600160601b038916600482015260ff8416602482015264ffffffffff909116604482015260640161097c565b600061136961135f836060015188612db3565b8360800151612e42565b90506113758188612e8d565b156113ae5760405163826a5ff960e01b81526001600160601b03808a16600483015280831660248301528816604482015260640161097c565b6113bc826080015188612db3565b6001600160601b031660808301526113d68a898489612f14565b610d788a8a6130c2565b6000805160206148048339815191528054600160401b810460ff1615906001600160401b03166000811580156114135750825b90506000826001600160401b0316600114801561142f5750303b155b90508115801561143d575080155b1561145b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561148557845460ff60401b1916600160401b1785555b61148f8787613377565b83156114d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b336114f26001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613fa8565b6115865760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ea9190613f1c565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611665919081019061406d565b905061167386868387612f14565b505050505050565b611683612d72565b806001600160a01b03163b6000036116b95760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097c565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa925050508015611733575060408051601f3d908101601f1916820190925261173091810190613fa8565b60015b61175b5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161097c565b806117845760405163fdeac91f60e01b81526001600160a01b038316600482015260240161097c565b505b50565b816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117eb9190613f1c565b6040516375d357df60e01b81526001600160601b03831660048201526001600160a01b0391909116906375d357df90602401602060405180830381865afa15801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190613fa8565b611886576040516392bb4dff60e01b81526001600160601b038216600482015260240161097c565b816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190613f1c565b604051631351fccf60e31b81526001600160601b03831660048201526001600160a01b039190911690639a8fe67890602401600060405180830381600087803b15801561193457600080fd5b505af1158015611673573d6000803e3d6000fd5b336119686000805160206147e4833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146119a35760405162d1953b60e31b81526001600160a01b038216600482015260240161097c565b816001600160a01b03163b6000036119d9576040516361798f2f60e11b81526001600160a01b038316600482015260240161097c565b61178482613498565b6000806000805160206147c483398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a769190613fa8565b15611b03576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afd9190613f1c565b91505090565b54600160601b90046001600160a01b0316919050565b611b21612d72565b611ba183846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613fd0565b603c60008560405180602001604052806000815250610db1565b6001600160a01b03821615611bbe57611bb9826134f9565b611d2d565b6000611bd26001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c56919061448e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190613f1c565b9050611d2b816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190613f1c565b6134f9565b505b611d3d634a531f3360e01b610d84565b611d4d63b68d180960e01b610d84565b505050565b6000805160206147e4833981519152805460009190600160a01b900460ff16611d7c576000611afd565b638fb3603760e01b91505090565b816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dec9190613f1c565b6001600160a01b031663fe1f18d68260c86040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b158015611e4657600080fd5b505af1158015611e5a573d6000803e3d6000fd5b505050506000826001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec29190613f1c565b6040516322cc1d4560e11b81526001600160601b03841660048201529091506000906001600160a01b038316906345983a8a90602401602060405180830381865afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f39919061439b565b90508015611f6c576040516356a410b760e01b81526001600160601b03841660048201526024810182905260440161097c565b60405163b5346af560e01b81526001600160601b03841660048201526001600160a01b0383169063b5346af5906024015b600060405180830381600087803b158015611fb757600080fd5b505af1158015610e4c573d6000803e3d6000fd5b33611fde6001546001600160a01b031690565b604051632b91e0a960e01b81526001600160a01b0383811660048301529190911690632b91e0a990602401602060405180830381865afa158015612026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204a9190613fa8565b6120725760405163ea8a77fd60e01b81526001600160a01b038216600482015260240161097c565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d69190613f1c565b604051634793b4ab60e01b81526001600160601b03861660048201529091506000906001600160a01b03831690634793b4ab90602401600060405180830381865afa158015612129573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612151919081019061406d565b9050612161816080015185612e42565b6001600160601b0316608082015260408051631a99b41b60e31b815290516001600160a01b0389169163d4cda0d89160048083019260209291908290030181865afa1580156121b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d89190613f1c565b6001600160a01b03166359852426868360ff6040518463ffffffff1660e01b815260040161220893929190614238565b600060405180830381600087803b15801561222257600080fd5b505af1158015612236573d6000803e3d6000fd5b5050505050505050505050565b600061224f608c612bd0565b92505050806001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b59190613f1c565b6001600160a01b031663fe1f18d683606e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b505050506000816001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238b9190613f1c565b60405163b5346af560e01b81526001600160601b03851660048201529091506001600160a01b0382169063b5346af590602401600060405180830381600087803b1580156123d857600080fd5b505af11580156123ec573d6000803e3d6000fd5b50506040516001600160601b03861681527f6764112d27879e5bb12f07fde08a48629ec22e603c75c9942ba62a06c95a55f492506020019050610709565b6000836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248e9190613f1c565b604051634793b4ab60e01b81526001600160601b03851660048201526001600160a01b039190911690634793b4ab90602401600060405180830381865afa1580156124dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612505919081019061406d565b60a081015160405163274acb3560e01b81526001600160601b039182166004820152908416602482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb3590604401602060405180830381865af415801561256e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125929190613fd0565b6001600160601b031660a082015260408051631a99b41b60e31b815290516001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa1580156125e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126099190613f1c565b6001600160a01b03166359852426848360ff5b6040518463ffffffff1660e01b8152600401611f9d93929190614238565b600061079b602861350a565b600061079b604661350a565b600061265c61263a565b6001600160a01b031663c2bf08c86040518060e0016040528061267d600090565b6001600160601b031681526020018b6001600160601b031681526020016126a260dc90565b60ff16815260200160001515815260200160006001600160a01b031681526020018a6001600160a01b03168152602001604051806020016040528060008152508152506040518263ffffffff1660e01b815260040161270191906138b1565b6020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190613fd0565b9050886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613f1c565b6001600160a01b03166397affbf5826040518061012001604052808c6001600160601b031681526020018a815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506001600160601b038a166020808301919091526040805163bc1b392d60e01b81528151919093019273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9263bc1b392d926004808401938290030181865af4158015612874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128989190613fd0565b6001600160601b0316815260200173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156128ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129139190613fd0565b6001600160601b031681526020018864ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299b9190614471565b6040516352bcc5a760e11b815264ffffffffff9182166004820152908a16602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af41580156129fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1e9190614471565b64ffffffffff16815260006020909101526040516001600160e01b031960e085901b168152612a519291906004016144ab565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b505050506000896001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae79190613f1c565b6040516346f0e8a760e11b81526001600160601b03841660048201529091506001600160a01b03821690638de1d14e90602401600060405180830381600087803b158015612b3457600080fd5b505af1158015612b48573d6000803e3d6000fd5b505050505098975050505050505050565b612b61612d72565b612b6a8161167b565b612b72610f9b565b6001600160a01b038216612b995760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206147c483398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6000612bda6137c7565b6000612bee6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c589190613fd0565b9250612c64838561361d565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce9190613f1c565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015612d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3c9190613fa8565b15612d6b57608082015160405163d53987e560e01b81526001600160a01b03909116600482015260240161097c565b9193909250565b60008051602061480483398151915254600160401b900460ff16612da957604051631afcd79f60e31b815260040160405180910390fd5b565b610206612d72565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb35906044015b602060405180830381865af4158015612e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fd0565b9392505050565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c79eaa2290604401612dfa565b6040516304d40eb160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906309a81d6290604401602060405180830381865af4158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3b9190613fa8565b6040516330b8415f60e01b81526001600160601b038216600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906330b8415f90602401602060405180830381865af4158015612f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f909190613fa8565b1561304957602082810151604051634f69237560e11b81528151600482015291015160248201526001600160601b038216604482015260009073__$a23651848365a6a5ca15f07b4331037f48$__90639ed246ea906064016040805180830381865af4158015613004573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302891906144cd565b915050613039836060015182612db3565b6001600160601b03166060840152505b836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ab9190613f1c565b6001600160a01b03166359852426848460ff61261c565b6000826001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131269190613f1c565b60405163bd7d9d8560e01b81526001600160601b03841660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015613179573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131a19190810190614526565b6101c0810151604051638d38cd4b60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015613201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132259190613fa8565b801561327e575061327e816101c0015173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156112d4573d6000803e3d6000fd5b156132a757604051630cd0c0b560e31b81526001600160601b038416600482015260240161097c565b6000846001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190613f1c565b604051630331f98560e21b81526001600160601b03861660048201529091506001600160a01b03821690630cc7e61490602401600060405180830381600087803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505050505050505050565b6000805160206148048339815191528054600160401b810460ff1615906001600160401b03166000811580156133aa5750825b90506000826001600160401b031660011480156133c65750303b155b9050811580156133d4575080155b156133f25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561341c57845460ff60401b1916600160401b1785555b6000808780602001905181019061343391906146c2565b90925090506134448260008b611b19565b613454630e1d6de360e41b610d84565b505083156114d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016114cd565b6000805160206147e483398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613501612d72565b61178681613721565b600061351e6001546001600160a01b031690565b6001600160a01b031663d39e604383613535610716565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561358a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ae919061448e565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190613f1c565b92915050565b6136256137c7565b60006136396001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613688573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136b091908101906146f1565b91506136c782604001518460ff9081169116141590565b1561370b57608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff808616602484015216604482015260640161097c565b6137188260200151613732565b90509250929050565b613729612d72565b61178681613498565b60006137466001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd91908101906146f1565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561381757600080fd5b81356001600160e01b031981168114612e3b57600080fd5b6001600160601b038116811461178657600080fd5b60006020828403121561385657600080fd5b8135612e3b8161382f565b60005b8381101561387c578181015183820152602001613864565b50506000910152565b6000815180845261389d816020860160208601613861565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391a60c08401826001600160a01b03169052565b5060c083015160e080840152613934610100840182613885565b949350505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156139745761397461393c565b60405290565b60405161012081016001600160401b03811182821017156139745761397461393c565b60405161022081016001600160401b03811182821017156139745761397461393c565b60405160e081016001600160401b03811182821017156139745761397461393c565b604051601f8201601f191681016001600160401b0381118282101715613a0a57613a0a61393c565b604052919050565b600060408284031215613a2457600080fd5b613a2c613952565b9050813581526020820135602082015292915050565b60008060608385031215613a5557600080fd5b8235613a608161382f565b91506137188460208501613a12565b6001600160a01b038116811461178657600080fd5b60ff8116811461178657600080fd5b801515811461178657600080fd5b60006001600160401b03821115613aba57613aba61393c565b50601f01601f191660200190565b600082601f830112613ad957600080fd5b8135613aec613ae782613aa1565b6139e2565b818152846020838601011115613b0157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215613b3757600080fd5b8635613b4281613a6f565b95506020870135613b528161382f565b94506040870135613b6281613a84565b93506060870135613b7281613a93565b92506080870135613b8281613a6f565b915060a08701356001600160401b03811115613b9d57600080fd5b613ba989828a01613ac8565b9150509295509295509295565b600060208284031215613bc857600080fd5b81356001600160401b03811115613bde57600080fd5b61393484828501613ac8565b600080600080600060a08688031215613c0257600080fd5b8535613c0d81613a6f565b94506020860135613c1d8161382f565b93506040860135613c2d8161382f565b92506060860135613c3d8161382f565b91506080860135613c4d8161382f565b809150509295509295909350565b60008060408385031215613c6e57600080fd5b8235613c7981613a6f565b915060208301356001600160401b03811115613c9457600080fd5b613ca085828601613ac8565b9150509250929050565b600080600060608486031215613cbf57600080fd5b8335613cca81613a6f565b92506020840135613cda8161382f565b91506040840135613cea8161382f565b809150509250925092565b600060208284031215613d0757600080fd5b8135612e3b81613a6f565b60008060408385031215613d2557600080fd5b8235613d3081613a6f565b91506020830135613d408161382f565b809150509250929050565b600080600060608486031215613d6057600080fd5b8335613d6b81613a6f565b92506020840135613d7b81613a6f565b91506040840135613cea81613a6f565b602081526000612e3b6020830184613885565b60008060008060808587031215613db457600080fd5b8435613dbf81613a6f565b93506020850135613dcf8161382f565b92506040850135613ddf8161382f565b91506060850135613def8161382f565b939692955090935050565b64ffffffffff8116811461178657600080fd5b600080600080600080600080610100898b031215613e2a57600080fd5b8835613e3581613a6f565b97506020890135613e458161382f565b96506040890135613e5581613a6f565b9550613e648a60608b01613a12565b945060a0890135613e748161382f565b935060c0890135613e8481613dfa565b925060e08901356001600160401b0380821115613ea057600080fd5b818b0191508b601f830112613eb457600080fd5b813581811115613ec357600080fd5b8c6020828501011115613ed557600080fd5b6020830194508093505050509295985092959890939650565b60008060408385031215613f0157600080fd5b8235613f0c81613a6f565b91506020830135613d4081613a6f565b600060208284031215613f2e57600080fd5b8151612e3b81613a6f565b600060208284031215613f4b57600080fd5b815162ffffff81168114612e3b57600080fd5b600181811c90821680613f7257607f821691505b602082108103613f9257634e487b7160e01b600052602260045260246000fd5b50919050565b8051613fa381613a93565b919050565b600060208284031215613fba57600080fd5b8151612e3b81613a93565b8051613fa38161382f565b600060208284031215613fe257600080fd5b8151612e3b8161382f565b600060408284031215613fff57600080fd5b614007613952565b9050815181526020820151602082015292915050565b600082601f83011261402e57600080fd5b815161403c613ae782613aa1565b81815284602083860101111561405157600080fd5b613934826020830160208701613861565b8051613fa381613dfa565b60006020828403121561407f57600080fd5b81516001600160401b038082111561409657600080fd5b9083019061014082860312156140ab57600080fd5b6140b361397a565b6140bc83613fc5565b81526140cb8660208501613fed565b60208201526060830151828111156140e257600080fd5b6140ee8782860161401d565b60408301525061410060808401613fc5565b606082015261411160a08401613fc5565b608082015261412260c08401613fc5565b60a082015261413360e08401614062565b60c08201526101009150614148828401614062565b60e082015261415a6101208401614062565b91810191909152949350505050565b80516001600160601b0316825260006101406020838101518051868301529081015160408601525060408301518160608601526141a882860182613885565b91505060608301516141c560808601826001600160601b03169052565b5060808301516001600160601b03811660a08601525060a08301516001600160601b03811660c08601525060c083015164ffffffffff811660e08601525060e083015161010061421d8187018364ffffffffff169052565b84015164ffffffffff81166101208701529050509392505050565b6001600160601b038416815260606020820152600061425a6060830185614169565b905060ff83166040830152949350505050565b601f821115611d4d57600081815260208120601f850160051c810160208610156142945750805b601f850160051c820191505b81811015611673578281556001016142a0565b81516001600160401b038111156142cc576142cc61393c565b6142e0816142da8454613f5e565b8461426d565b602080601f83116001811461431557600084156142fd5750858301515b600019600386901b1c1916600185901b178555611673565b600085815260208120601f198616915b8281101561434457888601518255948401946001909101908401614325565b50858210156143625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561438457600080fd5b81516001600160401b0381168114612e3b57600080fd5b6000602082840312156143ad57600080fd5b5051919050565b8051613fa381613a84565b8051613fa381613a6f565b805163ffffffff81168114613fa357600080fd5b600060a082840312156143f057600080fd5b60405160a081018181106001600160401b03821117156144125761441261393c565b604052825161442081613a84565b8152602083015161443081613a84565b6020820152604083015161444381613a6f565b6040820152614454606084016143ca565b6060820152614465608084016143ca565b60808201529392505050565b60006020828403121561448357600080fd5b8151612e3b81613dfa565b6000602082840312156144a057600080fd5b8151612e3b81613a84565b6001600160601b03831681526040602082015260006139346040830184614169565b600080604083850312156144e057600080fd5b82516144eb8161382f565b6020840151909250613d408161382f565b80516001600160c01b031981168114613fa357600080fd5b805161ffff81168114613fa357600080fd5b60006020828403121561453857600080fd5b81516001600160401b038082111561454f57600080fd5b90830190610220828603121561456457600080fd5b61456c61399d565b61457583613fc5565b815261458360208401613fc5565b6020820152614594604084016144fc565b60408201526145a5606084016144fc565b60608201526145b660808401613fc5565b60808201526145c760a08401613fc5565b60a08201526145d860c08401613fc5565b60c08201526145e960e08401614062565b60e0820152610100808401518381111561460257600080fd5b61460e8882870161401d565b828401525050610120808401518381111561462857600080fd5b6146348882870161401d565b828401525050610140915061464a828401614514565b82820152610160915061465e828401614514565b828201526101809150614672828401613fc5565b828201526101a09150614686828401613fc5565b828201526101c0915061469a828401614062565b828201526101e091506146ae828401614062565b82820152610200915061415a828401614062565b600080604083850312156146d557600080fd5b82516146e081613a6f565b6020840151909250613d4081613a6f565b60006020828403121561470357600080fd5b81516001600160401b038082111561471a57600080fd5b9083019060e0828603121561472e57600080fd5b6147366139c0565b61473f83613fc5565b815261474d60208401613fc5565b602082015261475e604084016143b4565b604082015261476f60608401613f98565b6060820152614780608084016143bf565b608082015261479160a084016143bf565b60a082015260c0830151828111156147a857600080fd5b6147b48782860161401d565b60c0830152509594505050505056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122044754b03166633bf3bc953b8aa4dde4e2bdca3fcdb19223e4885ea2d7d9b778f64736f6c63430008140033",
965
1072
  "linkReferences": {
966
- "contracts/types/Fee.sol": {
967
- "FeeLib": [
1073
+ "contracts/types/Amount.sol": {
1074
+ "AmountLib": [
1075
+ {
1076
+ "length": 20,
1077
+ "start": 9754
1078
+ },
968
1079
  {
969
1080
  "length": 20,
970
- "start": 11300
1081
+ "start": 10529
971
1082
  },
972
1083
  {
973
1084
  "length": 20,
974
- "start": 11455
1085
+ "start": 10638
1086
+ },
1087
+ {
1088
+ "length": 20,
1089
+ "start": 11970
1090
+ },
1091
+ {
1092
+ "length": 20,
1093
+ "start": 12113
1094
+ },
1095
+ {
1096
+ "length": 20,
1097
+ "start": 12188
1098
+ },
1099
+ {
1100
+ "length": 20,
1101
+ "start": 12312
1102
+ }
1103
+ ]
1104
+ },
1105
+ "contracts/types/Fee.sol": {
1106
+ "FeeLib": [
1107
+ {
1108
+ "length": 20,
1109
+ "start": 12465
975
1110
  }
976
1111
  ]
977
1112
  },
@@ -979,15 +1114,19 @@
979
1114
  "NftIdLib": [
980
1115
  {
981
1116
  "length": 20,
982
- "start": 2049
1117
+ "start": 2524
1118
+ },
1119
+ {
1120
+ "length": 20,
1121
+ "start": 3267
983
1122
  },
984
1123
  {
985
1124
  "length": 20,
986
- "start": 4155
1125
+ "start": 4583
987
1126
  },
988
1127
  {
989
1128
  "length": 20,
990
- "start": 5080
1129
+ "start": 6910
991
1130
  }
992
1131
  ]
993
1132
  },
@@ -995,11 +1134,23 @@
995
1134
  "TimestampLib": [
996
1135
  {
997
1136
  "length": 20,
998
- "start": 8884
1137
+ "start": 4979
1138
+ },
1139
+ {
1140
+ "length": 20,
1141
+ "start": 10774
1142
+ },
1143
+ {
1144
+ "length": 20,
1145
+ "start": 10918
1146
+ },
1147
+ {
1148
+ "length": 20,
1149
+ "start": 12973
999
1150
  },
1000
1151
  {
1001
1152
  "length": 20,
1002
- "start": 10606
1153
+ "start": 13085
1003
1154
  }
1004
1155
  ]
1005
1156
  },
@@ -1007,31 +1158,63 @@
1007
1158
  "VersionLib": [
1008
1159
  {
1009
1160
  "length": 20,
1010
- "start": 1461
1161
+ "start": 2083
1162
+ },
1163
+ {
1164
+ "length": 20,
1165
+ "start": 3902
1011
1166
  },
1012
1167
  {
1013
1168
  "length": 20,
1014
- "start": 2702
1169
+ "start": 13878
1015
1170
  }
1016
1171
  ],
1017
1172
  "VersionPartLib": [
1018
1173
  {
1019
1174
  "length": 20,
1020
- "start": 6618
1175
+ "start": 7390
1021
1176
  }
1022
1177
  ]
1023
1178
  }
1024
1179
  },
1025
1180
  "deployedLinkReferences": {
1026
- "contracts/types/Fee.sol": {
1027
- "FeeLib": [
1181
+ "contracts/types/Amount.sol": {
1182
+ "AmountLib": [
1028
1183
  {
1029
1184
  "length": 20,
1030
- "start": 11070
1185
+ "start": 9524
1031
1186
  },
1032
1187
  {
1033
1188
  "length": 20,
1034
- "start": 11225
1189
+ "start": 10299
1190
+ },
1191
+ {
1192
+ "length": 20,
1193
+ "start": 10408
1194
+ },
1195
+ {
1196
+ "length": 20,
1197
+ "start": 11740
1198
+ },
1199
+ {
1200
+ "length": 20,
1201
+ "start": 11883
1202
+ },
1203
+ {
1204
+ "length": 20,
1205
+ "start": 11958
1206
+ },
1207
+ {
1208
+ "length": 20,
1209
+ "start": 12082
1210
+ }
1211
+ ]
1212
+ },
1213
+ "contracts/types/Fee.sol": {
1214
+ "FeeLib": [
1215
+ {
1216
+ "length": 20,
1217
+ "start": 12235
1035
1218
  }
1036
1219
  ]
1037
1220
  },
@@ -1039,15 +1222,19 @@
1039
1222
  "NftIdLib": [
1040
1223
  {
1041
1224
  "length": 20,
1042
- "start": 1819
1225
+ "start": 2294
1043
1226
  },
1044
1227
  {
1045
1228
  "length": 20,
1046
- "start": 3925
1229
+ "start": 3037
1047
1230
  },
1048
1231
  {
1049
1232
  "length": 20,
1050
- "start": 4850
1233
+ "start": 4353
1234
+ },
1235
+ {
1236
+ "length": 20,
1237
+ "start": 6680
1051
1238
  }
1052
1239
  ]
1053
1240
  },
@@ -1055,11 +1242,23 @@
1055
1242
  "TimestampLib": [
1056
1243
  {
1057
1244
  "length": 20,
1058
- "start": 8654
1245
+ "start": 4749
1246
+ },
1247
+ {
1248
+ "length": 20,
1249
+ "start": 10544
1250
+ },
1251
+ {
1252
+ "length": 20,
1253
+ "start": 10688
1254
+ },
1255
+ {
1256
+ "length": 20,
1257
+ "start": 12743
1059
1258
  },
1060
1259
  {
1061
1260
  "length": 20,
1062
- "start": 10376
1261
+ "start": 12855
1063
1262
  }
1064
1263
  ]
1065
1264
  },
@@ -1067,17 +1266,21 @@
1067
1266
  "VersionLib": [
1068
1267
  {
1069
1268
  "length": 20,
1070
- "start": 1231
1269
+ "start": 1853
1270
+ },
1271
+ {
1272
+ "length": 20,
1273
+ "start": 3672
1071
1274
  },
1072
1275
  {
1073
1276
  "length": 20,
1074
- "start": 2472
1277
+ "start": 13648
1075
1278
  }
1076
1279
  ],
1077
1280
  "VersionPartLib": [
1078
1281
  {
1079
1282
  "length": 20,
1080
- "start": 6388
1283
+ "start": 7160
1081
1284
  }
1082
1285
  ]
1083
1286
  }