@etherisc/gif-next 0.0.2-d372e08-980 → 0.0.2-d39f345-355

Sign up to get free protection for your applications and to get access to all the features.
Files changed (383) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +946 -219
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → components/IComponent.sol/IComponent.json} +303 -164
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +864 -49
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +844 -255
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +632 -194
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +91 -2
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1365 -439
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +321 -168
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +996 -1302
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +593 -180
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +251 -270
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +501 -292
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -98
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +247 -180
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1060 -0
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +681 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1289 -0
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1040 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1273 -215
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -79
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +627 -0
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +709 -0
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +804 -160
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +969 -0
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +539 -248
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +78 -388
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1615 -0
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +777 -0
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +803 -341
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +334 -93
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +257 -564
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +289 -124
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -230
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +200 -335
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  126. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  130. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  131. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.json +86 -172
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  145. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Service.sol/Service.json +191 -163
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  159. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestService.sol/TestService.json +210 -214
  161. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  166. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  167. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  169. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  170. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  172. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  177. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  179. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  181. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  183. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  185. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  188. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  190. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  192. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  194. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  196. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  198. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  200. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  202. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  204. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  206. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  210. package/contracts/components/Component.sol +253 -0
  211. package/contracts/components/Distribution.sol +204 -83
  212. package/contracts/components/IComponent.sol +76 -0
  213. package/contracts/components/IDistributionComponent.sol +44 -17
  214. package/contracts/components/IPoolComponent.sol +88 -37
  215. package/contracts/components/IProductComponent.sol +10 -5
  216. package/contracts/components/Pool.sol +222 -167
  217. package/contracts/components/Product.sol +244 -162
  218. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  219. package/contracts/instance/BundleManager.sol +126 -0
  220. package/contracts/instance/Cloneable.sol +51 -0
  221. package/contracts/instance/IInstance.sol +67 -19
  222. package/contracts/instance/IInstanceService.sol +46 -8
  223. package/contracts/instance/Instance.sol +151 -284
  224. package/contracts/instance/InstanceAccessManager.sol +414 -175
  225. package/contracts/instance/InstanceReader.sol +38 -36
  226. package/contracts/instance/InstanceService.sol +402 -122
  227. package/contracts/instance/InstanceServiceManager.sol +6 -9
  228. package/contracts/instance/ObjectManager.sol +82 -0
  229. package/contracts/instance/base/ComponentService.sol +121 -0
  230. package/contracts/instance/base/KeyValueStore.sol +13 -5
  231. package/contracts/instance/base/Lifecycle.sol +23 -6
  232. package/contracts/instance/module/IAccess.sol +36 -20
  233. package/contracts/instance/module/IBundle.sol +8 -5
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +2 -0
  236. package/contracts/instance/module/IPolicy.sol +41 -9
  237. package/contracts/instance/module/ISetup.sol +7 -21
  238. package/contracts/instance/service/ApplicationService.sol +355 -0
  239. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  240. package/contracts/instance/service/BundleService.sol +443 -0
  241. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  242. package/contracts/instance/service/ClaimService.sol +239 -0
  243. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  244. package/contracts/instance/service/DistributionService.sol +374 -31
  245. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  246. package/contracts/instance/service/IApplicationService.sol +78 -0
  247. package/contracts/instance/service/IBundleService.sol +102 -0
  248. package/contracts/instance/service/IClaimService.sol +92 -0
  249. package/contracts/instance/service/IDistributionService.sol +87 -0
  250. package/contracts/instance/service/IPolicyService.sol +139 -0
  251. package/contracts/instance/service/IPoolService.sol +80 -21
  252. package/contracts/instance/service/IProductService.sol +2 -72
  253. package/contracts/instance/service/PolicyService.sol +575 -0
  254. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  255. package/contracts/instance/service/PoolService.sol +248 -116
  256. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  257. package/contracts/instance/service/ProductService.sol +105 -456
  258. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  259. package/contracts/registry/ChainNft.sol +9 -1
  260. package/contracts/registry/IRegistry.sol +39 -19
  261. package/contracts/registry/IRegistryService.sol +31 -13
  262. package/contracts/registry/ITransferInterceptor.sol +1 -0
  263. package/contracts/registry/Registry.sol +243 -224
  264. package/contracts/registry/RegistryAccessManager.sol +216 -0
  265. package/contracts/registry/RegistryService.sol +97 -173
  266. package/contracts/registry/RegistryServiceManager.sol +21 -39
  267. package/contracts/registry/ReleaseManager.sol +324 -0
  268. package/contracts/registry/TokenRegistry.sol +22 -17
  269. package/contracts/shared/ERC165.sol +14 -12
  270. package/contracts/shared/INftOwnable.sol +11 -10
  271. package/contracts/shared/IPolicyHolder.sol +26 -0
  272. package/contracts/shared/IRegisterable.sol +4 -6
  273. package/contracts/shared/IRegistryLinked.sol +12 -0
  274. package/contracts/shared/IService.sol +5 -4
  275. package/contracts/shared/IVersionable.sol +4 -47
  276. package/contracts/shared/NftOwnable.sol +66 -80
  277. package/contracts/shared/PolicyHolder.sol +81 -0
  278. package/contracts/shared/ProxyManager.sol +100 -25
  279. package/contracts/shared/Registerable.sol +16 -32
  280. package/contracts/shared/RegistryLinked.sol +48 -0
  281. package/contracts/shared/Service.sol +41 -24
  282. package/contracts/shared/TokenHandler.sol +11 -5
  283. package/contracts/shared/Versionable.sol +4 -92
  284. package/contracts/test/TestRegisterable.sol +1 -1
  285. package/contracts/test/TestService.sol +4 -3
  286. package/contracts/types/Amount.sol +70 -0
  287. package/contracts/types/Blocknumber.sol +1 -0
  288. package/contracts/types/ClaimId.sol +75 -0
  289. package/contracts/types/DistributorType.sol +2 -2
  290. package/contracts/types/Fee.sol +13 -5
  291. package/contracts/types/NftId.sol +8 -0
  292. package/contracts/types/NftIdSet.sol +26 -24
  293. package/contracts/types/ObjectType.sol +11 -6
  294. package/contracts/types/PayoutId.sol +82 -0
  295. package/contracts/types/Referral.sol +4 -0
  296. package/contracts/types/RoleId.sol +26 -19
  297. package/contracts/types/Seconds.sol +54 -0
  298. package/contracts/types/StateId.sol +7 -2
  299. package/contracts/types/Timestamp.sol +18 -13
  300. package/contracts/types/UFixed.sol +1 -0
  301. package/contracts/types/Version.sol +1 -0
  302. package/package.json +3 -3
  303. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  304. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  305. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  306. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  307. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  309. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  310. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  311. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  313. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  315. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  317. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  319. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  321. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  323. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  327. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  329. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  332. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  336. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  338. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  340. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  342. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  344. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  346. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  347. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  348. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  349. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  350. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  351. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  353. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  354. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  355. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  356. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  357. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  358. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  359. package/contracts/components/BaseComponent.sol +0 -91
  360. package/contracts/components/IBaseComponent.sol +0 -25
  361. package/contracts/experiment/cloning/Cloner.sol +0 -47
  362. package/contracts/experiment/errors/Require.sol +0 -38
  363. package/contracts/experiment/errors/Revert.sol +0 -44
  364. package/contracts/experiment/inheritance/A.sol +0 -53
  365. package/contracts/experiment/inheritance/B.sol +0 -28
  366. package/contracts/experiment/inheritance/C.sol +0 -34
  367. package/contracts/experiment/inheritance/IA.sol +0 -13
  368. package/contracts/experiment/inheritance/IB.sol +0 -10
  369. package/contracts/experiment/inheritance/IC.sol +0 -12
  370. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  371. package/contracts/experiment/statemachine/ISM.sol +0 -25
  372. package/contracts/experiment/statemachine/SM.sol +0 -57
  373. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  374. package/contracts/experiment/types/TypeA.sol +0 -47
  375. package/contracts/experiment/types/TypeB.sol +0 -29
  376. package/contracts/instance/AccessManagedSimple.sol +0 -115
  377. package/contracts/instance/AccessManagerSimple.sol +0 -692
  378. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  379. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  380. package/contracts/instance/base/IInstanceBase.sol +0 -23
  381. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  382. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  383. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -0,0 +1,1615 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PolicyService",
4
+ "sourceName": "contracts/instance/service/PolicyService.sol",
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
+ },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "component",
49
+ "type": "address"
50
+ }
51
+ ],
52
+ "name": "ErrorComponentServiceComponentLocked",
53
+ "type": "error"
54
+ },
55
+ {
56
+ "inputs": [
57
+ {
58
+ "internalType": "NftId",
59
+ "name": "instanceNftId",
60
+ "type": "uint96"
61
+ },
62
+ {
63
+ "internalType": "RoleId",
64
+ "name": "requiredRole",
65
+ "type": "uint64"
66
+ },
67
+ {
68
+ "internalType": "address",
69
+ "name": "sender",
70
+ "type": "address"
71
+ }
72
+ ],
73
+ "name": "ErrorComponentServiceExpectedRoleMissing",
74
+ "type": "error"
75
+ },
76
+ {
77
+ "inputs": [
78
+ {
79
+ "internalType": "address",
80
+ "name": "component",
81
+ "type": "address"
82
+ },
83
+ {
84
+ "internalType": "ObjectType",
85
+ "name": "requiredType",
86
+ "type": "uint8"
87
+ },
88
+ {
89
+ "internalType": "ObjectType",
90
+ "name": "componentType",
91
+ "type": "uint8"
92
+ }
93
+ ],
94
+ "name": "ErrorComponentServiceInvalidType",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [
99
+ {
100
+ "internalType": "address",
101
+ "name": "component",
102
+ "type": "address"
103
+ }
104
+ ],
105
+ "name": "ErrorComponentServiceNotComponent",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [
110
+ {
111
+ "internalType": "address",
112
+ "name": "component",
113
+ "type": "address"
114
+ },
115
+ {
116
+ "internalType": "address",
117
+ "name": "initialOwner",
118
+ "type": "address"
119
+ },
120
+ {
121
+ "internalType": "address",
122
+ "name": "sender",
123
+ "type": "address"
124
+ }
125
+ ],
126
+ "name": "ErrorComponentServiceSenderNotOwner",
127
+ "type": "error"
128
+ },
129
+ {
130
+ "inputs": [
131
+ {
132
+ "internalType": "address",
133
+ "name": "target",
134
+ "type": "address"
135
+ }
136
+ ],
137
+ "name": "ErrorIAccessTargetLocked",
138
+ "type": "error"
139
+ },
140
+ {
141
+ "inputs": [
142
+ {
143
+ "internalType": "address",
144
+ "name": "customer",
145
+ "type": "address"
146
+ },
147
+ {
148
+ "internalType": "address",
149
+ "name": "tokenHandlerAddress",
150
+ "type": "address"
151
+ },
152
+ {
153
+ "internalType": "uint256",
154
+ "name": "amount",
155
+ "type": "uint256"
156
+ }
157
+ ],
158
+ "name": "ErrorIPolicyServiceInsufficientAllowance",
159
+ "type": "error"
160
+ },
161
+ {
162
+ "inputs": [
163
+ {
164
+ "internalType": "NftId",
165
+ "name": "policyNftId",
166
+ "type": "uint96"
167
+ },
168
+ {
169
+ "internalType": "uint16",
170
+ "name": "openClaimsCount",
171
+ "type": "uint16"
172
+ }
173
+ ],
174
+ "name": "ErrorIPolicyServiceOpenClaims",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [
179
+ {
180
+ "internalType": "NftId",
181
+ "name": "policyNftId",
182
+ "type": "uint96"
183
+ }
184
+ ],
185
+ "name": "ErrorIPolicyServicePolicyAlreadyClosed",
186
+ "type": "error"
187
+ },
188
+ {
189
+ "inputs": [
190
+ {
191
+ "internalType": "NftId",
192
+ "name": "policyNftId",
193
+ "type": "uint96"
194
+ },
195
+ {
196
+ "internalType": "Timestamp",
197
+ "name": "expiredAt",
198
+ "type": "uint40"
199
+ }
200
+ ],
201
+ "name": "ErrorIPolicyServicePolicyHasNotExpired",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "inputs": [
206
+ {
207
+ "internalType": "NftId",
208
+ "name": "policyNftId",
209
+ "type": "uint96"
210
+ }
211
+ ],
212
+ "name": "ErrorIPolicyServicePolicyNotActivated",
213
+ "type": "error"
214
+ },
215
+ {
216
+ "inputs": [
217
+ {
218
+ "internalType": "NftId",
219
+ "name": "policyNftId",
220
+ "type": "uint96"
221
+ },
222
+ {
223
+ "internalType": "StateId",
224
+ "name": "state",
225
+ "type": "uint8"
226
+ }
227
+ ],
228
+ "name": "ErrorIPolicyServicePolicyNotActive",
229
+ "type": "error"
230
+ },
231
+ {
232
+ "inputs": [
233
+ {
234
+ "internalType": "NftId",
235
+ "name": "policyNftId",
236
+ "type": "uint96"
237
+ },
238
+ {
239
+ "internalType": "uint256",
240
+ "name": "premiumPaidAmount",
241
+ "type": "uint256"
242
+ }
243
+ ],
244
+ "name": "ErrorIPolicyServicePremiumAlreadyPaid",
245
+ "type": "error"
246
+ },
247
+ {
248
+ "inputs": [
249
+ {
250
+ "internalType": "NftId",
251
+ "name": "policyNftId",
252
+ "type": "uint96"
253
+ },
254
+ {
255
+ "internalType": "uint256",
256
+ "name": "expectedPremiumAmount",
257
+ "type": "uint256"
258
+ },
259
+ {
260
+ "internalType": "uint256",
261
+ "name": "recalculatedPremiumAmount",
262
+ "type": "uint256"
263
+ }
264
+ ],
265
+ "name": "ErrorIPolicyServicePremiumMismatch",
266
+ "type": "error"
267
+ },
268
+ {
269
+ "inputs": [
270
+ {
271
+ "internalType": "NftId",
272
+ "name": "policyNftId",
273
+ "type": "uint96"
274
+ },
275
+ {
276
+ "internalType": "uint256",
277
+ "name": "premiumAmount",
278
+ "type": "uint256"
279
+ },
280
+ {
281
+ "internalType": "uint256",
282
+ "name": "premiumPaidAmount",
283
+ "type": "uint256"
284
+ }
285
+ ],
286
+ "name": "ErrorIPolicyServicePremiumNotFullyPaid",
287
+ "type": "error"
288
+ },
289
+ {
290
+ "inputs": [
291
+ {
292
+ "internalType": "NftId",
293
+ "name": "nftId",
294
+ "type": "uint96"
295
+ }
296
+ ],
297
+ "name": "ErrorNftOwnableAlreadyLinked",
298
+ "type": "error"
299
+ },
300
+ {
301
+ "inputs": [
302
+ {
303
+ "internalType": "address",
304
+ "name": "contractAddress",
305
+ "type": "address"
306
+ }
307
+ ],
308
+ "name": "ErrorNftOwnableContractNotRegistered",
309
+ "type": "error"
310
+ },
311
+ {
312
+ "inputs": [],
313
+ "name": "ErrorNftOwnableInitialOwnerZero",
314
+ "type": "error"
315
+ },
316
+ {
317
+ "inputs": [
318
+ {
319
+ "internalType": "address",
320
+ "name": "account",
321
+ "type": "address"
322
+ }
323
+ ],
324
+ "name": "ErrorNftOwnableNotOwner",
325
+ "type": "error"
326
+ },
327
+ {
328
+ "inputs": [
329
+ {
330
+ "internalType": "address",
331
+ "name": "registryAddress",
332
+ "type": "address"
333
+ }
334
+ ],
335
+ "name": "ErrorNotRegistry",
336
+ "type": "error"
337
+ },
338
+ {
339
+ "inputs": [
340
+ {
341
+ "internalType": "NftId",
342
+ "name": "policyNftId",
343
+ "type": "uint96"
344
+ },
345
+ {
346
+ "internalType": "Amount",
347
+ "name": "sumInsured",
348
+ "type": "uint96"
349
+ },
350
+ {
351
+ "internalType": "Amount",
352
+ "name": "payoutsIncludingClaimAmount",
353
+ "type": "uint96"
354
+ }
355
+ ],
356
+ "name": "ErrorPolicyServiceClaimExceedsSumInsured",
357
+ "type": "error"
358
+ },
359
+ {
360
+ "inputs": [
361
+ {
362
+ "internalType": "NftId",
363
+ "name": "policyNftId",
364
+ "type": "uint96"
365
+ }
366
+ ],
367
+ "name": "ErrorPolicyServicePolicyNotOpen",
368
+ "type": "error"
369
+ },
370
+ {
371
+ "inputs": [
372
+ {
373
+ "internalType": "NftId",
374
+ "name": "applicationNftId",
375
+ "type": "uint96"
376
+ }
377
+ ],
378
+ "name": "ErrorPolicyServicePolicyStateNotApplied",
379
+ "type": "error"
380
+ },
381
+ {
382
+ "inputs": [
383
+ {
384
+ "internalType": "NftId",
385
+ "name": "policyNftId",
386
+ "type": "uint96"
387
+ },
388
+ {
389
+ "internalType": "NftId",
390
+ "name": "expectedProduct",
391
+ "type": "uint96"
392
+ },
393
+ {
394
+ "internalType": "NftId",
395
+ "name": "actualProduct",
396
+ "type": "uint96"
397
+ }
398
+ ],
399
+ "name": "ErrorPolicyServiceProductMismatch",
400
+ "type": "error"
401
+ },
402
+ {
403
+ "inputs": [
404
+ {
405
+ "internalType": "NftId",
406
+ "name": "policyNftId",
407
+ "type": "uint96"
408
+ },
409
+ {
410
+ "internalType": "uint256",
411
+ "name": "expectedPremiumAmount",
412
+ "type": "uint256"
413
+ },
414
+ {
415
+ "internalType": "uint256",
416
+ "name": "transferredPremiumAmount",
417
+ "type": "uint256"
418
+ }
419
+ ],
420
+ "name": "ErrorPolicyServiceTransferredPremiumMismatch",
421
+ "type": "error"
422
+ },
423
+ {
424
+ "inputs": [],
425
+ "name": "InvalidInitialization",
426
+ "type": "error"
427
+ },
428
+ {
429
+ "inputs": [],
430
+ "name": "NotInitializing",
431
+ "type": "error"
432
+ },
433
+ {
434
+ "anonymous": false,
435
+ "inputs": [
436
+ {
437
+ "indexed": false,
438
+ "internalType": "address",
439
+ "name": "authority",
440
+ "type": "address"
441
+ }
442
+ ],
443
+ "name": "AuthorityUpdated",
444
+ "type": "event"
445
+ },
446
+ {
447
+ "anonymous": false,
448
+ "inputs": [
449
+ {
450
+ "indexed": false,
451
+ "internalType": "uint64",
452
+ "name": "version",
453
+ "type": "uint64"
454
+ }
455
+ ],
456
+ "name": "Initialized",
457
+ "type": "event"
458
+ },
459
+ {
460
+ "anonymous": false,
461
+ "inputs": [
462
+ {
463
+ "indexed": false,
464
+ "internalType": "NftId",
465
+ "name": "policyNftId",
466
+ "type": "uint96"
467
+ },
468
+ {
469
+ "indexed": false,
470
+ "internalType": "ClaimId",
471
+ "name": "claimId",
472
+ "type": "uint16"
473
+ }
474
+ ],
475
+ "name": "LogPolicyServiceClaimClosed",
476
+ "type": "event"
477
+ },
478
+ {
479
+ "anonymous": false,
480
+ "inputs": [
481
+ {
482
+ "indexed": false,
483
+ "internalType": "NftId",
484
+ "name": "policyNftId",
485
+ "type": "uint96"
486
+ },
487
+ {
488
+ "indexed": false,
489
+ "internalType": "ClaimId",
490
+ "name": "claimId",
491
+ "type": "uint16"
492
+ },
493
+ {
494
+ "indexed": false,
495
+ "internalType": "Amount",
496
+ "name": "confirmedAmount",
497
+ "type": "uint96"
498
+ }
499
+ ],
500
+ "name": "LogPolicyServiceClaimConfirmed",
501
+ "type": "event"
502
+ },
503
+ {
504
+ "anonymous": false,
505
+ "inputs": [
506
+ {
507
+ "indexed": false,
508
+ "internalType": "NftId",
509
+ "name": "policyNftId",
510
+ "type": "uint96"
511
+ },
512
+ {
513
+ "indexed": false,
514
+ "internalType": "ClaimId",
515
+ "name": "claimId",
516
+ "type": "uint16"
517
+ }
518
+ ],
519
+ "name": "LogPolicyServiceClaimDeclined",
520
+ "type": "event"
521
+ },
522
+ {
523
+ "anonymous": false,
524
+ "inputs": [
525
+ {
526
+ "indexed": false,
527
+ "internalType": "NftId",
528
+ "name": "policyNftId",
529
+ "type": "uint96"
530
+ },
531
+ {
532
+ "indexed": false,
533
+ "internalType": "ClaimId",
534
+ "name": "claimId",
535
+ "type": "uint16"
536
+ },
537
+ {
538
+ "indexed": false,
539
+ "internalType": "Amount",
540
+ "name": "claimAmount",
541
+ "type": "uint96"
542
+ }
543
+ ],
544
+ "name": "LogPolicyServiceClaimSubmitted",
545
+ "type": "event"
546
+ },
547
+ {
548
+ "anonymous": false,
549
+ "inputs": [
550
+ {
551
+ "indexed": false,
552
+ "internalType": "NftId",
553
+ "name": "policyNftId",
554
+ "type": "uint96"
555
+ },
556
+ {
557
+ "indexed": false,
558
+ "internalType": "PayoutId",
559
+ "name": "payoutId",
560
+ "type": "uint24"
561
+ },
562
+ {
563
+ "indexed": false,
564
+ "internalType": "Amount",
565
+ "name": "amount",
566
+ "type": "uint96"
567
+ }
568
+ ],
569
+ "name": "LogPolicyServicePayoutCreated",
570
+ "type": "event"
571
+ },
572
+ {
573
+ "anonymous": false,
574
+ "inputs": [
575
+ {
576
+ "indexed": false,
577
+ "internalType": "NftId",
578
+ "name": "policyNftId",
579
+ "type": "uint96"
580
+ },
581
+ {
582
+ "indexed": false,
583
+ "internalType": "PayoutId",
584
+ "name": "payoutId",
585
+ "type": "uint24"
586
+ },
587
+ {
588
+ "indexed": false,
589
+ "internalType": "Amount",
590
+ "name": "amount",
591
+ "type": "uint96"
592
+ }
593
+ ],
594
+ "name": "LogPolicyServicePayoutProcessed",
595
+ "type": "event"
596
+ },
597
+ {
598
+ "anonymous": false,
599
+ "inputs": [
600
+ {
601
+ "indexed": false,
602
+ "internalType": "address",
603
+ "name": "sender",
604
+ "type": "address"
605
+ }
606
+ ],
607
+ "name": "LogProductServiceSender",
608
+ "type": "event"
609
+ },
610
+ {
611
+ "inputs": [],
612
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
613
+ "outputs": [
614
+ {
615
+ "internalType": "bytes32",
616
+ "name": "",
617
+ "type": "bytes32"
618
+ }
619
+ ],
620
+ "stateMutability": "view",
621
+ "type": "function"
622
+ },
623
+ {
624
+ "inputs": [],
625
+ "name": "REGISTERABLE_LOCATION_V1",
626
+ "outputs": [
627
+ {
628
+ "internalType": "bytes32",
629
+ "name": "",
630
+ "type": "bytes32"
631
+ }
632
+ ],
633
+ "stateMutability": "view",
634
+ "type": "function"
635
+ },
636
+ {
637
+ "inputs": [
638
+ {
639
+ "internalType": "NftId",
640
+ "name": "policyNftId",
641
+ "type": "uint96"
642
+ },
643
+ {
644
+ "internalType": "Timestamp",
645
+ "name": "activateAt",
646
+ "type": "uint40"
647
+ }
648
+ ],
649
+ "name": "activate",
650
+ "outputs": [],
651
+ "stateMutability": "nonpayable",
652
+ "type": "function"
653
+ },
654
+ {
655
+ "inputs": [],
656
+ "name": "authority",
657
+ "outputs": [
658
+ {
659
+ "internalType": "address",
660
+ "name": "",
661
+ "type": "address"
662
+ }
663
+ ],
664
+ "stateMutability": "view",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [
669
+ {
670
+ "internalType": "UFixed",
671
+ "name": "collateralizationLevel",
672
+ "type": "uint256"
673
+ },
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "sumInsuredAmount",
677
+ "type": "uint256"
678
+ }
679
+ ],
680
+ "name": "calculateRequiredCollateral",
681
+ "outputs": [
682
+ {
683
+ "internalType": "uint256",
684
+ "name": "collateralAmount",
685
+ "type": "uint256"
686
+ }
687
+ ],
688
+ "stateMutability": "pure",
689
+ "type": "function"
690
+ },
691
+ {
692
+ "inputs": [
693
+ {
694
+ "internalType": "NftId",
695
+ "name": "policyNftId",
696
+ "type": "uint96"
697
+ }
698
+ ],
699
+ "name": "close",
700
+ "outputs": [],
701
+ "stateMutability": "nonpayable",
702
+ "type": "function"
703
+ },
704
+ {
705
+ "inputs": [
706
+ {
707
+ "internalType": "NftId",
708
+ "name": "policyNftId",
709
+ "type": "uint96"
710
+ },
711
+ {
712
+ "internalType": "ClaimId",
713
+ "name": "claimId",
714
+ "type": "uint16"
715
+ }
716
+ ],
717
+ "name": "closeClaim",
718
+ "outputs": [],
719
+ "stateMutability": "nonpayable",
720
+ "type": "function"
721
+ },
722
+ {
723
+ "inputs": [
724
+ {
725
+ "internalType": "NftId",
726
+ "name": "applicationNftId",
727
+ "type": "uint96"
728
+ },
729
+ {
730
+ "internalType": "bool",
731
+ "name": "requirePremiumPayment",
732
+ "type": "bool"
733
+ },
734
+ {
735
+ "internalType": "Timestamp",
736
+ "name": "activateAt",
737
+ "type": "uint40"
738
+ }
739
+ ],
740
+ "name": "collateralize",
741
+ "outputs": [],
742
+ "stateMutability": "nonpayable",
743
+ "type": "function"
744
+ },
745
+ {
746
+ "inputs": [
747
+ {
748
+ "internalType": "NftId",
749
+ "name": "policyNftId",
750
+ "type": "uint96"
751
+ },
752
+ {
753
+ "internalType": "Timestamp",
754
+ "name": "activateAt",
755
+ "type": "uint40"
756
+ }
757
+ ],
758
+ "name": "collectPremium",
759
+ "outputs": [],
760
+ "stateMutability": "nonpayable",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [
765
+ {
766
+ "internalType": "NftId",
767
+ "name": "policyNftId",
768
+ "type": "uint96"
769
+ },
770
+ {
771
+ "internalType": "ClaimId",
772
+ "name": "claimId",
773
+ "type": "uint16"
774
+ },
775
+ {
776
+ "internalType": "Amount",
777
+ "name": "confirmedAmount",
778
+ "type": "uint96"
779
+ }
780
+ ],
781
+ "name": "confirmClaim",
782
+ "outputs": [],
783
+ "stateMutability": "nonpayable",
784
+ "type": "function"
785
+ },
786
+ {
787
+ "inputs": [
788
+ {
789
+ "internalType": "NftId",
790
+ "name": "policyNftId",
791
+ "type": "uint96"
792
+ },
793
+ {
794
+ "internalType": "ClaimId",
795
+ "name": "claimId",
796
+ "type": "uint16"
797
+ },
798
+ {
799
+ "internalType": "Amount",
800
+ "name": "amount",
801
+ "type": "uint96"
802
+ },
803
+ {
804
+ "internalType": "bytes",
805
+ "name": "data",
806
+ "type": "bytes"
807
+ }
808
+ ],
809
+ "name": "createPayout",
810
+ "outputs": [
811
+ {
812
+ "internalType": "PayoutId",
813
+ "name": "payoutId",
814
+ "type": "uint24"
815
+ }
816
+ ],
817
+ "stateMutability": "nonpayable",
818
+ "type": "function"
819
+ },
820
+ {
821
+ "inputs": [
822
+ {
823
+ "internalType": "NftId",
824
+ "name": "policyNftId",
825
+ "type": "uint96"
826
+ }
827
+ ],
828
+ "name": "decline",
829
+ "outputs": [],
830
+ "stateMutability": "nonpayable",
831
+ "type": "function"
832
+ },
833
+ {
834
+ "inputs": [
835
+ {
836
+ "internalType": "NftId",
837
+ "name": "policyNftId",
838
+ "type": "uint96"
839
+ },
840
+ {
841
+ "internalType": "ClaimId",
842
+ "name": "claimId",
843
+ "type": "uint16"
844
+ }
845
+ ],
846
+ "name": "declineClaim",
847
+ "outputs": [],
848
+ "stateMutability": "nonpayable",
849
+ "type": "function"
850
+ },
851
+ {
852
+ "inputs": [
853
+ {
854
+ "internalType": "NftId",
855
+ "name": "policyNftId",
856
+ "type": "uint96"
857
+ }
858
+ ],
859
+ "name": "expire",
860
+ "outputs": [],
861
+ "stateMutability": "nonpayable",
862
+ "type": "function"
863
+ },
864
+ {
865
+ "inputs": [],
866
+ "name": "getDomain",
867
+ "outputs": [
868
+ {
869
+ "internalType": "ObjectType",
870
+ "name": "",
871
+ "type": "uint8"
872
+ }
873
+ ],
874
+ "stateMutability": "pure",
875
+ "type": "function"
876
+ },
877
+ {
878
+ "inputs": [],
879
+ "name": "getInitialInfo",
880
+ "outputs": [
881
+ {
882
+ "components": [
883
+ {
884
+ "internalType": "NftId",
885
+ "name": "nftId",
886
+ "type": "uint96"
887
+ },
888
+ {
889
+ "internalType": "NftId",
890
+ "name": "parentNftId",
891
+ "type": "uint96"
892
+ },
893
+ {
894
+ "internalType": "ObjectType",
895
+ "name": "objectType",
896
+ "type": "uint8"
897
+ },
898
+ {
899
+ "internalType": "bool",
900
+ "name": "isInterceptor",
901
+ "type": "bool"
902
+ },
903
+ {
904
+ "internalType": "address",
905
+ "name": "objectAddress",
906
+ "type": "address"
907
+ },
908
+ {
909
+ "internalType": "address",
910
+ "name": "initialOwner",
911
+ "type": "address"
912
+ },
913
+ {
914
+ "internalType": "bytes",
915
+ "name": "data",
916
+ "type": "bytes"
917
+ }
918
+ ],
919
+ "internalType": "struct IRegistry.ObjectInfo",
920
+ "name": "info",
921
+ "type": "tuple"
922
+ }
923
+ ],
924
+ "stateMutability": "view",
925
+ "type": "function"
926
+ },
927
+ {
928
+ "inputs": [],
929
+ "name": "getInstanceService",
930
+ "outputs": [
931
+ {
932
+ "internalType": "contract InstanceService",
933
+ "name": "",
934
+ "type": "address"
935
+ }
936
+ ],
937
+ "stateMutability": "view",
938
+ "type": "function"
939
+ },
940
+ {
941
+ "inputs": [],
942
+ "name": "getNftId",
943
+ "outputs": [
944
+ {
945
+ "internalType": "NftId",
946
+ "name": "",
947
+ "type": "uint96"
948
+ }
949
+ ],
950
+ "stateMutability": "view",
951
+ "type": "function"
952
+ },
953
+ {
954
+ "inputs": [],
955
+ "name": "getOwner",
956
+ "outputs": [
957
+ {
958
+ "internalType": "address",
959
+ "name": "",
960
+ "type": "address"
961
+ }
962
+ ],
963
+ "stateMutability": "view",
964
+ "type": "function"
965
+ },
966
+ {
967
+ "inputs": [],
968
+ "name": "getRegistry",
969
+ "outputs": [
970
+ {
971
+ "internalType": "contract IRegistry",
972
+ "name": "",
973
+ "type": "address"
974
+ }
975
+ ],
976
+ "stateMutability": "view",
977
+ "type": "function"
978
+ },
979
+ {
980
+ "inputs": [],
981
+ "name": "getRegistryAddress",
982
+ "outputs": [
983
+ {
984
+ "internalType": "address",
985
+ "name": "",
986
+ "type": "address"
987
+ }
988
+ ],
989
+ "stateMutability": "view",
990
+ "type": "function"
991
+ },
992
+ {
993
+ "inputs": [],
994
+ "name": "getRegistryService",
995
+ "outputs": [
996
+ {
997
+ "internalType": "contract IRegistryService",
998
+ "name": "",
999
+ "type": "address"
1000
+ }
1001
+ ],
1002
+ "stateMutability": "view",
1003
+ "type": "function"
1004
+ },
1005
+ {
1006
+ "inputs": [],
1007
+ "name": "getVersion",
1008
+ "outputs": [
1009
+ {
1010
+ "internalType": "Version",
1011
+ "name": "",
1012
+ "type": "uint24"
1013
+ }
1014
+ ],
1015
+ "stateMutability": "pure",
1016
+ "type": "function"
1017
+ },
1018
+ {
1019
+ "inputs": [],
1020
+ "name": "initializeERC165",
1021
+ "outputs": [],
1022
+ "stateMutability": "nonpayable",
1023
+ "type": "function"
1024
+ },
1025
+ {
1026
+ "inputs": [
1027
+ {
1028
+ "internalType": "address",
1029
+ "name": "initialOwner",
1030
+ "type": "address"
1031
+ },
1032
+ {
1033
+ "internalType": "address",
1034
+ "name": "registryAddress",
1035
+ "type": "address"
1036
+ }
1037
+ ],
1038
+ "name": "initializeNftOwnable",
1039
+ "outputs": [],
1040
+ "stateMutability": "nonpayable",
1041
+ "type": "function"
1042
+ },
1043
+ {
1044
+ "inputs": [
1045
+ {
1046
+ "internalType": "address",
1047
+ "name": "registryAddress",
1048
+ "type": "address"
1049
+ },
1050
+ {
1051
+ "internalType": "NftId",
1052
+ "name": "parentNftId",
1053
+ "type": "uint96"
1054
+ },
1055
+ {
1056
+ "internalType": "ObjectType",
1057
+ "name": "objectType",
1058
+ "type": "uint8"
1059
+ },
1060
+ {
1061
+ "internalType": "bool",
1062
+ "name": "isInterceptor",
1063
+ "type": "bool"
1064
+ },
1065
+ {
1066
+ "internalType": "address",
1067
+ "name": "initialOwner",
1068
+ "type": "address"
1069
+ },
1070
+ {
1071
+ "internalType": "bytes",
1072
+ "name": "registryData",
1073
+ "type": "bytes"
1074
+ }
1075
+ ],
1076
+ "name": "initializeRegisterable",
1077
+ "outputs": [],
1078
+ "stateMutability": "nonpayable",
1079
+ "type": "function"
1080
+ },
1081
+ {
1082
+ "inputs": [
1083
+ {
1084
+ "internalType": "address",
1085
+ "name": "registryAddress",
1086
+ "type": "address"
1087
+ }
1088
+ ],
1089
+ "name": "initializeRegistryLinked",
1090
+ "outputs": [],
1091
+ "stateMutability": "nonpayable",
1092
+ "type": "function"
1093
+ },
1094
+ {
1095
+ "inputs": [
1096
+ {
1097
+ "internalType": "address",
1098
+ "name": "registry",
1099
+ "type": "address"
1100
+ },
1101
+ {
1102
+ "internalType": "address",
1103
+ "name": "authority",
1104
+ "type": "address"
1105
+ },
1106
+ {
1107
+ "internalType": "address",
1108
+ "name": "initialOwner",
1109
+ "type": "address"
1110
+ }
1111
+ ],
1112
+ "name": "initializeService",
1113
+ "outputs": [],
1114
+ "stateMutability": "nonpayable",
1115
+ "type": "function"
1116
+ },
1117
+ {
1118
+ "inputs": [
1119
+ {
1120
+ "internalType": "address",
1121
+ "name": "activatedBy",
1122
+ "type": "address"
1123
+ },
1124
+ {
1125
+ "internalType": "bytes",
1126
+ "name": "data",
1127
+ "type": "bytes"
1128
+ }
1129
+ ],
1130
+ "name": "initializeVersionable",
1131
+ "outputs": [],
1132
+ "stateMutability": "nonpayable",
1133
+ "type": "function"
1134
+ },
1135
+ {
1136
+ "inputs": [],
1137
+ "name": "isConsumingScheduledOp",
1138
+ "outputs": [
1139
+ {
1140
+ "internalType": "bytes4",
1141
+ "name": "",
1142
+ "type": "bytes4"
1143
+ }
1144
+ ],
1145
+ "stateMutability": "view",
1146
+ "type": "function"
1147
+ },
1148
+ {
1149
+ "inputs": [],
1150
+ "name": "linkToRegisteredNftId",
1151
+ "outputs": [],
1152
+ "stateMutability": "nonpayable",
1153
+ "type": "function"
1154
+ },
1155
+ {
1156
+ "inputs": [
1157
+ {
1158
+ "internalType": "NftId",
1159
+ "name": "policyNftId",
1160
+ "type": "uint96"
1161
+ },
1162
+ {
1163
+ "internalType": "PayoutId",
1164
+ "name": "payoutId",
1165
+ "type": "uint24"
1166
+ }
1167
+ ],
1168
+ "name": "processPayout",
1169
+ "outputs": [],
1170
+ "stateMutability": "nonpayable",
1171
+ "type": "function"
1172
+ },
1173
+ {
1174
+ "inputs": [
1175
+ {
1176
+ "internalType": "bytes4",
1177
+ "name": "interfaceId",
1178
+ "type": "bytes4"
1179
+ }
1180
+ ],
1181
+ "name": "registerInterface",
1182
+ "outputs": [],
1183
+ "stateMutability": "nonpayable",
1184
+ "type": "function"
1185
+ },
1186
+ {
1187
+ "inputs": [
1188
+ {
1189
+ "internalType": "address",
1190
+ "name": "newAuthority",
1191
+ "type": "address"
1192
+ }
1193
+ ],
1194
+ "name": "setAuthority",
1195
+ "outputs": [],
1196
+ "stateMutability": "nonpayable",
1197
+ "type": "function"
1198
+ },
1199
+ {
1200
+ "inputs": [
1201
+ {
1202
+ "internalType": "NftId",
1203
+ "name": "policyNftId",
1204
+ "type": "uint96"
1205
+ },
1206
+ {
1207
+ "internalType": "Amount",
1208
+ "name": "claimAmount",
1209
+ "type": "uint96"
1210
+ },
1211
+ {
1212
+ "internalType": "bytes",
1213
+ "name": "claimData",
1214
+ "type": "bytes"
1215
+ }
1216
+ ],
1217
+ "name": "submitClaim",
1218
+ "outputs": [
1219
+ {
1220
+ "internalType": "ClaimId",
1221
+ "name": "claimId",
1222
+ "type": "uint16"
1223
+ }
1224
+ ],
1225
+ "stateMutability": "nonpayable",
1226
+ "type": "function"
1227
+ },
1228
+ {
1229
+ "inputs": [
1230
+ {
1231
+ "internalType": "bytes4",
1232
+ "name": "interfaceId",
1233
+ "type": "bytes4"
1234
+ }
1235
+ ],
1236
+ "name": "supportsInterface",
1237
+ "outputs": [
1238
+ {
1239
+ "internalType": "bool",
1240
+ "name": "",
1241
+ "type": "bool"
1242
+ }
1243
+ ],
1244
+ "stateMutability": "view",
1245
+ "type": "function"
1246
+ },
1247
+ {
1248
+ "inputs": [
1249
+ {
1250
+ "internalType": "bytes",
1251
+ "name": "data",
1252
+ "type": "bytes"
1253
+ }
1254
+ ],
1255
+ "name": "upgradeVersionable",
1256
+ "outputs": [],
1257
+ "stateMutability": "nonpayable",
1258
+ "type": "function"
1259
+ }
1260
+ ],
1261
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6161e280620000e66000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80634d5e16a9116101305780639996c6b9116100b8578063bf7e214f1161007c578063bf7e214f1461050d578063caf4e3d41461052b578063cc9fc59a14610533578063f21de1e8146103ee578063f7c34ee01461053b57600080fd5b80639996c6b9146104b05780639ffcede9146104c3578063ada9652e146104d6578063b68d1809146104eb578063bbfbbfba146104fa57600080fd5b8063675393bf116100ff578063675393bf1461044e5780637a9e5e4b14610461578063893d20e8146104745780638e32e9791461047c5780638fb360371461048f57600080fd5b80634d5e16a9146103db5780635ab1bd53146103ee5780635fd1a5f514610413578063644c45e01461042657600080fd5b806327bb7a33116101b35780633c53258e116101825780633c53258e1461036b5780633d3cf0231461037e57806349bb9e4b1461038f5780634a7d34cb146103a25780634d4889ad146103b557600080fd5b806327bb7a331461032a57806327c054b71461033d578063329d6e741461035057806336fc697e1461036357600080fd5b80630fec111c116101fa5780630fec111c146102b2578063138461e0146102c75780631c817972146102cf5780631eff4b22146102e2578063214cdb801461031757600080fd5b806301a57efc1461022c57806301ffc9a7146102415780630aaba8e8146102835780630d8e6e2c14610296575b600080fd5b61023f61023a366004614c3e565b61054e565b005b61026e61024f366004614c77565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f610291366004614ca1565b610698565b61029e610b7c565b60405162ffffff909116815260200161027a565b6102ba610c06565b60405161027a9190614d0e565b61023f610dba565b61023f6102dd366004614dba565b610fbc565b6103097f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161027a565b61023f610325366004614c77565b61135f565b61023f610338366004614f9f565b61138c565b61023f61034b366004615048565b611418565b61023f61035e366004615076565b6115ae565b61023f6116fb565b61029e6103793660046150aa565b611741565b61023f61038c366004614ca1565b50565b61023f61039d36600461511e565b611acb565b61023f6103b0366004614c3e565b611bc5565b6103c86103c336600461516d565b611d04565b60405161ffff909116815260200161027a565b61023f6103e93660046151ce565b612377565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161027a565b6103096104213660046151fc565b6125ee565b60008051602061614d833981519152546040516001600160601b03909116815260200161027a565b61023f61045c36600461521e565b6126f7565b61023f61046f36600461521e565b612804565b6103fb61289e565b61023f61048a36600461523b565b6129d5565b610497612c0e565b6040516001600160e01b0319909116815260200161027a565b61023f6104be36600461527b565b612c46565b61023f6104d1366004614ca1565b612da5565b61030960008051602061614d83398151915281565b60405160d3815260200161027a565b61023f6105083660046151ce565b612df7565b60008051602061616d833981519152546001600160a01b03166103fb565b6103fb61315a565b6103fb613166565b61023f6105493660046152bb565b613172565b600080600061055c856131e9565b6004805460405163a0e4494d60e01b81529497509295509093506001600160a01b039091169163a0e4494d9161059a91879187918b918b91016152e9565b600060405180830381600087803b1580156105b457600080fd5b505af11580156105c8573d6000803e3d6000fd5b50505050600181610160018181516105e09190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe8642590610618908890859060ff9060040161549d565b600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b5050604080516001600160601b038916815261ffff881660208201527f77e6967c9588f9075fc07841c0d009a55111911ce2745eb58d0333272c9ca3ac93500190505b60405180910390a15050505050565b60006106a4606e6133af565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070c91906154d2565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561075f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107879190810190615572565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b91906156ff565b15610839576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ad9190615727565b90506108c28160645b60ff9081169116141590565b156108f457604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610830565b6101e0820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015610951573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097591906156ff565b1561099e57604051634b80547760e11b81526001600160601b0386166004820152602401610830565b8160c001518260a00151146109e85760a082015160c0830151604051632b14368360e11b81526001600160601b038816600482015260248101929092526044820152606401610830565b61016082015161ffff1615610a2c5761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610830565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190615744565b64ffffffffff166101e0830152600654604051632f2e849d60e21b81526001600160a01b039091169063bcba127490610ada90879089908790600401615761565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b50505050836001600160a01b031663cbe864258684610b2560c890565b6040518463ffffffff1660e01b8152600401610b439392919061549d565b600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c01919061579d565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610cb6906157ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce2906157ba565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b50505050508152505090506040518060e00160405280610d4d600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610d9e61289e565b6001600160a01b03168152602001826060015181525091505090565b600060008051602061614d83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d91906156ff565b15610e795780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610830565b30610e8c6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef891906156ff565b610f205760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610830565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9891906157f4565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610fc9606e6133af565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103291906154d2565b60405163bd7d9d8560e01b81526001600160601b03881660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611085573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ad9190810190615572565b80519091506001600160601b038581169116146110fb57805160405163605b071960e01b81526001600160601b03808a16600483015291821660248201529085166044820152606401610830565b604051639096a1f360e01b81526001600160601b0388166004820152611177906001600160a01b03841690639096a1f390602401602060405180830381865afa15801561114c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111709190615727565b600a6108b6565b156111a057604051631130ddad60e21b81526001600160601b0388166004820152602401610830565b602864ffffffffff86161561125557606464ffffffffff8781166101a0850181905260e08501516040516352bcc5a760e11b81526004810192909252909116602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190615744565b64ffffffffff166101c08301525b600087156112885761126c858a8560a001516135d7565b90508260a001518360c0018181516112849190615811565b9052505b60405163cbe8642560e01b81526001600160a01b0386169063cbe86425906112b8908c908790879060040161549d565b600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505060065460405163363b3b3960e11b81526001600160a01b039091169250636c76767291506113229088908a908e9089908890600401615824565b600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b50505050505050505050505050565b61136761441d565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61139461441d565b61139e8287613172565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161140e83826158bf565b5050505050505050565b6000806000611426856131e9565b60048054604051630c02e8ad60e01b81526001600160a01b038087169382019390935282851660248201526001600160601b038b16604482015262ffffff8a16606482015294975092955090935060009283929190911690630c02e8ad9060840160408051808303816000875af11580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c9919061597e565b91509150801561155257600183610160018181516114e79190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0386169063cbe864259061151f908a90879060ff9060040161549d565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050505b604080516001600160601b03808a16825262ffffff891660208301528416918101919091527f902f21240dd81ead776e9f49b4c2b8640514e4d1705c450f6e50bab12ec03543906060015b60405180910390a150505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6115d0610b7c565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611610573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163491906159ad565b60008051602061618d8339815191528054600160401b900460ff1680611667575080546001600160401b03808416911610155b156116855760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556116af83614456565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61170361441d565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080600080611750886131e9565b60405163a7ef3d2160e01b81526001600160601b038c16600482015261ffff8b16602482015292955090935091506000906001600160a01b0384169063a7ef3d2190604401600060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117da91908101906159d6565b60405163078ae93560e41b81526001600160601b038b16600482015261ffff8a1660248201529091506000906001600160a01b038516906378ae935090604401602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b9190615727565b90506000826040015160016118709190615a9d565b60405163d5b5ee5d60e01b815261ffff8c16600482015260ff8216602482015290915073__$e1d43d4fb5c0494c5b7331f52c1ee41012$__9063d5b5ee5d90604401602060405180830381865af41580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f3919061579d565b9650600460009054906101000a90046001600160a01b03166001600160a01b031663fe7631d5878d8a8d8d6040518663ffffffff1660e01b815260040161193e959493929190615ab6565b600060405180830381600087803b15801561195857600080fd5b505af115801561196c573d6000803e3d6000fd5b5050505061018084015160405163274acb3560e01b81526001600160601b039182166004820152908a16602482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb3590604401602060405180830381865af41580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906157f4565b5060405163cbe8642560e01b81526001600160a01b0387169063cbe8642590611a2d908e90889060ff9060040161549d565b600060405180830381600087803b158015611a4757600080fd5b505af1158015611a5b573d6000803e3d6000fd5b505050507f49582759c7297fe14c480e8acab67b42fd37c9f3004b859c9a0e7bdd97bfca728b888b604051611ab5939291906001600160601b03938416815262ffffff929092166020830152909116604082015260600190565b60405180910390a1505050505050949350505050565b60008051602061618d8339815191528054600160401b810460ff1615906001600160401b0316600081158015611afe5750825b90506000826001600160401b03166001148015611b1a5750303b155b905081158015611b28575080155b15611b465760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b7057845460ff60401b1916600160401b1785555b611b7a878761445e565b8315611bbc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161159d565b50505050505050565b6000806000611bd3856131e9565b60048054604051632ecc6ca560e21b81529497509295509093506001600160a01b039091169163bb31b29491611c1191879187918b918b91016152e9565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b5050505060018161016001818151611c579190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe8642590611c8f908890859060ff9060040161549d565b600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b5050604080516001600160601b038916815261ffff881660208201527fe3ce18abb523f21452f7ac3d58c5f9377fd1d33be26b261de38c988bbb8880ea9350019050610689565b600080600080611d13876131e9565b6101a081015160405163790a38ad60e01b815264ffffffffff9091166004820152929550909350915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c91906156ff565b80611e285750611e2873__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e129190615744565b826101c0015164ffffffffff9081169116101590565b15611e5157604051630479f37160e41b81526001600160601b0388166004820152602401610830565b608081015160405163046e44af60e11b81526001600160601b038816600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af4158015611eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed29190615b07565b61018083015160405163046e44af60e11b81526001600160601b03909116600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190615b07565b611f5f9190615811565b111561218b576080810151604051632620eecb60e11b8152889173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd9691611fa59160040190815260200190565b602060405180830381865af4158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe691906157f4565b60405163046e44af60e11b81526001600160601b038916600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd969082906308dc895e90602401602060405180830381865af4158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190615b07565b61018086015160405163046e44af60e11b81526001600160601b03909116600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af41580156120c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ed9190615b07565b6120f79190615811565b6040518263ffffffff1660e01b815260040161211591815260200190565b602060405180830381865af4158015612132573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215691906157f4565b6040516350be842960e01b81526001600160601b03938416600482015291831660248301529091166044820152606401610830565b73__$0e0c503522f35343ef1955427c5075b143$__639cc45a3682610140015160016121b79190615b20565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865af41580156121f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221a9190615b3b565b6004805460405163c898bbaf60e01b81529296506001600160a01b03169163c898bbaf916122529187918c918a918d918d9101615b58565b600060405180830381600087803b15801561226c57600080fd5b505af1158015612280573d6000803e3d6000fd5b50505050600181610140018181516122989190615b20565b61ffff1690525061016081018051600191906122b5908390615b20565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe86425906122ed908a90859060ff9060040161549d565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b5050604080516001600160601b038b8116825261ffff891660208301528a168183015290517f4b55d90307f307fd56cbb5e999a830a5db89f39b367ad6a6191172bc9700ef2e9350908190036060019150a15050509392505050565b6000612383606e6133af565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123eb91906154d2565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561243e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124669190810190615572565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea91906156ff565b6125365760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610830565b64ffffffffff8481166101a0830181905260e08301516040516352bcc5a760e11b81526004810192909252909116602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af41580156125a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c99190615744565b64ffffffffff166101c08201526001600160a01b03831663cbe8642586836064610b25565b6040516322f5db0f60e11b815260048101829052600090819073__$5ac3274b8cf1e01ea223bf093142af05b0$__906345ebb61e90602401602060405180830381865af4158015612643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126679190615b07565b9050600061267585836148f5565b604051632255341b60e11b81526004810182905290915073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af41580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190615b07565b925050505b92915050565b6126ff61441d565b806001600160a01b03163b6000036127355760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610830565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa9250505080156127af575060408051601f3d908101601f191682019092526127ac918101906156ff565b60015b6127d75760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610830565b806128005760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610830565b5050565b3361282460008051602061616d833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461285f5760405162d1953b60e31b81526001600160a01b0382166004820152602401610830565b816001600160a01b03163b600003612895576040516361798f2f60e11b81526001600160a01b0383166004820152602401610830565b6128008261490a565b60008060008051602061614d83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293291906156ff565b156129bf576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b991906154d2565b91505090565b54600160601b90046001600160a01b0316919050565b6129dd61441d565b612a5d83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4391906157f4565b603c6000856040518060200160405280600081525061138c565b6001600160a01b03821615612a7a57612a758261496b565b612be9565b6000612a8e6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b129190615727565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906154d2565b9050612be7816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be291906154d2565b61496b565b505b612bf9634a531f3360e01b61135f565b612c0963b68d180960e01b61135f565b505050565b60008051602061616d833981519152805460009190600160a01b900460ff16612c385760006129b9565b638fb3603760e01b91505090565b6000806000612c54866131e9565b6004805460405163b962574f60e01b81526001600160a01b038087169382019390935282851660248201526001600160601b03808d16604483015261ffff8c1660648301528a166084820152949750929550909350169063b962574f9060a401600060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b50505050826001600160a01b031663cbe864258783612cff603390565b6040518463ffffffff1660e01b8152600401612d1d9392919061549d565b600060405180830381600087803b158015612d3757600080fd5b505af1158015612d4b573d6000803e3d6000fd5b5050604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f717b1d3270371ccb32ccdefe73a57559ac67e1ea57b50cfff6f7c85be1267b089350908190036060019150a1505050505050565b60405162461bcd60e51b815260206004820152602160248201527f4552524f523a5052532d3233353a4e4f545f5945545f494d504c454d454e54456044820152601160fa1b6064820152608401610830565b600080612e04606e6133af565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6d91906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015612ec0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ee89190810190615572565b90508060a001518160c0015103612f2a5760c081015160405163038a855760e51b81526001600160601b03881660048201526024810191909152604401610830565b60008160c001518260a00151612f409190615ba8565b90506000612f4f8589846135d7565b9050818360c001818151612f639190615811565b9052506003546020840151604051639babe3bf60e01b81526001600160a01b0388811660048301526001600160601b03909216602482015260448101849052911690639babe3bf90606401600060405180830381600087803b158015612fc857600080fd5b505af1158015612fdc573d6000803e3d6000fd5b50505050846001600160a01b031663cbe864258985612ff960ff90565b6040518463ffffffff1660e01b81526004016130179392919061549d565b600060405180830381600087803b15801561303157600080fd5b505af1158015613045573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af415801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c391906156ff565b801561314b57506101a083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015613127573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314b91906156ff565b1561140e5761140e8888612377565b6000610c01602861497c565b6000610c01604661497c565b61317a61441d565b613183816126f7565b61318b6116fb565b6001600160a01b0382166131b25760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061614d83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018190526101208201526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e08101829052819081613275606e6133af565b90508095508192505050836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e191906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201529093506001600160a01b0384169063bd7d9d8590602401600060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133599190810190615572565b80519092506001600160601b038281169116146133a757815160405163605b071960e01b81526001600160601b03808816600483015291821660248201529082166044820152606401610830565b509193909250565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c08201526000806133fb6001546001600160a01b031690565b6040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa158015613442573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346a9190810190615bbb565b925061348083604001518660ff90811691161490565b6134c25760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b6044820152606401610830565b826000015193506134d68360200151614a89565b9150816001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015613516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353a91906154d2565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a891906156ff565b156133a757608083015160405163d53987e560e01b81526001600160a01b039091166004820152602401610830565b6000816000036135e957506000614416565b60006135fd6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801561364c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136749190810190615bbb565b6020015190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136de91906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201526001600160a01b03919091169063bd7d9d8590602401600060405180830381865afa15801561372d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137559190810190615572565b6002546060820151608083015160e084015161010085015160208601516040808801519051630e1c629d60e31b81529798506000976001600160a01b03909716966370e314e8966137b2968c969195909491939092600401615c8d565b6101e060405180830381865afa1580156137d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f49190615cf3565b9050848160400151146138395760408082015190516355e9883560e11b81526001600160601b0388166004820152602481018790526044810191909152606401610830565b600061384d6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561389c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c091906154d2565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392691906154d2565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161014060405180830381865afa158015613976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399a9190615dfc565b90506000816020015190508360400151816001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0c91906154d2565b604051636eb1769f60e11b81526001600160a01b0386811660048301528481166024830152919091169063dd62ed3e90604401602060405180830381865afa158015613a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a809190615b07565b1015613aa95782818560400151604051636d675c4360e01b815260040161083093929190615ea4565b60008460e001518560600151613abf9190615811565b90506000856101c001518661014001518760c00151613ade9190615811565b613ae89190615ba8565b905060008661010001518760800151613b019190615811565b905060008761012001518860a00151613b1a9190615811565b9050600081838a60000151613b2f9190615811565b613b399190615811565b895160e08901516040516317d5759960e31b8152919e509192506001600160a01b0388169063beabacc890613b76908c9085908b90600401615ea4565b600060405180830381600087803b158015613b9057600080fd5b505af1158015613ba4573d6000803e3d6000fd5b505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0d91906154d2565b6040808a01519051639ad69c6760e01b81526001600160601b0390911660048201526001600160a01b039190911690639ad69c679060240161010060405180830381865afa158015613c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c879190615ec8565b60808101516040516317d5759960e31b8152919250906001600160a01b0389169063beabacc890613cc0908d9085908b90600401615ea4565b600060405180830381600087803b158015613cda57600080fd5b505af1158015613cee573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b031663d25f50958a604001518e604001518e8a6040518563ffffffff1660e01b8152600401613d419493929190615fe4565b600060405180830381600087803b158015613d5b57600080fd5b505af1158015613d6f573d6000803e3d6000fd5b50505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd991906154d2565b606089015160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa158015613e2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e569190810190616022565b606001516040516317d5759960e31b81529091506001600160a01b0388169063beabacc890613e8d908c9085908790600401615ea4565b600060405180830381600087803b158015613ea757600080fd5b505af1158015613ebb573d6000803e3d6000fd5b505060065460208e0151604051632620eecb60e11b8152600481018790526001600160a01b03909216935063991cbfb39250908d9073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd9690602401602060405180830381865af4158015613f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5091906157f4565b6040518463ffffffff1660e01b8152600401613f6e939291906160d5565b600060405180830381600087803b158015613f8857600080fd5b505af1158015613f9c573d6000803e3d6000fd5b5050604051632620eecb60e11b8152600481018890526000935073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9250634c41dd969150602401602060405180830381865af4158015613ff4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401891906157f4565b6001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63274acb35909173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd96866040518263ffffffff1660e01b815260040161407691815260200190565b602060405180830381865af4158015614093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b791906157f4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061412691906157f4565b6001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63274acb35909173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968a6040518263ffffffff1660e01b815260040161418491815260200190565b602060405180830381865af41580156141a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c591906157f4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af4158015614210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423491906157f4565b6040808c01519051632620eecb60e11b815291925073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd96916142759160040190815260200190565b602060405180830381865af4158015614292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b691906157f4565b60405163c4cade9d60e01b81526001600160601b039182166004820152908216602482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c4cade9d90604401602060405180830381865af4158015614317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433b91906156ff565b614409578e8a60400151826001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__6308dc895e90916040518263ffffffff1660e01b815260040161439691906001600160601b0391909116815260200190565b602060405180830381865af41580156143b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d79190615b07565b6040516310c41a2960e31b81526001600160601b03909316600484015260248301919091526044820152606401610830565b5050505050505050505050505b9392505050565b60008051602061618d83398151915254600160401b900460ff1661445457604051631afcd79f60e31b815260040160405180910390fd5b565b61022761441d565b60008051602061618d8339815191528054600160401b810460ff1615906001600160401b03166000811580156144915750825b90506000826001600160401b031660011480156144ad5750303b155b9050811580156144bb575080155b156144d95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561450357845460ff60401b1916600160401b1785555b6000808780602001905181019061451a9190616107565b909250905061452b8260008b6129d5565b6000614535610b7c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561458a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ae9190615727565b90506145c26001546001600160a01b031690565b6001600160a01b031663d39e6043608c6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015614618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463c91906154d2565b600680546001600160a01b0319166001600160a01b039283161790556001541663d39e604360dc6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156146a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146cd91906154d2565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d46040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561473a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475e91906154d2565b600480546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d26040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156147cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147ef91906154d2565b600280546001600160a01b0319166001600160a01b039283161790556001541663d39e604360786040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561485c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488091906154d2565b600580546001600160a01b0319166001600160a01b03929092169190911790556148b0632642ed2b60e21b61135f565b5050508315611bbc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161159d565b60006144168383670de0b6b3a7640000614b1e565b60008051602061616d83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61497361441d565b61038c81614c08565b60006149906001546001600160a01b031690565b6001600160a01b031663d39e6043836149a7610b7c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156149fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a209190615727565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614a65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f191906154d2565b6000614a9d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015614aec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b149190810190615bbb565b6080015192915050565b6000808060001985870985870292508281108382030391505080600003614b5857838281614b4e57614b4e616136565b0492505050614416565b808411614b9f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610830565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b614c1061441d565b61038c8161490a565b6001600160601b038116811461038c57600080fd5b61ffff8116811461038c57600080fd5b60008060408385031215614c5157600080fd5b8235614c5c81614c19565b91506020830135614c6c81614c2e565b809150509250929050565b600060208284031215614c8957600080fd5b81356001600160e01b03198116811461441657600080fd5b600060208284031215614cb357600080fd5b813561441681614c19565b60005b83811015614cd9578181015183820152602001614cc1565b50506000910152565b60008151808452614cfa816020860160208601614cbe565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151614d7760c08401826001600160a01b03169052565b5060c083015160e080840152614d91610100840182614ce2565b949350505050565b801515811461038c57600080fd5b64ffffffffff8116811461038c57600080fd5b600080600060608486031215614dcf57600080fd5b8335614dda81614c19565b92506020840135614dea81614d99565b91506040840135614dfa81614da7565b809150509250925092565b6001600160a01b038116811461038c57600080fd5b60ff8116811461038c57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161020081016001600160401b0381118282101715614e6257614e62614e29565b60405290565b60405160c081016001600160401b0381118282101715614e6257614e62614e29565b60405160e081016001600160401b0381118282101715614e6257614e62614e29565b6040516101e081016001600160401b0381118282101715614e6257614e62614e29565b60405161010081016001600160401b0381118282101715614e6257614e62614e29565b604051601f8201601f191681016001600160401b0381118282101715614f1a57614f1a614e29565b604052919050565b60006001600160401b03821115614f3b57614f3b614e29565b50601f01601f191660200190565b600082601f830112614f5a57600080fd5b8135614f6d614f6882614f22565b614ef2565b818152846020838601011115614f8257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215614fb857600080fd5b8635614fc381614e05565b95506020870135614fd381614c19565b94506040870135614fe381614e1a565b93506060870135614ff381614d99565b9250608087013561500381614e05565b915060a08701356001600160401b0381111561501e57600080fd5b61502a89828a01614f49565b9150509295509295509295565b62ffffff8116811461038c57600080fd5b6000806040838503121561505b57600080fd5b823561506681614c19565b91506020830135614c6c81615037565b60006020828403121561508857600080fd5b81356001600160401b0381111561509e57600080fd5b614d9184828501614f49565b600080600080608085870312156150c057600080fd5b84356150cb81614c19565b935060208501356150db81614c2e565b925060408501356150eb81614c19565b915060608501356001600160401b0381111561510657600080fd5b61511287828801614f49565b91505092959194509250565b6000806040838503121561513157600080fd5b823561513c81614e05565b915060208301356001600160401b0381111561515757600080fd5b61516385828601614f49565b9150509250929050565b60008060006060848603121561518257600080fd5b833561518d81614c19565b9250602084013561519d81614c19565b915060408401356001600160401b038111156151b857600080fd5b6151c486828701614f49565b9150509250925092565b600080604083850312156151e157600080fd5b82356151ec81614c19565b91506020830135614c6c81614da7565b6000806040838503121561520f57600080fd5b50508035926020909101359150565b60006020828403121561523057600080fd5b813561441681614e05565b60008060006060848603121561525057600080fd5b833561525b81614e05565b9250602084013561526b81614e05565b91506040840135614dfa81614e05565b60008060006060848603121561529057600080fd5b833561529b81614c19565b925060208401356152ab81614c2e565b91506040840135614dfa81614c19565b600080604083850312156152ce57600080fd5b82356152d981614e05565b91506020830135614c6c81614e05565b6001600160a01b0394851681529290931660208301526001600160601b0316604082015261ffff909116606082015260800190565b634e487b7160e01b600052601160045260246000fd5b61ffff82811682821603908082111561534f5761534f61531e565b5092915050565b80516001600160601b031682526000610200602083015161538260208601826001600160601b03169052565b50604083015161539e60408601826001600160c01b0319169052565b5060608301516153ba60608601826001600160c01b0319169052565b506080830151608085015260a083015160a085015260c083015160c085015260e08301516153f160e086018264ffffffffff169052565b5061010080840151828287015261540a83870182614ce2565b9250505061012080840151858303828701526154268382614ce2565b92505050610140808401516154408287018261ffff169052565b50506101608381015161ffff1690850152610180808401516001600160601b0316908501526101a08084015164ffffffffff908116918601919091526101c0808501518216908601526101e0938401511692909301919091525090565b6001600160601b03841681526060602082015260006154bf6060830185615356565b905060ff83166040830152949350505050565b6000602082840312156154e457600080fd5b815161441681614e05565b80516154fa81614c19565b919050565b80516001600160c01b0319811681146154fa57600080fd5b80516154fa81614da7565b600082601f83011261553357600080fd5b8151615541614f6882614f22565b81815284602083860101111561555657600080fd5b614d91826020830160208701614cbe565b80516154fa81614c2e565b60006020828403121561558457600080fd5b81516001600160401b038082111561559b57600080fd5b9083019061020082860312156155b057600080fd5b6155b8614e3f565b6155c1836154ef565b81526155cf602084016154ef565b60208201526155e0604084016154ff565b60408201526155f1606084016154ff565b60608201526080830151608082015260a083015160a082015260c083015160c082015261562060e08401615517565b60e0820152610100808401518381111561563957600080fd5b61564588828701615522565b828401525050610120808401518381111561565f57600080fd5b61566b88828701615522565b8284015250506101409150615681828401615567565b828201526101609150615695828401615567565b8282015261018091506156a98284016154ef565b828201526101a091506156bd828401615517565b828201526101c091506156d1828401615517565b828201526101e091506156e5828401615517565b91810191909152949350505050565b80516154fa81614d99565b60006020828403121561571157600080fd5b815161441681614d99565b80516154fa81614e1a565b60006020828403121561573957600080fd5b815161441681614e1a565b60006020828403121561575657600080fd5b815161441681614da7565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061579490830184615356565b95945050505050565b6000602082840312156157af57600080fd5b815161441681615037565b600181811c908216806157ce57607f821691505b6020821081036157ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561580657600080fd5b815161441681614c19565b808201808211156126f1576126f161531e565b6001600160a01b03861681526001600160601b0385811660208301528416604082015260a06060820181905260009061585f90830185615356565b90508260808301529695505050505050565b601f821115612c0957600081815260208120601f850160051c810160208610156158985750805b601f850160051c820191505b818110156158b7578281556001016158a4565b505050505050565b81516001600160401b038111156158d8576158d8614e29565b6158ec816158e684546157ba565b84615871565b602080601f83116001811461592157600084156159095750858301515b600019600386901b1c1916600185901b1785556158b7565b600085815260208120601f198616915b8281101561595057888601518255948401946001909101908401615931565b508582101561596e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000806040838503121561599157600080fd5b825161599c81614c19565b6020840151909250614c6c81614d99565b6000602082840312156159bf57600080fd5b81516001600160401b038116811461441657600080fd5b6000602082840312156159e857600080fd5b81516001600160401b03808211156159ff57600080fd5b9083019060c08286031215615a1357600080fd5b615a1b614e68565b8251615a2681614c19565b81526020830151615a3681614c19565b60208201526040830151615a4981614e1a565b6040820152615a5a6060840161571c565b6060820152608083015182811115615a7157600080fd5b615a7d87828601615522565b608083015250615a8f60a08401615517565b60a082015295945050505050565b60ff81811683821601908111156126f1576126f161531e565b6001600160a01b03861681526001600160601b03858116602083015262ffffff851660408301528316606082015260a060808201819052600090615afc90830184614ce2565b979650505050505050565b600060208284031215615b1957600080fd5b5051919050565b61ffff81811683821601908082111561534f5761534f61531e565b600060208284031215615b4d57600080fd5b815161441681614c2e565b6001600160a01b03861681526001600160601b03858116602083015261ffff851660408301528316606082015260a060808201819052600090615afc90830184614ce2565b80516154fa81614e05565b818103818111156126f1576126f161531e565b600060208284031215615bcd57600080fd5b81516001600160401b0380821115615be457600080fd5b9083019060e08286031215615bf857600080fd5b615c00614e8a565b615c09836154ef565b8152615c17602084016154ef565b6020820152615c286040840161571c565b6040820152615c39606084016156f4565b6060820152615c4a60808401615b9d565b6080820152615c5b60a08401615b9d565b60a082015260c083015182811115615c7257600080fd5b615c7e87828601615522565b60c08301525095945050505050565b60006001600160601b03808a1683526001600160401b0360c01b808a16602085015288604085015264ffffffffff8816606085015260e06080850152615cd660e0850188614ce2565b9590911660a08401529290921660c0909101525095945050505050565b60006101e08284031215615d0657600080fd5b615d0e614eac565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c0928301519281019290925250919050565b600060408284031215615dc057600080fd5b604051604081018181106001600160401b0382111715615de257615de2614e29565b604052825181526020928301519281019290925250919050565b60006101408284031215615e0f57600080fd5b615e17614ecf565b615e2083615b9d565b8152615e2e60208401615b9d565b6020820152615e3f604084016154ef565b6040820152615e50606084016154ef565b6060820152615e628460808501615dae565b6080820152615e748460c08501615dae565b60a0820152615e8661010084016156f4565b60c0820152615e986101208401615b9d565b60e08201529392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006101008284031215615edb57600080fd5b615ee3614e68565b8251615eee81614c19565b81526020830151615efe81614e05565b6020820152615f108460408501615dae565b6040820152615f228460808501615dae565b606082015260c0830151615f3581614e05565b608082015260e0929092015160a083015250919050565b805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c090810151910152565b6001600160601b03851681526001600160c01b03198416602082015261024081016160126040830185615f4c565b8261022083015295945050505050565b60006020828403121561603457600080fd5b81516001600160401b038082111561604b57600080fd5b9083019060e0828603121561605f57600080fd5b616067614e8a565b82518281111561607657600080fd5b61608287828601615522565b82525061609160208401615b9d565b60208201526160a260408401615b9d565b60408201526160b360608401615b9d565b60608201526160c4608084016154ef565b6080820152615c5b60a084016154ef565b6001600160601b0384811682526102208201906160f56020840186615f4c565b80841661020084015250949350505050565b6000806040838503121561611a57600080fd5b825161612581614e05565b6020840151909250614c6c81614e05565b634e487b7160e01b600052601260045260246000fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220eea364cee1eb3bf23318bd97da29449fc97c06221a3e1f6b2994bec3d8a9655464736f6c63430008140033",
1262
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80634d5e16a9116101305780639996c6b9116100b8578063bf7e214f1161007c578063bf7e214f1461050d578063caf4e3d41461052b578063cc9fc59a14610533578063f21de1e8146103ee578063f7c34ee01461053b57600080fd5b80639996c6b9146104b05780639ffcede9146104c3578063ada9652e146104d6578063b68d1809146104eb578063bbfbbfba146104fa57600080fd5b8063675393bf116100ff578063675393bf1461044e5780637a9e5e4b14610461578063893d20e8146104745780638e32e9791461047c5780638fb360371461048f57600080fd5b80634d5e16a9146103db5780635ab1bd53146103ee5780635fd1a5f514610413578063644c45e01461042657600080fd5b806327bb7a33116101b35780633c53258e116101825780633c53258e1461036b5780633d3cf0231461037e57806349bb9e4b1461038f5780634a7d34cb146103a25780634d4889ad146103b557600080fd5b806327bb7a331461032a57806327c054b71461033d578063329d6e741461035057806336fc697e1461036357600080fd5b80630fec111c116101fa5780630fec111c146102b2578063138461e0146102c75780631c817972146102cf5780631eff4b22146102e2578063214cdb801461031757600080fd5b806301a57efc1461022c57806301ffc9a7146102415780630aaba8e8146102835780630d8e6e2c14610296575b600080fd5b61023f61023a366004614c3e565b61054e565b005b61026e61024f366004614c77565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f610291366004614ca1565b610698565b61029e610b7c565b60405162ffffff909116815260200161027a565b6102ba610c06565b60405161027a9190614d0e565b61023f610dba565b61023f6102dd366004614dba565b610fbc565b6103097f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161027a565b61023f610325366004614c77565b61135f565b61023f610338366004614f9f565b61138c565b61023f61034b366004615048565b611418565b61023f61035e366004615076565b6115ae565b61023f6116fb565b61029e6103793660046150aa565b611741565b61023f61038c366004614ca1565b50565b61023f61039d36600461511e565b611acb565b61023f6103b0366004614c3e565b611bc5565b6103c86103c336600461516d565b611d04565b60405161ffff909116815260200161027a565b61023f6103e93660046151ce565b612377565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161027a565b6103096104213660046151fc565b6125ee565b60008051602061614d833981519152546040516001600160601b03909116815260200161027a565b61023f61045c36600461521e565b6126f7565b61023f61046f36600461521e565b612804565b6103fb61289e565b61023f61048a36600461523b565b6129d5565b610497612c0e565b6040516001600160e01b0319909116815260200161027a565b61023f6104be36600461527b565b612c46565b61023f6104d1366004614ca1565b612da5565b61030960008051602061614d83398151915281565b60405160d3815260200161027a565b61023f6105083660046151ce565b612df7565b60008051602061616d833981519152546001600160a01b03166103fb565b6103fb61315a565b6103fb613166565b61023f6105493660046152bb565b613172565b600080600061055c856131e9565b6004805460405163a0e4494d60e01b81529497509295509093506001600160a01b039091169163a0e4494d9161059a91879187918b918b91016152e9565b600060405180830381600087803b1580156105b457600080fd5b505af11580156105c8573d6000803e3d6000fd5b50505050600181610160018181516105e09190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe8642590610618908890859060ff9060040161549d565b600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b5050604080516001600160601b038916815261ffff881660208201527f77e6967c9588f9075fc07841c0d009a55111911ce2745eb58d0333272c9ca3ac93500190505b60405180910390a15050505050565b60006106a4606e6133af565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070c91906154d2565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561075f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107879190810190615572565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b91906156ff565b15610839576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ad9190615727565b90506108c28160645b60ff9081169116141590565b156108f457604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610830565b6101e0820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015610951573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097591906156ff565b1561099e57604051634b80547760e11b81526001600160601b0386166004820152602401610830565b8160c001518260a00151146109e85760a082015160c0830151604051632b14368360e11b81526001600160601b038816600482015260248101929092526044820152606401610830565b61016082015161ffff1615610a2c5761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610830565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190615744565b64ffffffffff166101e0830152600654604051632f2e849d60e21b81526001600160a01b039091169063bcba127490610ada90879089908790600401615761565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b50505050836001600160a01b031663cbe864258684610b2560c890565b6040518463ffffffff1660e01b8152600401610b439392919061549d565b600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c01919061579d565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610cb6906157ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce2906157ba565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b50505050508152505090506040518060e00160405280610d4d600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610d9e61289e565b6001600160a01b03168152602001826060015181525091505090565b600060008051602061614d83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d91906156ff565b15610e795780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610830565b30610e8c6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef891906156ff565b610f205760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610830565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9891906157f4565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610fc9606e6133af565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103291906154d2565b60405163bd7d9d8560e01b81526001600160601b03881660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611085573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ad9190810190615572565b80519091506001600160601b038581169116146110fb57805160405163605b071960e01b81526001600160601b03808a16600483015291821660248201529085166044820152606401610830565b604051639096a1f360e01b81526001600160601b0388166004820152611177906001600160a01b03841690639096a1f390602401602060405180830381865afa15801561114c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111709190615727565b600a6108b6565b156111a057604051631130ddad60e21b81526001600160601b0388166004820152602401610830565b602864ffffffffff86161561125557606464ffffffffff8781166101a0850181905260e08501516040516352bcc5a760e11b81526004810192909252909116602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190615744565b64ffffffffff166101c08301525b600087156112885761126c858a8560a001516135d7565b90508260a001518360c0018181516112849190615811565b9052505b60405163cbe8642560e01b81526001600160a01b0386169063cbe86425906112b8908c908790879060040161549d565b600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505060065460405163363b3b3960e11b81526001600160a01b039091169250636c76767291506113229088908a908e9089908890600401615824565b600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b50505050505050505050505050565b61136761441d565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61139461441d565b61139e8287613172565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161140e83826158bf565b5050505050505050565b6000806000611426856131e9565b60048054604051630c02e8ad60e01b81526001600160a01b038087169382019390935282851660248201526001600160601b038b16604482015262ffffff8a16606482015294975092955090935060009283929190911690630c02e8ad9060840160408051808303816000875af11580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c9919061597e565b91509150801561155257600183610160018181516114e79190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0386169063cbe864259061151f908a90879060ff9060040161549d565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050505b604080516001600160601b03808a16825262ffffff891660208301528416918101919091527f902f21240dd81ead776e9f49b4c2b8640514e4d1705c450f6e50bab12ec03543906060015b60405180910390a150505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6115d0610b7c565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611610573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163491906159ad565b60008051602061618d8339815191528054600160401b900460ff1680611667575080546001600160401b03808416911610155b156116855760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556116af83614456565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b61170361441d565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080600080611750886131e9565b60405163a7ef3d2160e01b81526001600160601b038c16600482015261ffff8b16602482015292955090935091506000906001600160a01b0384169063a7ef3d2190604401600060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117da91908101906159d6565b60405163078ae93560e41b81526001600160601b038b16600482015261ffff8a1660248201529091506000906001600160a01b038516906378ae935090604401602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b9190615727565b90506000826040015160016118709190615a9d565b60405163d5b5ee5d60e01b815261ffff8c16600482015260ff8216602482015290915073__$e1d43d4fb5c0494c5b7331f52c1ee41012$__9063d5b5ee5d90604401602060405180830381865af41580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f3919061579d565b9650600460009054906101000a90046001600160a01b03166001600160a01b031663fe7631d5878d8a8d8d6040518663ffffffff1660e01b815260040161193e959493929190615ab6565b600060405180830381600087803b15801561195857600080fd5b505af115801561196c573d6000803e3d6000fd5b5050505061018084015160405163274acb3560e01b81526001600160601b039182166004820152908a16602482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb3590604401602060405180830381865af41580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906157f4565b5060405163cbe8642560e01b81526001600160a01b0387169063cbe8642590611a2d908e90889060ff9060040161549d565b600060405180830381600087803b158015611a4757600080fd5b505af1158015611a5b573d6000803e3d6000fd5b505050507f49582759c7297fe14c480e8acab67b42fd37c9f3004b859c9a0e7bdd97bfca728b888b604051611ab5939291906001600160601b03938416815262ffffff929092166020830152909116604082015260600190565b60405180910390a1505050505050949350505050565b60008051602061618d8339815191528054600160401b810460ff1615906001600160401b0316600081158015611afe5750825b90506000826001600160401b03166001148015611b1a5750303b155b905081158015611b28575080155b15611b465760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b7057845460ff60401b1916600160401b1785555b611b7a878761445e565b8315611bbc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161159d565b50505050505050565b6000806000611bd3856131e9565b60048054604051632ecc6ca560e21b81529497509295509093506001600160a01b039091169163bb31b29491611c1191879187918b918b91016152e9565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b5050505060018161016001818151611c579190615334565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe8642590611c8f908890859060ff9060040161549d565b600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b5050604080516001600160601b038916815261ffff881660208201527fe3ce18abb523f21452f7ac3d58c5f9377fd1d33be26b261de38c988bbb8880ea9350019050610689565b600080600080611d13876131e9565b6101a081015160405163790a38ad60e01b815264ffffffffff9091166004820152929550909350915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c91906156ff565b80611e285750611e2873__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e129190615744565b826101c0015164ffffffffff9081169116101590565b15611e5157604051630479f37160e41b81526001600160601b0388166004820152602401610830565b608081015160405163046e44af60e11b81526001600160601b038816600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af4158015611eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed29190615b07565b61018083015160405163046e44af60e11b81526001600160601b03909116600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af4158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190615b07565b611f5f9190615811565b111561218b576080810151604051632620eecb60e11b8152889173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd9691611fa59160040190815260200190565b602060405180830381865af4158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe691906157f4565b60405163046e44af60e11b81526001600160601b038916600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd969082906308dc895e90602401602060405180830381865af4158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190615b07565b61018086015160405163046e44af60e11b81526001600160601b03909116600482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af41580156120c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ed9190615b07565b6120f79190615811565b6040518263ffffffff1660e01b815260040161211591815260200190565b602060405180830381865af4158015612132573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215691906157f4565b6040516350be842960e01b81526001600160601b03938416600482015291831660248301529091166044820152606401610830565b73__$0e0c503522f35343ef1955427c5075b143$__639cc45a3682610140015160016121b79190615b20565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865af41580156121f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221a9190615b3b565b6004805460405163c898bbaf60e01b81529296506001600160a01b03169163c898bbaf916122529187918c918a918d918d9101615b58565b600060405180830381600087803b15801561226c57600080fd5b505af1158015612280573d6000803e3d6000fd5b50505050600181610140018181516122989190615b20565b61ffff1690525061016081018051600191906122b5908390615b20565b61ffff1690525060405163cbe8642560e01b81526001600160a01b0384169063cbe86425906122ed908a90859060ff9060040161549d565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b5050604080516001600160601b038b8116825261ffff891660208301528a168183015290517f4b55d90307f307fd56cbb5e999a830a5db89f39b367ad6a6191172bc9700ef2e9350908190036060019150a15050509392505050565b6000612383606e6133af565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123eb91906154d2565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561243e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124669190810190615572565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea91906156ff565b6125365760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610830565b64ffffffffff8481166101a0830181905260e08301516040516352bcc5a760e11b81526004810192909252909116602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af41580156125a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c99190615744565b64ffffffffff166101c08201526001600160a01b03831663cbe8642586836064610b25565b6040516322f5db0f60e11b815260048101829052600090819073__$5ac3274b8cf1e01ea223bf093142af05b0$__906345ebb61e90602401602060405180830381865af4158015612643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126679190615b07565b9050600061267585836148f5565b604051632255341b60e11b81526004810182905290915073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af41580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190615b07565b925050505b92915050565b6126ff61441d565b806001600160a01b03163b6000036127355760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610830565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa9250505080156127af575060408051601f3d908101601f191682019092526127ac918101906156ff565b60015b6127d75760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610830565b806128005760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610830565b5050565b3361282460008051602061616d833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461285f5760405162d1953b60e31b81526001600160a01b0382166004820152602401610830565b816001600160a01b03163b600003612895576040516361798f2f60e11b81526001600160a01b0383166004820152602401610830565b6128008261490a565b60008060008051602061614d83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293291906156ff565b156129bf576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b991906154d2565b91505090565b54600160601b90046001600160a01b0316919050565b6129dd61441d565b612a5d83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4391906157f4565b603c6000856040518060200160405280600081525061138c565b6001600160a01b03821615612a7a57612a758261496b565b612be9565b6000612a8e6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b129190615727565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906154d2565b9050612be7816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be291906154d2565b61496b565b505b612bf9634a531f3360e01b61135f565b612c0963b68d180960e01b61135f565b505050565b60008051602061616d833981519152805460009190600160a01b900460ff16612c385760006129b9565b638fb3603760e01b91505090565b6000806000612c54866131e9565b6004805460405163b962574f60e01b81526001600160a01b038087169382019390935282851660248201526001600160601b03808d16604483015261ffff8c1660648301528a166084820152949750929550909350169063b962574f9060a401600060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b50505050826001600160a01b031663cbe864258783612cff603390565b6040518463ffffffff1660e01b8152600401612d1d9392919061549d565b600060405180830381600087803b158015612d3757600080fd5b505af1158015612d4b573d6000803e3d6000fd5b5050604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f717b1d3270371ccb32ccdefe73a57559ac67e1ea57b50cfff6f7c85be1267b089350908190036060019150a1505050505050565b60405162461bcd60e51b815260206004820152602160248201527f4552524f523a5052532d3233353a4e4f545f5945545f494d504c454d454e54456044820152601160fa1b6064820152608401610830565b600080612e04606e6133af565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6d91906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015612ec0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ee89190810190615572565b90508060a001518160c0015103612f2a5760c081015160405163038a855760e51b81526001600160601b03881660048201526024810191909152604401610830565b60008160c001518260a00151612f409190615ba8565b90506000612f4f8589846135d7565b9050818360c001818151612f639190615811565b9052506003546020840151604051639babe3bf60e01b81526001600160a01b0388811660048301526001600160601b03909216602482015260448101849052911690639babe3bf90606401600060405180830381600087803b158015612fc857600080fd5b505af1158015612fdc573d6000803e3d6000fd5b50505050846001600160a01b031663cbe864258985612ff960ff90565b6040518463ffffffff1660e01b81526004016130179392919061549d565b600060405180830381600087803b15801561303157600080fd5b505af1158015613045573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af415801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c391906156ff565b801561314b57506101a083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015613127573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314b91906156ff565b1561140e5761140e8888612377565b6000610c01602861497c565b6000610c01604661497c565b61317a61441d565b613183816126f7565b61318b6116fb565b6001600160a01b0382166131b25760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061614d83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018190526101208201526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e08101829052819081613275606e6133af565b90508095508192505050836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e191906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201529093506001600160a01b0384169063bd7d9d8590602401600060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133599190810190615572565b80519092506001600160601b038281169116146133a757815160405163605b071960e01b81526001600160601b03808816600483015291821660248201529082166044820152606401610830565b509193909250565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c08201526000806133fb6001546001600160a01b031690565b6040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa158015613442573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346a9190810190615bbb565b925061348083604001518660ff90811691161490565b6134c25760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b6044820152606401610830565b826000015193506134d68360200151614a89565b9150816001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015613516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353a91906154d2565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a891906156ff565b156133a757608083015160405163d53987e560e01b81526001600160a01b039091166004820152602401610830565b6000816000036135e957506000614416565b60006135fd6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801561364c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136749190810190615bbb565b6020015190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136de91906154d2565b60405163bd7d9d8560e01b81526001600160601b03871660048201526001600160a01b03919091169063bd7d9d8590602401600060405180830381865afa15801561372d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137559190810190615572565b6002546060820151608083015160e084015161010085015160208601516040808801519051630e1c629d60e31b81529798506000976001600160a01b03909716966370e314e8966137b2968c969195909491939092600401615c8d565b6101e060405180830381865afa1580156137d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f49190615cf3565b9050848160400151146138395760408082015190516355e9883560e11b81526001600160601b0388166004820152602481018790526044810191909152606401610830565b600061384d6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561389c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c091906154d2565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613902573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392691906154d2565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161014060405180830381865afa158015613976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399a9190615dfc565b90506000816020015190508360400151816001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0c91906154d2565b604051636eb1769f60e11b81526001600160a01b0386811660048301528481166024830152919091169063dd62ed3e90604401602060405180830381865afa158015613a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a809190615b07565b1015613aa95782818560400151604051636d675c4360e01b815260040161083093929190615ea4565b60008460e001518560600151613abf9190615811565b90506000856101c001518661014001518760c00151613ade9190615811565b613ae89190615ba8565b905060008661010001518760800151613b019190615811565b905060008761012001518860a00151613b1a9190615811565b9050600081838a60000151613b2f9190615811565b613b399190615811565b895160e08901516040516317d5759960e31b8152919e509192506001600160a01b0388169063beabacc890613b76908c9085908b90600401615ea4565b600060405180830381600087803b158015613b9057600080fd5b505af1158015613ba4573d6000803e3d6000fd5b505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0d91906154d2565b6040808a01519051639ad69c6760e01b81526001600160601b0390911660048201526001600160a01b039190911690639ad69c679060240161010060405180830381865afa158015613c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c879190615ec8565b60808101516040516317d5759960e31b8152919250906001600160a01b0389169063beabacc890613cc0908d9085908b90600401615ea4565b600060405180830381600087803b158015613cda57600080fd5b505af1158015613cee573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b031663d25f50958a604001518e604001518e8a6040518563ffffffff1660e01b8152600401613d419493929190615fe4565b600060405180830381600087803b158015613d5b57600080fd5b505af1158015613d6f573d6000803e3d6000fd5b50505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd991906154d2565b606089015160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa158015613e2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e569190810190616022565b606001516040516317d5759960e31b81529091506001600160a01b0388169063beabacc890613e8d908c9085908790600401615ea4565b600060405180830381600087803b158015613ea757600080fd5b505af1158015613ebb573d6000803e3d6000fd5b505060065460208e0151604051632620eecb60e11b8152600481018790526001600160a01b03909216935063991cbfb39250908d9073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd9690602401602060405180830381865af4158015613f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5091906157f4565b6040518463ffffffff1660e01b8152600401613f6e939291906160d5565b600060405180830381600087803b158015613f8857600080fd5b505af1158015613f9c573d6000803e3d6000fd5b5050604051632620eecb60e11b8152600481018890526000935073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9250634c41dd969150602401602060405180830381865af4158015613ff4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401891906157f4565b6001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63274acb35909173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd96866040518263ffffffff1660e01b815260040161407691815260200190565b602060405180830381865af4158015614093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b791906157f4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061412691906157f4565b6001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63274acb35909173__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968a6040518263ffffffff1660e01b815260040161418491815260200190565b602060405180830381865af41580156141a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c591906157f4565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af4158015614210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423491906157f4565b6040808c01519051632620eecb60e11b815291925073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd96916142759160040190815260200190565b602060405180830381865af4158015614292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b691906157f4565b60405163c4cade9d60e01b81526001600160601b039182166004820152908216602482015273__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c4cade9d90604401602060405180830381865af4158015614317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433b91906156ff565b614409578e8a60400151826001600160601b031673__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__6308dc895e90916040518263ffffffff1660e01b815260040161439691906001600160601b0391909116815260200190565b602060405180830381865af41580156143b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d79190615b07565b6040516310c41a2960e31b81526001600160601b03909316600484015260248301919091526044820152606401610830565b5050505050505050505050505b9392505050565b60008051602061618d83398151915254600160401b900460ff1661445457604051631afcd79f60e31b815260040160405180910390fd5b565b61022761441d565b60008051602061618d8339815191528054600160401b810460ff1615906001600160401b03166000811580156144915750825b90506000826001600160401b031660011480156144ad5750303b155b9050811580156144bb575080155b156144d95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561450357845460ff60401b1916600160401b1785555b6000808780602001905181019061451a9190616107565b909250905061452b8260008b6129d5565b6000614535610b7c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561458a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ae9190615727565b90506145c26001546001600160a01b031690565b6001600160a01b031663d39e6043608c6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015614618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463c91906154d2565b600680546001600160a01b0319166001600160a01b039283161790556001541663d39e604360dc6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156146a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146cd91906154d2565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d46040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561473a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475e91906154d2565b600480546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d26040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156147cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147ef91906154d2565b600280546001600160a01b0319166001600160a01b039283161790556001541663d39e604360786040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561485c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488091906154d2565b600580546001600160a01b0319166001600160a01b03929092169190911790556148b0632642ed2b60e21b61135f565b5050508315611bbc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161159d565b60006144168383670de0b6b3a7640000614b1e565b60008051602061616d83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61497361441d565b61038c81614c08565b60006149906001546001600160a01b031690565b6001600160a01b031663d39e6043836149a7610b7c565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156149fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a209190615727565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614a65573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f191906154d2565b6000614a9d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015614aec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b149190810190615bbb565b6080015192915050565b6000808060001985870985870292508281108382030391505080600003614b5857838281614b4e57614b4e616136565b0492505050614416565b808411614b9f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610830565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b614c1061441d565b61038c8161490a565b6001600160601b038116811461038c57600080fd5b61ffff8116811461038c57600080fd5b60008060408385031215614c5157600080fd5b8235614c5c81614c19565b91506020830135614c6c81614c2e565b809150509250929050565b600060208284031215614c8957600080fd5b81356001600160e01b03198116811461441657600080fd5b600060208284031215614cb357600080fd5b813561441681614c19565b60005b83811015614cd9578181015183820152602001614cc1565b50506000910152565b60008151808452614cfa816020860160208601614cbe565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151614d7760c08401826001600160a01b03169052565b5060c083015160e080840152614d91610100840182614ce2565b949350505050565b801515811461038c57600080fd5b64ffffffffff8116811461038c57600080fd5b600080600060608486031215614dcf57600080fd5b8335614dda81614c19565b92506020840135614dea81614d99565b91506040840135614dfa81614da7565b809150509250925092565b6001600160a01b038116811461038c57600080fd5b60ff8116811461038c57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161020081016001600160401b0381118282101715614e6257614e62614e29565b60405290565b60405160c081016001600160401b0381118282101715614e6257614e62614e29565b60405160e081016001600160401b0381118282101715614e6257614e62614e29565b6040516101e081016001600160401b0381118282101715614e6257614e62614e29565b60405161010081016001600160401b0381118282101715614e6257614e62614e29565b604051601f8201601f191681016001600160401b0381118282101715614f1a57614f1a614e29565b604052919050565b60006001600160401b03821115614f3b57614f3b614e29565b50601f01601f191660200190565b600082601f830112614f5a57600080fd5b8135614f6d614f6882614f22565b614ef2565b818152846020838601011115614f8257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215614fb857600080fd5b8635614fc381614e05565b95506020870135614fd381614c19565b94506040870135614fe381614e1a565b93506060870135614ff381614d99565b9250608087013561500381614e05565b915060a08701356001600160401b0381111561501e57600080fd5b61502a89828a01614f49565b9150509295509295509295565b62ffffff8116811461038c57600080fd5b6000806040838503121561505b57600080fd5b823561506681614c19565b91506020830135614c6c81615037565b60006020828403121561508857600080fd5b81356001600160401b0381111561509e57600080fd5b614d9184828501614f49565b600080600080608085870312156150c057600080fd5b84356150cb81614c19565b935060208501356150db81614c2e565b925060408501356150eb81614c19565b915060608501356001600160401b0381111561510657600080fd5b61511287828801614f49565b91505092959194509250565b6000806040838503121561513157600080fd5b823561513c81614e05565b915060208301356001600160401b0381111561515757600080fd5b61516385828601614f49565b9150509250929050565b60008060006060848603121561518257600080fd5b833561518d81614c19565b9250602084013561519d81614c19565b915060408401356001600160401b038111156151b857600080fd5b6151c486828701614f49565b9150509250925092565b600080604083850312156151e157600080fd5b82356151ec81614c19565b91506020830135614c6c81614da7565b6000806040838503121561520f57600080fd5b50508035926020909101359150565b60006020828403121561523057600080fd5b813561441681614e05565b60008060006060848603121561525057600080fd5b833561525b81614e05565b9250602084013561526b81614e05565b91506040840135614dfa81614e05565b60008060006060848603121561529057600080fd5b833561529b81614c19565b925060208401356152ab81614c2e565b91506040840135614dfa81614c19565b600080604083850312156152ce57600080fd5b82356152d981614e05565b91506020830135614c6c81614e05565b6001600160a01b0394851681529290931660208301526001600160601b0316604082015261ffff909116606082015260800190565b634e487b7160e01b600052601160045260246000fd5b61ffff82811682821603908082111561534f5761534f61531e565b5092915050565b80516001600160601b031682526000610200602083015161538260208601826001600160601b03169052565b50604083015161539e60408601826001600160c01b0319169052565b5060608301516153ba60608601826001600160c01b0319169052565b506080830151608085015260a083015160a085015260c083015160c085015260e08301516153f160e086018264ffffffffff169052565b5061010080840151828287015261540a83870182614ce2565b9250505061012080840151858303828701526154268382614ce2565b92505050610140808401516154408287018261ffff169052565b50506101608381015161ffff1690850152610180808401516001600160601b0316908501526101a08084015164ffffffffff908116918601919091526101c0808501518216908601526101e0938401511692909301919091525090565b6001600160601b03841681526060602082015260006154bf6060830185615356565b905060ff83166040830152949350505050565b6000602082840312156154e457600080fd5b815161441681614e05565b80516154fa81614c19565b919050565b80516001600160c01b0319811681146154fa57600080fd5b80516154fa81614da7565b600082601f83011261553357600080fd5b8151615541614f6882614f22565b81815284602083860101111561555657600080fd5b614d91826020830160208701614cbe565b80516154fa81614c2e565b60006020828403121561558457600080fd5b81516001600160401b038082111561559b57600080fd5b9083019061020082860312156155b057600080fd5b6155b8614e3f565b6155c1836154ef565b81526155cf602084016154ef565b60208201526155e0604084016154ff565b60408201526155f1606084016154ff565b60608201526080830151608082015260a083015160a082015260c083015160c082015261562060e08401615517565b60e0820152610100808401518381111561563957600080fd5b61564588828701615522565b828401525050610120808401518381111561565f57600080fd5b61566b88828701615522565b8284015250506101409150615681828401615567565b828201526101609150615695828401615567565b8282015261018091506156a98284016154ef565b828201526101a091506156bd828401615517565b828201526101c091506156d1828401615517565b828201526101e091506156e5828401615517565b91810191909152949350505050565b80516154fa81614d99565b60006020828403121561571157600080fd5b815161441681614d99565b80516154fa81614e1a565b60006020828403121561573957600080fd5b815161441681614e1a565b60006020828403121561575657600080fd5b815161441681614da7565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061579490830184615356565b95945050505050565b6000602082840312156157af57600080fd5b815161441681615037565b600181811c908216806157ce57607f821691505b6020821081036157ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561580657600080fd5b815161441681614c19565b808201808211156126f1576126f161531e565b6001600160a01b03861681526001600160601b0385811660208301528416604082015260a06060820181905260009061585f90830185615356565b90508260808301529695505050505050565b601f821115612c0957600081815260208120601f850160051c810160208610156158985750805b601f850160051c820191505b818110156158b7578281556001016158a4565b505050505050565b81516001600160401b038111156158d8576158d8614e29565b6158ec816158e684546157ba565b84615871565b602080601f83116001811461592157600084156159095750858301515b600019600386901b1c1916600185901b1785556158b7565b600085815260208120601f198616915b8281101561595057888601518255948401946001909101908401615931565b508582101561596e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000806040838503121561599157600080fd5b825161599c81614c19565b6020840151909250614c6c81614d99565b6000602082840312156159bf57600080fd5b81516001600160401b038116811461441657600080fd5b6000602082840312156159e857600080fd5b81516001600160401b03808211156159ff57600080fd5b9083019060c08286031215615a1357600080fd5b615a1b614e68565b8251615a2681614c19565b81526020830151615a3681614c19565b60208201526040830151615a4981614e1a565b6040820152615a5a6060840161571c565b6060820152608083015182811115615a7157600080fd5b615a7d87828601615522565b608083015250615a8f60a08401615517565b60a082015295945050505050565b60ff81811683821601908111156126f1576126f161531e565b6001600160a01b03861681526001600160601b03858116602083015262ffffff851660408301528316606082015260a060808201819052600090615afc90830184614ce2565b979650505050505050565b600060208284031215615b1957600080fd5b5051919050565b61ffff81811683821601908082111561534f5761534f61531e565b600060208284031215615b4d57600080fd5b815161441681614c2e565b6001600160a01b03861681526001600160601b03858116602083015261ffff851660408301528316606082015260a060808201819052600090615afc90830184614ce2565b80516154fa81614e05565b818103818111156126f1576126f161531e565b600060208284031215615bcd57600080fd5b81516001600160401b0380821115615be457600080fd5b9083019060e08286031215615bf857600080fd5b615c00614e8a565b615c09836154ef565b8152615c17602084016154ef565b6020820152615c286040840161571c565b6040820152615c39606084016156f4565b6060820152615c4a60808401615b9d565b6080820152615c5b60a08401615b9d565b60a082015260c083015182811115615c7257600080fd5b615c7e87828601615522565b60c08301525095945050505050565b60006001600160601b03808a1683526001600160401b0360c01b808a16602085015288604085015264ffffffffff8816606085015260e06080850152615cd660e0850188614ce2565b9590911660a08401529290921660c0909101525095945050505050565b60006101e08284031215615d0657600080fd5b615d0e614eac565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c0928301519281019290925250919050565b600060408284031215615dc057600080fd5b604051604081018181106001600160401b0382111715615de257615de2614e29565b604052825181526020928301519281019290925250919050565b60006101408284031215615e0f57600080fd5b615e17614ecf565b615e2083615b9d565b8152615e2e60208401615b9d565b6020820152615e3f604084016154ef565b6040820152615e50606084016154ef565b6060820152615e628460808501615dae565b6080820152615e748460c08501615dae565b60a0820152615e8661010084016156f4565b60c0820152615e986101208401615b9d565b60e08201529392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006101008284031215615edb57600080fd5b615ee3614e68565b8251615eee81614c19565b81526020830151615efe81614e05565b6020820152615f108460408501615dae565b6040820152615f228460808501615dae565b606082015260c0830151615f3581614e05565b608082015260e0929092015160a083015250919050565b805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c090810151910152565b6001600160601b03851681526001600160c01b03198416602082015261024081016160126040830185615f4c565b8261022083015295945050505050565b60006020828403121561603457600080fd5b81516001600160401b038082111561604b57600080fd5b9083019060e0828603121561605f57600080fd5b616067614e8a565b82518281111561607657600080fd5b61608287828601615522565b82525061609160208401615b9d565b60208201526160a260408401615b9d565b60408201526160b360608401615b9d565b60608201526160c4608084016154ef565b6080820152615c5b60a084016154ef565b6001600160601b0384811682526102208201906160f56020840186615f4c565b80841661020084015250949350505050565b6000806040838503121561611a57600080fd5b825161612581614e05565b6020840151909250614c6c81614e05565b634e487b7160e01b600052601260045260246000fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220eea364cee1eb3bf23318bd97da29449fc97c06221a3e1f6b2994bec3d8a9655464736f6c63430008140033",
1263
+ "linkReferences": {
1264
+ "contracts/types/Amount.sol": {
1265
+ "AmountLib": [
1266
+ {
1267
+ "length": 20,
1268
+ "start": 6787
1269
+ },
1270
+ {
1271
+ "length": 20,
1272
+ "start": 8026
1273
+ },
1274
+ {
1275
+ "length": 20,
1276
+ "start": 8157
1277
+ },
1278
+ {
1279
+ "length": 20,
1280
+ "start": 8289
1281
+ },
1282
+ {
1283
+ "length": 20,
1284
+ "start": 8426
1285
+ },
1286
+ {
1287
+ "length": 20,
1288
+ "start": 8565
1289
+ },
1290
+ {
1291
+ "length": 20,
1292
+ "start": 16344
1293
+ },
1294
+ {
1295
+ "length": 20,
1296
+ "start": 16542
1297
+ },
1298
+ {
1299
+ "length": 20,
1300
+ "start": 16649
1301
+ },
1302
+ {
1303
+ "length": 20,
1304
+ "start": 16677
1305
+ },
1306
+ {
1307
+ "length": 20,
1308
+ "start": 16919
1309
+ },
1310
+ {
1311
+ "length": 20,
1312
+ "start": 16947
1313
+ },
1314
+ {
1315
+ "length": 20,
1316
+ "start": 17201
1317
+ },
1318
+ {
1319
+ "length": 20,
1320
+ "start": 17347
1321
+ },
1322
+ {
1323
+ "length": 20,
1324
+ "start": 17463
1325
+ }
1326
+ ]
1327
+ },
1328
+ "contracts/types/ClaimId.sol": {
1329
+ "ClaimIdLib": [
1330
+ {
1331
+ "length": 20,
1332
+ "start": 8819
1333
+ }
1334
+ ]
1335
+ },
1336
+ "contracts/types/NftId.sol": {
1337
+ "NftIdLib": [
1338
+ {
1339
+ "length": 20,
1340
+ "start": 3797
1341
+ },
1342
+ {
1343
+ "length": 20,
1344
+ "start": 10682
1345
+ }
1346
+ ]
1347
+ },
1348
+ "contracts/types/PayoutId.sol": {
1349
+ "PayoutIdLib": [
1350
+ {
1351
+ "length": 20,
1352
+ "start": 6523
1353
+ }
1354
+ ]
1355
+ },
1356
+ "contracts/types/Timestamp.sol": {
1357
+ "TimestampLib": [
1358
+ {
1359
+ "length": 20,
1360
+ "start": 2195
1361
+ },
1362
+ {
1363
+ "length": 20,
1364
+ "start": 2557
1365
+ },
1366
+ {
1367
+ "length": 20,
1368
+ "start": 2836
1369
+ },
1370
+ {
1371
+ "length": 20,
1372
+ "start": 4815
1373
+ },
1374
+ {
1375
+ "length": 20,
1376
+ "start": 7716
1377
+ },
1378
+ {
1379
+ "length": 20,
1380
+ "start": 7821
1381
+ },
1382
+ {
1383
+ "length": 20,
1384
+ "start": 9586
1385
+ },
1386
+ {
1387
+ "length": 20,
1388
+ "start": 9809
1389
+ },
1390
+ {
1391
+ "length": 20,
1392
+ "start": 12617
1393
+ },
1394
+ {
1395
+ "length": 20,
1396
+ "start": 12755
1397
+ }
1398
+ ]
1399
+ },
1400
+ "contracts/types/UFixed.sol": {
1401
+ "UFixedLib": [
1402
+ {
1403
+ "length": 20,
1404
+ "start": 9967
1405
+ },
1406
+ {
1407
+ "length": 20,
1408
+ "start": 10100
1409
+ }
1410
+ ]
1411
+ },
1412
+ "contracts/types/Version.sol": {
1413
+ "VersionLib": [
1414
+ {
1415
+ "length": 20,
1416
+ "start": 3209
1417
+ },
1418
+ {
1419
+ "length": 20,
1420
+ "start": 5782
1421
+ },
1422
+ {
1423
+ "length": 20,
1424
+ "start": 17974
1425
+ },
1426
+ {
1427
+ "length": 20,
1428
+ "start": 19112
1429
+ }
1430
+ ],
1431
+ "VersionPartLib": [
1432
+ {
1433
+ "length": 20,
1434
+ "start": 11162
1435
+ }
1436
+ ]
1437
+ }
1438
+ },
1439
+ "deployedLinkReferences": {
1440
+ "contracts/types/Amount.sol": {
1441
+ "AmountLib": [
1442
+ {
1443
+ "length": 20,
1444
+ "start": 6557
1445
+ },
1446
+ {
1447
+ "length": 20,
1448
+ "start": 7796
1449
+ },
1450
+ {
1451
+ "length": 20,
1452
+ "start": 7927
1453
+ },
1454
+ {
1455
+ "length": 20,
1456
+ "start": 8059
1457
+ },
1458
+ {
1459
+ "length": 20,
1460
+ "start": 8196
1461
+ },
1462
+ {
1463
+ "length": 20,
1464
+ "start": 8335
1465
+ },
1466
+ {
1467
+ "length": 20,
1468
+ "start": 16114
1469
+ },
1470
+ {
1471
+ "length": 20,
1472
+ "start": 16312
1473
+ },
1474
+ {
1475
+ "length": 20,
1476
+ "start": 16419
1477
+ },
1478
+ {
1479
+ "length": 20,
1480
+ "start": 16447
1481
+ },
1482
+ {
1483
+ "length": 20,
1484
+ "start": 16689
1485
+ },
1486
+ {
1487
+ "length": 20,
1488
+ "start": 16717
1489
+ },
1490
+ {
1491
+ "length": 20,
1492
+ "start": 16971
1493
+ },
1494
+ {
1495
+ "length": 20,
1496
+ "start": 17117
1497
+ },
1498
+ {
1499
+ "length": 20,
1500
+ "start": 17233
1501
+ }
1502
+ ]
1503
+ },
1504
+ "contracts/types/ClaimId.sol": {
1505
+ "ClaimIdLib": [
1506
+ {
1507
+ "length": 20,
1508
+ "start": 8589
1509
+ }
1510
+ ]
1511
+ },
1512
+ "contracts/types/NftId.sol": {
1513
+ "NftIdLib": [
1514
+ {
1515
+ "length": 20,
1516
+ "start": 3567
1517
+ },
1518
+ {
1519
+ "length": 20,
1520
+ "start": 10452
1521
+ }
1522
+ ]
1523
+ },
1524
+ "contracts/types/PayoutId.sol": {
1525
+ "PayoutIdLib": [
1526
+ {
1527
+ "length": 20,
1528
+ "start": 6293
1529
+ }
1530
+ ]
1531
+ },
1532
+ "contracts/types/Timestamp.sol": {
1533
+ "TimestampLib": [
1534
+ {
1535
+ "length": 20,
1536
+ "start": 1965
1537
+ },
1538
+ {
1539
+ "length": 20,
1540
+ "start": 2327
1541
+ },
1542
+ {
1543
+ "length": 20,
1544
+ "start": 2606
1545
+ },
1546
+ {
1547
+ "length": 20,
1548
+ "start": 4585
1549
+ },
1550
+ {
1551
+ "length": 20,
1552
+ "start": 7486
1553
+ },
1554
+ {
1555
+ "length": 20,
1556
+ "start": 7591
1557
+ },
1558
+ {
1559
+ "length": 20,
1560
+ "start": 9356
1561
+ },
1562
+ {
1563
+ "length": 20,
1564
+ "start": 9579
1565
+ },
1566
+ {
1567
+ "length": 20,
1568
+ "start": 12387
1569
+ },
1570
+ {
1571
+ "length": 20,
1572
+ "start": 12525
1573
+ }
1574
+ ]
1575
+ },
1576
+ "contracts/types/UFixed.sol": {
1577
+ "UFixedLib": [
1578
+ {
1579
+ "length": 20,
1580
+ "start": 9737
1581
+ },
1582
+ {
1583
+ "length": 20,
1584
+ "start": 9870
1585
+ }
1586
+ ]
1587
+ },
1588
+ "contracts/types/Version.sol": {
1589
+ "VersionLib": [
1590
+ {
1591
+ "length": 20,
1592
+ "start": 2979
1593
+ },
1594
+ {
1595
+ "length": 20,
1596
+ "start": 5552
1597
+ },
1598
+ {
1599
+ "length": 20,
1600
+ "start": 17744
1601
+ },
1602
+ {
1603
+ "length": 20,
1604
+ "start": 18882
1605
+ }
1606
+ ],
1607
+ "VersionPartLib": [
1608
+ {
1609
+ "length": 20,
1610
+ "start": 10932
1611
+ }
1612
+ ]
1613
+ }
1614
+ }
1615
+ }