@etherisc/gif-next 0.0.2-90f8ffc-398 → 0.0.2-9105e58-225

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +242 -34
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +592 -41
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +85 -27
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +327 -32
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +187 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +85 -27
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +443 -54
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +342 -34
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +673 -169
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +96 -34
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +762 -422
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +39 -89
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -53
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +289 -104
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -57
  56. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  58. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +151 -52
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -13
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1047 -0
  76. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +543 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +282 -118
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +149 -51
  82. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +932 -0
  84. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +523 -0
  86. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +426 -74
  88. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +174 -48
  90. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +612 -0
  92. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -73
  94. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +548 -0
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +220 -31
  98. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +44 -88
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +23 -31
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +23 -31
  104. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +212 -149
  106. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +162 -64
  108. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  109. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +173 -74
  110. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +146 -48
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +173 -74
  114. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +146 -48
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -2
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +82 -34
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -15
  124. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +218 -63
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +142 -50
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
  134. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  137. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  139. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  141. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
  143. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +48 -0
  145. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  146. package/artifacts/contracts/shared/IService.sol/IService.json +23 -31
  147. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  149. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
  151. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  152. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  153. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +143 -39
  155. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -45
  157. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  158. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  159. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Service.sol/Service.json +143 -44
  161. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  162. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  163. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  164. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  166. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +126 -45
  169. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  171. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestService.sol/TestService.json +161 -62
  173. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  177. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/contracts/components/Component.sol +46 -20
  210. package/contracts/components/Distribution.sol +188 -33
  211. package/contracts/components/IComponent.sol +15 -3
  212. package/contracts/components/IDistributionComponent.sol +54 -1
  213. package/contracts/components/IPoolComponent.sol +48 -17
  214. package/contracts/components/Pool.sol +134 -95
  215. package/contracts/components/Product.sol +76 -57
  216. package/contracts/instance/IInstance.sol +21 -1
  217. package/contracts/instance/IInstanceService.sol +18 -0
  218. package/contracts/instance/Instance.sol +58 -36
  219. package/contracts/instance/InstanceAccessManager.sol +12 -13
  220. package/contracts/instance/InstanceService.sol +76 -35
  221. package/contracts/instance/InstanceServiceManager.sol +1 -1
  222. package/contracts/instance/base/ComponentService.sol +1 -1
  223. package/contracts/instance/module/IAccess.sol +3 -4
  224. package/contracts/instance/module/IPolicy.sol +4 -2
  225. package/contracts/instance/module/ISetup.sol +5 -4
  226. package/contracts/instance/service/ApplicationService.sol +268 -0
  227. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  228. package/contracts/instance/service/BundleService.sol +11 -6
  229. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  230. package/contracts/instance/service/ClaimService.sol +151 -0
  231. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  232. package/contracts/instance/service/DistributionService.sol +185 -14
  233. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  234. package/contracts/instance/service/IApplicationService.sol +82 -0
  235. package/contracts/instance/service/IBundleService.sol +11 -1
  236. package/contracts/instance/service/IClaimService.sol +61 -0
  237. package/contracts/instance/service/IDistributionService.sol +53 -0
  238. package/contracts/instance/service/IPolicyService.sol +41 -46
  239. package/contracts/instance/service/PolicyService.sol +94 -158
  240. package/contracts/instance/service/PolicyServiceManager.sol +1 -1
  241. package/contracts/instance/service/PoolService.sol +2 -3
  242. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  243. package/contracts/instance/service/ProductService.sol +9 -9
  244. package/contracts/instance/service/ProductServiceManager.sol +1 -1
  245. package/contracts/registry/IRegistry.sol +3 -2
  246. package/contracts/registry/IRegistryService.sol +10 -8
  247. package/contracts/registry/Registry.sol +20 -8
  248. package/contracts/registry/RegistryService.sol +70 -49
  249. package/contracts/registry/RegistryServiceManager.sol +13 -13
  250. package/contracts/registry/ReleaseManager.sol +8 -9
  251. package/contracts/registry/TokenRegistry.sol +15 -6
  252. package/contracts/shared/ERC165.sol +14 -12
  253. package/contracts/shared/INftOwnable.sol +11 -10
  254. package/contracts/shared/IPolicyHolder.sol +26 -0
  255. package/contracts/shared/IRegisterable.sol +3 -3
  256. package/contracts/shared/IRegistryLinked.sol +12 -0
  257. package/contracts/shared/IVersionable.sol +2 -2
  258. package/contracts/shared/NftOwnable.sol +66 -85
  259. package/contracts/shared/PolicyHolder.sol +81 -0
  260. package/contracts/shared/ProxyManager.sol +13 -5
  261. package/contracts/shared/Registerable.sol +6 -14
  262. package/contracts/shared/RegistryLinked.sol +48 -0
  263. package/contracts/shared/Service.sol +5 -5
  264. package/contracts/shared/Versionable.sol +3 -2
  265. package/contracts/test/TestRegisterable.sol +1 -1
  266. package/contracts/test/TestService.sol +1 -1
  267. package/contracts/types/ClaimId.sol +52 -0
  268. package/contracts/types/DistributorType.sol +2 -2
  269. package/contracts/types/ObjectType.sol +9 -5
  270. package/contracts/types/PayoutId.sol +54 -0
  271. package/contracts/types/RoleId.sol +3 -3
  272. package/package.json +3 -3
@@ -41,33 +41,6 @@
41
41
  "name": "AccessManagedUnauthorized",
42
42
  "type": "error"
43
43
  },
44
- {
45
- "inputs": [
46
- {
47
- "internalType": "address",
48
- "name": "registry",
49
- "type": "address"
50
- },
51
- {
52
- "internalType": "NftId",
53
- "name": "nftId",
54
- "type": "uint96"
55
- }
56
- ],
57
- "name": "ErrorAlreadyLinked",
58
- "type": "error"
59
- },
60
- {
61
- "inputs": [
62
- {
63
- "internalType": "address",
64
- "name": "contractAddress",
65
- "type": "address"
66
- }
67
- ],
68
- "name": "ErrorContractNotRegistered",
69
- "type": "error"
70
- },
71
44
  {
72
45
  "inputs": [
73
46
  {
@@ -95,68 +68,74 @@
95
68
  "internalType": "NftId",
96
69
  "name": "nftId",
97
70
  "type": "uint96"
98
- },
99
- {
100
- "internalType": "ObjectType",
101
- "name": "objectType",
102
- "type": "uint8"
103
71
  }
104
72
  ],
105
- "name": "ErrorNoLifecycle",
73
+ "name": "ErrorNftOwnableAlreadyLinked",
106
74
  "type": "error"
107
75
  },
108
76
  {
109
77
  "inputs": [
110
78
  {
111
79
  "internalType": "address",
112
- "name": "account",
80
+ "name": "contractAddress",
113
81
  "type": "address"
114
82
  }
115
83
  ],
116
- "name": "ErrorNotOwner",
84
+ "name": "ErrorNftOwnableContractNotRegistered",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "ErrorNftOwnableInitialOwnerZero",
117
90
  "type": "error"
118
91
  },
119
92
  {
120
93
  "inputs": [
121
94
  {
122
95
  "internalType": "address",
123
- "name": "registryAddress",
96
+ "name": "account",
124
97
  "type": "address"
125
98
  }
126
99
  ],
127
- "name": "ErrorNotRegistry",
100
+ "name": "ErrorNftOwnableNotOwner",
128
101
  "type": "error"
129
102
  },
130
103
  {
131
104
  "inputs": [
132
105
  {
133
- "internalType": "address",
134
- "name": "registryAddress",
135
- "type": "address"
106
+ "internalType": "NftId",
107
+ "name": "nftId",
108
+ "type": "uint96"
109
+ },
110
+ {
111
+ "internalType": "ObjectType",
112
+ "name": "objectType",
113
+ "type": "uint8"
136
114
  }
137
115
  ],
138
- "name": "ErrorRegisterableNotRegistry",
139
- "type": "error"
140
- },
141
- {
142
- "inputs": [],
143
- "name": "ErrorRegistryAddressZero",
116
+ "name": "ErrorNoLifecycle",
144
117
  "type": "error"
145
118
  },
146
119
  {
147
120
  "inputs": [
148
121
  {
149
122
  "internalType": "address",
150
- "name": "registry",
123
+ "name": "registryAddress",
151
124
  "type": "address"
152
125
  }
153
126
  ],
154
- "name": "ErrorRegistryAlreadyInitialized",
127
+ "name": "ErrorNotRegistry",
155
128
  "type": "error"
156
129
  },
157
130
  {
158
- "inputs": [],
159
- "name": "ErrorRegistryNotInitialized",
131
+ "inputs": [
132
+ {
133
+ "internalType": "address",
134
+ "name": "registryAddress",
135
+ "type": "address"
136
+ }
137
+ ],
138
+ "name": "ErrorRegisterableNotRegistry",
160
139
  "type": "error"
161
140
  },
162
141
  {
@@ -376,6 +355,19 @@
376
355
  "stateMutability": "view",
377
356
  "type": "function"
378
357
  },
358
+ {
359
+ "inputs": [],
360
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
361
+ "outputs": [
362
+ {
363
+ "internalType": "bytes32",
364
+ "name": "",
365
+ "type": "bytes32"
366
+ }
367
+ ],
368
+ "stateMutability": "view",
369
+ "type": "function"
370
+ },
379
371
  {
380
372
  "inputs": [],
381
373
  "name": "PUBLIC_ROLE",
@@ -438,6 +430,106 @@
438
430
  "stateMutability": "view",
439
431
  "type": "function"
440
432
  },
433
+ {
434
+ "inputs": [
435
+ {
436
+ "internalType": "NftId",
437
+ "name": "applicationNftId",
438
+ "type": "uint96"
439
+ },
440
+ {
441
+ "components": [
442
+ {
443
+ "internalType": "NftId",
444
+ "name": "productNftId",
445
+ "type": "uint96"
446
+ },
447
+ {
448
+ "internalType": "NftId",
449
+ "name": "bundleNftId",
450
+ "type": "uint96"
451
+ },
452
+ {
453
+ "internalType": "ReferralId",
454
+ "name": "referralId",
455
+ "type": "bytes8"
456
+ },
457
+ {
458
+ "internalType": "RiskId",
459
+ "name": "riskId",
460
+ "type": "bytes8"
461
+ },
462
+ {
463
+ "internalType": "uint256",
464
+ "name": "sumInsuredAmount",
465
+ "type": "uint256"
466
+ },
467
+ {
468
+ "internalType": "uint256",
469
+ "name": "premiumAmount",
470
+ "type": "uint256"
471
+ },
472
+ {
473
+ "internalType": "uint256",
474
+ "name": "premiumPaidAmount",
475
+ "type": "uint256"
476
+ },
477
+ {
478
+ "internalType": "uint256",
479
+ "name": "lifetime",
480
+ "type": "uint256"
481
+ },
482
+ {
483
+ "internalType": "bytes",
484
+ "name": "applicationData",
485
+ "type": "bytes"
486
+ },
487
+ {
488
+ "internalType": "bytes",
489
+ "name": "policyData",
490
+ "type": "bytes"
491
+ },
492
+ {
493
+ "internalType": "uint16",
494
+ "name": "claimsCount",
495
+ "type": "uint16"
496
+ },
497
+ {
498
+ "internalType": "uint16",
499
+ "name": "openClaimsCount",
500
+ "type": "uint16"
501
+ },
502
+ {
503
+ "internalType": "uint256",
504
+ "name": "payoutAmount",
505
+ "type": "uint256"
506
+ },
507
+ {
508
+ "internalType": "Timestamp",
509
+ "name": "activatedAt",
510
+ "type": "uint40"
511
+ },
512
+ {
513
+ "internalType": "Timestamp",
514
+ "name": "expiredAt",
515
+ "type": "uint40"
516
+ },
517
+ {
518
+ "internalType": "Timestamp",
519
+ "name": "closedAt",
520
+ "type": "uint40"
521
+ }
522
+ ],
523
+ "internalType": "struct IPolicy.PolicyInfo",
524
+ "name": "policy",
525
+ "type": "tuple"
526
+ }
527
+ ],
528
+ "name": "createApplication",
529
+ "outputs": [],
530
+ "stateMutability": "nonpayable",
531
+ "type": "function"
532
+ },
441
533
  {
442
534
  "inputs": [
443
535
  {
@@ -523,9 +615,9 @@
523
615
  "type": "uint96"
524
616
  },
525
617
  {
526
- "internalType": "NumberId",
618
+ "internalType": "ClaimId",
527
619
  "name": "claimId",
528
- "type": "uint32"
620
+ "type": "uint16"
529
621
  },
530
622
  {
531
623
  "components": [
@@ -596,11 +688,6 @@
596
688
  "name": "distributionFee",
597
689
  "type": "tuple"
598
690
  },
599
- {
600
- "internalType": "bool",
601
- "name": "isIntercepting",
602
- "type": "bool"
603
- },
604
691
  {
605
692
  "internalType": "address",
606
693
  "name": "wallet",
@@ -621,39 +708,29 @@
621
708
  "inputs": [
622
709
  {
623
710
  "internalType": "NftId",
624
- "name": "policyNftId",
711
+ "name": "nftId",
625
712
  "type": "uint96"
626
713
  },
627
- {
628
- "internalType": "NumberId",
629
- "name": "payoutId",
630
- "type": "uint32"
631
- },
632
714
  {
633
715
  "components": [
634
716
  {
635
- "internalType": "NumberId",
636
- "name": "claimId",
637
- "type": "uint32"
717
+ "internalType": "DistributorType",
718
+ "name": "distributorType",
719
+ "type": "bytes8"
638
720
  },
639
721
  {
640
- "internalType": "uint256",
641
- "name": "amount",
642
- "type": "uint256"
722
+ "internalType": "bool",
723
+ "name": "active",
724
+ "type": "bool"
643
725
  },
644
726
  {
645
727
  "internalType": "bytes",
646
728
  "name": "data",
647
729
  "type": "bytes"
648
- },
649
- {
650
- "internalType": "Timestamp",
651
- "name": "paidAt",
652
- "type": "uint40"
653
730
  }
654
731
  ],
655
- "internalType": "struct IPolicy.PayoutInfo",
656
- "name": "payout",
732
+ "internalType": "struct IDistribution.DistributorInfo",
733
+ "name": "info",
657
734
  "type": "tuple"
658
735
  }
659
736
  ],
@@ -665,40 +742,60 @@
665
742
  {
666
743
  "inputs": [
667
744
  {
668
- "internalType": "NftId",
669
- "name": "policyNftId",
670
- "type": "uint96"
671
- },
672
- {
673
- "internalType": "NumberId",
674
- "name": "payoutId",
675
- "type": "uint32"
745
+ "internalType": "Key32",
746
+ "name": "distributorKey",
747
+ "type": "bytes32"
676
748
  },
677
749
  {
678
750
  "components": [
679
751
  {
680
- "internalType": "NumberId",
681
- "name": "claimId",
682
- "type": "uint32"
752
+ "internalType": "string",
753
+ "name": "name",
754
+ "type": "string"
683
755
  },
684
756
  {
685
- "internalType": "uint256",
686
- "name": "amount",
757
+ "internalType": "UFixed",
758
+ "name": "minDiscountPercentage",
759
+ "type": "uint256"
760
+ },
761
+ {
762
+ "internalType": "UFixed",
763
+ "name": "maxDiscountPercentage",
764
+ "type": "uint256"
765
+ },
766
+ {
767
+ "internalType": "UFixed",
768
+ "name": "commissionPercentage",
687
769
  "type": "uint256"
688
770
  },
771
+ {
772
+ "internalType": "uint32",
773
+ "name": "maxReferralCount",
774
+ "type": "uint32"
775
+ },
776
+ {
777
+ "internalType": "uint32",
778
+ "name": "maxReferralLifetime",
779
+ "type": "uint32"
780
+ },
781
+ {
782
+ "internalType": "bool",
783
+ "name": "allowSelfReferrals",
784
+ "type": "bool"
785
+ },
786
+ {
787
+ "internalType": "bool",
788
+ "name": "allowRenewals",
789
+ "type": "bool"
790
+ },
689
791
  {
690
792
  "internalType": "bytes",
691
793
  "name": "data",
692
794
  "type": "bytes"
693
- },
694
- {
695
- "internalType": "Timestamp",
696
- "name": "paidAt",
697
- "type": "uint40"
698
795
  }
699
796
  ],
700
- "internalType": "struct IPolicy.PayoutInfo",
701
- "name": "payout",
797
+ "internalType": "struct IDistribution.DistributorTypeInfo",
798
+ "name": "info",
702
799
  "type": "tuple"
703
800
  }
704
801
  ],
@@ -722,9 +819,9 @@
722
819
  {
723
820
  "components": [
724
821
  {
725
- "internalType": "NumberId",
822
+ "internalType": "ClaimId",
726
823
  "name": "claimId",
727
- "type": "uint32"
824
+ "type": "uint16"
728
825
  },
729
826
  {
730
827
  "internalType": "uint256",
@@ -756,7 +853,7 @@
756
853
  "inputs": [
757
854
  {
758
855
  "internalType": "NftId",
759
- "name": "policyNftId",
856
+ "name": "poolNftId",
760
857
  "type": "uint96"
761
858
  },
762
859
  {
@@ -767,113 +864,33 @@
767
864
  "type": "uint96"
768
865
  },
769
866
  {
770
- "internalType": "NftId",
771
- "name": "bundleNftId",
772
- "type": "uint96"
773
- },
774
- {
775
- "internalType": "ReferralId",
776
- "name": "referralId",
777
- "type": "bytes8"
778
- },
779
- {
780
- "internalType": "RiskId",
781
- "name": "riskId",
782
- "type": "bytes8"
783
- },
784
- {
785
- "internalType": "uint256",
786
- "name": "sumInsuredAmount",
787
- "type": "uint256"
788
- },
789
- {
790
- "internalType": "uint256",
791
- "name": "premiumAmount",
792
- "type": "uint256"
793
- },
794
- {
795
- "internalType": "uint256",
796
- "name": "premiumPaidAmount",
797
- "type": "uint256"
798
- },
799
- {
800
- "internalType": "uint256",
801
- "name": "lifetime",
802
- "type": "uint256"
803
- },
804
- {
805
- "internalType": "bytes",
806
- "name": "applicationData",
807
- "type": "bytes"
867
+ "internalType": "contract TokenHandler",
868
+ "name": "tokenHandler",
869
+ "type": "address"
808
870
  },
809
871
  {
810
- "internalType": "bytes",
811
- "name": "policyData",
812
- "type": "bytes"
872
+ "internalType": "bool",
873
+ "name": "isInterceptingBundleTransfers",
874
+ "type": "bool"
813
875
  },
814
876
  {
815
- "internalType": "uint16",
816
- "name": "claimsCount",
817
- "type": "uint16"
877
+ "internalType": "bool",
878
+ "name": "isExternallyManaged",
879
+ "type": "bool"
818
880
  },
819
881
  {
820
- "internalType": "uint16",
821
- "name": "openClaimsCount",
822
- "type": "uint16"
882
+ "internalType": "bool",
883
+ "name": "isVerifyingApplications",
884
+ "type": "bool"
823
885
  },
824
886
  {
825
- "internalType": "uint256",
826
- "name": "payoutAmount",
887
+ "internalType": "UFixed",
888
+ "name": "collateralizationLevel",
827
889
  "type": "uint256"
828
890
  },
829
- {
830
- "internalType": "Timestamp",
831
- "name": "activatedAt",
832
- "type": "uint40"
833
- },
834
- {
835
- "internalType": "Timestamp",
836
- "name": "expiredAt",
837
- "type": "uint40"
838
- },
839
- {
840
- "internalType": "Timestamp",
841
- "name": "closedAt",
842
- "type": "uint40"
843
- }
844
- ],
845
- "internalType": "struct IPolicy.PolicyInfo",
846
- "name": "policy",
847
- "type": "tuple"
848
- }
849
- ],
850
- "name": "createPolicy",
851
- "outputs": [],
852
- "stateMutability": "nonpayable",
853
- "type": "function"
854
- },
855
- {
856
- "inputs": [
857
- {
858
- "internalType": "NftId",
859
- "name": "poolNftId",
860
- "type": "uint96"
861
- },
862
- {
863
- "components": [
864
- {
865
- "internalType": "NftId",
866
- "name": "productNftId",
867
- "type": "uint96"
868
- },
869
- {
870
- "internalType": "contract TokenHandler",
871
- "name": "tokenHandler",
872
- "type": "address"
873
- },
874
891
  {
875
892
  "internalType": "UFixed",
876
- "name": "collateralizationLevel",
893
+ "name": "retentionLevel",
877
894
  "type": "uint256"
878
895
  },
879
896
  {
@@ -927,16 +944,6 @@
927
944
  "name": "performanceFee",
928
945
  "type": "tuple"
929
946
  },
930
- {
931
- "internalType": "bool",
932
- "name": "isIntercepting",
933
- "type": "bool"
934
- },
935
- {
936
- "internalType": "bool",
937
- "name": "isConfirmingApplication",
938
- "type": "bool"
939
- },
940
947
  {
941
948
  "internalType": "address",
942
949
  "name": "wallet",
@@ -1108,40 +1115,50 @@
1108
1115
  {
1109
1116
  "inputs": [
1110
1117
  {
1111
- "internalType": "NftId",
1112
- "name": "policyNftId",
1113
- "type": "uint96"
1114
- },
1115
- {
1116
- "internalType": "NumberId",
1117
- "name": "payoutId",
1118
- "type": "uint32"
1118
+ "internalType": "Key32",
1119
+ "name": "referralKey",
1120
+ "type": "bytes32"
1119
1121
  },
1120
1122
  {
1121
1123
  "components": [
1122
1124
  {
1123
- "internalType": "NumberId",
1124
- "name": "claimId",
1125
- "type": "uint32"
1125
+ "internalType": "NftId",
1126
+ "name": "distributorNftId",
1127
+ "type": "uint96"
1126
1128
  },
1127
1129
  {
1128
- "internalType": "uint256",
1129
- "name": "amount",
1130
+ "internalType": "string",
1131
+ "name": "referralCode",
1132
+ "type": "string"
1133
+ },
1134
+ {
1135
+ "internalType": "UFixed",
1136
+ "name": "discountPercentage",
1130
1137
  "type": "uint256"
1131
1138
  },
1132
1139
  {
1133
- "internalType": "bytes",
1134
- "name": "data",
1135
- "type": "bytes"
1140
+ "internalType": "uint32",
1141
+ "name": "maxReferrals",
1142
+ "type": "uint32"
1143
+ },
1144
+ {
1145
+ "internalType": "uint32",
1146
+ "name": "usedReferrals",
1147
+ "type": "uint32"
1136
1148
  },
1137
1149
  {
1138
1150
  "internalType": "Timestamp",
1139
- "name": "paidAt",
1151
+ "name": "expiryAt",
1140
1152
  "type": "uint40"
1153
+ },
1154
+ {
1155
+ "internalType": "bytes",
1156
+ "name": "data",
1157
+ "type": "bytes"
1141
1158
  }
1142
1159
  ],
1143
- "internalType": "struct IPolicy.PayoutInfo",
1144
- "name": "payout",
1160
+ "internalType": "struct IDistribution.ReferralInfo",
1161
+ "name": "referralInfo",
1145
1162
  "type": "tuple"
1146
1163
  }
1147
1164
  ],
@@ -1365,19 +1382,6 @@
1365
1382
  "stateMutability": "view",
1366
1383
  "type": "function"
1367
1384
  },
1368
- {
1369
- "inputs": [],
1370
- "name": "getInitialOwner",
1371
- "outputs": [
1372
- {
1373
- "internalType": "address",
1374
- "name": "",
1375
- "type": "address"
1376
- }
1377
- ],
1378
- "stateMutability": "view",
1379
- "type": "function"
1380
- },
1381
1385
  {
1382
1386
  "inputs": [
1383
1387
  {
@@ -1547,6 +1551,19 @@
1547
1551
  "stateMutability": "view",
1548
1552
  "type": "function"
1549
1553
  },
1554
+ {
1555
+ "inputs": [],
1556
+ "name": "getRegistryAddress",
1557
+ "outputs": [
1558
+ {
1559
+ "internalType": "address",
1560
+ "name": "",
1561
+ "type": "address"
1562
+ }
1563
+ ],
1564
+ "stateMutability": "view",
1565
+ "type": "function"
1566
+ },
1550
1567
  {
1551
1568
  "inputs": [
1552
1569
  {
@@ -1613,6 +1630,82 @@
1613
1630
  "stateMutability": "nonpayable",
1614
1631
  "type": "function"
1615
1632
  },
1633
+ {
1634
+ "inputs": [],
1635
+ "name": "initializeERC165",
1636
+ "outputs": [],
1637
+ "stateMutability": "nonpayable",
1638
+ "type": "function"
1639
+ },
1640
+ {
1641
+ "inputs": [
1642
+ {
1643
+ "internalType": "address",
1644
+ "name": "initialOwner",
1645
+ "type": "address"
1646
+ },
1647
+ {
1648
+ "internalType": "address",
1649
+ "name": "registryAddress",
1650
+ "type": "address"
1651
+ }
1652
+ ],
1653
+ "name": "initializeNftOwnable",
1654
+ "outputs": [],
1655
+ "stateMutability": "nonpayable",
1656
+ "type": "function"
1657
+ },
1658
+ {
1659
+ "inputs": [
1660
+ {
1661
+ "internalType": "address",
1662
+ "name": "registryAddress",
1663
+ "type": "address"
1664
+ },
1665
+ {
1666
+ "internalType": "NftId",
1667
+ "name": "parentNftId",
1668
+ "type": "uint96"
1669
+ },
1670
+ {
1671
+ "internalType": "ObjectType",
1672
+ "name": "objectType",
1673
+ "type": "uint8"
1674
+ },
1675
+ {
1676
+ "internalType": "bool",
1677
+ "name": "isInterceptor",
1678
+ "type": "bool"
1679
+ },
1680
+ {
1681
+ "internalType": "address",
1682
+ "name": "initialOwner",
1683
+ "type": "address"
1684
+ },
1685
+ {
1686
+ "internalType": "bytes",
1687
+ "name": "data",
1688
+ "type": "bytes"
1689
+ }
1690
+ ],
1691
+ "name": "initializeRegisterable",
1692
+ "outputs": [],
1693
+ "stateMutability": "nonpayable",
1694
+ "type": "function"
1695
+ },
1696
+ {
1697
+ "inputs": [
1698
+ {
1699
+ "internalType": "address",
1700
+ "name": "registryAddress",
1701
+ "type": "address"
1702
+ }
1703
+ ],
1704
+ "name": "initializeRegistryLinked",
1705
+ "outputs": [],
1706
+ "stateMutability": "nonpayable",
1707
+ "type": "function"
1708
+ },
1616
1709
  {
1617
1710
  "inputs": [],
1618
1711
  "name": "isConsumingScheduledOp",
@@ -1662,6 +1755,19 @@
1662
1755
  "stateMutability": "nonpayable",
1663
1756
  "type": "function"
1664
1757
  },
1758
+ {
1759
+ "inputs": [
1760
+ {
1761
+ "internalType": "bytes4",
1762
+ "name": "interfaceId",
1763
+ "type": "bytes4"
1764
+ }
1765
+ ],
1766
+ "name": "registerInterface",
1767
+ "outputs": [],
1768
+ "stateMutability": "nonpayable",
1769
+ "type": "function"
1770
+ },
1665
1771
  {
1666
1772
  "inputs": [
1667
1773
  {
@@ -1739,6 +1845,63 @@
1739
1845
  "stateMutability": "pure",
1740
1846
  "type": "function"
1741
1847
  },
1848
+ {
1849
+ "inputs": [
1850
+ {
1851
+ "internalType": "NftId",
1852
+ "name": "distNftId",
1853
+ "type": "uint96"
1854
+ }
1855
+ ],
1856
+ "name": "toDistributionKey32",
1857
+ "outputs": [
1858
+ {
1859
+ "internalType": "Key32",
1860
+ "name": "",
1861
+ "type": "bytes32"
1862
+ }
1863
+ ],
1864
+ "stateMutability": "pure",
1865
+ "type": "function"
1866
+ },
1867
+ {
1868
+ "inputs": [
1869
+ {
1870
+ "internalType": "NftId",
1871
+ "name": "distNftId",
1872
+ "type": "uint96"
1873
+ }
1874
+ ],
1875
+ "name": "toDistributorKey32",
1876
+ "outputs": [
1877
+ {
1878
+ "internalType": "Key32",
1879
+ "name": "",
1880
+ "type": "bytes32"
1881
+ }
1882
+ ],
1883
+ "stateMutability": "pure",
1884
+ "type": "function"
1885
+ },
1886
+ {
1887
+ "inputs": [
1888
+ {
1889
+ "internalType": "NftId",
1890
+ "name": "distNftId",
1891
+ "type": "uint96"
1892
+ }
1893
+ ],
1894
+ "name": "toDistributorTypeKey32",
1895
+ "outputs": [
1896
+ {
1897
+ "internalType": "Key32",
1898
+ "name": "",
1899
+ "type": "bytes32"
1900
+ }
1901
+ ],
1902
+ "stateMutability": "pure",
1903
+ "type": "function"
1904
+ },
1742
1905
  {
1743
1906
  "inputs": [
1744
1907
  {
@@ -1782,6 +1945,129 @@
1782
1945
  "stateMutability": "pure",
1783
1946
  "type": "function"
1784
1947
  },
1948
+ {
1949
+ "inputs": [
1950
+ {
1951
+ "internalType": "NftId",
1952
+ "name": "applicationNftId",
1953
+ "type": "uint96"
1954
+ },
1955
+ {
1956
+ "components": [
1957
+ {
1958
+ "internalType": "NftId",
1959
+ "name": "productNftId",
1960
+ "type": "uint96"
1961
+ },
1962
+ {
1963
+ "internalType": "NftId",
1964
+ "name": "bundleNftId",
1965
+ "type": "uint96"
1966
+ },
1967
+ {
1968
+ "internalType": "ReferralId",
1969
+ "name": "referralId",
1970
+ "type": "bytes8"
1971
+ },
1972
+ {
1973
+ "internalType": "RiskId",
1974
+ "name": "riskId",
1975
+ "type": "bytes8"
1976
+ },
1977
+ {
1978
+ "internalType": "uint256",
1979
+ "name": "sumInsuredAmount",
1980
+ "type": "uint256"
1981
+ },
1982
+ {
1983
+ "internalType": "uint256",
1984
+ "name": "premiumAmount",
1985
+ "type": "uint256"
1986
+ },
1987
+ {
1988
+ "internalType": "uint256",
1989
+ "name": "premiumPaidAmount",
1990
+ "type": "uint256"
1991
+ },
1992
+ {
1993
+ "internalType": "uint256",
1994
+ "name": "lifetime",
1995
+ "type": "uint256"
1996
+ },
1997
+ {
1998
+ "internalType": "bytes",
1999
+ "name": "applicationData",
2000
+ "type": "bytes"
2001
+ },
2002
+ {
2003
+ "internalType": "bytes",
2004
+ "name": "policyData",
2005
+ "type": "bytes"
2006
+ },
2007
+ {
2008
+ "internalType": "uint16",
2009
+ "name": "claimsCount",
2010
+ "type": "uint16"
2011
+ },
2012
+ {
2013
+ "internalType": "uint16",
2014
+ "name": "openClaimsCount",
2015
+ "type": "uint16"
2016
+ },
2017
+ {
2018
+ "internalType": "uint256",
2019
+ "name": "payoutAmount",
2020
+ "type": "uint256"
2021
+ },
2022
+ {
2023
+ "internalType": "Timestamp",
2024
+ "name": "activatedAt",
2025
+ "type": "uint40"
2026
+ },
2027
+ {
2028
+ "internalType": "Timestamp",
2029
+ "name": "expiredAt",
2030
+ "type": "uint40"
2031
+ },
2032
+ {
2033
+ "internalType": "Timestamp",
2034
+ "name": "closedAt",
2035
+ "type": "uint40"
2036
+ }
2037
+ ],
2038
+ "internalType": "struct IPolicy.PolicyInfo",
2039
+ "name": "policy",
2040
+ "type": "tuple"
2041
+ },
2042
+ {
2043
+ "internalType": "StateId",
2044
+ "name": "newState",
2045
+ "type": "uint8"
2046
+ }
2047
+ ],
2048
+ "name": "updateApplication",
2049
+ "outputs": [],
2050
+ "stateMutability": "nonpayable",
2051
+ "type": "function"
2052
+ },
2053
+ {
2054
+ "inputs": [
2055
+ {
2056
+ "internalType": "NftId",
2057
+ "name": "applicationNftId",
2058
+ "type": "uint96"
2059
+ },
2060
+ {
2061
+ "internalType": "StateId",
2062
+ "name": "newState",
2063
+ "type": "uint8"
2064
+ }
2065
+ ],
2066
+ "name": "updateApplicationState",
2067
+ "outputs": [],
2068
+ "stateMutability": "nonpayable",
2069
+ "type": "function"
2070
+ },
1785
2071
  {
1786
2072
  "inputs": [
1787
2073
  {
@@ -1890,9 +2176,9 @@
1890
2176
  "type": "uint96"
1891
2177
  },
1892
2178
  {
1893
- "internalType": "NumberId",
2179
+ "internalType": "ClaimId",
1894
2180
  "name": "claimId",
1895
- "type": "uint32"
2181
+ "type": "uint16"
1896
2182
  },
1897
2183
  {
1898
2184
  "components": [
@@ -1940,54 +2226,9 @@
1940
2226
  "type": "uint96"
1941
2227
  },
1942
2228
  {
1943
- "internalType": "NumberId",
1944
- "name": "payoutId",
1945
- "type": "uint32"
1946
- },
1947
- {
1948
- "components": [
1949
- {
1950
- "internalType": "NumberId",
1951
- "name": "claimId",
1952
- "type": "uint32"
1953
- },
1954
- {
1955
- "internalType": "uint256",
1956
- "name": "amount",
1957
- "type": "uint256"
1958
- },
1959
- {
1960
- "internalType": "bytes",
1961
- "name": "data",
1962
- "type": "bytes"
1963
- },
1964
- {
1965
- "internalType": "Timestamp",
1966
- "name": "paidAt",
1967
- "type": "uint40"
1968
- }
1969
- ],
1970
- "internalType": "struct IPolicy.PayoutInfo",
1971
- "name": "payout",
1972
- "type": "tuple"
1973
- },
1974
- {
1975
- "internalType": "StateId",
1976
- "name": "newState",
1977
- "type": "uint8"
1978
- }
1979
- ],
1980
- "name": "updateClaim",
1981
- "outputs": [],
1982
- "stateMutability": "nonpayable",
1983
- "type": "function"
1984
- },
1985
- {
1986
- "inputs": [
1987
- {
1988
- "internalType": "NftId",
1989
- "name": "policyNftId",
1990
- "type": "uint96"
2229
+ "internalType": "ClaimId",
2230
+ "name": "claimId",
2231
+ "type": "uint16"
1991
2232
  },
1992
2233
  {
1993
2234
  "internalType": "StateId",
@@ -2036,11 +2277,6 @@
2036
2277
  "name": "distributionFee",
2037
2278
  "type": "tuple"
2038
2279
  },
2039
- {
2040
- "internalType": "bool",
2041
- "name": "isIntercepting",
2042
- "type": "bool"
2043
- },
2044
2280
  {
2045
2281
  "internalType": "address",
2046
2282
  "name": "wallet",
@@ -2084,39 +2320,29 @@
2084
2320
  "inputs": [
2085
2321
  {
2086
2322
  "internalType": "NftId",
2087
- "name": "policyNftId",
2323
+ "name": "nftId",
2088
2324
  "type": "uint96"
2089
2325
  },
2090
- {
2091
- "internalType": "NumberId",
2092
- "name": "payoutId",
2093
- "type": "uint32"
2094
- },
2095
2326
  {
2096
2327
  "components": [
2097
2328
  {
2098
- "internalType": "NumberId",
2099
- "name": "claimId",
2100
- "type": "uint32"
2329
+ "internalType": "DistributorType",
2330
+ "name": "distributorType",
2331
+ "type": "bytes8"
2101
2332
  },
2102
2333
  {
2103
- "internalType": "uint256",
2104
- "name": "amount",
2105
- "type": "uint256"
2334
+ "internalType": "bool",
2335
+ "name": "active",
2336
+ "type": "bool"
2106
2337
  },
2107
2338
  {
2108
2339
  "internalType": "bytes",
2109
2340
  "name": "data",
2110
2341
  "type": "bytes"
2111
- },
2112
- {
2113
- "internalType": "Timestamp",
2114
- "name": "paidAt",
2115
- "type": "uint40"
2116
2342
  }
2117
2343
  ],
2118
- "internalType": "struct IPolicy.PayoutInfo",
2119
- "name": "payout",
2344
+ "internalType": "struct IDistribution.DistributorInfo",
2345
+ "name": "info",
2120
2346
  "type": "tuple"
2121
2347
  },
2122
2348
  {
@@ -2134,7 +2360,7 @@
2134
2360
  "inputs": [
2135
2361
  {
2136
2362
  "internalType": "NftId",
2137
- "name": "policyNftId",
2363
+ "name": "nftId",
2138
2364
  "type": "uint96"
2139
2365
  },
2140
2366
  {
@@ -2151,40 +2377,60 @@
2151
2377
  {
2152
2378
  "inputs": [
2153
2379
  {
2154
- "internalType": "NftId",
2155
- "name": "policyNftId",
2156
- "type": "uint96"
2157
- },
2158
- {
2159
- "internalType": "NumberId",
2160
- "name": "payoutId",
2161
- "type": "uint32"
2380
+ "internalType": "Key32",
2381
+ "name": "distributorKey",
2382
+ "type": "bytes32"
2162
2383
  },
2163
2384
  {
2164
2385
  "components": [
2165
2386
  {
2166
- "internalType": "NumberId",
2167
- "name": "claimId",
2168
- "type": "uint32"
2387
+ "internalType": "string",
2388
+ "name": "name",
2389
+ "type": "string"
2169
2390
  },
2170
2391
  {
2171
- "internalType": "uint256",
2172
- "name": "amount",
2392
+ "internalType": "UFixed",
2393
+ "name": "minDiscountPercentage",
2394
+ "type": "uint256"
2395
+ },
2396
+ {
2397
+ "internalType": "UFixed",
2398
+ "name": "maxDiscountPercentage",
2399
+ "type": "uint256"
2400
+ },
2401
+ {
2402
+ "internalType": "UFixed",
2403
+ "name": "commissionPercentage",
2173
2404
  "type": "uint256"
2174
2405
  },
2406
+ {
2407
+ "internalType": "uint32",
2408
+ "name": "maxReferralCount",
2409
+ "type": "uint32"
2410
+ },
2411
+ {
2412
+ "internalType": "uint32",
2413
+ "name": "maxReferralLifetime",
2414
+ "type": "uint32"
2415
+ },
2416
+ {
2417
+ "internalType": "bool",
2418
+ "name": "allowSelfReferrals",
2419
+ "type": "bool"
2420
+ },
2421
+ {
2422
+ "internalType": "bool",
2423
+ "name": "allowRenewals",
2424
+ "type": "bool"
2425
+ },
2175
2426
  {
2176
2427
  "internalType": "bytes",
2177
2428
  "name": "data",
2178
2429
  "type": "bytes"
2179
- },
2180
- {
2181
- "internalType": "Timestamp",
2182
- "name": "paidAt",
2183
- "type": "uint40"
2184
2430
  }
2185
2431
  ],
2186
- "internalType": "struct IPolicy.PayoutInfo",
2187
- "name": "payout",
2432
+ "internalType": "struct IDistribution.DistributorTypeInfo",
2433
+ "name": "info",
2188
2434
  "type": "tuple"
2189
2435
  },
2190
2436
  {
@@ -2198,6 +2444,24 @@
2198
2444
  "stateMutability": "nonpayable",
2199
2445
  "type": "function"
2200
2446
  },
2447
+ {
2448
+ "inputs": [
2449
+ {
2450
+ "internalType": "Key32",
2451
+ "name": "distributorKey",
2452
+ "type": "bytes32"
2453
+ },
2454
+ {
2455
+ "internalType": "StateId",
2456
+ "name": "newState",
2457
+ "type": "uint8"
2458
+ }
2459
+ ],
2460
+ "name": "updateDistributorTypeState",
2461
+ "outputs": [],
2462
+ "stateMutability": "nonpayable",
2463
+ "type": "function"
2464
+ },
2201
2465
  {
2202
2466
  "inputs": [
2203
2467
  {
@@ -2205,13 +2469,45 @@
2205
2469
  "name": "policyNftId",
2206
2470
  "type": "uint96"
2207
2471
  },
2472
+ {
2473
+ "internalType": "NumberId",
2474
+ "name": "payoutId",
2475
+ "type": "uint32"
2476
+ },
2477
+ {
2478
+ "components": [
2479
+ {
2480
+ "internalType": "ClaimId",
2481
+ "name": "claimId",
2482
+ "type": "uint16"
2483
+ },
2484
+ {
2485
+ "internalType": "uint256",
2486
+ "name": "amount",
2487
+ "type": "uint256"
2488
+ },
2489
+ {
2490
+ "internalType": "bytes",
2491
+ "name": "data",
2492
+ "type": "bytes"
2493
+ },
2494
+ {
2495
+ "internalType": "Timestamp",
2496
+ "name": "paidAt",
2497
+ "type": "uint40"
2498
+ }
2499
+ ],
2500
+ "internalType": "struct IPolicy.PayoutInfo",
2501
+ "name": "payout",
2502
+ "type": "tuple"
2503
+ },
2208
2504
  {
2209
2505
  "internalType": "StateId",
2210
2506
  "name": "newState",
2211
2507
  "type": "uint8"
2212
2508
  }
2213
2509
  ],
2214
- "name": "updateDistributorTypeState",
2510
+ "name": "updatePayout",
2215
2511
  "outputs": [],
2216
2512
  "stateMutability": "nonpayable",
2217
2513
  "type": "function"
@@ -2376,11 +2672,31 @@
2376
2672
  "name": "tokenHandler",
2377
2673
  "type": "address"
2378
2674
  },
2675
+ {
2676
+ "internalType": "bool",
2677
+ "name": "isInterceptingBundleTransfers",
2678
+ "type": "bool"
2679
+ },
2680
+ {
2681
+ "internalType": "bool",
2682
+ "name": "isExternallyManaged",
2683
+ "type": "bool"
2684
+ },
2685
+ {
2686
+ "internalType": "bool",
2687
+ "name": "isVerifyingApplications",
2688
+ "type": "bool"
2689
+ },
2379
2690
  {
2380
2691
  "internalType": "UFixed",
2381
2692
  "name": "collateralizationLevel",
2382
2693
  "type": "uint256"
2383
2694
  },
2695
+ {
2696
+ "internalType": "UFixed",
2697
+ "name": "retentionLevel",
2698
+ "type": "uint256"
2699
+ },
2384
2700
  {
2385
2701
  "components": [
2386
2702
  {
@@ -2432,16 +2748,6 @@
2432
2748
  "name": "performanceFee",
2433
2749
  "type": "tuple"
2434
2750
  },
2435
- {
2436
- "internalType": "bool",
2437
- "name": "isIntercepting",
2438
- "type": "bool"
2439
- },
2440
- {
2441
- "internalType": "bool",
2442
- "name": "isConfirmingApplication",
2443
- "type": "bool"
2444
- },
2445
2751
  {
2446
2752
  "internalType": "address",
2447
2753
  "name": "wallet",
@@ -2659,40 +2965,50 @@
2659
2965
  {
2660
2966
  "inputs": [
2661
2967
  {
2662
- "internalType": "NftId",
2663
- "name": "policyNftId",
2664
- "type": "uint96"
2665
- },
2666
- {
2667
- "internalType": "NumberId",
2668
- "name": "payoutId",
2669
- "type": "uint32"
2968
+ "internalType": "Key32",
2969
+ "name": "referralKey",
2970
+ "type": "bytes32"
2670
2971
  },
2671
2972
  {
2672
2973
  "components": [
2673
2974
  {
2674
- "internalType": "NumberId",
2675
- "name": "claimId",
2676
- "type": "uint32"
2975
+ "internalType": "NftId",
2976
+ "name": "distributorNftId",
2977
+ "type": "uint96"
2677
2978
  },
2678
2979
  {
2679
- "internalType": "uint256",
2680
- "name": "amount",
2980
+ "internalType": "string",
2981
+ "name": "referralCode",
2982
+ "type": "string"
2983
+ },
2984
+ {
2985
+ "internalType": "UFixed",
2986
+ "name": "discountPercentage",
2681
2987
  "type": "uint256"
2682
2988
  },
2683
2989
  {
2684
- "internalType": "bytes",
2685
- "name": "data",
2686
- "type": "bytes"
2990
+ "internalType": "uint32",
2991
+ "name": "maxReferrals",
2992
+ "type": "uint32"
2993
+ },
2994
+ {
2995
+ "internalType": "uint32",
2996
+ "name": "usedReferrals",
2997
+ "type": "uint32"
2687
2998
  },
2688
2999
  {
2689
3000
  "internalType": "Timestamp",
2690
- "name": "paidAt",
3001
+ "name": "expiryAt",
2691
3002
  "type": "uint40"
3003
+ },
3004
+ {
3005
+ "internalType": "bytes",
3006
+ "name": "data",
3007
+ "type": "bytes"
2692
3008
  }
2693
3009
  ],
2694
- "internalType": "struct IPolicy.PayoutInfo",
2695
- "name": "payout",
3010
+ "internalType": "struct IDistribution.ReferralInfo",
3011
+ "name": "referralInfo",
2696
3012
  "type": "tuple"
2697
3013
  },
2698
3014
  {
@@ -2709,9 +3025,9 @@
2709
3025
  {
2710
3026
  "inputs": [
2711
3027
  {
2712
- "internalType": "NftId",
2713
- "name": "policyNftId",
2714
- "type": "uint96"
3028
+ "internalType": "Key32",
3029
+ "name": "referralKey",
3030
+ "type": "bytes32"
2715
3031
  },
2716
3032
  {
2717
3033
  "internalType": "StateId",
@@ -2778,50 +3094,50 @@
2778
3094
  "type": "function"
2779
3095
  }
2780
3096
  ],
2781
- "bytecode": "0x60806040523480156200001157600080fd5b50620000546301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600280546001600160a01b031916331790556200007062000094565b6200007a6200024b565b6200008462000385565b6200008e620005f2565b6200076b565b60dc600090815260036020527fa093975c0a88af8b2bf4799c5b4be14d42fc326c2a331b9f3fb3caecbaa5104f805460ff19166064179055600190600490620000db60dc90565b60ff1660ff1681526020019081526020016000206000620001016200073960201b60201c565b60ff1660ff1681526020019081526020016000206000620001276200074360201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200015b60dc90565b60ff1660ff1681526020019081526020016000206000620001816200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620001a76200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620001db60dc90565b60ff1660ff1681526020019081526020016000206000620002016200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620002276200074860201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e8054606460ff1991821681179092557fd95a7ca9e147710ebdb88338ab2e67ddd90cff367c512f0cd93015f31f62adca8054909116600190811790915560009182526004602052907f083fc81be30b6287dea23aa60f8ffaf268f507cdeac82ed9644e506b59c54ff090620002df606e90565b60ff1660ff1681526020019081526020016000206000620003056200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000339606490565b60ff1660ff16815260200190815260200160002060006200035f6200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620002276200074d60201b60201c565b60d2600090815260036020527f4a3d8eec916edb195dbc0ca8a0f405ba03a38efbebf3c35851ce877e52911169805460ff1916600a179055600190600490620003cc60d290565b60ff1660ff1681526020019081526020016000206000620003f26200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620004186200075760201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200044c60d290565b60ff1660ff1681526020019081526020016000206000620004726200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620004986200075c60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620004cc60d290565b60ff1660ff1681526020019081526020016000206000620004f26200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620005186200076160201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200054c60d290565b60ff1660ff1681526020019081526020016000206000620005726200076160201b60201c565b60ff1660ff1681526020019081526020016000206000620005986200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620005cc60d290565b60ff1660ff1681526020019081526020016000206000620002016200073960201b60201c565b60c8600090815260036020527f4ee5ee9bffee16640c2540fd7f6965fdc66a7e5f780f34dcd70130941a3eae07805460ff191660641790556001906004906200063960c890565b60ff1660ff16815260200190815260200160002060006200065f6200073960201b60201c565b60ff1660ff1681526020019081526020016000206000620006856200074360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620006b960c890565b60ff1660ff1681526020019081526020016000206000620006df6200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620007056200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200033960c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b600060286200073e565b6147cb806200077b6000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c806382f65adb1161022b578063bf1db3f911610130578063e7cd37d4116100b8578063f7bc431c11610087578063f7bc431c146109b3578063f8b648ac146105af578063fb2cb101146109c6578063fe1f18d6146109d7578063fed3d63f146109ea57600080fd5b8063e7cd37d41461094f578063e8951ee614610531578063e9e96c7014610962578063f48016ce146109a057600080fd5b8063cde749f4116100ff578063cde749f414610919578063d2f21a2914610921578063d5b221bd1461054c578063dee3262314610934578063e1033e7d1461094757600080fd5b8063bf1db3f9146108f6578063bf7e214f14610909578063c2f1a2d21461054c578063ca600b1c1461091157600080fd5b80639df0280b116101b3578063a898967511610182578063a8989675146108aa578063a9cea142146108bd578063b68ec146146105af578063bc8d4000146108d0578063bd5947e3146108e357600080fd5b80639df0280b14610531578063a13df2ab146107d3578063a5961b4c146107e6578063a76ee0181461089757600080fd5b80638fb36037116101fa5780638fb360371461076657806391ff6eaa14610787578063976b0a771461079a5780639a960d52146107ad5780639d7421f4146107c057600080fd5b806382f65adb146105af578063893d20e81461073e5780638dc77f42146105315780638eaa6ac01461074657600080fd5b806340529b0f1161033157806360aa32aa116102b957806375b238fc1161028857806375b238fc146106fd57806375c82776146107055780637a4158021461054c5780637a9e5e4b146107185780637cef48421461072b57600080fd5b806360aa32aa146106a657806361f5f420146106b9578063644c45e0146106ca5780636b9bf08b146106f557600080fd5b806354f6127f1161030057806354f6127f146106595780635ab1bd53146106795780635d4345cc146105315780635dfa73db1461068a5780636071a68e1461069357600080fd5b806340529b0f14610531578063422c9d001461062b5780634288121d1461063e578063468a18671461064657600080fd5b80631c45fe7a116103b457806333bb0a971161038357806333bb0a97146105af57806337f135d7146105c257806338a699a4146105df5780633ca7c02a146105f25780633fc5ab981461061857600080fd5b80631c45fe7a1461054c5780631eff4b221461055f5780632781d443146105945780632f61088a1461059c57600080fd5b80630d358181116103fb5780630d358181146104e35780630f526f7d146105095780630fec111c1461051c57806310203d2c14610531578063138461e01461054457600080fd5b806301ffc9a71461042d57806302cd30711461046f57806309648a9d146104945780630b24cf5f146104ce575b600080fd5b61045a61043b366004612ffb565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6007546001600160a01b03165b6040516001600160a01b039091168152602001610466565b6104bc6104a2366004613025565b600090815260056020526040902054610100900460ff1690565b60405160ff9091168152602001610466565b6104e16104dc36600461322f565b6109f2565b005b6104bc6104f1366004613274565b60ff9081166000908152600360205260409020541690565b6104e1610517366004613291565b610a36565b610524610a53565b604051610466919061331a565b6104e161053f366004613291565b610c0c565b6104e1610c21565b6104e161055a3660046134cd565b610e43565b6105867f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610466565b610586600381565b6104e16105aa3660046135bc565b610e84565b6104e16105bd36600461360b565b610f1f565b6105ca600081565b60405163ffffffff9091168152602001610466565b61045a6105ed366004613025565b610f4a565b6106006001600160401b0381565b6040516001600160401b039091168152602001610466565b6104e1610626366004613723565b610fdb565b6104e1610639366004613786565b611001565b61047c61113e565b6105866106543660046137a3565b6111c4565b61066c610667366004613025565b61125d565b60405161046691906137c0565b6001546001600160a01b031661047c565b61060061271081565b6104e16106a13660046137d3565b611302565b6104e16106b43660046138ce565b611328565b6008546001600160a01b031661047c565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610466565b61047c611350565b610600600081565b6104e1610713366004613952565b61136b565b6104e1610726366004613786565b611391565b6104e16107393660046139aa565b611414565b61047c61149e565b610759610754366004613025565b61157b565b6040516104669190613a12565b61076e6116bc565b6040516001600160e01b03199091168152602001610466565b6104e1610795366004613b36565b6116f5565b6104e16107a8366004613b64565b61171d565b6104e16107bb366004613d02565b61185d565b6104e16107ce366004613d49565b611883565b6105866107e13660046137a3565b6118a9565b61088a6107f4366004613025565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260056020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104669190613da0565b6104e16108a5366004613dae565b6118d6565b6104e16108b8366004613df5565b611971565b6104e16108cb366004613e35565b611a62565b6104e16108de366004613e76565b611a8a565b6104e16108f1366004613ebb565b611ab0565b61045a610904366004613274565b611ad8565b61047c611b25565b61047c611b41565b6104bc611b5c565b6104e161092f366004613291565b611bd3565b6104e1610942366004613291565b611bea565b61047c611c01565b6104e161095d366004613efb565b611c1c565b61045a610970366004613df5565b60ff9283166000908152600460209081526040808320948616835293815283822092851682529190915220541690565b6105866109ae366004613f39565b611c44565b6104e16109c1366004613786565b611ccf565b6002546001600160a01b031661047c565b6104e16109e5366004613291565b611dbc565b61047c611dd1565b6109ff335b600036611dec565b610a32610a0d836078611ef2565b82604051602001610a1e9190613f67565b604051602081830303815290604052611f3e565b5050565b610a3f336109f7565b610a32610a4d83608c611ef2565b82611f48565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610afe90613fc7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2a90613fc7565b8015610b775780601f10610b4c57610100808354040283529160200191610b77565b820191906000526020600020905b815481529060010190602001808311610b5a57829003601f168201915b50505050508152505090506040518060e00160405280610b95600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610bf06002546001600160a01b031690565b6001600160a01b03168152602001826060015181525091505090565b610c15336109f7565b610a32610a4d836111c4565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190614001565b15610cee576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610d175760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d849190614001565b610dac576040516372657a5160e01b81526001600160a01b0382166004820152602401610ce5565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a919061401e565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610e4c336109f7565b610e7e610e58856111c4565b83604051602001610e69919061403b565b60405160208183030381529060405283611f52565b50505050565b610e8d336109f7565b6040516355ee627560e01b81526001600160c01b031983166004820152610a329073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061408e565b82604051602001610a1e91906140a7565b610f28336109f7565b610f45610f34846111c4565b82604051602001610a1e919061403b565b505050565b60008181526005602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190614001565b92915050565b610fe4336109f7565b610f45610ff0846118a9565b83604051602001610e6991906140d5565b61100a336109f7565b6008546001600160a01b03161561105a5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610ce5565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190614189565b6001600160a01b03161461111c5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610ce5565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff9091166004820152600360248201526044015b602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190614189565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611239573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061408e565b600081815260056020526040902060010180546060919061127d90613fc7565b80601f01602080910402602001604051908101604052809291908181526020018280546112a990613fc7565b80156112f65780601f106112cb576101008083540402835291602001916112f6565b820191906000526020600020905b8154815290600101906020018083116112d957829003601f168201915b50505050509050919050565b61130b336109f7565b610a32611317836118a9565b82604051602001610a1e91906140d5565b611331336109f7565b610f4561133f84608c611ef2565b83604051602001610e6991906141a6565b6001546000906001600160a01b031663d39e6043608c611155565b611374336109f7565b610e7e611380856111c4565b83604051602001610e699190614266565b3361139a611b25565b6001600160a01b0316816001600160a01b0316146113d55760405162d1953b60e31b81526001600160a01b0382166004820152602401610ce5565b816001600160a01b03163b60000361140b576040516361798f2f60e11b81526001600160a01b0383166004820152602401610ce5565b610a3282611f5d565b61141d336109f7565b6040516355ee627560e01b81526001600160c01b031983166004820152610a329073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561147a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d919061408e565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190614001565b1561156b57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a9060240161117e565b506002546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260056020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161163390613fc7565b80601f016020809104026020016040519081016040528092919081815260200182805461165f90613fc7565b80156116ac5780601f10611681576101008083540402835291602001916116ac565b820191906000526020600020905b81548152906001019060200180831161168f57829003601f168201915b5050505050815250509050919050565b600080516020614776833981519152805460009190600160a01b900460ff166116e65760006116ef565b638fb3603760e01b5b91505090565b6116fe336109f7565b610a3261170c83606e611ef2565b82604051602001610a1e9190614296565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156117625750825b90506000826001600160401b0316600114801561177e5750303b155b90508115801561178c575080155b156117aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117d457845460ff60401b1916600160401b1785555b6117dd89611fbe565b6117fc8888604660008a60405180602001604052806000815250611fd2565b61180c633b03905f60e11b6120a7565b831561185257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611866336109f7565b610f45611872846111c4565b83604051602001610e6991906143c0565b61188c336109f7565b610f45611898846111c4565b82604051602001610a1e9190614266565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6111ed565b6118df336109f7565b6040516355ee627560e01b81526001600160c01b031984166004820152610f459073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561193c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611960919061408e565b83604051602001610e6991906140a7565b60ff8381166000908152600360205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190614001565b15611a0457505050565b60ff808416600090815260046020908152604080832086851684528252808320858516845290915290205416610f4557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610ce5565b611a6b336109f7565b610f45611a7984606e611ef2565b83604051602001610e699190614296565b611a93336109f7565b610a32611a9f836111c4565b82604051602001610a1e91906143c0565b611ab9336109f7565b610f45611ac7846078611ef2565b83604051602001610e699190613f67565b60ff81811660009081526003602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401610f94565b600080516020614776833981519152546001600160a01b031690565b6001546000906001600160a01b031663d39e60436078611155565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611baf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190614501565b611bdc336109f7565b610a32610a4d836078611ef2565b611bf3336109f7565b610a32610a4d83606e611ef2565b6001546000906001600160a01b031663d39e604360d2611155565b611c25336109f7565b610a32611c3383608c611ef2565b82604051602001610a1e91906141a6565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af4158015611ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc8919061408e565b9392505050565b611cd8336109f7565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614189565b6001600160a01b031614611d9a5760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610ce5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611dc5336109f7565b610a32610a4d836118a9565b6001546000906001600160a01b031663d39e604360dc611155565b600080516020614776833981519152600080611e27611e09611b25565b8730611e19600460008a8c61451e565b611e2291614548565b6120cc565b9150915081611eea5763ffffffff811615611ec757825460ff60a01b1916600160a01b178355611e55611b25565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611e8493929190614578565b600060405180830381600087803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b5050845460ff60a01b1916855550611eea9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610ce5565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401611c87565b610a3282826121d8565b610a3282826125fa565b610f4583838361292e565b60008051602061477683398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611fc6612dc9565b611fcf81612e14565b50565b6120136301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b61201d8287612e25565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161208d83826145fe565b5061209e6303fb044760e21b6120a7565b50505050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161213b91906146bd565b600060405180830381855afa9150503d8060008114612176576040519150601f19603f3d011682016040523d82523d6000602084013e61217b565b606091505b509150915081156121cd5760408151106121ad57808060200190518101906121a391906146d9565b90945092506121cd565b60208151106121cd57808060200190518101906121ca9190614001565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190614501565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af41580156122a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c89190614001565b6123145760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610ce5565b600083815260056020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561237d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a19190614001565b6123ed5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610ce5565b334360006123fa85611ad8565b61240557606461241b565b60ff808616600090815260036020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526005602052604090209091506001016124a587826145fe565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253c9190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190614708565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561264c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126709190614001565b6126bc5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610ce5565b600082815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190614001565b6127985760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610ce5565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166127dc4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561286e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128929190614501565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129069190614708565b878686328760405161291e9796959493929190614725565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a49190614001565b6129f05760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610ce5565b600083815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a809190614001565b612acc5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610ce5565b6000858152600560205260409020600101612ae785826145fe565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416612b2c4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be29190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c569190614708565b8786863287604051612c6e9796959493929190614725565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0c9190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d809190614708565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0016125e9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612e1257604051631afcd79f60e31b815260040160405180910390fd5b565b612e1c612dc9565b611fcf81611f5d565b6001600160a01b038216612e7b5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610ce5565b600280546001600160a01b0319166001600160a01b038416179055610a32816001546001600160a01b031615612ed35760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610ce5565b6001600160a01b038116612efa5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003612f305760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ce5565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526316c8f9ff60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015612faa575060408051601f3d908101601f19168201909252612fa791810190614001565b60015b612fd25760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ce5565b80610a325760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610ce5565b60006020828403121561300d57600080fd5b81356001600160e01b031981168114611cc857600080fd5b60006020828403121561303757600080fd5b5035919050565b6001600160601b0381168114611fcf57600080fd5b803561305e8161303e565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561309b5761309b613063565b60405290565b604051608081016001600160401b038111828210171561309b5761309b613063565b60405161012081016001600160401b038111828210171561309b5761309b613063565b60405161018081016001600160401b038111828210171561309b5761309b613063565b60405161020081016001600160401b038111828210171561309b5761309b613063565b6001600160a01b0381168114611fcf57600080fd5b803561305e8161312c565b60006040828403121561315e57600080fd5b613166613079565b9050813581526020820135602082015292915050565b8015158114611fcf57600080fd5b803561305e8161317c565b600060c082840312156131a757600080fd5b60405160a081018181106001600160401b03821117156131c9576131c9613063565b60405290508082356131da8161303e565b815260208301356131ea8161312c565b60208201526131fc846040850161314c565b6040820152608083013561320f8161317c565b606082015260a08301356132228161312c565b6080919091015292915050565b60008060e0838503121561324257600080fd5b823561324d8161303e565b915061325c8460208501613195565b90509250929050565b60ff81168114611fcf57600080fd5b60006020828403121561328657600080fd5b8135611cc881613265565b600080604083850312156132a457600080fd5b82356132af8161303e565b915060208301356132bf81613265565b809150509250929050565b60005b838110156132e55781810151838201526020016132cd565b50506000910152565b600081518084526133068160208601602086016132ca565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161338360c08401826001600160a01b03169052565b5060c083015160e08084015261339d6101008401826132ee565b949350505050565b63ffffffff81168114611fcf57600080fd5b600082601f8301126133c857600080fd5b81356001600160401b03808211156133e2576133e2613063565b604051601f8301601f19908116603f0116810190828211818310171561340a5761340a613063565b8160405283815286602085880101111561342357600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff8116811461305e57600080fd5b60006080828403121561346a57600080fd5b6134726130a1565b9050813561347f816133a5565b81526020828101359082015260408201356001600160401b038111156134a457600080fd5b6134b0848285016133b7565b6040830152506134c260608301613443565b606082015292915050565b600080600080608085870312156134e357600080fd5b84356134ee8161303e565b935060208501356134fe816133a5565b925060408501356001600160401b0381111561351957600080fd5b61352587828801613458565b925050606085013561353681613265565b939692955090935050565b6001600160c01b031981168114611fcf57600080fd5b803561305e81613541565b60006040828403121561357457600080fd5b61357c613079565b905081356135898161303e565b815260208201356001600160401b038111156135a457600080fd5b6135b0848285016133b7565b60208301525092915050565b600080604083850312156135cf57600080fd5b82356135da81613541565b915060208301356001600160401b038111156135f557600080fd5b61360185828601613562565b9150509250929050565b60008060006060848603121561362057600080fd5b833561362b8161303e565b9250602084013561363b816133a5565b915060408401356001600160401b0381111561365657600080fd5b61366286828701613458565b9150509250925092565b6000610140828403121561367f57600080fd5b6136876130c3565b905061369282613053565b81526136a1836020840161314c565b602082015260608201356001600160401b038111156136bf57600080fd5b6136cb848285016133b7565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c0820152610100613707818401613443565b60e08301526137196101208401613443565b9082015292915050565b60008060006060848603121561373857600080fd5b83356137438161303e565b925060208401356001600160401b0381111561375e57600080fd5b61376a8682870161366c565b925050604084013561377b81613265565b809150509250925092565b60006020828403121561379857600080fd5b8135611cc88161312c565b6000602082840312156137b557600080fd5b8135611cc88161303e565b602081526000611cc860208301846132ee565b600080604083850312156137e657600080fd5b82356137f18161303e565b915060208301356001600160401b0381111561380c57600080fd5b6136018582860161366c565b6000610180828403121561382b57600080fd5b6138336130c3565b905061383e82613053565b815261384c60208301613141565b602082015260408201356040820152613868836060840161314c565b606082015261387a8360a0840161314c565b608082015261388c8360e0840161314c565b60a082015261389e610120830161318a565b60c08201526138b0610140830161318a565b60e08201526138c26101608301613141565b61010082015292915050565b60008060006101c084860312156138e457600080fd5b83356138ef8161303e565b92506138fe8560208601613818565b91506101a084013561377b81613265565b60006080828403121561392157600080fd5b6139296130a1565b9050813581526020820135602082015260408201356001600160401b038111156134a457600080fd5b6000806000806080858703121561396857600080fd5b84356139738161303e565b93506020850135613983816133a5565b925060408501356001600160401b0381111561399e57600080fd5b6135258782880161390f565b600080604083850312156139bd57600080fd5b82356132af81613541565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152613a246020820183516139c8565b6000602083015160c08084015261339d60e08401826132ee565b60006102408284031215613a5157600080fd5b613a596130e6565b9050613a6482613141565b8152613a7260208301613141565b6020820152613a8360408301613053565b6040820152613a9460608301613053565b6060820152613aa6836080840161314c565b6080820152613ab88360c0840161314c565b60a0820152610100613acc8482850161314c565b60c0830152610140613ae08582860161314c565b60e0840152613af385610180860161314c565b82840152613b05856101c0860161314c565b610120840152613b18610200850161318a565b9083015250613b2a6102208301613141565b61016082015292915050565b6000806102608385031215613b4a57600080fd5b8235613b558161303e565b915061325c8460208501613a3e565b60008060008060808587031215613b7a57600080fd5b8435613b858161312c565b93506020850135613b958161312c565b92506040850135613ba58161303e565b915060608501356135368161312c565b803561ffff8116811461305e57600080fd5b60006102008284031215613bda57600080fd5b613be2613109565b9050613bed82613053565b8152613bfb60208301613053565b6020820152613c0c60408301613557565b6040820152613c1d60608301613557565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115613c6657600080fd5b613c72868387016133b7565b83850152610120925082850135915080821115613c8e57600080fd5b50613c9b858286016133b7565b828401525050610140613caf818401613bb5565b90820152610160613cc1838201613bb5565b9082015261018082810135908201526101a0613cde818401613443565b908201526101c0613cf0838201613443565b908201526101e0613719838201613443565b600080600060608486031215613d1757600080fd5b8335613d228161303e565b925060208401356001600160401b03811115613d3d57600080fd5b61376a86828701613bc7565b600080600060608486031215613d5e57600080fd5b8335613d698161303e565b92506020840135613d79816133a5565b915060408401356001600160401b03811115613d9457600080fd5b6136628682870161390f565b60a08101610fd582846139c8565b600080600060608486031215613dc357600080fd5b8335613dce81613541565b925060208401356001600160401b03811115613de957600080fd5b61376a86828701613562565b600080600060608486031215613e0a57600080fd5b8335613e1581613265565b92506020840135613e2581613265565b9150604084013561377b81613265565b60008060006102808486031215613e4b57600080fd5b8335613e568161303e565b9250613e658560208601613a3e565b915061026084013561377b81613265565b60008060408385031215613e8957600080fd5b8235613e948161303e565b915060208301356001600160401b03811115613eaf57600080fd5b61360185828601613bc7565b60008060006101008486031215613ed157600080fd5b8335613edc8161303e565b9250613eeb8560208601613195565b915060e084013561377b81613265565b6000806101a08385031215613f0f57600080fd5b8235613f1a8161303e565b915061325c8460208501613818565b60ff1981168114611fcf57600080fd5b60008060408385031215613f4c57600080fd5b8235613f5781613265565b915060208301356132bf81613f29565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c90821680613fdb57607f821691505b602082108103613ffb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561401357600080fd5b8151611cc88161317c565b60006020828403121561403057600080fd5b8151611cc88161303e565b6020815263ffffffff825116602082015260208201516040820152600060408301516080606084015261407160a08401826132ee565b905064ffffffffff60608501511660808401528091505092915050565b6000602082840312156140a057600080fd5b5051919050565b602081526001600160601b0382511660208201526000602083015160408084015261339d60608401826132ee565b602081526140ef6020820183516001600160601b03169052565b6000602083015161410d604084018280518252602090810151910152565b50604083015161014080608085015261412a6101608501836132ee565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e0870151915061417261012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b60006020828403121561419b57600080fd5b8151611cc88161312c565b81516001600160601b031681526020808301516101808301916141d3908401826001600160a01b03169052565b506040830151604083015260608301516141fa606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b0381166101608401525b5092915050565b602081528151602082015260208201516040820152600060408301516080606084015261407160a08401826132ee565b81516001600160a01b03168152610240810160208301516142c260208401826001600160a01b03169052565b5060408301516142dd60408401826001600160601b03169052565b5060608301516142f860608401826001600160601b03169052565b506080830151614315608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c083015161010061434b8185018380518252602090810151910152565b60e0850151915061014061436b8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b03811661022084015261425f565b602081526143da6020820183516001600160601b03169052565b600060208301516143f660408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610200610120818186015261446e6102208601846132ee565b9250808601519050610140601f19868503018187015261448e84836132ee565b9350808701519150506101606144a98187018361ffff169052565b86015190506101806144c08682018361ffff169052565b8601516101a08681019190915286015190506101c06144e78187018364ffffffffff169052565b86015190506101e06141728682018364ffffffffff169052565b60006020828403121561451357600080fd5b8151611cc881613265565b6000808585111561452e57600080fd5b8386111561453b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156145705780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610f4557600081815260208120601f850160051c810160208610156145df5750805b601f850160051c820191505b81811015611eea578281556001016145eb565b81516001600160401b0381111561461757614617613063565b61462b816146258454613fc7565b846145b8565b602080601f83116001811461466057600084156146485750858301515b600019600386901b1c1916600185901b178555611eea565b600085815260208120601f198616915b8281101561468f57888601518255948401946001909101908401614670565b50858210156146ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516146cf8184602087016132ca565b9190910192915050565b600080604083850312156146ec57600080fd5b82516146f78161317c565b60208401519092506132bf816133a5565b60006020828403121561471a57600080fd5b8151611cc881613f29565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122034b8217482059b09fe4cb63c3e8ab360b8bdea8aab3a14620e96a04a31c7f28064736f6c63430008140033",
2782
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104285760003560e01c806382f65adb1161022b578063bf1db3f911610130578063e7cd37d4116100b8578063f7bc431c11610087578063f7bc431c146109b3578063f8b648ac146105af578063fb2cb101146109c6578063fe1f18d6146109d7578063fed3d63f146109ea57600080fd5b8063e7cd37d41461094f578063e8951ee614610531578063e9e96c7014610962578063f48016ce146109a057600080fd5b8063cde749f4116100ff578063cde749f414610919578063d2f21a2914610921578063d5b221bd1461054c578063dee3262314610934578063e1033e7d1461094757600080fd5b8063bf1db3f9146108f6578063bf7e214f14610909578063c2f1a2d21461054c578063ca600b1c1461091157600080fd5b80639df0280b116101b3578063a898967511610182578063a8989675146108aa578063a9cea142146108bd578063b68ec146146105af578063bc8d4000146108d0578063bd5947e3146108e357600080fd5b80639df0280b14610531578063a13df2ab146107d3578063a5961b4c146107e6578063a76ee0181461089757600080fd5b80638fb36037116101fa5780638fb360371461076657806391ff6eaa14610787578063976b0a771461079a5780639a960d52146107ad5780639d7421f4146107c057600080fd5b806382f65adb146105af578063893d20e81461073e5780638dc77f42146105315780638eaa6ac01461074657600080fd5b806340529b0f1161033157806360aa32aa116102b957806375b238fc1161028857806375b238fc146106fd57806375c82776146107055780637a4158021461054c5780637a9e5e4b146107185780637cef48421461072b57600080fd5b806360aa32aa146106a657806361f5f420146106b9578063644c45e0146106ca5780636b9bf08b146106f557600080fd5b806354f6127f1161030057806354f6127f146106595780635ab1bd53146106795780635d4345cc146105315780635dfa73db1461068a5780636071a68e1461069357600080fd5b806340529b0f14610531578063422c9d001461062b5780634288121d1461063e578063468a18671461064657600080fd5b80631c45fe7a116103b457806333bb0a971161038357806333bb0a97146105af57806337f135d7146105c257806338a699a4146105df5780633ca7c02a146105f25780633fc5ab981461061857600080fd5b80631c45fe7a1461054c5780631eff4b221461055f5780632781d443146105945780632f61088a1461059c57600080fd5b80630d358181116103fb5780630d358181146104e35780630f526f7d146105095780630fec111c1461051c57806310203d2c14610531578063138461e01461054457600080fd5b806301ffc9a71461042d57806302cd30711461046f57806309648a9d146104945780630b24cf5f146104ce575b600080fd5b61045a61043b366004612ffb565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6007546001600160a01b03165b6040516001600160a01b039091168152602001610466565b6104bc6104a2366004613025565b600090815260056020526040902054610100900460ff1690565b60405160ff9091168152602001610466565b6104e16104dc36600461322f565b6109f2565b005b6104bc6104f1366004613274565b60ff9081166000908152600360205260409020541690565b6104e1610517366004613291565b610a36565b610524610a53565b604051610466919061331a565b6104e161053f366004613291565b610c0c565b6104e1610c21565b6104e161055a3660046134cd565b610e43565b6105867f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610466565b610586600381565b6104e16105aa3660046135bc565b610e84565b6104e16105bd36600461360b565b610f1f565b6105ca600081565b60405163ffffffff9091168152602001610466565b61045a6105ed366004613025565b610f4a565b6106006001600160401b0381565b6040516001600160401b039091168152602001610466565b6104e1610626366004613723565b610fdb565b6104e1610639366004613786565b611001565b61047c61113e565b6105866106543660046137a3565b6111c4565b61066c610667366004613025565b61125d565b60405161046691906137c0565b6001546001600160a01b031661047c565b61060061271081565b6104e16106a13660046137d3565b611302565b6104e16106b43660046138ce565b611328565b6008546001600160a01b031661047c565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610466565b61047c611350565b610600600081565b6104e1610713366004613952565b61136b565b6104e1610726366004613786565b611391565b6104e16107393660046139aa565b611414565b61047c61149e565b610759610754366004613025565b61157b565b6040516104669190613a12565b61076e6116bc565b6040516001600160e01b03199091168152602001610466565b6104e1610795366004613b36565b6116f5565b6104e16107a8366004613b64565b61171d565b6104e16107bb366004613d02565b61185d565b6104e16107ce366004613d49565b611883565b6105866107e13660046137a3565b6118a9565b61088a6107f4366004613025565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260056020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104669190613da0565b6104e16108a5366004613dae565b6118d6565b6104e16108b8366004613df5565b611971565b6104e16108cb366004613e35565b611a62565b6104e16108de366004613e76565b611a8a565b6104e16108f1366004613ebb565b611ab0565b61045a610904366004613274565b611ad8565b61047c611b25565b61047c611b41565b6104bc611b5c565b6104e161092f366004613291565b611bd3565b6104e1610942366004613291565b611bea565b61047c611c01565b6104e161095d366004613efb565b611c1c565b61045a610970366004613df5565b60ff9283166000908152600460209081526040808320948616835293815283822092851682529190915220541690565b6105866109ae366004613f39565b611c44565b6104e16109c1366004613786565b611ccf565b6002546001600160a01b031661047c565b6104e16109e5366004613291565b611dbc565b61047c611dd1565b6109ff335b600036611dec565b610a32610a0d836078611ef2565b82604051602001610a1e9190613f67565b604051602081830303815290604052611f3e565b5050565b610a3f336109f7565b610a32610a4d83608c611ef2565b82611f48565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610afe90613fc7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2a90613fc7565b8015610b775780601f10610b4c57610100808354040283529160200191610b77565b820191906000526020600020905b815481529060010190602001808311610b5a57829003601f168201915b50505050508152505090506040518060e00160405280610b95600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610bf06002546001600160a01b031690565b6001600160a01b03168152602001826060015181525091505090565b610c15336109f7565b610a32610a4d836111c4565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190614001565b15610cee576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610d175760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d849190614001565b610dac576040516372657a5160e01b81526001600160a01b0382166004820152602401610ce5565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a919061401e565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610e4c336109f7565b610e7e610e58856111c4565b83604051602001610e69919061403b565b60405160208183030381529060405283611f52565b50505050565b610e8d336109f7565b6040516355ee627560e01b81526001600160c01b031983166004820152610a329073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061408e565b82604051602001610a1e91906140a7565b610f28336109f7565b610f45610f34846111c4565b82604051602001610a1e919061403b565b505050565b60008181526005602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190614001565b92915050565b610fe4336109f7565b610f45610ff0846118a9565b83604051602001610e6991906140d5565b61100a336109f7565b6008546001600160a01b03161561105a5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610ce5565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190614189565b6001600160a01b03161461111c5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610ce5565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff9091166004820152600360248201526044015b602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190614189565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611239573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061408e565b600081815260056020526040902060010180546060919061127d90613fc7565b80601f01602080910402602001604051908101604052809291908181526020018280546112a990613fc7565b80156112f65780601f106112cb576101008083540402835291602001916112f6565b820191906000526020600020905b8154815290600101906020018083116112d957829003601f168201915b50505050509050919050565b61130b336109f7565b610a32611317836118a9565b82604051602001610a1e91906140d5565b611331336109f7565b610f4561133f84608c611ef2565b83604051602001610e6991906141a6565b6001546000906001600160a01b031663d39e6043608c611155565b611374336109f7565b610e7e611380856111c4565b83604051602001610e699190614266565b3361139a611b25565b6001600160a01b0316816001600160a01b0316146113d55760405162d1953b60e31b81526001600160a01b0382166004820152602401610ce5565b816001600160a01b03163b60000361140b576040516361798f2f60e11b81526001600160a01b0383166004820152602401610ce5565b610a3282611f5d565b61141d336109f7565b6040516355ee627560e01b81526001600160c01b031983166004820152610a329073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561147a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d919061408e565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190614001565b1561156b57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a9060240161117e565b506002546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260056020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161163390613fc7565b80601f016020809104026020016040519081016040528092919081815260200182805461165f90613fc7565b80156116ac5780601f10611681576101008083540402835291602001916116ac565b820191906000526020600020905b81548152906001019060200180831161168f57829003601f168201915b5050505050815250509050919050565b600080516020614776833981519152805460009190600160a01b900460ff166116e65760006116ef565b638fb3603760e01b5b91505090565b6116fe336109f7565b610a3261170c83606e611ef2565b82604051602001610a1e9190614296565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156117625750825b90506000826001600160401b0316600114801561177e5750303b155b90508115801561178c575080155b156117aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117d457845460ff60401b1916600160401b1785555b6117dd89611fbe565b6117fc8888604660008a60405180602001604052806000815250611fd2565b61180c633b03905f60e11b6120a7565b831561185257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611866336109f7565b610f45611872846111c4565b83604051602001610e6991906143c0565b61188c336109f7565b610f45611898846111c4565b82604051602001610a1e9190614266565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6111ed565b6118df336109f7565b6040516355ee627560e01b81526001600160c01b031984166004820152610f459073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561193c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611960919061408e565b83604051602001610e6991906140a7565b60ff8381166000908152600360205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190614001565b15611a0457505050565b60ff808416600090815260046020908152604080832086851684528252808320858516845290915290205416610f4557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610ce5565b611a6b336109f7565b610f45611a7984606e611ef2565b83604051602001610e699190614296565b611a93336109f7565b610a32611a9f836111c4565b82604051602001610a1e91906143c0565b611ab9336109f7565b610f45611ac7846078611ef2565b83604051602001610e699190613f67565b60ff81811660009081526003602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401610f94565b600080516020614776833981519152546001600160a01b031690565b6001546000906001600160a01b031663d39e60436078611155565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611baf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf9190614501565b611bdc336109f7565b610a32610a4d836078611ef2565b611bf3336109f7565b610a32610a4d83606e611ef2565b6001546000906001600160a01b031663d39e604360d2611155565b611c25336109f7565b610a32611c3383608c611ef2565b82604051602001610a1e91906141a6565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af4158015611ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc8919061408e565b9392505050565b611cd8336109f7565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614189565b6001600160a01b031614611d9a5760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610ce5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611dc5336109f7565b610a32610a4d836118a9565b6001546000906001600160a01b031663d39e604360dc611155565b600080516020614776833981519152600080611e27611e09611b25565b8730611e19600460008a8c61451e565b611e2291614548565b6120cc565b9150915081611eea5763ffffffff811615611ec757825460ff60a01b1916600160a01b178355611e55611b25565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611e8493929190614578565b600060405180830381600087803b158015611e9e57600080fd5b505af1158015611eb2573d6000803e3d6000fd5b5050845460ff60a01b1916855550611eea9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610ce5565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401611c87565b610a3282826121d8565b610a3282826125fa565b610f4583838361292e565b60008051602061477683398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611fc6612dc9565b611fcf81612e14565b50565b6120136301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b61201d8287612e25565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161208d83826145fe565b5061209e6303fb044760e21b6120a7565b50505050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161213b91906146bd565b600060405180830381855afa9150503d8060008114612176576040519150601f19603f3d011682016040523d82523d6000602084013e61217b565b606091505b509150915081156121cd5760408151106121ad57808060200190518101906121a391906146d9565b90945092506121cd565b60208151106121cd57808060200190518101906121ca9190614001565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190614501565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af41580156122a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c89190614001565b6123145760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610ce5565b600083815260056020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561237d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a19190614001565b6123ed5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610ce5565b334360006123fa85611ad8565b61240557606461241b565b60ff808616600090815260036020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526005602052604090209091506001016124a587826145fe565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253c9190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190614708565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561264c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126709190614001565b6126bc5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610ce5565b600082815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190614001565b6127985760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610ce5565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166127dc4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561286e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128929190614501565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129069190614708565b878686328760405161291e9796959493929190614725565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a49190614001565b6129f05760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610ce5565b600083815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a809190614001565b612acc5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610ce5565b6000858152600560205260409020600101612ae785826145fe565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416612b2c4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be29190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c569190614708565b8786863287604051612c6e9796959493929190614725565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0c9190614501565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d809190614708565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0016125e9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612e1257604051631afcd79f60e31b815260040160405180910390fd5b565b612e1c612dc9565b611fcf81611f5d565b6001600160a01b038216612e7b5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610ce5565b600280546001600160a01b0319166001600160a01b038416179055610a32816001546001600160a01b031615612ed35760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610ce5565b6001600160a01b038116612efa5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003612f305760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ce5565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526316c8f9ff60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015612faa575060408051601f3d908101601f19168201909252612fa791810190614001565b60015b612fd25760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ce5565b80610a325760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610ce5565b60006020828403121561300d57600080fd5b81356001600160e01b031981168114611cc857600080fd5b60006020828403121561303757600080fd5b5035919050565b6001600160601b0381168114611fcf57600080fd5b803561305e8161303e565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561309b5761309b613063565b60405290565b604051608081016001600160401b038111828210171561309b5761309b613063565b60405161012081016001600160401b038111828210171561309b5761309b613063565b60405161018081016001600160401b038111828210171561309b5761309b613063565b60405161020081016001600160401b038111828210171561309b5761309b613063565b6001600160a01b0381168114611fcf57600080fd5b803561305e8161312c565b60006040828403121561315e57600080fd5b613166613079565b9050813581526020820135602082015292915050565b8015158114611fcf57600080fd5b803561305e8161317c565b600060c082840312156131a757600080fd5b60405160a081018181106001600160401b03821117156131c9576131c9613063565b60405290508082356131da8161303e565b815260208301356131ea8161312c565b60208201526131fc846040850161314c565b6040820152608083013561320f8161317c565b606082015260a08301356132228161312c565b6080919091015292915050565b60008060e0838503121561324257600080fd5b823561324d8161303e565b915061325c8460208501613195565b90509250929050565b60ff81168114611fcf57600080fd5b60006020828403121561328657600080fd5b8135611cc881613265565b600080604083850312156132a457600080fd5b82356132af8161303e565b915060208301356132bf81613265565b809150509250929050565b60005b838110156132e55781810151838201526020016132cd565b50506000910152565b600081518084526133068160208601602086016132ca565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161338360c08401826001600160a01b03169052565b5060c083015160e08084015261339d6101008401826132ee565b949350505050565b63ffffffff81168114611fcf57600080fd5b600082601f8301126133c857600080fd5b81356001600160401b03808211156133e2576133e2613063565b604051601f8301601f19908116603f0116810190828211818310171561340a5761340a613063565b8160405283815286602085880101111561342357600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff8116811461305e57600080fd5b60006080828403121561346a57600080fd5b6134726130a1565b9050813561347f816133a5565b81526020828101359082015260408201356001600160401b038111156134a457600080fd5b6134b0848285016133b7565b6040830152506134c260608301613443565b606082015292915050565b600080600080608085870312156134e357600080fd5b84356134ee8161303e565b935060208501356134fe816133a5565b925060408501356001600160401b0381111561351957600080fd5b61352587828801613458565b925050606085013561353681613265565b939692955090935050565b6001600160c01b031981168114611fcf57600080fd5b803561305e81613541565b60006040828403121561357457600080fd5b61357c613079565b905081356135898161303e565b815260208201356001600160401b038111156135a457600080fd5b6135b0848285016133b7565b60208301525092915050565b600080604083850312156135cf57600080fd5b82356135da81613541565b915060208301356001600160401b038111156135f557600080fd5b61360185828601613562565b9150509250929050565b60008060006060848603121561362057600080fd5b833561362b8161303e565b9250602084013561363b816133a5565b915060408401356001600160401b0381111561365657600080fd5b61366286828701613458565b9150509250925092565b6000610140828403121561367f57600080fd5b6136876130c3565b905061369282613053565b81526136a1836020840161314c565b602082015260608201356001600160401b038111156136bf57600080fd5b6136cb848285016133b7565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c0820152610100613707818401613443565b60e08301526137196101208401613443565b9082015292915050565b60008060006060848603121561373857600080fd5b83356137438161303e565b925060208401356001600160401b0381111561375e57600080fd5b61376a8682870161366c565b925050604084013561377b81613265565b809150509250925092565b60006020828403121561379857600080fd5b8135611cc88161312c565b6000602082840312156137b557600080fd5b8135611cc88161303e565b602081526000611cc860208301846132ee565b600080604083850312156137e657600080fd5b82356137f18161303e565b915060208301356001600160401b0381111561380c57600080fd5b6136018582860161366c565b6000610180828403121561382b57600080fd5b6138336130c3565b905061383e82613053565b815261384c60208301613141565b602082015260408201356040820152613868836060840161314c565b606082015261387a8360a0840161314c565b608082015261388c8360e0840161314c565b60a082015261389e610120830161318a565b60c08201526138b0610140830161318a565b60e08201526138c26101608301613141565b61010082015292915050565b60008060006101c084860312156138e457600080fd5b83356138ef8161303e565b92506138fe8560208601613818565b91506101a084013561377b81613265565b60006080828403121561392157600080fd5b6139296130a1565b9050813581526020820135602082015260408201356001600160401b038111156134a457600080fd5b6000806000806080858703121561396857600080fd5b84356139738161303e565b93506020850135613983816133a5565b925060408501356001600160401b0381111561399e57600080fd5b6135258782880161390f565b600080604083850312156139bd57600080fd5b82356132af81613541565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152613a246020820183516139c8565b6000602083015160c08084015261339d60e08401826132ee565b60006102408284031215613a5157600080fd5b613a596130e6565b9050613a6482613141565b8152613a7260208301613141565b6020820152613a8360408301613053565b6040820152613a9460608301613053565b6060820152613aa6836080840161314c565b6080820152613ab88360c0840161314c565b60a0820152610100613acc8482850161314c565b60c0830152610140613ae08582860161314c565b60e0840152613af385610180860161314c565b82840152613b05856101c0860161314c565b610120840152613b18610200850161318a565b9083015250613b2a6102208301613141565b61016082015292915050565b6000806102608385031215613b4a57600080fd5b8235613b558161303e565b915061325c8460208501613a3e565b60008060008060808587031215613b7a57600080fd5b8435613b858161312c565b93506020850135613b958161312c565b92506040850135613ba58161303e565b915060608501356135368161312c565b803561ffff8116811461305e57600080fd5b60006102008284031215613bda57600080fd5b613be2613109565b9050613bed82613053565b8152613bfb60208301613053565b6020820152613c0c60408301613557565b6040820152613c1d60608301613557565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115613c6657600080fd5b613c72868387016133b7565b83850152610120925082850135915080821115613c8e57600080fd5b50613c9b858286016133b7565b828401525050610140613caf818401613bb5565b90820152610160613cc1838201613bb5565b9082015261018082810135908201526101a0613cde818401613443565b908201526101c0613cf0838201613443565b908201526101e0613719838201613443565b600080600060608486031215613d1757600080fd5b8335613d228161303e565b925060208401356001600160401b03811115613d3d57600080fd5b61376a86828701613bc7565b600080600060608486031215613d5e57600080fd5b8335613d698161303e565b92506020840135613d79816133a5565b915060408401356001600160401b03811115613d9457600080fd5b6136628682870161390f565b60a08101610fd582846139c8565b600080600060608486031215613dc357600080fd5b8335613dce81613541565b925060208401356001600160401b03811115613de957600080fd5b61376a86828701613562565b600080600060608486031215613e0a57600080fd5b8335613e1581613265565b92506020840135613e2581613265565b9150604084013561377b81613265565b60008060006102808486031215613e4b57600080fd5b8335613e568161303e565b9250613e658560208601613a3e565b915061026084013561377b81613265565b60008060408385031215613e8957600080fd5b8235613e948161303e565b915060208301356001600160401b03811115613eaf57600080fd5b61360185828601613bc7565b60008060006101008486031215613ed157600080fd5b8335613edc8161303e565b9250613eeb8560208601613195565b915060e084013561377b81613265565b6000806101a08385031215613f0f57600080fd5b8235613f1a8161303e565b915061325c8460208501613818565b60ff1981168114611fcf57600080fd5b60008060408385031215613f4c57600080fd5b8235613f5781613265565b915060208301356132bf81613f29565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c90821680613fdb57607f821691505b602082108103613ffb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561401357600080fd5b8151611cc88161317c565b60006020828403121561403057600080fd5b8151611cc88161303e565b6020815263ffffffff825116602082015260208201516040820152600060408301516080606084015261407160a08401826132ee565b905064ffffffffff60608501511660808401528091505092915050565b6000602082840312156140a057600080fd5b5051919050565b602081526001600160601b0382511660208201526000602083015160408084015261339d60608401826132ee565b602081526140ef6020820183516001600160601b03169052565b6000602083015161410d604084018280518252602090810151910152565b50604083015161014080608085015261412a6101608501836132ee565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e0870151915061417261012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b60006020828403121561419b57600080fd5b8151611cc88161312c565b81516001600160601b031681526020808301516101808301916141d3908401826001600160a01b03169052565b506040830151604083015260608301516141fa606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b0381166101608401525b5092915050565b602081528151602082015260208201516040820152600060408301516080606084015261407160a08401826132ee565b81516001600160a01b03168152610240810160208301516142c260208401826001600160a01b03169052565b5060408301516142dd60408401826001600160601b03169052565b5060608301516142f860608401826001600160601b03169052565b506080830151614315608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c083015161010061434b8185018380518252602090810151910152565b60e0850151915061014061436b8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b03811661022084015261425f565b602081526143da6020820183516001600160601b03169052565b600060208301516143f660408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610200610120818186015261446e6102208601846132ee565b9250808601519050610140601f19868503018187015261448e84836132ee565b9350808701519150506101606144a98187018361ffff169052565b86015190506101806144c08682018361ffff169052565b8601516101a08681019190915286015190506101c06144e78187018364ffffffffff169052565b86015190506101e06141728682018364ffffffffff169052565b60006020828403121561451357600080fd5b8151611cc881613265565b6000808585111561452e57600080fd5b8386111561453b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156145705780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610f4557600081815260208120601f850160051c810160208610156145df5750805b601f850160051c820191505b81811015611eea578281556001016145eb565b81516001600160401b0381111561461757614617613063565b61462b816146258454613fc7565b846145b8565b602080601f83116001811461466057600084156146485750858301515b600019600386901b1c1916600185901b178555611eea565b600085815260208120601f198616915b8281101561468f57888601518255948401946001909101908401614670565b50858210156146ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516146cf8184602087016132ca565b9190910192915050565b600080604083850312156146ec57600080fd5b82516146f78161317c565b60208401519092506132bf816133a5565b60006020828403121561471a57600080fd5b8151611cc881613f29565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122034b8217482059b09fe4cb63c3e8ab360b8bdea8aab3a14620e96a04a31c7f28064736f6c63430008140033",
3097
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000040565b62000026620001f7565b6200003062000331565b6200003a6200059e565b62000717565b60dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef0805460ff191660641790556001906003906200008760dc90565b60ff1660ff1681526020019081526020016000206000620000ad620006e560201b60201c565b60ff1660ff1681526020019081526020016000206000620000d3620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200010760dc90565b60ff1660ff16815260200190815260200160002060006200012d620006ef60201b60201c565b60ff1660ff168152602001908152602001600020600062000153620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200018760dc90565b60ff1660ff1681526020019081526020016000206000620001ad620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f460201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a8054606460ff1991821681179092557fa1c69de77e78d12e062170d002ba111ba52c8f452f3b0ca326991b7298fd7aaf8054909116600190811790915560009182526003602052907f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e906200028b606e90565b60ff1660ff1681526020019081526020016000206000620002b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e5606490565b60ff1660ff16815260200190815260200160002060006200030b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f960201b60201c565b60d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d805460ff1916600a1790556001906003906200037860d390565b60ff1660ff16815260200190815260200160002060006200039e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620003c46200070360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620003f860d390565b60ff1660ff16815260200190815260200160002060006200041e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004446200070860201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200047860d390565b60ff1660ff16815260200190815260200160002060006200049e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004c46200070d60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620004f860d390565b60ff1660ff16815260200190815260200160002060006200051e6200070d60201b60201c565b60ff1660ff168152602001908152602001600020600062000544620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200057860d390565b60ff1660ff1681526020019081526020016000206000620001ad620006e560201b60201c565b60c8600090815260026020527fec56eb74d500f9b1bf8f0c5cc42ff5ed51e8d9e3a2ebb6e83a26383f297e0f1e805460ff19166064179055600190600390620005e560c890565b60ff1660ff16815260200190815260200160002060006200060b620006e560201b60201c565b60ff1660ff168152602001908152602001600020600062000631620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200066560c890565b60ff1660ff16815260200190815260200160002060006200068b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620006b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e560c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006ea565b6151f780620007276000396000f3fe608060405234801561001057600080fd5b50600436106104a15760003560e01c806375b238fc1161026d578063b6d7cd6211610151578063e3aa7f05116100ce578063f7bc431c11610092578063f7bc431c14610b3d578063f7c34ee014610b50578063fa145b6d14610b63578063fe1f18d614610b76578063fed3d63f14610b89578063ff0a080514610b9157600080fd5b8063e3aa7f0514610ac6578063e9e96c7014610ad9578063f21de1e8146107b8578063f48016ce14610b17578063f651dcac14610b2a57600080fd5b8063cde749f411610115578063cde749f414610a7d578063cf947d2014610a85578063d2f21a2914610a98578063dee3262314610aab578063e1033e7d14610abe57600080fd5b8063b6d7cd6214610a34578063bf1db3f914610a47578063bf7e214f14610a5a578063ca600b1c14610a62578063ccdcd37f14610a6a57600080fd5b80639a960d52116101ea578063a8989675116101ae578063a8989675146109d3578063a9cea142146109e6578063ada9652e146109f9578063afa5e1301461074c578063b3260e9314610a0e578063b405b76f14610a2157600080fd5b80639a960d52146108415780639df0280b14610582578063a13df2ab146108fc578063a5961b4c1461090f578063a76ee018146109c057600080fd5b8063893d20e811610231578063893d20e81461088d5780638eaa6ac0146108955780638fb36037146108b557806391ff6eaa146108d6578063976b0a77146108e957600080fd5b806375b238fc146108395780637a7afcb0146108415780637a9e5e4b146108545780637b8c388f146108675780637cef48421461087a57600080fd5b80633e35aba81161039457806354f6127f116103115780635dfa73db116102d55780635dfa73db146107c95780636071a68e146107d257806361f5f420146107e5578063644c45e0146107f6578063675393bf1461081e5780636b9bf08b1461083157600080fd5b806354f6127f146107725780635772b10114610792578063588cd281146107a55780635ab1bd53146107b85780635d4345cc1461058257600080fd5b8063447fc48f11610358578063447fc48f14610713578063468a18671461072657806351cf2fd0146107395780635378cd3c1461074c57806354d747a81461075f57600080fd5b80633e35aba8146106bf5780633fc5ab98146106d257806340529b0f146106e5578063422c9d00146106f85780634288121d1461070b57600080fd5b8063214cdb801161042257806336fc697e116103e657806336fc697e1461064e57806337f135d71461065657806338a699a4146106735780633c0d6a41146106865780633ca7c02a1461069957600080fd5b8063214cdb80146105fa5780632781d4431461060d57806327953f481461061557806327bb7a33146106285780632f61088a1461063b57600080fd5b80630fad0eb1116104695780630fad0eb1146105825780630fec111c14610595578063138461e0146105aa5780631b38d5f4146105b25780631eff4b22146105d357600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d5780630d358181146105475780630f526f7d1461056d575b600080fd5b6104d36104b4366004613375565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461339f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b6105356105553660046133c7565b60ff9081166000908152600260205260409020541690565b61058061057b366004613409565b610ba4565b005b610580610590366004613409565b610bc9565b61059d610bde565b6040516104df9190613492565b610580610d8d565b6105c56105c036600461351d565b610f94565b6040519081526020016104df565b6105c57f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610580610608366004613375565b611033565b6105c5600381565b6105806106233660046137dd565b611060565b610580610636366004613843565b611092565b610580610649366004613956565b61112e565b6105806111c9565b61065e600081565b60405163ffffffff90911681526020016104df565b6104d361068136600461339f565b61120f565b610580610694366004613a40565b61129e565b6106a76001600160401b0381565b6040516001600160401b0390911681526020016104df565b6105c56106cd36600461351d565b6112c9565b6105806106e0366004613b88565b6112f6565b6105806106f3366004613409565b611331565b610580610706366004613beb565b611346565b6104f5611483565b610580610721366004613c08565b611516565b6105c561073436600461351d565b611542565b610580610747366004613d0b565b61156f565b61058061075a366004613d52565b611595565b61058061076d366004613e33565b6115a8565b61078561078036600461339f565b6115c6565b6040516104df9190613e6f565b6105806107a0366004613ec5565b61166b565b6105806107b3366004613fef565b611691565b6001546001600160a01b03166104f5565b6106a761271081565b6105806107e0366004614030565b6116b9565b6007546001600160a01b03166104f5565b600080516020615182833981519152546040516001600160601b0390911681526020016104df565b61058061082c366004613beb565b6116df565b6104f56117eb565b6106a7600081565b61058061084f3660046141b0565b611814565b610580610862366004613beb565b61183a565b6105c561087536600461351d565b6118bd565b6105806108883660046141f7565b6118ea565b6104f5611974565b6108a86108a336600461339f565b611aab565b6040516104df919061425f565b6108bd611bec565b6040516001600160e01b031990911681526020016104df565b6105806108e4366004614383565b611c24565b6105806108f73660046143ba565b611c4c565b6105c561090a36600461351d565b611d8c565b6109b361091d36600461339f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061440b565b6105806109ce366004614419565b611db9565b6105806109e1366004614460565b611e54565b6105806109f43660046144a0565b611f45565b6105c560008051602061518283398151915281565b610580610a1c3660046144e1565b611f6d565b610580610a2f36600461451f565b611f8b565b610580610a42366004614564565b611fb1565b6104d3610a553660046133c7565b611fc6565b6104f5612013565b6104f561202f565b610580610a783660046145f0565b612058565b610535612080565b610580610a9336600461462f565b6120f7565b610580610aa6366004613409565b612115565b610580610ab9366004613409565b61212c565b6104f5612143565b610580610ad436600461466d565b61216c565b6104d3610ae7366004614460565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b6105c5610b253660046146ab565b612194565b610580610b383660046146d9565b61221f565b610580610b4b366004613beb565b612247565b610580610b5e366004614706565b612334565b610580610b71366004614734565b6123ab565b610580610b84366004613409565b6123d1565b6104f56123e6565b610580610b9f36600461478b565b61240f565b610bb1335b600036612435565b610bc5610bbf83608c61253b565b82612587565b5050565b610bd233610ba9565b610bc5610bbf83611542565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610c89906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb5906147d0565b8015610d025780601f10610cd757610100808354040283529160200191610d02565b820191906000526020600020905b815481529060010190602001808311610ce557829003601f168201915b50505050508152505090506040518060e00160405280610d20600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610d71611974565b6001600160a01b03168152602001826060015181525091505090565b600060008051602061518283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e20919061480a565b15610e515780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610e646001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061480a565b610ef85760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610e48565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190614827565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614844565b92915050565b61103b612591565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61106933610ba9565b610bc5828260405160200161107e919061485d565b6040516020818303038152906040526125dc565b61109a612591565b6110a48287612334565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111148382614953565b506111256303fb044760e21b611033565b50505050505050565b61113733610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610bc59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614844565b8260405160200161107e9190614a12565b6111d1612591565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d919061480a565b6112a733610ba9565b6112c46112b384611542565b8260405160200161107e9190614a40565b505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b0384166078610fbd565b6112ff33610ba9565b6112c461130b84611d8c565b8360405160200161131c9190614a91565b604051602081830303815290604052836125e6565b61133a33610ba9565b610bc5610bbf836118bd565b61134f33610ba9565b6007546001600160a01b03161561139f5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610e48565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140b9190614b45565b6001600160a01b0316146114615760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610e48565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006114976001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa1580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190614b45565b905090565b61151f33610ba9565b61153c61152b85611542565b8360405160200161131c9190614a40565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d3610fbd565b61157833610ba9565b6112c4611584846118bd565b8360405160200161131c9190614b62565b61159e33610ba9565b610bc58282612587565b6115b133610ba9565b610bc5828260405160200161107e9190614b9f565b60008181526004602052604090206001018054606091906115e6906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611612906147d0565b801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b50505050509050919050565b61167433610ba9565b61153c61168085611542565b8360405160200161131c9190614c3a565b61169a33610ba9565b6112c46116a884608c61253b565b8360405160200161131c9190614c6a565b6116c233610ba9565b610bc56116ce83611d8c565b8260405160200161107e9190614a91565b6116e7612591565b806001600160a01b03163b60000361171d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e48565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611797575060408051601f3d908101601f191682019092526117949181019061480a565b60015b6117bf5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e48565b80610bc55760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e48565b50565b60006117ff6001546001600160a01b031690565b6001600160a01b031663d39e6043608c6114a8565b61181d33610ba9565b6112c461182984611542565b8360405160200161131c9190614d57565b33611843612013565b6001600160a01b0316816001600160a01b03161461187e5760405162d1953b60e31b81526001600160a01b0382166004820152602401610e48565b816001600160a01b03163b6000036118b4576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e48565b610bc5826125f1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a610fbd565b6118f333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610bc59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbf9190614844565b60008060008051602061518283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a08919061480a565b15611a95576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8f9190614b45565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b63906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8f906147d0565b8015611bdc5780601f10611bb157610100808354040283529160200191611bdc565b820191906000526020600020905b815481529060010190602001808311611bbf57829003601f168201915b5050505050815250509050919050565b6000805160206151a2833981519152805460009190600160a01b900460ff16611c16576000611a8f565b638fb3603760e01b91505090565b611c2d33610ba9565b610bc5611c3b83606e61253b565b8260405160200161107e9190614e98565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611c915750825b90506000826001600160401b03166001148015611cad5750303b155b905081158015611cbb575080155b15611cd95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d0357845460ff60401b1916600160401b1785555b611d0c89612652565b611d2b8888604660008a60405180602001604052806000815250611092565b611d3b6302994e4760e61b611033565b8315611d8157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc610fbd565b611dc233610ba9565b6040516355ee627560e01b81526001600160c01b0319841660048201526112c49073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190614844565b8360405160200161131c9190614a12565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edd919061480a565b15611ee757505050565b60ff8084166000908152600360209081526040808320868516845282528083208585168452909152902054166112c457604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e48565b611f4e33610ba9565b6112c4611f5c84606e61253b565b8360405160200161131c9190614e98565b611f7633610ba9565b6112c4838360405160200161131c919061485d565b611f9433610ba9565b610bc5611fa0836118bd565b8260405160200161107e9190614b62565b611fba33610ba9565b6112c4610bbf84611542565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf9060240161125d565b6000805160206151a2833981519152546001600160a01b031690565b60006120436001546001600160a01b031690565b6001600160a01b031663d39e604360786114a8565b61206133610ba9565b6112c461206f84607861253b565b8360405160200161131c9190614fc2565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af41580156120d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190615012565b61210033610ba9565b6112c4838360405160200161131c9190614b9f565b61211e33610ba9565b610bc5610bbf83607861253b565b61213533610ba9565b610bc5610bbf83606e61253b565b60006121576001546001600160a01b031690565b6001600160a01b031663d39e604360d36114a8565b61217533610ba9565b610bc561218383608c61253b565b8260405160200161107e9190614c6a565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122189190614844565b9392505050565b61222833610ba9565b610bc561223683607861253b565b8260405160200161107e9190614fc2565b61225033610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015612298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bc9190614b45565b6001600160a01b0316146123125760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610e48565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61233c612591565b612345816116df565b61234d6111c9565b6001600160a01b0382166123745760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518283398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123b433610ba9565b6112c46123c084611542565b8260405160200161107e9190614c3a565b6123da33610ba9565b610bc5610bbf83611d8c565b60006123fa6001546001600160a01b031690565b6001600160a01b031663d39e604360dc6114a8565b61241833610ba9565b610bc561242483611542565b8260405160200161107e9190614d57565b6000805160206151a2833981519152600080612470612452612013565b8730612462600460008a8c61502f565b61246b91615059565b612663565b91509150816125335763ffffffff81161561251057825460ff60a01b1916600160a01b17835561249e612013565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124cd93929190615089565b600060405180830381600087803b1580156124e757600080fd5b505af11580156124fb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125339050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610e48565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121d7565b610bc5828261276f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125da57604051631afcd79f60e31b815260040160405180910390fd5b565b610bc58282612aa3565b6112c4838383612ec9565b6000805160206151a283398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61265a612591565b6117e881613364565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126d291906150c9565b600060405180830381855afa9150503d806000811461270d576040519150601f19603f3d011682016040523d82523d6000602084013e612712565b606091505b50915091508115612764576040815110612744578080602001905181019061273a91906150e5565b9094509250612764565b60208151106127645780806020019051810190612761919061480a565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e5919061480a565b6128315760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e48565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561289d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c1919061480a565b61290d5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e48565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166129514390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a079190615012565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b9190615114565b8786863287604051612a939796959493929190615131565b60405180910390a1505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a9190615012565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b93919061480a565b612bdf5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e48565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c70919061480a565b612cbc5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e48565b33436000612cc985611fc6565b612cd4576064612cea565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612d748782614953565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0b9190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7f9190615114565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3f919061480a565b612f8b5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e48565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b919061480a565b6130675760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e48565b60008581526004602052604090206001016130828582614953565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166130c74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317d9190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156131cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f19190615114565b87868632876040516132099796959493929190615131565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a79190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156132f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331b9190615114565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001612eb8565b61336c612591565b6117e8816125f1565b60006020828403121561338757600080fd5b81356001600160e01b03198116811461221857600080fd5b6000602082840312156133b157600080fd5b5035919050565b60ff811681146117e857600080fd5b6000602082840312156133d957600080fd5b8135612218816133b8565b6001600160601b03811681146117e857600080fd5b8035613404816133e4565b919050565b6000806040838503121561341c57600080fd5b8235613427816133e4565b91506020830135613437816133b8565b809150509250929050565b60005b8381101561345d578181015183820152602001613445565b50506000910152565b6000815180845261347e816020860160208601613442565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516134fb60c08401826001600160a01b03169052565b5060c083015160e080840152613515610100840182613466565b949350505050565b60006020828403121561352f57600080fd5b8135612218816133e4565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156135735761357361353a565b60405290565b604080519081016001600160401b03811182821017156135735761357361353a565b604051608081016001600160401b03811182821017156135735761357361353a565b60405160e081016001600160401b03811182821017156135735761357361353a565b60405161016081016001600160401b03811182821017156135735761357361353a565b60405161020081016001600160401b03811182821017156135735761357361353a565b60405161018081016001600160401b03811182821017156135735761357361353a565b600082601f83011261365957600080fd5b81356001600160401b03808211156136735761367361353a565b604051601f8301601f19908116603f0116810190828211818310171561369b5761369b61353a565b816040528381528660208588010111156136b457600080fd5b836020870160208301376000602085830101528094505050505092915050565b63ffffffff811681146117e857600080fd5b8035613404816136d4565b80151581146117e857600080fd5b8035613404816136f1565b6000610120828403121561371d57600080fd5b613725613550565b905081356001600160401b038082111561373e57600080fd5b61374a85838601613648565b8352602084013560208401526040840135604084015260608401356060840152613776608085016136e6565b608084015261378760a085016136e6565b60a084015261379860c085016136ff565b60c08401526137a960e085016136ff565b60e0840152610100915081840135818111156137c457600080fd5b6137d086828701613648565b8385015250505092915050565b600080604083850312156137f057600080fd5b8235915060208301356001600160401b0381111561380d57600080fd5b6138198582860161370a565b9150509250929050565b6001600160a01b03811681146117e857600080fd5b803561340481613823565b60008060008060008060c0878903121561385c57600080fd5b863561386781613823565b95506020870135613877816133e4565b94506040870135613887816133b8565b93506060870135613897816136f1565b925060808701356138a781613823565b915060a08701356001600160401b038111156138c257600080fd5b6138ce89828a01613648565b9150509295509295509295565b6001600160c01b0319811681146117e857600080fd5b8035613404816138db565b60006040828403121561390e57600080fd5b613916613579565b90508135613923816133e4565b815260208201356001600160401b0381111561393e57600080fd5b61394a84828501613648565b60208301525092915050565b6000806040838503121561396957600080fd5b8235613974816138db565b915060208301356001600160401b0381111561398f57600080fd5b613819858286016138fc565b61ffff811681146117e857600080fd5b80356134048161399b565b803564ffffffffff8116811461340457600080fd5b6000608082840312156139dd57600080fd5b6139e561359b565b905081356139f28161399b565b81526020828101359082015260408201356001600160401b03811115613a1757600080fd5b613a2384828501613648565b604083015250613a35606083016139b6565b606082015292915050565b600080600060608486031215613a5557600080fd5b8335613a60816133e4565b92506020840135613a70816136d4565b915060408401356001600160401b03811115613a8b57600080fd5b613a97868287016139cb565b9150509250925092565b600060408284031215613ab357600080fd5b613abb613579565b9050813581526020820135602082015292915050565b60006101408284031215613ae457600080fd5b613aec613550565b9050613af7826133f9565b8152613b068360208401613aa1565b602082015260608201356001600160401b03811115613b2457600080fd5b613b3084828501613648565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c0820152610100613b6c8184016139b6565b60e0830152613b7e61012084016139b6565b9082015292915050565b600080600060608486031215613b9d57600080fd5b8335613ba8816133e4565b925060208401356001600160401b03811115613bc357600080fd5b613bcf86828701613ad1565b9250506040840135613be0816133b8565b809150509250925092565b600060208284031215613bfd57600080fd5b813561221881613823565b60008060008060808587031215613c1e57600080fd5b8435613c29816133e4565b93506020850135613c39816136d4565b925060408501356001600160401b03811115613c5457600080fd5b613c60878288016139cb565b9250506060850135613c71816133b8565b939692955090935050565b600060608284031215613c8e57600080fd5b604051606081016001600160401b038282108183111715613cb157613cb161353a565b8160405282935084359150613cc5826138db565b908252602084013590613cd7826136f1565b8160208401526040850135915080821115613cf157600080fd5b50613cfe85828601613648565b6040830152505092915050565b600080600060608486031215613d2057600080fd5b8335613d2b816133e4565b925060208401356001600160401b03811115613d4657600080fd5b613bcf86828701613c7c565b60008060408385031215613d6557600080fd5b823591506020830135613437816133b8565b600060e08284031215613d8957600080fd5b613d916135bd565b9050613d9c826133f9565b815260208201356001600160401b0380821115613db857600080fd5b613dc485838601613648565b602084015260408401356040840152613ddf606085016136e6565b6060840152613df0608085016136e6565b6080840152613e0160a085016139b6565b60a084015260c0840135915080821115613e1a57600080fd5b50613e2784828501613648565b60c08301525092915050565b60008060408385031215613e4657600080fd5b8235915060208301356001600160401b03811115613e6357600080fd5b61381985828601613d77565b6020815260006122186020830184613466565b600060808284031215613e9457600080fd5b613e9c61359b565b9050813581526020820135602082015260408201356001600160401b03811115613a1757600080fd5b60008060008060808587031215613edb57600080fd5b8435613ee6816133e4565b93506020850135613ef68161399b565b925060408501356001600160401b03811115613f1157600080fd5b613c6087828801613e82565b60006101c08284031215613f3057600080fd5b613f386135df565b9050613f43826133f9565b8152613f5160208301613838565b6020820152613f62604083016136ff565b6040820152613f73606083016136ff565b6060820152613f84608083016136ff565b608082015260a082013560a082015260c082013560c0820152613faa8360e08401613aa1565b60e0820152610120613fbe84828501613aa1565b610100830152613fd2846101608501613aa1565b90820152613fe36101a08301613838565b61014082015292915050565b6000806000610200848603121561400557600080fd5b8335614010816133e4565b925061401f8560208601613f1d565b91506101e0840135613be0816133b8565b6000806040838503121561404357600080fd5b823561404e816133e4565b915060208301356001600160401b0381111561406957600080fd5b61381985828601613ad1565b6000610200828403121561408857600080fd5b614090613602565b905061409b826133f9565b81526140a9602083016133f9565b60208201526140ba604083016138f1565b60408201526140cb606083016138f1565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b038082111561411457600080fd5b61412086838701613648565b8385015261012092508285013591508082111561413c57600080fd5b5061414985828601613648565b82840152505061014061415d8184016139ab565b9082015261016061416f8382016139ab565b9082015261018082810135908201526101a061418c8184016139b6565b908201526101c061419e8382016139b6565b908201526101e0613b7e8382016139b6565b6000806000606084860312156141c557600080fd5b83356141d0816133e4565b925060208401356001600160401b038111156141eb57600080fd5b613bcf86828701614075565b6000806040838503121561420a57600080fd5b8235613427816138db565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152614271602082018351614215565b6000602083015160c08084015261351560e0840182613466565b6000610240828403121561429e57600080fd5b6142a6613625565b90506142b182613838565b81526142bf60208301613838565b60208201526142d0604083016133f9565b60408201526142e1606083016133f9565b60608201526142f38360808401613aa1565b60808201526143058360c08401613aa1565b60a082015261010061431984828501613aa1565b60c083015261014061432d85828601613aa1565b60e0840152614340856101808601613aa1565b82840152614352856101c08601613aa1565b61012084015261436561020085016136ff565b90830152506143776102208301613838565b61016082015292915050565b600080610260838503121561439757600080fd5b82356143a2816133e4565b91506143b1846020850161428b565b90509250929050565b600080600080608085870312156143d057600080fd5b84356143db81613823565b935060208501356143eb81613823565b925060408501356143fb816133e4565b91506060850135613c7181613823565b60a0810161102d8284614215565b60008060006060848603121561442e57600080fd5b8335614439816138db565b925060208401356001600160401b0381111561445457600080fd5b613bcf868287016138fc565b60008060006060848603121561447557600080fd5b8335614480816133b8565b92506020840135614490816133b8565b91506040840135613be0816133b8565b600080600061028084860312156144b657600080fd5b83356144c1816133e4565b92506144d0856020860161428b565b9150610260840135613be0816133b8565b6000806000606084860312156144f657600080fd5b8335925060208401356001600160401b0381111561451357600080fd5b613bcf8682870161370a565b6000806040838503121561453257600080fd5b823561453d816133e4565b915060208301356001600160401b0381111561455857600080fd5b61381985828601613c7c565b60008060006060848603121561457957600080fd5b8335614584816133e4565b925060208401356144908161399b565b600060a082840312156145a657600080fd5b6145ae61359b565b905081356145bb816133e4565b815260208201356145cb81613823565b60208201526145dd8360408401613aa1565b60408201526080820135613a3581613823565b600080600060e0848603121561460557600080fd5b8335614610816133e4565b925061461f8560208601614594565b915060c0840135613be0816133b8565b60008060006060848603121561464457600080fd5b8335925060208401356001600160401b0381111561466157600080fd5b613bcf86828701613d77565b6000806101e0838503121561468157600080fd5b823561468c816133e4565b91506143b18460208501613f1d565b60ff19811681146117e857600080fd5b600080604083850312156146be57600080fd5b82356146c9816133b8565b915060208301356134378161469b565b60008060c083850312156146ec57600080fd5b82356146f7816133e4565b91506143b18460208501614594565b6000806040838503121561471957600080fd5b823561472481613823565b9150602083013561343781613823565b60008060006060848603121561474957600080fd5b8335614754816133e4565b925060208401356147648161399b565b915060408401356001600160401b0381111561477f57600080fd5b613a9786828701613e82565b6000806040838503121561479e57600080fd5b82356147a9816133e4565b915060208301356001600160401b038111156147c457600080fd5b61381985828601614075565b600181811c908216806147e457607f821691505b60208210810361480457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561481c57600080fd5b8151612218816136f1565b60006020828403121561483957600080fd5b8151612218816133e4565b60006020828403121561485657600080fd5b5051919050565b602081526000825161012080602085015261487c610140850183613466565b915060208501516040850152604085015160608501526060850151608085015260808501516148b360a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e08501516101006148e98187018315159052565b860151858403601f19018387015290506149038382613466565b9695505050505050565b601f8211156112c457600081815260208120601f850160051c810160208610156149345750805b601f850160051c820191505b8181101561253357828155600101614940565b81516001600160401b0381111561496c5761496c61353a565b6149808161497a84546147d0565b8461490d565b602080601f8311600181146149b5576000841561499d5750858301515b600019600386901b1c1916600185901b178555612533565b600085815260208120601f198616915b828110156149e4578886015182559484019460019091019084016149c5565b5085821015614a025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b038251166020820152600060208301516040808401526135156060840182613466565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614a7460a0840182613466565b905064ffffffffff60608501511660808401528091505092915050565b60208152614aab6020820183516001600160601b03169052565b60006020830151614ac9604084018280518252602090810151910152565b506040830151610140806080850152614ae6610160850183613466565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e08701519150614b2e61012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b600060208284031215614b5757600080fd5b815161221881613823565b602081526001600160401b0360c01b8251166020820152602082015115156040820152600060408301516060808401526135156080840182613466565b602081526001600160601b0382511660208201526000602083015160e06040840152614bcf610100840182613466565b90506040840151606084015263ffffffff60608501511660808401526080840151614c0260a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614c318282613466565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614a7460a0840182613466565b81516001600160601b031681526101c081016020830151614c9660208401826001600160a01b03169052565b506040830151614caa604084018215159052565b506060830151614cbe606084018215159052565b506080830151614cd2608084018215159052565b5060a083015160a083015260c083015160c083015260e0830151614d0360e084018280518252602090810151910152565b50610100830151610120614d238185018380518252602090810151910152565b840151805161016085015260200151610180840152506101408301516001600160a01b0381166101a08401525b5092915050565b60208152614d716020820183516001600160601b03169052565b60006020830151614d8d60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506102006101208181860152614e05610220860184613466565b9250808601519050610140601f198685030181870152614e258483613466565b935080870151915050610160614e408187018361ffff169052565b8601519050610180614e578682018361ffff169052565b8601516101a08681019190915286015190506101c0614e7e8187018364ffffffffff169052565b86015190506101e0614b2e8682018364ffffffffff169052565b81516001600160a01b0316815261024081016020830151614ec460208401826001600160a01b03169052565b506040830151614edf60408401826001600160601b03169052565b506060830151614efa60608401826001600160601b03169052565b506080830151614f17608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f4d8185018380518252602090810151910152565b60e08501519150610140614f6d8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152614d50565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502457600080fd5b8151612218816133b8565b6000808585111561503f57600080fd5b8386111561504c57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150815780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150db818460208701613442565b9190910192915050565b600080604083850312156150f857600080fd5b8251615103816136f1565b6020840151909250613437816136d4565b60006020828403121561512657600080fd5b81516122188161469b565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212204d3e89f426a65af507532cf22bddcebc0901dfb445b7d9bb99081818fa42097764736f6c63430008140033",
3098
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104a15760003560e01c806375b238fc1161026d578063b6d7cd6211610151578063e3aa7f05116100ce578063f7bc431c11610092578063f7bc431c14610b3d578063f7c34ee014610b50578063fa145b6d14610b63578063fe1f18d614610b76578063fed3d63f14610b89578063ff0a080514610b9157600080fd5b8063e3aa7f0514610ac6578063e9e96c7014610ad9578063f21de1e8146107b8578063f48016ce14610b17578063f651dcac14610b2a57600080fd5b8063cde749f411610115578063cde749f414610a7d578063cf947d2014610a85578063d2f21a2914610a98578063dee3262314610aab578063e1033e7d14610abe57600080fd5b8063b6d7cd6214610a34578063bf1db3f914610a47578063bf7e214f14610a5a578063ca600b1c14610a62578063ccdcd37f14610a6a57600080fd5b80639a960d52116101ea578063a8989675116101ae578063a8989675146109d3578063a9cea142146109e6578063ada9652e146109f9578063afa5e1301461074c578063b3260e9314610a0e578063b405b76f14610a2157600080fd5b80639a960d52146108415780639df0280b14610582578063a13df2ab146108fc578063a5961b4c1461090f578063a76ee018146109c057600080fd5b8063893d20e811610231578063893d20e81461088d5780638eaa6ac0146108955780638fb36037146108b557806391ff6eaa146108d6578063976b0a77146108e957600080fd5b806375b238fc146108395780637a7afcb0146108415780637a9e5e4b146108545780637b8c388f146108675780637cef48421461087a57600080fd5b80633e35aba81161039457806354f6127f116103115780635dfa73db116102d55780635dfa73db146107c95780636071a68e146107d257806361f5f420146107e5578063644c45e0146107f6578063675393bf1461081e5780636b9bf08b1461083157600080fd5b806354f6127f146107725780635772b10114610792578063588cd281146107a55780635ab1bd53146107b85780635d4345cc1461058257600080fd5b8063447fc48f11610358578063447fc48f14610713578063468a18671461072657806351cf2fd0146107395780635378cd3c1461074c57806354d747a81461075f57600080fd5b80633e35aba8146106bf5780633fc5ab98146106d257806340529b0f146106e5578063422c9d00146106f85780634288121d1461070b57600080fd5b8063214cdb801161042257806336fc697e116103e657806336fc697e1461064e57806337f135d71461065657806338a699a4146106735780633c0d6a41146106865780633ca7c02a1461069957600080fd5b8063214cdb80146105fa5780632781d4431461060d57806327953f481461061557806327bb7a33146106285780632f61088a1461063b57600080fd5b80630fad0eb1116104695780630fad0eb1146105825780630fec111c14610595578063138461e0146105aa5780631b38d5f4146105b25780631eff4b22146105d357600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d5780630d358181146105475780630f526f7d1461056d575b600080fd5b6104d36104b4366004613375565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461339f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b6105356105553660046133c7565b60ff9081166000908152600260205260409020541690565b61058061057b366004613409565b610ba4565b005b610580610590366004613409565b610bc9565b61059d610bde565b6040516104df9190613492565b610580610d8d565b6105c56105c036600461351d565b610f94565b6040519081526020016104df565b6105c57f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610580610608366004613375565b611033565b6105c5600381565b6105806106233660046137dd565b611060565b610580610636366004613843565b611092565b610580610649366004613956565b61112e565b6105806111c9565b61065e600081565b60405163ffffffff90911681526020016104df565b6104d361068136600461339f565b61120f565b610580610694366004613a40565b61129e565b6106a76001600160401b0381565b6040516001600160401b0390911681526020016104df565b6105c56106cd36600461351d565b6112c9565b6105806106e0366004613b88565b6112f6565b6105806106f3366004613409565b611331565b610580610706366004613beb565b611346565b6104f5611483565b610580610721366004613c08565b611516565b6105c561073436600461351d565b611542565b610580610747366004613d0b565b61156f565b61058061075a366004613d52565b611595565b61058061076d366004613e33565b6115a8565b61078561078036600461339f565b6115c6565b6040516104df9190613e6f565b6105806107a0366004613ec5565b61166b565b6105806107b3366004613fef565b611691565b6001546001600160a01b03166104f5565b6106a761271081565b6105806107e0366004614030565b6116b9565b6007546001600160a01b03166104f5565b600080516020615182833981519152546040516001600160601b0390911681526020016104df565b61058061082c366004613beb565b6116df565b6104f56117eb565b6106a7600081565b61058061084f3660046141b0565b611814565b610580610862366004613beb565b61183a565b6105c561087536600461351d565b6118bd565b6105806108883660046141f7565b6118ea565b6104f5611974565b6108a86108a336600461339f565b611aab565b6040516104df919061425f565b6108bd611bec565b6040516001600160e01b031990911681526020016104df565b6105806108e4366004614383565b611c24565b6105806108f73660046143ba565b611c4c565b6105c561090a36600461351d565b611d8c565b6109b361091d36600461339f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061440b565b6105806109ce366004614419565b611db9565b6105806109e1366004614460565b611e54565b6105806109f43660046144a0565b611f45565b6105c560008051602061518283398151915281565b610580610a1c3660046144e1565b611f6d565b610580610a2f36600461451f565b611f8b565b610580610a42366004614564565b611fb1565b6104d3610a553660046133c7565b611fc6565b6104f5612013565b6104f561202f565b610580610a783660046145f0565b612058565b610535612080565b610580610a9336600461462f565b6120f7565b610580610aa6366004613409565b612115565b610580610ab9366004613409565b61212c565b6104f5612143565b610580610ad436600461466d565b61216c565b6104d3610ae7366004614460565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b6105c5610b253660046146ab565b612194565b610580610b383660046146d9565b61221f565b610580610b4b366004613beb565b612247565b610580610b5e366004614706565b612334565b610580610b71366004614734565b6123ab565b610580610b84366004613409565b6123d1565b6104f56123e6565b610580610b9f36600461478b565b61240f565b610bb1335b600036612435565b610bc5610bbf83608c61253b565b82612587565b5050565b610bd233610ba9565b610bc5610bbf83611542565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610c89906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb5906147d0565b8015610d025780601f10610cd757610100808354040283529160200191610d02565b820191906000526020600020905b815481529060010190602001808311610ce557829003601f168201915b50505050508152505090506040518060e00160405280610d20600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610d71611974565b6001600160a01b03168152602001826060015181525091505090565b600060008051602061518283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e20919061480a565b15610e515780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610e646001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061480a565b610ef85760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610e48565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190614827565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614844565b92915050565b61103b612591565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61106933610ba9565b610bc5828260405160200161107e919061485d565b6040516020818303038152906040526125dc565b61109a612591565b6110a48287612334565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111148382614953565b506111256303fb044760e21b611033565b50505050505050565b61113733610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610bc59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614844565b8260405160200161107e9190614a12565b6111d1612591565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d919061480a565b6112a733610ba9565b6112c46112b384611542565b8260405160200161107e9190614a40565b505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b0384166078610fbd565b6112ff33610ba9565b6112c461130b84611d8c565b8360405160200161131c9190614a91565b604051602081830303815290604052836125e6565b61133a33610ba9565b610bc5610bbf836118bd565b61134f33610ba9565b6007546001600160a01b03161561139f5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610e48565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140b9190614b45565b6001600160a01b0316146114615760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610e48565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006114976001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa1580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190614b45565b905090565b61151f33610ba9565b61153c61152b85611542565b8360405160200161131c9190614a40565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d3610fbd565b61157833610ba9565b6112c4611584846118bd565b8360405160200161131c9190614b62565b61159e33610ba9565b610bc58282612587565b6115b133610ba9565b610bc5828260405160200161107e9190614b9f565b60008181526004602052604090206001018054606091906115e6906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611612906147d0565b801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b50505050509050919050565b61167433610ba9565b61153c61168085611542565b8360405160200161131c9190614c3a565b61169a33610ba9565b6112c46116a884608c61253b565b8360405160200161131c9190614c6a565b6116c233610ba9565b610bc56116ce83611d8c565b8260405160200161107e9190614a91565b6116e7612591565b806001600160a01b03163b60000361171d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e48565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611797575060408051601f3d908101601f191682019092526117949181019061480a565b60015b6117bf5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e48565b80610bc55760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e48565b50565b60006117ff6001546001600160a01b031690565b6001600160a01b031663d39e6043608c6114a8565b61181d33610ba9565b6112c461182984611542565b8360405160200161131c9190614d57565b33611843612013565b6001600160a01b0316816001600160a01b03161461187e5760405162d1953b60e31b81526001600160a01b0382166004820152602401610e48565b816001600160a01b03163b6000036118b4576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e48565b610bc5826125f1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a610fbd565b6118f333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610bc59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbf9190614844565b60008060008051602061518283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a08919061480a565b15611a95576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8f9190614b45565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b63906147d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611b8f906147d0565b8015611bdc5780601f10611bb157610100808354040283529160200191611bdc565b820191906000526020600020905b815481529060010190602001808311611bbf57829003601f168201915b5050505050815250509050919050565b6000805160206151a2833981519152805460009190600160a01b900460ff16611c16576000611a8f565b638fb3603760e01b91505090565b611c2d33610ba9565b610bc5611c3b83606e61253b565b8260405160200161107e9190614e98565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611c915750825b90506000826001600160401b03166001148015611cad5750303b155b905081158015611cbb575080155b15611cd95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d0357845460ff60401b1916600160401b1785555b611d0c89612652565b611d2b8888604660008a60405180602001604052806000815250611092565b611d3b6302994e4760e61b611033565b8315611d8157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc610fbd565b611dc233610ba9565b6040516355ee627560e01b81526001600160c01b0319841660048201526112c49073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e439190614844565b8360405160200161131c9190614a12565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edd919061480a565b15611ee757505050565b60ff8084166000908152600360209081526040808320868516845282528083208585168452909152902054166112c457604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e48565b611f4e33610ba9565b6112c4611f5c84606e61253b565b8360405160200161131c9190614e98565b611f7633610ba9565b6112c4838360405160200161131c919061485d565b611f9433610ba9565b610bc5611fa0836118bd565b8260405160200161107e9190614b62565b611fba33610ba9565b6112c4610bbf84611542565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf9060240161125d565b6000805160206151a2833981519152546001600160a01b031690565b60006120436001546001600160a01b031690565b6001600160a01b031663d39e604360786114a8565b61206133610ba9565b6112c461206f84607861253b565b8360405160200161131c9190614fc2565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af41580156120d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190615012565b61210033610ba9565b6112c4838360405160200161131c9190614b9f565b61211e33610ba9565b610bc5610bbf83607861253b565b61213533610ba9565b610bc5610bbf83606e61253b565b60006121576001546001600160a01b031690565b6001600160a01b031663d39e604360d36114a8565b61217533610ba9565b610bc561218383608c61253b565b8260405160200161107e9190614c6a565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122189190614844565b9392505050565b61222833610ba9565b610bc561223683607861253b565b8260405160200161107e9190614fc2565b61225033610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015612298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bc9190614b45565b6001600160a01b0316146123125760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610e48565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61233c612591565b612345816116df565b61234d6111c9565b6001600160a01b0382166123745760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518283398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123b433610ba9565b6112c46123c084611542565b8260405160200161107e9190614c3a565b6123da33610ba9565b610bc5610bbf83611d8c565b60006123fa6001546001600160a01b031690565b6001600160a01b031663d39e604360dc6114a8565b61241833610ba9565b610bc561242483611542565b8260405160200161107e9190614d57565b6000805160206151a2833981519152600080612470612452612013565b8730612462600460008a8c61502f565b61246b91615059565b612663565b91509150816125335763ffffffff81161561251057825460ff60a01b1916600160a01b17835561249e612013565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124cd93929190615089565b600060405180830381600087803b1580156124e757600080fd5b505af11580156124fb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125339050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610e48565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121d7565b610bc5828261276f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125da57604051631afcd79f60e31b815260040160405180910390fd5b565b610bc58282612aa3565b6112c4838383612ec9565b6000805160206151a283398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61265a612591565b6117e881613364565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126d291906150c9565b600060405180830381855afa9150503d806000811461270d576040519150601f19603f3d011682016040523d82523d6000602084013e612712565b606091505b50915091508115612764576040815110612744578080602001905181019061273a91906150e5565b9094509250612764565b60208151106127645780806020019051810190612761919061480a565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e5919061480a565b6128315760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e48565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561289d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c1919061480a565b61290d5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e48565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166129514390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a079190615012565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b9190615114565b8786863287604051612a939796959493929190615131565b60405180910390a1505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a9190615012565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b93919061480a565b612bdf5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e48565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c70919061480a565b612cbc5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e48565b33436000612cc985611fc6565b612cd4576064612cea565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612d748782614953565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0b9190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7f9190615114565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3f919061480a565b612f8b5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e48565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b919061480a565b6130675760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e48565b60008581526004602052604090206001016130828582614953565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166130c74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317d9190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156131cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f19190615114565b87868632876040516132099796959493929190615131565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a79190615012565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156132f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331b9190615114565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001612eb8565b61336c612591565b6117e8816125f1565b60006020828403121561338757600080fd5b81356001600160e01b03198116811461221857600080fd5b6000602082840312156133b157600080fd5b5035919050565b60ff811681146117e857600080fd5b6000602082840312156133d957600080fd5b8135612218816133b8565b6001600160601b03811681146117e857600080fd5b8035613404816133e4565b919050565b6000806040838503121561341c57600080fd5b8235613427816133e4565b91506020830135613437816133b8565b809150509250929050565b60005b8381101561345d578181015183820152602001613445565b50506000910152565b6000815180845261347e816020860160208601613442565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516134fb60c08401826001600160a01b03169052565b5060c083015160e080840152613515610100840182613466565b949350505050565b60006020828403121561352f57600080fd5b8135612218816133e4565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156135735761357361353a565b60405290565b604080519081016001600160401b03811182821017156135735761357361353a565b604051608081016001600160401b03811182821017156135735761357361353a565b60405160e081016001600160401b03811182821017156135735761357361353a565b60405161016081016001600160401b03811182821017156135735761357361353a565b60405161020081016001600160401b03811182821017156135735761357361353a565b60405161018081016001600160401b03811182821017156135735761357361353a565b600082601f83011261365957600080fd5b81356001600160401b03808211156136735761367361353a565b604051601f8301601f19908116603f0116810190828211818310171561369b5761369b61353a565b816040528381528660208588010111156136b457600080fd5b836020870160208301376000602085830101528094505050505092915050565b63ffffffff811681146117e857600080fd5b8035613404816136d4565b80151581146117e857600080fd5b8035613404816136f1565b6000610120828403121561371d57600080fd5b613725613550565b905081356001600160401b038082111561373e57600080fd5b61374a85838601613648565b8352602084013560208401526040840135604084015260608401356060840152613776608085016136e6565b608084015261378760a085016136e6565b60a084015261379860c085016136ff565b60c08401526137a960e085016136ff565b60e0840152610100915081840135818111156137c457600080fd5b6137d086828701613648565b8385015250505092915050565b600080604083850312156137f057600080fd5b8235915060208301356001600160401b0381111561380d57600080fd5b6138198582860161370a565b9150509250929050565b6001600160a01b03811681146117e857600080fd5b803561340481613823565b60008060008060008060c0878903121561385c57600080fd5b863561386781613823565b95506020870135613877816133e4565b94506040870135613887816133b8565b93506060870135613897816136f1565b925060808701356138a781613823565b915060a08701356001600160401b038111156138c257600080fd5b6138ce89828a01613648565b9150509295509295509295565b6001600160c01b0319811681146117e857600080fd5b8035613404816138db565b60006040828403121561390e57600080fd5b613916613579565b90508135613923816133e4565b815260208201356001600160401b0381111561393e57600080fd5b61394a84828501613648565b60208301525092915050565b6000806040838503121561396957600080fd5b8235613974816138db565b915060208301356001600160401b0381111561398f57600080fd5b613819858286016138fc565b61ffff811681146117e857600080fd5b80356134048161399b565b803564ffffffffff8116811461340457600080fd5b6000608082840312156139dd57600080fd5b6139e561359b565b905081356139f28161399b565b81526020828101359082015260408201356001600160401b03811115613a1757600080fd5b613a2384828501613648565b604083015250613a35606083016139b6565b606082015292915050565b600080600060608486031215613a5557600080fd5b8335613a60816133e4565b92506020840135613a70816136d4565b915060408401356001600160401b03811115613a8b57600080fd5b613a97868287016139cb565b9150509250925092565b600060408284031215613ab357600080fd5b613abb613579565b9050813581526020820135602082015292915050565b60006101408284031215613ae457600080fd5b613aec613550565b9050613af7826133f9565b8152613b068360208401613aa1565b602082015260608201356001600160401b03811115613b2457600080fd5b613b3084828501613648565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c0820152610100613b6c8184016139b6565b60e0830152613b7e61012084016139b6565b9082015292915050565b600080600060608486031215613b9d57600080fd5b8335613ba8816133e4565b925060208401356001600160401b03811115613bc357600080fd5b613bcf86828701613ad1565b9250506040840135613be0816133b8565b809150509250925092565b600060208284031215613bfd57600080fd5b813561221881613823565b60008060008060808587031215613c1e57600080fd5b8435613c29816133e4565b93506020850135613c39816136d4565b925060408501356001600160401b03811115613c5457600080fd5b613c60878288016139cb565b9250506060850135613c71816133b8565b939692955090935050565b600060608284031215613c8e57600080fd5b604051606081016001600160401b038282108183111715613cb157613cb161353a565b8160405282935084359150613cc5826138db565b908252602084013590613cd7826136f1565b8160208401526040850135915080821115613cf157600080fd5b50613cfe85828601613648565b6040830152505092915050565b600080600060608486031215613d2057600080fd5b8335613d2b816133e4565b925060208401356001600160401b03811115613d4657600080fd5b613bcf86828701613c7c565b60008060408385031215613d6557600080fd5b823591506020830135613437816133b8565b600060e08284031215613d8957600080fd5b613d916135bd565b9050613d9c826133f9565b815260208201356001600160401b0380821115613db857600080fd5b613dc485838601613648565b602084015260408401356040840152613ddf606085016136e6565b6060840152613df0608085016136e6565b6080840152613e0160a085016139b6565b60a084015260c0840135915080821115613e1a57600080fd5b50613e2784828501613648565b60c08301525092915050565b60008060408385031215613e4657600080fd5b8235915060208301356001600160401b03811115613e6357600080fd5b61381985828601613d77565b6020815260006122186020830184613466565b600060808284031215613e9457600080fd5b613e9c61359b565b9050813581526020820135602082015260408201356001600160401b03811115613a1757600080fd5b60008060008060808587031215613edb57600080fd5b8435613ee6816133e4565b93506020850135613ef68161399b565b925060408501356001600160401b03811115613f1157600080fd5b613c6087828801613e82565b60006101c08284031215613f3057600080fd5b613f386135df565b9050613f43826133f9565b8152613f5160208301613838565b6020820152613f62604083016136ff565b6040820152613f73606083016136ff565b6060820152613f84608083016136ff565b608082015260a082013560a082015260c082013560c0820152613faa8360e08401613aa1565b60e0820152610120613fbe84828501613aa1565b610100830152613fd2846101608501613aa1565b90820152613fe36101a08301613838565b61014082015292915050565b6000806000610200848603121561400557600080fd5b8335614010816133e4565b925061401f8560208601613f1d565b91506101e0840135613be0816133b8565b6000806040838503121561404357600080fd5b823561404e816133e4565b915060208301356001600160401b0381111561406957600080fd5b61381985828601613ad1565b6000610200828403121561408857600080fd5b614090613602565b905061409b826133f9565b81526140a9602083016133f9565b60208201526140ba604083016138f1565b60408201526140cb606083016138f1565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b038082111561411457600080fd5b61412086838701613648565b8385015261012092508285013591508082111561413c57600080fd5b5061414985828601613648565b82840152505061014061415d8184016139ab565b9082015261016061416f8382016139ab565b9082015261018082810135908201526101a061418c8184016139b6565b908201526101c061419e8382016139b6565b908201526101e0613b7e8382016139b6565b6000806000606084860312156141c557600080fd5b83356141d0816133e4565b925060208401356001600160401b038111156141eb57600080fd5b613bcf86828701614075565b6000806040838503121561420a57600080fd5b8235613427816138db565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152614271602082018351614215565b6000602083015160c08084015261351560e0840182613466565b6000610240828403121561429e57600080fd5b6142a6613625565b90506142b182613838565b81526142bf60208301613838565b60208201526142d0604083016133f9565b60408201526142e1606083016133f9565b60608201526142f38360808401613aa1565b60808201526143058360c08401613aa1565b60a082015261010061431984828501613aa1565b60c083015261014061432d85828601613aa1565b60e0840152614340856101808601613aa1565b82840152614352856101c08601613aa1565b61012084015261436561020085016136ff565b90830152506143776102208301613838565b61016082015292915050565b600080610260838503121561439757600080fd5b82356143a2816133e4565b91506143b1846020850161428b565b90509250929050565b600080600080608085870312156143d057600080fd5b84356143db81613823565b935060208501356143eb81613823565b925060408501356143fb816133e4565b91506060850135613c7181613823565b60a0810161102d8284614215565b60008060006060848603121561442e57600080fd5b8335614439816138db565b925060208401356001600160401b0381111561445457600080fd5b613bcf868287016138fc565b60008060006060848603121561447557600080fd5b8335614480816133b8565b92506020840135614490816133b8565b91506040840135613be0816133b8565b600080600061028084860312156144b657600080fd5b83356144c1816133e4565b92506144d0856020860161428b565b9150610260840135613be0816133b8565b6000806000606084860312156144f657600080fd5b8335925060208401356001600160401b0381111561451357600080fd5b613bcf8682870161370a565b6000806040838503121561453257600080fd5b823561453d816133e4565b915060208301356001600160401b0381111561455857600080fd5b61381985828601613c7c565b60008060006060848603121561457957600080fd5b8335614584816133e4565b925060208401356144908161399b565b600060a082840312156145a657600080fd5b6145ae61359b565b905081356145bb816133e4565b815260208201356145cb81613823565b60208201526145dd8360408401613aa1565b60408201526080820135613a3581613823565b600080600060e0848603121561460557600080fd5b8335614610816133e4565b925061461f8560208601614594565b915060c0840135613be0816133b8565b60008060006060848603121561464457600080fd5b8335925060208401356001600160401b0381111561466157600080fd5b613bcf86828701613d77565b6000806101e0838503121561468157600080fd5b823561468c816133e4565b91506143b18460208501613f1d565b60ff19811681146117e857600080fd5b600080604083850312156146be57600080fd5b82356146c9816133b8565b915060208301356134378161469b565b60008060c083850312156146ec57600080fd5b82356146f7816133e4565b91506143b18460208501614594565b6000806040838503121561471957600080fd5b823561472481613823565b9150602083013561343781613823565b60008060006060848603121561474957600080fd5b8335614754816133e4565b925060208401356147648161399b565b915060408401356001600160401b0381111561477f57600080fd5b613a9786828701613e82565b6000806040838503121561479e57600080fd5b82356147a9816133e4565b915060208301356001600160401b038111156147c457600080fd5b61381985828601614075565b600181811c908216806147e457607f821691505b60208210810361480457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561481c57600080fd5b8151612218816136f1565b60006020828403121561483957600080fd5b8151612218816133e4565b60006020828403121561485657600080fd5b5051919050565b602081526000825161012080602085015261487c610140850183613466565b915060208501516040850152604085015160608501526060850151608085015260808501516148b360a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e08501516101006148e98187018315159052565b860151858403601f19018387015290506149038382613466565b9695505050505050565b601f8211156112c457600081815260208120601f850160051c810160208610156149345750805b601f850160051c820191505b8181101561253357828155600101614940565b81516001600160401b0381111561496c5761496c61353a565b6149808161497a84546147d0565b8461490d565b602080601f8311600181146149b5576000841561499d5750858301515b600019600386901b1c1916600185901b178555612533565b600085815260208120601f198616915b828110156149e4578886015182559484019460019091019084016149c5565b5085821015614a025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b038251166020820152600060208301516040808401526135156060840182613466565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614a7460a0840182613466565b905064ffffffffff60608501511660808401528091505092915050565b60208152614aab6020820183516001600160601b03169052565b60006020830151614ac9604084018280518252602090810151910152565b506040830151610140806080850152614ae6610160850183613466565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e08701519150614b2e61012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b600060208284031215614b5757600080fd5b815161221881613823565b602081526001600160401b0360c01b8251166020820152602082015115156040820152600060408301516060808401526135156080840182613466565b602081526001600160601b0382511660208201526000602083015160e06040840152614bcf610100840182613466565b90506040840151606084015263ffffffff60608501511660808401526080840151614c0260a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614c318282613466565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614a7460a0840182613466565b81516001600160601b031681526101c081016020830151614c9660208401826001600160a01b03169052565b506040830151614caa604084018215159052565b506060830151614cbe606084018215159052565b506080830151614cd2608084018215159052565b5060a083015160a083015260c083015160c083015260e0830151614d0360e084018280518252602090810151910152565b50610100830151610120614d238185018380518252602090810151910152565b840151805161016085015260200151610180840152506101408301516001600160a01b0381166101a08401525b5092915050565b60208152614d716020820183516001600160601b03169052565b60006020830151614d8d60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506102006101208181860152614e05610220860184613466565b9250808601519050610140601f198685030181870152614e258483613466565b935080870151915050610160614e408187018361ffff169052565b8601519050610180614e578682018361ffff169052565b8601516101a08681019190915286015190506101c0614e7e8187018364ffffffffff169052565b86015190506101e0614b2e8682018364ffffffffff169052565b81516001600160a01b0316815261024081016020830151614ec460208401826001600160a01b03169052565b506040830151614edf60408401826001600160601b03169052565b506060830151614efa60608401826001600160601b03169052565b506080830151614f17608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f4d8185018380518252602090810151910152565b60e08501519150610140614f6d8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152614d50565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502457600080fd5b8151612218816133b8565b6000808585111561503f57600080fd5b8386111561504c57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150815780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150db818460208701613442565b9190910192915050565b600080604083850312156150f857600080fd5b8251615103816136f1565b6020840151909250613437816136d4565b60006020828403121561512657600080fd5b81516122188161469b565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212204d3e89f426a65af507532cf22bddcebc0901dfb445b7d9bb99081818fa42097764736f6c63430008140033",
2783
3099
  "linkReferences": {
2784
3100
  "contracts/types/Key32.sol": {
2785
3101
  "Key32Lib": [
2786
3102
  {
2787
3103
  "length": 20,
2788
- "start": 9188
3104
+ "start": 10464
2789
3105
  },
2790
3106
  {
2791
3107
  "length": 20,
2792
- "start": 10604
3108
+ "start": 12496
2793
3109
  },
2794
3110
  {
2795
3111
  "length": 20,
2796
- "start": 11353
3112
+ "start": 12612
2797
3113
  },
2798
3114
  {
2799
3115
  "length": 20,
2800
- "start": 11469
3116
+ "start": 12771
2801
3117
  },
2802
3118
  {
2803
3119
  "length": 20,
2804
- "start": 12207
3120
+ "start": 13524
2805
3121
  },
2806
3122
  {
2807
3123
  "length": 20,
2808
- "start": 12323
3124
+ "start": 13640
2809
3125
  },
2810
3126
  {
2811
3127
  "length": 20,
2812
- "start": 13055
3128
+ "start": 14406
2813
3129
  },
2814
3130
  {
2815
3131
  "length": 20,
2816
- "start": 13171
3132
+ "start": 14522
2817
3133
  },
2818
3134
  {
2819
3135
  "length": 20,
2820
- "start": 13353
3136
+ "start": 14704
2821
3137
  },
2822
3138
  {
2823
3139
  "length": 20,
2824
- "start": 13469
3140
+ "start": 14820
2825
3141
  }
2826
3142
  ]
2827
3143
  },
@@ -2829,23 +3145,35 @@
2829
3145
  "NftIdLib": [
2830
3146
  {
2831
3147
  "length": 20,
2832
- "start": 5060
3148
+ "start": 5353
3149
+ },
3150
+ {
3151
+ "length": 20,
3152
+ "start": 5823
3153
+ },
3154
+ {
3155
+ "length": 20,
3156
+ "start": 6644
2833
3157
  },
2834
3158
  {
2835
3159
  "length": 20,
2836
- "start": 6467
3160
+ "start": 7277
2837
3161
  },
2838
3162
  {
2839
3163
  "length": 20,
2840
- "start": 7236
3164
+ "start": 8168
2841
3165
  },
2842
3166
  {
2843
3167
  "length": 20,
2844
- "start": 8232
3168
+ "start": 8401
2845
3169
  },
2846
3170
  {
2847
3171
  "length": 20,
2848
- "start": 9879
3172
+ "start": 9399
3173
+ },
3174
+ {
3175
+ "length": 20,
3176
+ "start": 11404
2849
3177
  }
2850
3178
  ]
2851
3179
  },
@@ -2853,7 +3181,7 @@
2853
3181
  "ObjectTypeLib": [
2854
3182
  {
2855
3183
  "length": 20,
2856
- "start": 10725
3184
+ "start": 12892
2857
3185
  }
2858
3186
  ]
2859
3187
  },
@@ -2861,15 +3189,15 @@
2861
3189
  "RiskIdLib": [
2862
3190
  {
2863
3191
  "length": 20,
2864
- "start": 5675
3192
+ "start": 6273
2865
3193
  },
2866
3194
  {
2867
3195
  "length": 20,
2868
- "start": 7099
3196
+ "start": 8253
2869
3197
  },
2870
3198
  {
2871
3199
  "length": 20,
2872
- "start": 8317
3200
+ "start": 9484
2873
3201
  }
2874
3202
  ]
2875
3203
  },
@@ -2877,35 +3205,35 @@
2877
3205
  "StateIdLib": [
2878
3206
  {
2879
3207
  "length": 20,
2880
- "start": 5873
3208
+ "start": 6502
2881
3209
  },
2882
3210
  {
2883
3211
  "length": 20,
2884
- "start": 8471
3212
+ "start": 9638
2885
3213
  },
2886
3214
  {
2887
3215
  "length": 20,
2888
- "start": 8830
3216
+ "start": 10008
2889
3217
  },
2890
3218
  {
2891
3219
  "length": 20,
2892
- "start": 10942
3220
+ "start": 11950
2893
3221
  },
2894
3222
  {
2895
3223
  "length": 20,
2896
- "start": 11661
3224
+ "start": 12170
2897
3225
  },
2898
3226
  {
2899
3227
  "length": 20,
2900
- "start": 11881
3228
+ "start": 13113
2901
3229
  },
2902
3230
  {
2903
3231
  "length": 20,
2904
- "start": 12481
3232
+ "start": 13832
2905
3233
  },
2906
3234
  {
2907
3235
  "length": 20,
2908
- "start": 12701
3236
+ "start": 14052
2909
3237
  }
2910
3238
  ]
2911
3239
  },
@@ -2913,7 +3241,7 @@
2913
3241
  "VersionPartLib": [
2914
3242
  {
2915
3243
  "length": 20,
2916
- "start": 8944
3244
+ "start": 10176
2917
3245
  }
2918
3246
  ]
2919
3247
  }
@@ -2923,43 +3251,43 @@
2923
3251
  "Key32Lib": [
2924
3252
  {
2925
3253
  "length": 20,
2926
- "start": 7273
3254
+ "start": 8633
2927
3255
  },
2928
3256
  {
2929
3257
  "length": 20,
2930
- "start": 8689
3258
+ "start": 10665
2931
3259
  },
2932
3260
  {
2933
3261
  "length": 20,
2934
- "start": 9438
3262
+ "start": 10781
2935
3263
  },
2936
3264
  {
2937
3265
  "length": 20,
2938
- "start": 9554
3266
+ "start": 10940
2939
3267
  },
2940
3268
  {
2941
3269
  "length": 20,
2942
- "start": 10292
3270
+ "start": 11693
2943
3271
  },
2944
3272
  {
2945
3273
  "length": 20,
2946
- "start": 10408
3274
+ "start": 11809
2947
3275
  },
2948
3276
  {
2949
3277
  "length": 20,
2950
- "start": 11140
3278
+ "start": 12575
2951
3279
  },
2952
3280
  {
2953
3281
  "length": 20,
2954
- "start": 11256
3282
+ "start": 12691
2955
3283
  },
2956
3284
  {
2957
3285
  "length": 20,
2958
- "start": 11438
3286
+ "start": 12873
2959
3287
  },
2960
3288
  {
2961
3289
  "length": 20,
2962
- "start": 11554
3290
+ "start": 12989
2963
3291
  }
2964
3292
  ]
2965
3293
  },
@@ -2967,23 +3295,35 @@
2967
3295
  "NftIdLib": [
2968
3296
  {
2969
3297
  "length": 20,
2970
- "start": 3145
3298
+ "start": 3522
3299
+ },
3300
+ {
3301
+ "length": 20,
3302
+ "start": 3992
3303
+ },
3304
+ {
3305
+ "length": 20,
3306
+ "start": 4813
3307
+ },
3308
+ {
3309
+ "length": 20,
3310
+ "start": 5446
2971
3311
  },
2972
3312
  {
2973
3313
  "length": 20,
2974
- "start": 4552
3314
+ "start": 6337
2975
3315
  },
2976
3316
  {
2977
3317
  "length": 20,
2978
- "start": 5321
3318
+ "start": 6570
2979
3319
  },
2980
3320
  {
2981
3321
  "length": 20,
2982
- "start": 6317
3322
+ "start": 7568
2983
3323
  },
2984
3324
  {
2985
3325
  "length": 20,
2986
- "start": 7964
3326
+ "start": 9573
2987
3327
  }
2988
3328
  ]
2989
3329
  },
@@ -2991,7 +3331,7 @@
2991
3331
  "ObjectTypeLib": [
2992
3332
  {
2993
3333
  "length": 20,
2994
- "start": 8810
3334
+ "start": 11061
2995
3335
  }
2996
3336
  ]
2997
3337
  },
@@ -2999,15 +3339,15 @@
2999
3339
  "RiskIdLib": [
3000
3340
  {
3001
3341
  "length": 20,
3002
- "start": 3760
3342
+ "start": 4442
3003
3343
  },
3004
3344
  {
3005
3345
  "length": 20,
3006
- "start": 5184
3346
+ "start": 6422
3007
3347
  },
3008
3348
  {
3009
3349
  "length": 20,
3010
- "start": 6402
3350
+ "start": 7653
3011
3351
  }
3012
3352
  ]
3013
3353
  },
@@ -3015,35 +3355,35 @@
3015
3355
  "StateIdLib": [
3016
3356
  {
3017
3357
  "length": 20,
3018
- "start": 3958
3358
+ "start": 4671
3019
3359
  },
3020
3360
  {
3021
3361
  "length": 20,
3022
- "start": 6556
3362
+ "start": 7807
3023
3363
  },
3024
3364
  {
3025
3365
  "length": 20,
3026
- "start": 6915
3366
+ "start": 8177
3027
3367
  },
3028
3368
  {
3029
3369
  "length": 20,
3030
- "start": 9027
3370
+ "start": 10119
3031
3371
  },
3032
3372
  {
3033
3373
  "length": 20,
3034
- "start": 9746
3374
+ "start": 10339
3035
3375
  },
3036
3376
  {
3037
3377
  "length": 20,
3038
- "start": 9966
3378
+ "start": 11282
3039
3379
  },
3040
3380
  {
3041
3381
  "length": 20,
3042
- "start": 10566
3382
+ "start": 12001
3043
3383
  },
3044
3384
  {
3045
3385
  "length": 20,
3046
- "start": 10786
3386
+ "start": 12221
3047
3387
  }
3048
3388
  ]
3049
3389
  },
@@ -3051,7 +3391,7 @@
3051
3391
  "VersionPartLib": [
3052
3392
  {
3053
3393
  "length": 20,
3054
- "start": 7029
3394
+ "start": 8345
3055
3395
  }
3056
3396
  ]
3057
3397
  }