@etherisc/gif-next 0.0.2-a6f9f86-582 → 0.0.2-a733491-751

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 (354) hide show
  1. package/README.md +243 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +853 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1389 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +283 -227
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +887 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +806 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1322 -0
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
  17. package/artifacts/contracts/components/Product.sol/Product.json +1246 -0
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2497 -0
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +530 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +1049 -1168
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +488 -184
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +936 -24
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +701 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{ServiceBase.sol/ServiceBase.json → ComponentService.sol/ComponentService.json} +211 -138
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -77
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +10 -244
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +65 -44
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  59. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  61. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  63. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  65. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  67. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  69. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +943 -0
  71. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +681 -0
  73. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
  75. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  77. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  79. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +480 -0
  81. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  83. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +336 -0
  85. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +373 -0
  87. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  89. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  91. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +724 -0
  93. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +653 -0
  95. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +766 -0
  97. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +255 -63
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +312 -178
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +229 -212
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +423 -270
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -129
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  116. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  117. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  123. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  124. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  125. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  127. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  128. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  129. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  130. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +59 -42
  131. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  133. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  135. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  141. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  142. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  143. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  144. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +147 -154
  145. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  147. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  153. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  155. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +111 -5
  157. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestService.sol/TestService.json +140 -230
  159. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  163. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  165. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  166. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  167. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  171. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  182. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  193. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  195. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  197. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  198. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  200. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  202. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  204. package/contracts/components/Component.sol +241 -0
  205. package/contracts/components/Distribution.sol +308 -0
  206. package/contracts/components/IComponent.sol +54 -0
  207. package/contracts/components/IDistributionComponent.sol +100 -0
  208. package/contracts/components/IPoolComponent.sol +87 -0
  209. package/contracts/components/IProductComponent.sol +39 -0
  210. package/contracts/components/Pool.sol +254 -0
  211. package/contracts/components/Product.sol +285 -0
  212. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  213. package/contracts/instance/BundleManager.sol +125 -0
  214. package/contracts/instance/Cloneable.sol +46 -0
  215. package/contracts/instance/IInstance.sol +94 -0
  216. package/contracts/instance/IInstanceService.sol +65 -0
  217. package/contracts/instance/Instance.sol +141 -235
  218. package/contracts/instance/InstanceAccessManager.sol +466 -174
  219. package/contracts/instance/InstanceReader.sol +293 -0
  220. package/contracts/instance/InstanceService.sol +445 -23
  221. package/contracts/instance/InstanceServiceManager.sol +54 -0
  222. package/contracts/instance/ObjectManager.sol +84 -0
  223. package/contracts/instance/base/ComponentService.sol +134 -0
  224. package/contracts/instance/base/IKeyValueStore.sol +5 -4
  225. package/contracts/instance/base/KeyValueStore.sol +4 -20
  226. package/contracts/instance/module/IAccess.sol +37 -21
  227. package/contracts/instance/module/IBundle.sol +1 -0
  228. package/contracts/instance/module/IPolicy.sol +4 -2
  229. package/contracts/instance/module/ISetup.sol +9 -3
  230. package/contracts/instance/module/ITreasury.sol +1 -1
  231. package/contracts/instance/service/ApplicationService.sol +268 -0
  232. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  233. package/contracts/instance/service/BundleService.sol +298 -0
  234. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  235. package/contracts/instance/service/ClaimService.sol +151 -0
  236. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  237. package/contracts/instance/service/DistributionService.sol +295 -0
  238. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  239. package/contracts/instance/service/IApplicationService.sol +82 -0
  240. package/contracts/instance/service/IBundleService.sol +54 -0
  241. package/contracts/instance/service/IClaimService.sol +61 -0
  242. package/contracts/instance/service/IDistributionService.sol +65 -0
  243. package/contracts/instance/service/IPolicyService.sol +89 -0
  244. package/contracts/instance/service/IPoolService.sol +20 -0
  245. package/contracts/instance/service/IProductService.sol +40 -0
  246. package/contracts/instance/service/PolicyService.sol +474 -0
  247. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  248. package/contracts/instance/service/PoolService.sol +125 -0
  249. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  250. package/contracts/instance/service/ProductService.sol +241 -0
  251. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  252. package/contracts/registry/ChainNft.sol +41 -26
  253. package/contracts/registry/IRegistry.sol +53 -25
  254. package/contracts/registry/IRegistryService.sol +54 -16
  255. package/contracts/registry/Registry.sol +291 -313
  256. package/contracts/registry/RegistryAccessManager.sol +216 -0
  257. package/contracts/registry/RegistryService.sol +170 -256
  258. package/contracts/registry/RegistryServiceManager.sol +30 -11
  259. package/contracts/registry/ReleaseManager.sol +322 -0
  260. package/contracts/registry/TokenRegistry.sol +116 -0
  261. package/contracts/shared/ERC165.sol +15 -9
  262. package/contracts/shared/INftOwnable.sol +11 -10
  263. package/contracts/shared/IPolicyHolder.sol +26 -0
  264. package/contracts/shared/IRegisterable.sol +4 -6
  265. package/contracts/shared/IRegistryLinked.sol +12 -0
  266. package/contracts/shared/IService.sol +16 -0
  267. package/contracts/shared/IVersionable.sol +4 -47
  268. package/contracts/shared/NftOwnable.sol +67 -83
  269. package/contracts/shared/PolicyHolder.sol +81 -0
  270. package/contracts/shared/ProxyManager.sol +101 -26
  271. package/contracts/shared/Registerable.sol +15 -30
  272. package/contracts/shared/RegistryLinked.sol +48 -0
  273. package/contracts/shared/Service.sol +58 -0
  274. package/contracts/shared/TokenHandler.sol +2 -2
  275. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  276. package/contracts/shared/Versionable.sol +5 -93
  277. package/contracts/test/TestFee.sol +2 -2
  278. package/contracts/test/TestRegisterable.sol +1 -1
  279. package/contracts/test/TestRoleId.sol +6 -6
  280. package/contracts/test/TestService.sol +6 -7
  281. package/contracts/types/ClaimId.sol +52 -0
  282. package/contracts/types/DistributorType.sol +2 -2
  283. package/contracts/types/Fee.sol +3 -3
  284. package/contracts/types/NftIdSet.sol +26 -24
  285. package/contracts/types/ObjectType.sol +9 -5
  286. package/contracts/types/PayoutId.sol +54 -0
  287. package/contracts/types/RoleId.sol +22 -4
  288. package/contracts/types/StateId.sol +4 -0
  289. package/contracts/types/UFixed.sol +128 -12
  290. package/contracts/types/Version.sol +4 -1
  291. package/package.json +6 -5
  292. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  295. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  297. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  299. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  301. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  302. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  303. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  304. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  305. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  306. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  307. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  309. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  310. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  312. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  314. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  316. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  318. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  320. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  322. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  324. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  325. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  326. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  327. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  328. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  329. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  330. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  331. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  332. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  333. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  334. package/contracts/components/IBaseComponent.sol +0 -19
  335. package/contracts/experiment/errors/Require.sol +0 -38
  336. package/contracts/experiment/errors/Revert.sol +0 -44
  337. package/contracts/experiment/inheritance/A.sol +0 -53
  338. package/contracts/experiment/inheritance/B.sol +0 -28
  339. package/contracts/experiment/inheritance/C.sol +0 -34
  340. package/contracts/experiment/inheritance/IA.sol +0 -13
  341. package/contracts/experiment/inheritance/IB.sol +0 -10
  342. package/contracts/experiment/inheritance/IC.sol +0 -12
  343. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  344. package/contracts/experiment/statemachine/ISM.sol +0 -25
  345. package/contracts/experiment/statemachine/SM.sol +0 -57
  346. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  347. package/contracts/experiment/types/TypeA.sol +0 -47
  348. package/contracts/experiment/types/TypeB.sol +0 -29
  349. package/contracts/instance/AccessManagedSimple.sol +0 -114
  350. package/contracts/instance/AccessManagerSimple.sol +0 -682
  351. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  352. package/contracts/instance/base/IService.sol +0 -15
  353. package/contracts/instance/base/ServiceBase.sol +0 -44
  354. package/contracts/registry/IChainNft.sol +0 -22
@@ -3,17 +3,6 @@
3
3
  "contractName": "InstanceAccessManager",
4
4
  "sourceName": "contracts/instance/InstanceAccessManager.sol",
5
5
  "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "accessManager",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
6
  {
18
7
  "inputs": [
19
8
  {
@@ -55,34 +44,17 @@
55
44
  {
56
45
  "inputs": [
57
46
  {
58
- "internalType": "RoleId",
59
- "name": "roleId",
60
- "type": "uint64"
61
- }
62
- ],
63
- "name": "ErrorGrantNonexstentRole",
64
- "type": "error"
65
- },
66
- {
67
- "inputs": [
68
- {
69
- "internalType": "RoleId",
70
- "name": "roleId",
71
- "type": "uint64"
72
- }
73
- ],
74
- "name": "ErrorRenounceNonexstentRole",
75
- "type": "error"
76
- },
77
- {
78
- "inputs": [
47
+ "internalType": "address",
48
+ "name": "caller",
49
+ "type": "address"
50
+ },
79
51
  {
80
52
  "internalType": "RoleId",
81
53
  "name": "roleId",
82
54
  "type": "uint64"
83
55
  }
84
56
  ],
85
- "name": "ErrorRevokeNonexstentRole",
57
+ "name": "ErrorIAccessCallerIsNotRoleAdmin",
86
58
  "type": "error"
87
59
  },
88
60
  {
@@ -91,14 +63,9 @@
91
63
  "internalType": "RoleId",
92
64
  "name": "roleId",
93
65
  "type": "uint64"
94
- },
95
- {
96
- "internalType": "ShortString",
97
- "name": "name",
98
- "type": "bytes32"
99
66
  }
100
67
  ],
101
- "name": "ErrorRoleIdAlreadyExists",
68
+ "name": "ErrorIAccessRoleIdAlreadyExists",
102
69
  "type": "error"
103
70
  },
104
71
  {
@@ -109,7 +76,7 @@
109
76
  "type": "uint64"
110
77
  }
111
78
  ],
112
- "name": "ErrorRoleIdInvalid",
79
+ "name": "ErrorIAccessRoleIdInvalid",
113
80
  "type": "error"
114
81
  },
115
82
  {
@@ -120,7 +87,7 @@
120
87
  "type": "uint64"
121
88
  }
122
89
  ],
123
- "name": "ErrorRoleIdNotActive",
90
+ "name": "ErrorIAccessRoleIdTooBig",
124
91
  "type": "error"
125
92
  },
126
93
  {
@@ -131,7 +98,7 @@
131
98
  "type": "uint64"
132
99
  }
133
100
  ],
134
- "name": "ErrorRoleIdTooBig",
101
+ "name": "ErrorIAccessRoleIdTooSmall",
135
102
  "type": "error"
136
103
  },
137
104
  {
@@ -142,7 +109,7 @@
142
109
  "type": "uint64"
143
110
  }
144
111
  ],
145
- "name": "ErrorRoleIdTooSmall",
112
+ "name": "ErrorIAccessRoleNameEmpty",
146
113
  "type": "error"
147
114
  },
148
115
  {
@@ -153,12 +120,12 @@
153
120
  "type": "uint64"
154
121
  },
155
122
  {
156
- "internalType": "bool",
157
- "name": "isCustom",
158
- "type": "bool"
123
+ "internalType": "ShortString",
124
+ "name": "name",
125
+ "type": "bytes32"
159
126
  }
160
127
  ],
161
- "name": "ErrorRoleInvalidUpdate",
128
+ "name": "ErrorIAccessRoleNameNotUnique",
162
129
  "type": "error"
163
130
  },
164
131
  {
@@ -169,36 +136,20 @@
169
136
  "type": "uint64"
170
137
  },
171
138
  {
172
- "internalType": "bool",
173
- "name": "isCustom",
174
- "type": "bool"
175
- },
176
- {
177
- "internalType": "bool",
178
- "name": "isCustomExisting",
179
- "type": "bool"
139
+ "internalType": "enum IAccess.Type",
140
+ "name": "rtype",
141
+ "type": "uint8"
180
142
  }
181
143
  ],
182
- "name": "ErrorRoleIsCustomIsImmutable",
144
+ "name": "ErrorIAccessRoleTypeInvalid",
183
145
  "type": "error"
184
146
  },
185
147
  {
186
148
  "inputs": [
187
149
  {
188
- "internalType": "RoleId",
189
- "name": "roleId",
190
- "type": "uint64"
191
- }
192
- ],
193
- "name": "ErrorRoleNameEmpty",
194
- "type": "error"
195
- },
196
- {
197
- "inputs": [
198
- {
199
- "internalType": "RoleId",
200
- "name": "roleId",
201
- "type": "uint64"
150
+ "internalType": "address",
151
+ "name": "target",
152
+ "type": "address"
202
153
  },
203
154
  {
204
155
  "internalType": "ShortString",
@@ -206,34 +157,34 @@
206
157
  "type": "bytes32"
207
158
  }
208
159
  ],
209
- "name": "ErrorRoleNameNotUnique",
160
+ "name": "ErrorIAccessTargetAlreadyExists",
210
161
  "type": "error"
211
162
  },
212
163
  {
213
164
  "inputs": [
214
165
  {
215
- "internalType": "RoleId",
216
- "name": "roleId",
217
- "type": "uint64"
166
+ "internalType": "address",
167
+ "name": "target",
168
+ "type": "address"
169
+ },
170
+ {
171
+ "internalType": "address",
172
+ "name": "targetAuthority",
173
+ "type": "address"
218
174
  }
219
175
  ],
220
- "name": "ErrorSetLockedForNonexstentRole",
176
+ "name": "ErrorIAccessTargetAuthorityInvalid",
221
177
  "type": "error"
222
178
  },
223
179
  {
224
180
  "inputs": [
225
181
  {
226
- "internalType": "address",
227
- "name": "target",
228
- "type": "address"
182
+ "internalType": "ShortString",
183
+ "name": "name",
184
+ "type": "bytes32"
229
185
  }
230
186
  ],
231
- "name": "ErrorSetLockedForNonexstentTarget",
232
- "type": "error"
233
- },
234
- {
235
- "inputs": [],
236
- "name": "ErrorTargetAddressZero",
187
+ "name": "ErrorIAccessTargetDoesNotExist",
237
188
  "type": "error"
238
189
  },
239
190
  {
@@ -242,14 +193,9 @@
242
193
  "internalType": "address",
243
194
  "name": "target",
244
195
  "type": "address"
245
- },
246
- {
247
- "internalType": "ShortString",
248
- "name": "name",
249
- "type": "bytes32"
250
196
  }
251
197
  ],
252
- "name": "ErrorTargetAlreadyExists",
198
+ "name": "ErrorIAccessTargetIsRegistered",
253
199
  "type": "error"
254
200
  },
255
201
  {
@@ -260,7 +206,7 @@
260
206
  "type": "address"
261
207
  }
262
208
  ],
263
- "name": "ErrorTargetNameEmpty",
209
+ "name": "ErrorIAccessTargetNameEmpty",
264
210
  "type": "error"
265
211
  },
266
212
  {
@@ -281,7 +227,28 @@
281
227
  "type": "bytes32"
282
228
  }
283
229
  ],
284
- "name": "ErrorTargetNameExists",
230
+ "name": "ErrorIAccessTargetNameExists",
231
+ "type": "error"
232
+ },
233
+ {
234
+ "inputs": [
235
+ {
236
+ "internalType": "ShortString",
237
+ "name": "name",
238
+ "type": "bytes32"
239
+ },
240
+ {
241
+ "internalType": "enum IAccess.Type",
242
+ "name": "ttype",
243
+ "type": "uint8"
244
+ }
245
+ ],
246
+ "name": "ErrorIAccessTargetTypeInvalid",
247
+ "type": "error"
248
+ },
249
+ {
250
+ "inputs": [],
251
+ "name": "InvalidInitialization",
285
252
  "type": "error"
286
253
  },
287
254
  {
@@ -289,6 +256,11 @@
289
256
  "name": "InvalidShortString",
290
257
  "type": "error"
291
258
  },
259
+ {
260
+ "inputs": [],
261
+ "name": "NotInitializing",
262
+ "type": "error"
263
+ },
292
264
  {
293
265
  "inputs": [
294
266
  {
@@ -313,6 +285,19 @@
313
285
  "name": "AuthorityUpdated",
314
286
  "type": "event"
315
287
  },
288
+ {
289
+ "anonymous": false,
290
+ "inputs": [
291
+ {
292
+ "indexed": false,
293
+ "internalType": "uint64",
294
+ "name": "version",
295
+ "type": "uint64"
296
+ }
297
+ ],
298
+ "name": "Initialized",
299
+ "type": "event"
300
+ },
316
301
  {
317
302
  "inputs": [],
318
303
  "name": "ADMIN_ROLE_NAME",
@@ -378,6 +363,40 @@
378
363
  "stateMutability": "view",
379
364
  "type": "function"
380
365
  },
366
+ {
367
+ "inputs": [
368
+ {
369
+ "internalType": "address",
370
+ "name": "caller",
371
+ "type": "address"
372
+ },
373
+ {
374
+ "internalType": "address",
375
+ "name": "target",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "internalType": "bytes4",
380
+ "name": "selector",
381
+ "type": "bytes4"
382
+ }
383
+ ],
384
+ "name": "canCall",
385
+ "outputs": [
386
+ {
387
+ "internalType": "bool",
388
+ "name": "immediate",
389
+ "type": "bool"
390
+ },
391
+ {
392
+ "internalType": "uint32",
393
+ "name": "delay",
394
+ "type": "uint32"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
381
400
  {
382
401
  "inputs": [
383
402
  {
@@ -391,7 +410,72 @@
391
410
  "type": "string"
392
411
  }
393
412
  ],
394
- "name": "createDefaultRole",
413
+ "name": "createCoreRole",
414
+ "outputs": [],
415
+ "stateMutability": "nonpayable",
416
+ "type": "function"
417
+ },
418
+ {
419
+ "inputs": [
420
+ {
421
+ "internalType": "address",
422
+ "name": "target",
423
+ "type": "address"
424
+ },
425
+ {
426
+ "internalType": "string",
427
+ "name": "name",
428
+ "type": "string"
429
+ }
430
+ ],
431
+ "name": "createCoreTarget",
432
+ "outputs": [],
433
+ "stateMutability": "nonpayable",
434
+ "type": "function"
435
+ },
436
+ {
437
+ "inputs": [
438
+ {
439
+ "internalType": "string",
440
+ "name": "roleName",
441
+ "type": "string"
442
+ },
443
+ {
444
+ "internalType": "string",
445
+ "name": "adminName",
446
+ "type": "string"
447
+ }
448
+ ],
449
+ "name": "createCustomRole",
450
+ "outputs": [
451
+ {
452
+ "internalType": "RoleId",
453
+ "name": "roleId",
454
+ "type": "uint64"
455
+ },
456
+ {
457
+ "internalType": "RoleId",
458
+ "name": "admin",
459
+ "type": "uint64"
460
+ }
461
+ ],
462
+ "stateMutability": "nonpayable",
463
+ "type": "function"
464
+ },
465
+ {
466
+ "inputs": [
467
+ {
468
+ "internalType": "address",
469
+ "name": "target",
470
+ "type": "address"
471
+ },
472
+ {
473
+ "internalType": "string",
474
+ "name": "name",
475
+ "type": "string"
476
+ }
477
+ ],
478
+ "name": "createCustomTarget",
395
479
  "outputs": [],
396
480
  "stateMutability": "nonpayable",
397
481
  "type": "function"
@@ -407,9 +491,14 @@
407
491
  "internalType": "string",
408
492
  "name": "name",
409
493
  "type": "string"
494
+ },
495
+ {
496
+ "internalType": "RoleId",
497
+ "name": "admin",
498
+ "type": "uint64"
410
499
  }
411
500
  ],
412
- "name": "createRole",
501
+ "name": "createGifRole",
413
502
  "outputs": [],
414
503
  "stateMutability": "nonpayable",
415
504
  "type": "function"
@@ -427,7 +516,7 @@
427
516
  "type": "string"
428
517
  }
429
518
  ],
430
- "name": "createTarget",
519
+ "name": "createGifTarget",
431
520
  "outputs": [],
432
521
  "stateMutability": "nonpayable",
433
522
  "type": "function"
@@ -440,39 +529,12 @@
440
529
  "type": "uint64"
441
530
  }
442
531
  ],
443
- "name": "getRole",
532
+ "name": "getRoleAdmin",
444
533
  "outputs": [
445
534
  {
446
- "components": [
447
- {
448
- "internalType": "ShortString",
449
- "name": "name",
450
- "type": "bytes32"
451
- },
452
- {
453
- "internalType": "bool",
454
- "name": "isCustom",
455
- "type": "bool"
456
- },
457
- {
458
- "internalType": "bool",
459
- "name": "isLocked",
460
- "type": "bool"
461
- },
462
- {
463
- "internalType": "Timestamp",
464
- "name": "createdAt",
465
- "type": "uint40"
466
- },
467
- {
468
- "internalType": "Timestamp",
469
- "name": "updatedAt",
470
- "type": "uint40"
471
- }
472
- ],
473
- "internalType": "struct InstanceAccessManager.RoleInfo",
474
- "name": "role",
475
- "type": "tuple"
535
+ "internalType": "RoleId",
536
+ "name": "admin",
537
+ "type": "uint64"
476
538
  }
477
539
  ],
478
540
  "stateMutability": "view",
@@ -522,21 +584,89 @@
522
584
  "internalType": "RoleId",
523
585
  "name": "roleId",
524
586
  "type": "uint64"
525
- },
526
- {
527
- "internalType": "uint256",
528
- "name": "idx",
529
- "type": "uint256"
530
587
  }
531
588
  ],
532
- "name": "getRoleMember",
589
+ "name": "getRoleInfo",
533
590
  "outputs": [
591
+ {
592
+ "components": [
593
+ {
594
+ "internalType": "ShortString",
595
+ "name": "name",
596
+ "type": "bytes32"
597
+ },
598
+ {
599
+ "internalType": "enum IAccess.Type",
600
+ "name": "rtype",
601
+ "type": "uint8"
602
+ },
603
+ {
604
+ "internalType": "RoleId",
605
+ "name": "admin",
606
+ "type": "uint64"
607
+ },
608
+ {
609
+ "internalType": "Timestamp",
610
+ "name": "createdAt",
611
+ "type": "uint40"
612
+ },
613
+ {
614
+ "internalType": "Timestamp",
615
+ "name": "updatedAt",
616
+ "type": "uint40"
617
+ }
618
+ ],
619
+ "internalType": "struct IAccess.RoleInfo",
620
+ "name": "role",
621
+ "type": "tuple"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [
534
629
  {
535
630
  "internalType": "address",
536
- "name": "roleMember",
631
+ "name": "target",
537
632
  "type": "address"
538
633
  }
539
634
  ],
635
+ "name": "getTargetInfo",
636
+ "outputs": [
637
+ {
638
+ "components": [
639
+ {
640
+ "internalType": "ShortString",
641
+ "name": "name",
642
+ "type": "bytes32"
643
+ },
644
+ {
645
+ "internalType": "enum IAccess.Type",
646
+ "name": "ttype",
647
+ "type": "uint8"
648
+ },
649
+ {
650
+ "internalType": "bool",
651
+ "name": "isLocked",
652
+ "type": "bool"
653
+ },
654
+ {
655
+ "internalType": "Timestamp",
656
+ "name": "createdAt",
657
+ "type": "uint40"
658
+ },
659
+ {
660
+ "internalType": "Timestamp",
661
+ "name": "updatedAt",
662
+ "type": "uint40"
663
+ }
664
+ ],
665
+ "internalType": "struct IAccess.TargetInfo",
666
+ "name": "",
667
+ "type": "tuple"
668
+ }
669
+ ],
540
670
  "stateMutability": "view",
541
671
  "type": "function"
542
672
  },
@@ -588,6 +718,24 @@
588
718
  "stateMutability": "view",
589
719
  "type": "function"
590
720
  },
721
+ {
722
+ "inputs": [
723
+ {
724
+ "internalType": "address",
725
+ "name": "ozAccessManager",
726
+ "type": "address"
727
+ },
728
+ {
729
+ "internalType": "address",
730
+ "name": "registry",
731
+ "type": "address"
732
+ }
733
+ ],
734
+ "name": "initialize",
735
+ "outputs": [],
736
+ "stateMutability": "nonpayable",
737
+ "type": "function"
738
+ },
591
739
  {
592
740
  "inputs": [],
593
741
  "name": "isConsumingScheduledOp",
@@ -601,6 +749,44 @@
601
749
  "stateMutability": "view",
602
750
  "type": "function"
603
751
  },
752
+ {
753
+ "inputs": [
754
+ {
755
+ "internalType": "RoleId",
756
+ "name": "roleId",
757
+ "type": "uint64"
758
+ }
759
+ ],
760
+ "name": "isCustomRoleAdmin",
761
+ "outputs": [
762
+ {
763
+ "internalType": "bool",
764
+ "name": "",
765
+ "type": "bool"
766
+ }
767
+ ],
768
+ "stateMutability": "pure",
769
+ "type": "function"
770
+ },
771
+ {
772
+ "inputs": [
773
+ {
774
+ "internalType": "address",
775
+ "name": "target",
776
+ "type": "address"
777
+ }
778
+ ],
779
+ "name": "isTargetLocked",
780
+ "outputs": [
781
+ {
782
+ "internalType": "bool",
783
+ "name": "locked",
784
+ "type": "bool"
785
+ }
786
+ ],
787
+ "stateMutability": "view",
788
+ "type": "function"
789
+ },
604
790
  {
605
791
  "inputs": [
606
792
  {
@@ -613,7 +799,7 @@
613
799
  "outputs": [
614
800
  {
615
801
  "internalType": "bool",
616
- "name": "revoked",
802
+ "name": "",
617
803
  "type": "bool"
618
804
  }
619
805
  ],
@@ -637,7 +823,7 @@
637
823
  "outputs": [
638
824
  {
639
825
  "internalType": "bool",
640
- "name": "revoked",
826
+ "name": "",
641
827
  "type": "bool"
642
828
  }
643
829
  ],
@@ -663,6 +849,30 @@
663
849
  "stateMutability": "view",
664
850
  "type": "function"
665
851
  },
852
+ {
853
+ "inputs": [
854
+ {
855
+ "internalType": "RoleId",
856
+ "name": "roleId",
857
+ "type": "uint64"
858
+ },
859
+ {
860
+ "internalType": "uint256",
861
+ "name": "idx",
862
+ "type": "uint256"
863
+ }
864
+ ],
865
+ "name": "roleMember",
866
+ "outputs": [
867
+ {
868
+ "internalType": "address",
869
+ "name": "roleMember",
870
+ "type": "address"
871
+ }
872
+ ],
873
+ "stateMutability": "view",
874
+ "type": "function"
875
+ },
666
876
  {
667
877
  "inputs": [
668
878
  {
@@ -716,12 +926,12 @@
716
926
  "type": "uint64"
717
927
  },
718
928
  {
719
- "internalType": "bool",
720
- "name": "locked",
721
- "type": "bool"
929
+ "internalType": "RoleId",
930
+ "name": "admin",
931
+ "type": "uint64"
722
932
  }
723
933
  ],
724
- "name": "setRoleLocked",
934
+ "name": "setRoleAdmin",
725
935
  "outputs": [],
726
936
  "stateMutability": "nonpayable",
727
937
  "type": "function"
@@ -729,9 +939,55 @@
729
939
  {
730
940
  "inputs": [
731
941
  {
732
- "internalType": "address",
733
- "name": "target",
734
- "type": "address"
942
+ "internalType": "string",
943
+ "name": "targetName",
944
+ "type": "string"
945
+ },
946
+ {
947
+ "internalType": "bytes4[]",
948
+ "name": "selectors",
949
+ "type": "bytes4[]"
950
+ },
951
+ {
952
+ "internalType": "RoleId",
953
+ "name": "roleId",
954
+ "type": "uint64"
955
+ }
956
+ ],
957
+ "name": "setTargetFunctionCustomRole",
958
+ "outputs": [],
959
+ "stateMutability": "nonpayable",
960
+ "type": "function"
961
+ },
962
+ {
963
+ "inputs": [
964
+ {
965
+ "internalType": "string",
966
+ "name": "targetName",
967
+ "type": "string"
968
+ },
969
+ {
970
+ "internalType": "bytes4[]",
971
+ "name": "selectors",
972
+ "type": "bytes4[]"
973
+ },
974
+ {
975
+ "internalType": "RoleId",
976
+ "name": "roleId",
977
+ "type": "uint64"
978
+ }
979
+ ],
980
+ "name": "setTargetFunctionRole",
981
+ "outputs": [],
982
+ "stateMutability": "nonpayable",
983
+ "type": "function"
984
+ },
985
+ {
986
+ "inputs": [
987
+ {
988
+ "internalType": "string",
989
+ "name": "targetName",
990
+ "type": "string"
735
991
  },
736
992
  {
737
993
  "internalType": "bool",
@@ -764,90 +1020,102 @@
764
1020
  "type": "function"
765
1021
  }
766
1022
  ],
767
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002db038038062002db0833981016040819052620000349162000a52565b806200004081620002aa565b50600880546001600160a01b0319166001600160a01b03831690811790915560408051631d6c8e3f60e21b81529051620001769273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__926368aebf7b926375b238fc916004808201926020929091908290030181865afa158015620000bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e2919062000a9d565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af415801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d919062000a9d565b60408051808201909152600981526841646d696e526f6c6560b81b6020820152600080620002fe565b620002a373__$cd131c2b3ba46b9dbe046aaf4458b9777d$__6368aebf7b600860009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000a9d565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af415801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000a9d565b60408051808201909152600a8152695075626c6963526f6c6560b01b6020820152600080620002fe565b5062000b82565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b801562000314576200031284848462000548565b505b60006040518060a001604052806200033286620009e060201b60201c565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801562000392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b8919062000abd565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156200040e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000434919062000abd565b64ffffffffff9081169091526001600160401b03968716600081815260016020818152604080842087518082558884015191850180548a85015160608c01516080909c015161ffff1990921694151561ff0019169490941761010094151585021762010000600160601b031916620100009b8b169b909b0264ffffffffff60381b19169a909a176701000000000000009a909916999099029790971790975594835260039081905293822080546001600160401b03191684179055600480549182018155918290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9181049190910180549190931660080290930a97880219909216969091029590951790945550505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260085460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa158015620005bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e3919062000a9d565b6001600160401b0316816001600160401b031614806200068d5750600860009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000652573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000678919062000a9d565b6001600160401b0316816001600160401b0316145b15620006bc5760405163981bf42160e01b81526001600160401b03861660048201526024015b60405180910390fd5b6001600160401b038516600090815260016020818152604092839020835160a0810185528154815292015460ff808216151592840192909252610100810490911615158284015264ffffffffff6201000082048116606084018190526701000000000000009092041660808301529151638d38cd4b60e01b81526004810192909252925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156200077d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a3919062000ae6565b8015620007b857508160200151151583151514155b15620007f757602082015160405162d1cd9360e51b81526001600160401b038716600482015284151560248201529015156044820152606401620006b3565b8280156200080f57506127106001600160401b038216105b156200083a57604051633119b9df60e21b81526001600160401b0386166004820152602401620006b3565b821580156200085457506127106001600160401b03821610155b156200087f5760405163094fb39160e01b81526001600160401b0386166004820152602401620006b3565b60006200088c85620009e0565b9050620008998162000a23565b600003620008c6576040516321ab17ab60e01b81526001600160401b0387166004820152602401620006b3565b60008181526003602090815260409182902054825163bc1b392d60e01b815292516200096d936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af415801562000935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200095b919062000a9d565b6001600160401b039081169116141590565b80156200099457506000818152600360205260409020546001600160401b03878116911614155b15620009d75760008181526003602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401620006b3565b50509392505050565b600080829050601f8151111562000a0e578260405163305a27a960e01b8152600401620006b3919062000b0a565b805162000a1b8262000b5a565b179392505050565b600060ff8216601f81111562000a4c57604051632cd44ac360e21b815260040160405180910390fd5b92915050565b60006020828403121562000a6557600080fd5b81516001600160a01b038116811462000a7d57600080fd5b9392505050565b6001600160401b038116811462000a9a57600080fd5b50565b60006020828403121562000ab057600080fd5b815162000a7d8162000a84565b60006020828403121562000ad057600080fd5b815164ffffffffff8116811462000a7d57600080fd5b60006020828403121562000af957600080fd5b8151801515811462000a7d57600080fd5b600060208083528351808285015260005b8181101562000b395785810183015185820160400152820162000b1b565b506000604082860101526040601f19601f8301168501019250505092915050565b8051602080830151919081101562000b7c576000198160200360031b1b821691505b50919050565b61221e8062000b926000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806386892313116100c3578063bc62a0a51161007c578063bc62a0a5146103dc578063bcfb11b014610411578063bf7e214f1461043a578063c6a001791461045f578063d1f856ee14610472578063d78a83b11461048557600080fd5b8063868923131461027357806386f0c47b146102865780638fb3603714610382578063af8d729e146103a3578063b428b0b0146103b6578063b7d2b162146103c957600080fd5b80635dfa73db116101155780635dfa73db146102095780635fa8aad414610212578063605aa10a146102275780636270b7c31461023a57806368ed5d2e1461024d5780637a9e5e4b1461026057600080fd5b8063030149741461015d57806337f135d714610183578063384c9a57146101a0578063392f5f64146101c35780633fd85561146101cb5780635511a6f3146101f6575b600080fd5b61017061016b366004611d54565b610498565b6040519081526020015b60405180910390f35b61018b600081565b60405163ffffffff909116815260200161017a565b6101b36101ae366004611d54565b6104bf565b604051901515815260200161017a565b600454610170565b6101de6101d9366004611d71565b61064c565b6040516001600160401b03909116815260200161017a565b6101de610204366004611e2c565b610691565b6101de61271081565b610225610220366004611e84565b6106c0565b005b6101b3610235366004611ed1565b6106de565b610225610248366004611eec565b61077b565b61022561025b366004611eec565b610792565b61022561026e366004611ed1565b6107a8565b610225610281366004611f18565b61081e565b61032f610294366004611d54565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160401b0316600090815260016020818152604092839020835160a0810185528154815292015460ff808216151592840192909252610100810490911615159282019290925264ffffffffff62010000830481166060830152600160381b909204909116608082015290565b60405161017a9190600060a08201905082518252602083015115156020830152604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b61038a6108ec565b6040516001600160e01b0319909116815260200161017a565b6102256103b1366004611f4f565b610910565b6101b36103c4366004611f6d565b610a2f565b6101b36103d7366004611f6d565b610c0b565b6104046040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b60405161017a9190611fc6565b6104046040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b6101b361046d366004611d54565b610d89565b6101b3610480366004611f6d565b610deb565b610447610493366004611ff9565b610efb565b6001600160401b03811660009081526002602052604081206104b990610f24565b92915050565b6000336104cb83610d89565b6104f757604051627a416f60e01b81526001600160401b03841660048201526024015b60405180910390fd5b6001600160401b03831660009081526002602052604090206105199082610f2e565b1561064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0384166024820152604401600060405180830381600087803b1580156105ff57600080fd5b505af1158015610613573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610639915082610f50565b5060019392505050565b50600092915050565b60006004828154811061066157610661612042565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6000600360006106a084610f65565b81526020810191909152604001600020546001600160401b031692915050565b6106cd335b600036610fa3565b6106da82826001806110a3565b5050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af4158015610757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190612058565b610784336106c5565b6106da828260006001611380565b61079b336106c5565b6106da8282600180611380565b60005433906001600160a01b031681146107df5760405162d1953b60e31b81526001600160a01b03821660048201526024016104ee565b816001600160a01b03163b600003610815576040516361798f2f60e11b81526001600160a01b03831660048201526024016104ee565b6106da826115b9565b610827336106c5565b610830826106de565b6108585760405163ba52b0f160e01b81526001600160a01b03831660048201526024016104ee565b6001600160a01b0382811660008181526005602052604090819020600101805461ff00191661010086151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b1580156108d057600080fd5b505af11580156108e4573d6000803e3d6000fd5b505050505050565b60008054600160a01b900460ff166109045750600090565b50638fb3603760e01b90565b610919336106c5565b61092282610d89565b61094a5760405163135c79b760e21b81526001600160401b03831660048201526024016104ee565b6001600160401b038216600090815260016020818152604092839020909101805461ff0019166101008515150217905581516356db0c1960e11b8152915173__$d53880c81dc91c20799140d711e5ab8718$__9263adb618329260048083019391928290030181865af41580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612075565b6001600160401b03909216600090815260016020819052604090912001805464ffffffffff93909316600160381b0264ffffffffff60381b199093169290921790915550565b6000610a3a336106c5565b610a4383610d89565b610a6b57604051636777365b60e01b81526001600160401b03841660048201526024016104ee565b6001600160401b03831660009081526001602081905260409091200154610100900460ff1615610ab95760405163fe229d5d60e01b81526001600160401b03841660048201526024016104ee565b6001600160401b0383166000908152600260205260409020610adb9083610f2e565b61064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015260006044820152606401600060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610c0191508361160d565b50600190506104b9565b6000610c16336106c5565b610c1f83610d89565b610c4757604051634cee277360e11b81526001600160401b03841660048201526024016104ee565b6001600160401b0383166000908152600260205260409020610c699083610f2e565b1561064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610c01915083610f50565b6001600160401b0381166000908152600160208190526040808320909101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b9060240161073a565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b03851660248201526044016040805180830381865afa158015610ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef3919061209c565b509392505050565b6001600160401b0382166000908152600260205260408120610f1d9083611622565b9392505050565b60006104b9825490565b6001600160a01b03811660009081526001830160205260408120541515610f1d565b6000610f1d836001600160a01b03841661162e565b600080829050601f81511115610f90578260405163305a27a960e01b81526004016104ee9190611fc6565b8051610f9b826120d4565b179392505050565b600080610fd9610fbb6000546001600160a01b031690565b8630610fcb60046000898b6120fb565b610fd491612125565b611721565b915091508161109c5763ffffffff811615611079576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee9061103490889088908890600401612155565b600060405180830381600087803b15801561104e57600080fd5b505af1158015611062573d6000803e3d6000fd5b50506000805460ff60a01b191690555061109c9050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016104ee565b5050505050565b60006040518060a001604052806110b986610f65565b815284151560208201526008546040805163a166aa8960e01b81526001600160a01b038a81166004830152919093019291169063a166aa8990602401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612058565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190612075565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190612075565b64ffffffffff1681525090508060056000876001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160076101000a81548164ffffffffff021916908364ffffffffff16021790555090505084600660008360000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050565b80156113935761139184848461182d565b505b60006040518060a001604052806113a986610f65565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190612075565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a59190612075565b64ffffffffff9081169091526001600160401b03968716600081815260016020818152604080842087518082558884015191850180548a85015160608c01516080909c015161ffff1990921694151561ff001916949094176101009415158502176bffffffffffffffffffff00001916620100009b8b169b909b0264ffffffffff60381b19169a909a17600160381b9a9099169990990297909717909755948352600390819052938220805467ffffffffffffffff191684179055600480549182018155918290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9181049190910180549190931660080290930a97880219909216969091029590951790945550505050565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000610f1d836001600160a01b038416611c9b565b6000610f1d8383611cea565b60008181526001830160205260408120548015611717576000611652600183612195565b855490915060009061166690600190612195565b90508082146116cb57600086600001828154811061168657611686612042565b90600052602060002001549050808760000184815481106116a9576116a9612042565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806116dc576116dc6121b6565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104b9565b60009150506104b9565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161179091906121cc565b600060405180830381855afa9150503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b5091509150811561182257604081511061180257808060200190518101906117f8919061209c565b9094509250611822565b6020815110611822578080602001905181019061181f9190612058565b93505b505094509492505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260085460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c59190612025565b6001600160401b0316816001600160401b0316148061196b5750600860009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190612025565b6001600160401b0316816001600160401b0316145b156119945760405163981bf42160e01b81526001600160401b03861660048201526024016104ee565b6001600160401b038516600090815260016020818152604092839020835160a0810185528154815292015460ff808216151592840192909252610100810490911615158284015264ffffffffff620100008204811660608401819052600160381b9092041660808301529151638d38cd4b60e01b81526004810192909252925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a749190612058565b8015611a8857508160200151151583151514155b15611ac557602082015160405162d1cd9360e51b81526001600160401b0387166004820152841515602482015290151560448201526064016104ee565b828015611adc57506127106001600160401b038216105b15611b0557604051633119b9df60e21b81526001600160401b03861660048201526024016104ee565b82158015611b1e57506127106001600160401b03821610155b15611b475760405163094fb39160e01b81526001600160401b03861660048201526024016104ee565b6000611b5285610f65565b9050611b5d81611d14565b600003611b88576040516321ab17ab60e01b81526001600160401b03871660048201526024016104ee565b60008181526003602090815260409182902054825163bc1b392d60e01b81529251611c2b936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015611bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c199190612025565b6001600160401b039081169116141590565b8015611c5157506000818152600360205260409020546001600160401b03878116911614155b15611c925760008181526003602052604090819020549051631660fb9360e21b81526001600160401b039091166004820152602481018290526044016104ee565b50509392505050565b6000818152600183016020526040812054611ce2575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104b9565b5060006104b9565b6000826000018281548110611d0157611d01612042565b9060005260206000200154905092915050565b600060ff8216601f8111156104b957604051632cd44ac360e21b815260040160405180910390fd5b6001600160401b0381168114611d5157600080fd5b50565b600060208284031215611d6657600080fd5b8135610f1d81611d3c565b600060208284031215611d8357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611db157600080fd5b81356001600160401b0380821115611dcb57611dcb611d8a565b604051601f8301601f19908116603f01168101908282118183101715611df357611df3611d8a565b81604052838152866020858801011115611e0c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611e3e57600080fd5b81356001600160401b03811115611e5457600080fd5b611e6084828501611da0565b949350505050565b80356001600160a01b0381168114611e7f57600080fd5b919050565b60008060408385031215611e9757600080fd5b611ea083611e68565b915060208301356001600160401b03811115611ebb57600080fd5b611ec785828601611da0565b9150509250929050565b600060208284031215611ee357600080fd5b610f1d82611e68565b60008060408385031215611eff57600080fd5b8235611ea081611d3c565b8015158114611d5157600080fd5b60008060408385031215611f2b57600080fd5b611f3483611e68565b91506020830135611f4481611f0a565b809150509250929050565b60008060408385031215611f6257600080fd5b8235611f3481611d3c565b60008060408385031215611f8057600080fd5b8235611f8b81611d3c565b9150611f9960208401611e68565b90509250929050565b60005b83811015611fbd578181015183820152602001611fa5565b50506000910152565b6020815260008251806020840152611fe5816040850160208701611fa2565b601f01601f19169190910160400192915050565b6000806040838503121561200c57600080fd5b823561201781611d3c565b946020939093013593505050565b60006020828403121561203757600080fd5b8151610f1d81611d3c565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561206a57600080fd5b8151610f1d81611f0a565b60006020828403121561208757600080fd5b815164ffffffffff81168114610f1d57600080fd5b600080604083850312156120af57600080fd5b82516120ba81611f0a565b602084015190925063ffffffff81168114611f4457600080fd5b805160208083015191908110156120f5576000198160200360031b1b821691505b50919050565b6000808585111561210b57600080fd5b8386111561211857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561214d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b818103818111156104b957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082516121de818460208701611fa2565b919091019291505056fea2646970667358221220083b4c562b2ddac09f17ba3fb6d3169fb66a77fdc99e9d7d9ebf523e66f633e764736f6c63430008140033",
768
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806386892313116100c3578063bc62a0a51161007c578063bc62a0a5146103dc578063bcfb11b014610411578063bf7e214f1461043a578063c6a001791461045f578063d1f856ee14610472578063d78a83b11461048557600080fd5b8063868923131461027357806386f0c47b146102865780638fb3603714610382578063af8d729e146103a3578063b428b0b0146103b6578063b7d2b162146103c957600080fd5b80635dfa73db116101155780635dfa73db146102095780635fa8aad414610212578063605aa10a146102275780636270b7c31461023a57806368ed5d2e1461024d5780637a9e5e4b1461026057600080fd5b8063030149741461015d57806337f135d714610183578063384c9a57146101a0578063392f5f64146101c35780633fd85561146101cb5780635511a6f3146101f6575b600080fd5b61017061016b366004611d54565b610498565b6040519081526020015b60405180910390f35b61018b600081565b60405163ffffffff909116815260200161017a565b6101b36101ae366004611d54565b6104bf565b604051901515815260200161017a565b600454610170565b6101de6101d9366004611d71565b61064c565b6040516001600160401b03909116815260200161017a565b6101de610204366004611e2c565b610691565b6101de61271081565b610225610220366004611e84565b6106c0565b005b6101b3610235366004611ed1565b6106de565b610225610248366004611eec565b61077b565b61022561025b366004611eec565b610792565b61022561026e366004611ed1565b6107a8565b610225610281366004611f18565b61081e565b61032f610294366004611d54565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160401b0316600090815260016020818152604092839020835160a0810185528154815292015460ff808216151592840192909252610100810490911615159282019290925264ffffffffff62010000830481166060830152600160381b909204909116608082015290565b60405161017a9190600060a08201905082518252602083015115156020830152604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b61038a6108ec565b6040516001600160e01b0319909116815260200161017a565b6102256103b1366004611f4f565b610910565b6101b36103c4366004611f6d565b610a2f565b6101b36103d7366004611f6d565b610c0b565b6104046040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b60405161017a9190611fc6565b6104046040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b6101b361046d366004611d54565b610d89565b6101b3610480366004611f6d565b610deb565b610447610493366004611ff9565b610efb565b6001600160401b03811660009081526002602052604081206104b990610f24565b92915050565b6000336104cb83610d89565b6104f757604051627a416f60e01b81526001600160401b03841660048201526024015b60405180910390fd5b6001600160401b03831660009081526002602052604090206105199082610f2e565b1561064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561058b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105af9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0384166024820152604401600060405180830381600087803b1580156105ff57600080fd5b505af1158015610613573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610639915082610f50565b5060019392505050565b50600092915050565b60006004828154811061066157610661612042565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6000600360006106a084610f65565b81526020810191909152604001600020546001600160401b031692915050565b6106cd335b600036610fa3565b6106da82826001806110a3565b5050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af4158015610757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190612058565b610784336106c5565b6106da828260006001611380565b61079b336106c5565b6106da8282600180611380565b60005433906001600160a01b031681146107df5760405162d1953b60e31b81526001600160a01b03821660048201526024016104ee565b816001600160a01b03163b600003610815576040516361798f2f60e11b81526001600160a01b03831660048201526024016104ee565b6106da826115b9565b610827336106c5565b610830826106de565b6108585760405163ba52b0f160e01b81526001600160a01b03831660048201526024016104ee565b6001600160a01b0382811660008181526005602052604090819020600101805461ff00191661010086151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b1580156108d057600080fd5b505af11580156108e4573d6000803e3d6000fd5b505050505050565b60008054600160a01b900460ff166109045750600090565b50638fb3603760e01b90565b610919336106c5565b61092282610d89565b61094a5760405163135c79b760e21b81526001600160401b03831660048201526024016104ee565b6001600160401b038216600090815260016020818152604092839020909101805461ff0019166101008515150217905581516356db0c1960e11b8152915173__$d53880c81dc91c20799140d711e5ab8718$__9263adb618329260048083019391928290030181865af41580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612075565b6001600160401b03909216600090815260016020819052604090912001805464ffffffffff93909316600160381b0264ffffffffff60381b199093169290921790915550565b6000610a3a336106c5565b610a4383610d89565b610a6b57604051636777365b60e01b81526001600160401b03841660048201526024016104ee565b6001600160401b03831660009081526001602081905260409091200154610100900460ff1615610ab95760405163fe229d5d60e01b81526001600160401b03841660048201526024016104ee565b6001600160401b0383166000908152600260205260409020610adb9083610f2e565b61064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015260006044820152606401600060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610c0191508361160d565b50600190506104b9565b6000610c16336106c5565b610c1f83610d89565b610c4757604051634cee277360e11b81526001600160401b03841660048201526024016104ee565b6001600160401b0383166000908152600260205260409020610c699083610f2e565b1561064357600854604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cff9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b5050506001600160401b0384166000908152600260205260409020610c01915083610f50565b6001600160401b0381166000908152600160208190526040808320909101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b9060240161073a565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190612025565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b03851660248201526044016040805180830381865afa158015610ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef3919061209c565b509392505050565b6001600160401b0382166000908152600260205260408120610f1d9083611622565b9392505050565b60006104b9825490565b6001600160a01b03811660009081526001830160205260408120541515610f1d565b6000610f1d836001600160a01b03841661162e565b600080829050601f81511115610f90578260405163305a27a960e01b81526004016104ee9190611fc6565b8051610f9b826120d4565b179392505050565b600080610fd9610fbb6000546001600160a01b031690565b8630610fcb60046000898b6120fb565b610fd491612125565b611721565b915091508161109c5763ffffffff811615611079576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee9061103490889088908890600401612155565b600060405180830381600087803b15801561104e57600080fd5b505af1158015611062573d6000803e3d6000fd5b50506000805460ff60a01b191690555061109c9050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016104ee565b5050505050565b60006040518060a001604052806110b986610f65565b815284151560208201526008546040805163a166aa8960e01b81526001600160a01b038a81166004830152919093019291169063a166aa8990602401602060405180830381865afa158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612058565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190612075565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190612075565b64ffffffffff1681525090508060056000876001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160076101000a81548164ffffffffff021916908364ffffffffff16021790555090505084600660008360000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050565b80156113935761139184848461182d565b505b60006040518060a001604052806113a986610f65565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190612075565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a59190612075565b64ffffffffff9081169091526001600160401b03968716600081815260016020818152604080842087518082558884015191850180548a85015160608c01516080909c015161ffff1990921694151561ff001916949094176101009415158502176bffffffffffffffffffff00001916620100009b8b169b909b0264ffffffffff60381b19169a909a17600160381b9a9099169990990297909717909755948352600390819052938220805467ffffffffffffffff191684179055600480549182018155918290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9181049190910180549190931660080290930a97880219909216969091029590951790945550505050565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000610f1d836001600160a01b038416611c9b565b6000610f1d8383611cea565b60008181526001830160205260408120548015611717576000611652600183612195565b855490915060009061166690600190612195565b90508082146116cb57600086600001828154811061168657611686612042565b90600052602060002001549050808760000184815481106116a9576116a9612042565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806116dc576116dc6121b6565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104b9565b60009150506104b9565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161179091906121cc565b600060405180830381855afa9150503d80600081146117cb576040519150601f19603f3d011682016040523d82523d6000602084013e6117d0565b606091505b5091509150811561182257604081511061180257808060200190518101906117f8919061209c565b9094509250611822565b6020815110611822578080602001905181019061181f9190612058565b93505b505094509492505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260085460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c59190612025565b6001600160401b0316816001600160401b0316148061196b5750600860009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190612025565b6001600160401b0316816001600160401b0316145b156119945760405163981bf42160e01b81526001600160401b03861660048201526024016104ee565b6001600160401b038516600090815260016020818152604092839020835160a0810185528154815292015460ff808216151592840192909252610100810490911615158284015264ffffffffff620100008204811660608401819052600160381b9092041660808301529151638d38cd4b60e01b81526004810192909252925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a749190612058565b8015611a8857508160200151151583151514155b15611ac557602082015160405162d1cd9360e51b81526001600160401b0387166004820152841515602482015290151560448201526064016104ee565b828015611adc57506127106001600160401b038216105b15611b0557604051633119b9df60e21b81526001600160401b03861660048201526024016104ee565b82158015611b1e57506127106001600160401b03821610155b15611b475760405163094fb39160e01b81526001600160401b03861660048201526024016104ee565b6000611b5285610f65565b9050611b5d81611d14565b600003611b88576040516321ab17ab60e01b81526001600160401b03871660048201526024016104ee565b60008181526003602090815260409182902054825163bc1b392d60e01b81529251611c2b936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015611bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c199190612025565b6001600160401b039081169116141590565b8015611c5157506000818152600360205260409020546001600160401b03878116911614155b15611c925760008181526003602052604090819020549051631660fb9360e21b81526001600160401b039091166004820152602481018290526044016104ee565b50509392505050565b6000818152600183016020526040812054611ce2575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104b9565b5060006104b9565b6000826000018281548110611d0157611d01612042565b9060005260206000200154905092915050565b600060ff8216601f8111156104b957604051632cd44ac360e21b815260040160405180910390fd5b6001600160401b0381168114611d5157600080fd5b50565b600060208284031215611d6657600080fd5b8135610f1d81611d3c565b600060208284031215611d8357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611db157600080fd5b81356001600160401b0380821115611dcb57611dcb611d8a565b604051601f8301601f19908116603f01168101908282118183101715611df357611df3611d8a565b81604052838152866020858801011115611e0c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611e3e57600080fd5b81356001600160401b03811115611e5457600080fd5b611e6084828501611da0565b949350505050565b80356001600160a01b0381168114611e7f57600080fd5b919050565b60008060408385031215611e9757600080fd5b611ea083611e68565b915060208301356001600160401b03811115611ebb57600080fd5b611ec785828601611da0565b9150509250929050565b600060208284031215611ee357600080fd5b610f1d82611e68565b60008060408385031215611eff57600080fd5b8235611ea081611d3c565b8015158114611d5157600080fd5b60008060408385031215611f2b57600080fd5b611f3483611e68565b91506020830135611f4481611f0a565b809150509250929050565b60008060408385031215611f6257600080fd5b8235611f3481611d3c565b60008060408385031215611f8057600080fd5b8235611f8b81611d3c565b9150611f9960208401611e68565b90509250929050565b60005b83811015611fbd578181015183820152602001611fa5565b50506000910152565b6020815260008251806020840152611fe5816040850160208701611fa2565b601f01601f19169190910160400192915050565b6000806040838503121561200c57600080fd5b823561201781611d3c565b946020939093013593505050565b60006020828403121561203757600080fd5b8151610f1d81611d3c565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561206a57600080fd5b8151610f1d81611f0a565b60006020828403121561208757600080fd5b815164ffffffffff81168114610f1d57600080fd5b600080604083850312156120af57600080fd5b82516120ba81611f0a565b602084015190925063ffffffff81168114611f4457600080fd5b805160208083015191908110156120f5576000198160200360031b1b821691505b50919050565b6000808585111561210b57600080fd5b8386111561211857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561214d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b818103818111156104b957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082516121de818460208701611fa2565b919091019291505056fea2646970667358221220083b4c562b2ddac09f17ba3fb6d3169fb66a77fdc99e9d7d9ebf523e66f633e764736f6c63430008140033",
1023
+ "bytecode": "0x608060405234801561001057600080fd5b50613711806100206000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80635bfa502711610125578063b7d2b162116100ad578063c6a001791161007c578063c6a001791461054c578063d1f856ee1461055f578063d45f8f9214610572578063eaf09b3714610585578063f2345aea1461059857600080fd5b8063b7d2b162146104bb578063bc62a0a5146104ce578063bcfb11b014610503578063bf7e214f1461052c57600080fd5b80637a9e5e4b116100f45780637a9e5e4b146104125780637b33d4fe146104255780638fb3603714610458578063b428b0b014610479578063b70096131461048c57600080fd5b80635bfa5027146103c35780635dfa73db146103e3578063605aa10a146103ec57806363709eaf146103ff57600080fd5b8063392f5f64116101a8578063495ea56411610177578063495ea564146103435780634a3a1e0014610356578063530dd456146103695780635511a6f31461039d57806356eedb4a146103b057600080fd5b8063392f5f64146102ea5780633fd85561146102f257806344ec4c301461031d578063485cc9551461033057600080fd5b806329db8c3d116101e457806329db8c3d1461029457806330cae187146102a757806337f135d7146102ba578063384c9a57146102d757600080fd5b8063030149741461021657806312e1ebc51461023c57806312f48f151461025c57806326decd4014610271575b600080fd5b610229610224366004612d9e565b6105ab565b6040519081526020015b60405180910390f35b61024f61024a366004612dd0565b6105d2565b6040516102339190612e25565b61026f61026a366004612f16565b610690565b005b61028461027f366004612dd0565b6106ad565b6040519015158152602001610233565b61026f6102a2366004612f65565b61071c565b61026f6102b536600461300f565b610854565b6102c2600081565b60405163ffffffff9091168152602001610233565b6102846102e5366004612d9e565b610956565b600354610229565b610305610300366004613048565b61096a565b6040516001600160401b039091168152602001610233565b61026f61032b366004612f16565b6109af565b61026f61033e366004613061565b6109c4565b610284610351366004612d9e565b610bdd565b61026f61036436600461308f565b610c8b565b610305610377366004612d9e565b6001600160401b0390811660009081526020819052604090206001015461010090041690565b6103056103ab3660046130ad565b610ca0565b61026f6103be366004612f65565b610ccf565b6103d66103d1366004612d9e565b610d7a565b60405161023391906130e9565b61030561271081565b6102846103fa366004612dd0565b610e40565b61026f61040d36600461314d565b610eb9565b61026f610420366004612dd0565b611014565b610438610433366004613193565b611097565b604080516001600160401b03938416815292909116602083015201610233565b6104606110e5565b6040516001600160e01b03199091168152602001610233565b6102846104873660046131ec565b61111e565b61049f61049a366004613222565b6113fd565b60408051921515835263ffffffff909116602083015201610233565b6102846104c93660046131ec565b611482565b6104f66040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b604051610233919061328d565b6104f66040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105346115e0565b6040516001600160a01b039091168152602001610233565b61028461055a366004612d9e565b6115fc565b61028461056d3660046131ec565b61165d565b61026f610580366004612f16565b611755565b6105346105933660046132c0565b611801565b61026f6105a63660046132ec565b611823565b6001600160401b03811660009081526001602052604081206105cc90611847565b92915050565b6040805160a080820183526000808352602080840182905283850182905260608401829052608084018290526001600160a01b038616825260058152908490208451928301909452835482526001840154929391929083019060ff16600381111561063f5761063f612ded565b600381111561065057610650612ded565b81526001919091015460ff6101008204161515602083015264ffffffffff62010000820481166040840152600160381b9091041660609091015292915050565b61069d335b600036611851565b6106a98282600161194f565b5050565b60085460405163a166aa8960e01b81526001600160a01b038381166004830152600092169063a166aa8990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061334f565b61072533610695565b600061073085611d60565b6000818152600660205260409020549091506001600160a01b031660036001600160a01b03821660009081526005602052604090206001015460ff16600381111561077d5761077d612ded565b036107c9576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60405180910390fd5b60035b6001600160401b03841660009081526020819052604090206001015460ff1660038111156107fc576107fc612ded565b0361083f576001600160401b03831660009081526020819052604090819020600101549051630bb1a0c760e01b81526107c091859160ff90911690600401613380565b61084c8183878787611d9e565b505050505050565b61085d33610695565b610866826115fc565b61088e576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b60016001600160401b03831660009081526020819052604090206001015460ff1660038111156108c0576108c0612ded565b036108e9576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b6108f2816115fc565b61091a576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6001600160401b0391821660009081526020819052604090206001018054929091166101000268ffffffffffffffff0019909216919091179055565b6000336109638382611e69565b9392505050565b60006003828154811061097f5761097f61339d565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6109b833610695565b6106a98282600261194f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7b57845460ff60401b1916600160401b1785555b6001600160a01b038716610a8e57600080fd5b6001600160a01b038616610aa157600080fd5b610aaa8761214d565b600880546001600160a01b03808a166001600160a01b03199283161790925560098054928916929091169190911790556004805467ffffffffffffffff1916612710179055610b23610afa612161565b6040518060400160405280600981526020016841646d696e526f6c6560b81b81525060016121de565b610b58610b2e612562565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525060016121de565b610b8d60016000610b67612161565b6001600160401b03166001600160401b03168152602001908152602001600020306125a3565b508315610bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b604051631517388760e21b81526001600160401b0382166004820152600090819073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5e91906133b3565b6001600160401b0316905061271081108015906109635750610c816002826133d0565b6001149392505050565b610c9433610695565b6106a9828260016121de565b600060026000610caf84611d60565b81526020810191909152604001600020546001600160401b031692915050565b610cd833610695565b6000610ce385611d60565b6000818152600660205260409020549091506001600160a01b031660016001600160a01b03821660009081526005602052604090206001015460ff166003811115610d3057610d30612ded565b03610d73576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60016107cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160401b03821660009081526020818152604091829020825160a08101909352805483526001810154909183019060ff166003811115610dea57610dea612ded565b6003811115610dfb57610dfb612ded565b8152600191909101546001600160401b03610100820416602083015264ffffffffff600160481b820481166040840152600160701b9091041660609091015292915050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af41580156106f8573d6000803e3d6000fd5b610ec233610695565b6000610ecd83611d60565b6000818152600660205260409020549091506001600160a01b031680610f095760405163c3ab297f60e01b8152600481018390526024016107c0565b60016001600160a01b03821660009081526005602052604090206001015460ff166003811115610f3b57610f3b612ded565b03610f7e576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b6001600160a01b0381811660008181526005602052604090819020600101805461ff00191661010088151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b158015610ff657600080fd5b505af115801561100a573d6000803e3d6000fd5b5050505050505050565b3361101d6115e0565b6001600160a01b0316816001600160a01b0316146110585760405162d1953b60e31b81526001600160a01b03821660048201526024016107c0565b816001600160a01b03163b60000361108e576040516361798f2f60e11b81526001600160a01b03831660048201526024016107c0565b6106a9826125b8565b6000806110a333610695565b6110ab612619565b90925090506110bc828560036121de565b6110c8818460036121de565b6110d28282610854565b6110de816102b561275b565b9250929050565b6000805160206136bc833981519152805460009190600160a01b900460ff1661110f576000611118565b638fb3603760e01b5b91505090565b600082600061114d826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e491906133b3565b336040518363ffffffff1660e01b81526004016112029291906133f2565b6040805180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190613414565b915091508063ffffffff1660001461125c5761125c61344c565b8161129757335b6040516366c7cee960e01b81526001600160a01b0390911660048201526001600160401b03851660248201526044016107c0565b6112a0876115fc565b6112c8576040516368f4b88960e01b81526001600160401b03881660048201526024016107c0565b6001600160401b03871660009081526001602052604090206112ea90876125a3565b945084156113f357600854604051631517388760e21b81526001600160401b03891660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906133b3565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038916602482015260006044820152606401600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050505b5050505092915050565b60085460405163b700961360e01b815260009182916001600160a01b039091169063b70096139061143690889088908890600401613462565b6040805180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190613414565b91509150935093915050565b60008260006114b1826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154891906133b3565b336040518363ffffffff1660e01b81526004016115669291906133f2565b6040805180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190613414565b915091508063ffffffff166000146115c0576115c061344c565b816115cb5733611263565b6115d58787611e69565b979650505050505050565b6000805160206136bc833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b8152600160481b90910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610e9c565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef91906133b3565b846040518363ffffffff1660e01b815260040161170d9291906133f2565b6040805180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d9190613414565b509392505050565b61175e33610695565b60095460405163c3c5a54760e01b81526001600160a01b0384811660048301529091169063c3c5a54790602401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc919061334f565b156117f557604051631d53345160e21b81526001600160a01b03831660048201526024016107c0565b6106a98282600361194f565b6001600160401b03821660009081526001602052604081206109639083612796565b61182c33610695565b611838838360026121de565b6118428382610854565b505050565b60006105cc825490565b6000805160206136bc83398151915260008061188c61186e6115e0565b873061187e600460008a8c61348f565b611887916134b9565b6127a2565b915091508161084c5763ffffffff81161561192c57825460ff60a01b1916600160a01b1783556118ba6115e0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016118e9939291906134e9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050845460ff60a01b191685555061084c9050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107c0565b600061195a83611d60565b9050611967848284612899565b6001600160a01b03841660009081526005602052604090819020600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061334f565b15611a45576001600160a01b03841660008181526005602052604090819020549051630e0a57d560e11b8152600481019290925260248201526044016107c0565b6000818152600660205260409020546001600160a01b031615611aa657600081815260066020526040908190205490516361c0558f60e01b81526001600160a01b0380871660048301529091166024820152604481018290526064016107c0565b60006040518060a00160405280838152602001846003811115611acb57611acb612ded565b815260085460405163a166aa8960e01b81526001600160a01b0389811660048301526020909301929091169063a166aa8990602401602060405180830381865afa158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b41919061334f565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb59190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613529565b64ffffffffff1690526001600160a01b03861660009081526005602090815260409091208251815590820151600180830180549495508594909160ff1990911690836003811115611c8157611c81612ded565b021790555060408281015160019283018054606086015160809096015166ffffffffffff00199091166101009315159390930266ffffffffff00001916929092176201000064ffffffffff96871602176bffffffffff000000000000001916600160381b95909216949094021790925591516000908152600660205290812080546001600160a01b03199081166001600160a01b03989098169788179091556007805493840181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889091018054909116909417909355505050565b600080829050601f81511115611d8b578260405163305a27a960e01b81526004016107c0919061328d565b8051611d9682613550565b179392505050565b6001600160a01b038516611dc85760405163c3ab297f60e01b8152600481018590526024016107c0565b611dd1816115fc565b611df9576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6008546040516308d6122d60e01b815282916001600160a01b0316906308d6122d90611e2f908990889088908790600401613577565b600060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050505050505050565b6000611e74836115fc565b611e9c576040516368f4b88960e01b81526001600160401b03841660048201526024016107c0565b6001600160401b0383166000908152600160205260409020611ebe9083612985565b905080156105cc57604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906133b3565b600854604051635be958b160e11b81529192506001600160a01b03169063b7d2b16290611f7890849087906004016133f2565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b50505050611fb384610bdd565b15612146576000611fc5600183613600565b6040516368aebf7b60e01b81526001600160401b038216600482015290915060009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906133b3565b6001600160401b03811660009081526001602052604081209192509061206c90611847565b905060005b81811015612141576001600160401b038316600090815260016020526040902061209b9082612796565b6001600160401b0384166000908152600160205260408120919850906120c19089612985565b9050801561212e57600854604051635be958b160e11b81526001600160a01b039091169063b7d2b162906120fb9088908c906004016133f2565b600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050505b508061213981613620565b915050612071565b505050505b5092915050565b61215561299a565b61215e816129e5565b50565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906133b3565b905090565b60006121e983611d60565b90506121f68482846129f6565b6121ff846115fc565b1561222857604051631aacd43160e21b81526001600160401b03851660048201526024016107c0565b6000818152600260205260409081902054905163a42e52e960e01b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063a42e52e990602401602060405180830381865af4158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061334f565b156122f65760008181526002602052604090819020549051637169291360e11b81526001600160401b039091166004820152602481018290526044016107c0565b60006040518060a0016040528083815260200184600381111561231b5761231b612ded565b8152602001612328612161565b6001600160401b0316815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c9190613529565b64ffffffffff1690526001600160401b0386166000908152602081815260409091208251815590820151600180830180549495508594909160ff199091169083600381111561246d5761246d612ded565b02179055506040828101516001928301805460608601516080909601516dffffffffffffffffffffffffff00199091166101006001600160401b0394851681026dffffffffff000000000000000000191691909117600160481b64ffffffffff988916021764ffffffffff60701b1916600160701b9790921696909602179055935160009081526002602052908120805467ffffffffffffffff19169885169889179055600380549283018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600483040180549290911660080290920a92830219169190950217909355505050565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b6000610963836001600160a01b038416612be5565b6000805160206136bc83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60045460009081906001600160401b031681612636826001613639565b9050612643826002613639565b6004805467ffffffffffffffff19166001600160401b039283161781556040516368aebf7b60e01b81529184169082015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af41580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d491906133b3565b6040516368aebf7b60e01b81526001600160401b038316600482015290945073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801561272f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275391906133b3565b925050509091565b6040516368aebf7b60e01b81526001600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b60006109638383612c34565b600080600080876001600160a01b03168787876040516024016127c793929190613462565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516127fc9190613659565b600060405180830381855afa9150503d8060008114612837576040519150601f19603f3d011682016040523d82523d6000602084013e61283c565b606091505b5091509150811561288e57604081511061286e57808060200190518101906128649190613414565b909450925061288e565b602081511061288e578080602001905181019061288b919061334f565b93505b505094509492505050565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190613675565b90506129076115e0565b6001600160a01b0316816001600160a01b03161461294b57604051631db0625160e01b81526001600160a01b038086166004830152821660248201526044016107c0565b61295483612c5e565b60000361297f5760405163a12ddedf60e01b81526001600160a01b03851660048201526024016107c0565b50505050565b6000610963836001600160a01b038416612c86565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129e357604051631afcd79f60e31b815260040160405180910390fd5b565b6129ed61299a565b61215e816125b8565b604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7591906133b3565b6001600160401b031690506003826003811115612a9457612a94612ded565b148015612aa2575061271081105b15612acb5760405163be511cc160e01b81526001600160401b03851660048201526024016107c0565b6003826003811115612adf57612adf612ded565b14158015612aef57506127108110155b8015612b885750612afe612562565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906133b3565b6001600160401b03168114155b15612bb157604051630e08ff2d60e11b81526001600160401b03851660048201526024016107c0565b612bba83612c5e565b60000361297f57604051631367e80d60e31b81526001600160401b03851660048201526024016107c0565b6000818152600183016020526040812054612c2c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cc565b5060006105cc565b6000826000018281548110612c4b57612c4b61339d565b9060005260206000200154905092915050565b600060ff8216601f8111156105cc57604051632cd44ac360e21b815260040160405180910390fd5b60008181526001830160205260408120548015612d6f576000612caa600183613692565b8554909150600090612cbe90600190613692565b9050808214612d23576000866000018281548110612cde57612cde61339d565b9060005260206000200154905080876000018481548110612d0157612d0161339d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d3457612d346136a5565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cc565b60009150506105cc565b6001600160401b038116811461215e57600080fd5b8035612d9981612d79565b919050565b600060208284031215612db057600080fd5b813561096381612d79565b6001600160a01b038116811461215e57600080fd5b600060208284031215612de257600080fd5b813561096381612dbb565b634e487b7160e01b600052602160045260246000fd5b60048110612e2157634e487b7160e01b600052602160045260246000fd5b9052565b8151815260208083015160a0830191612e4090840182612e03565b50604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612e9b57600080fd5b81356001600160401b0380821115612eb557612eb5612e74565b604051601f8301601f19908116603f01168101908282118183101715612edd57612edd612e74565b81604052838152866020858801011115612ef657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612f2957600080fd5b8235612f3481612dbb565b915060208301356001600160401b03811115612f4f57600080fd5b612f5b85828601612e8a565b9150509250929050565b60008060008060608587031215612f7b57600080fd5b84356001600160401b0380821115612f9257600080fd5b612f9e88838901612e8a565b95506020870135915080821115612fb457600080fd5b818701915087601f830112612fc857600080fd5b813581811115612fd757600080fd5b8860208260051b8501011115612fec57600080fd5b60208301955080945050505061300460408601612d8e565b905092959194509250565b6000806040838503121561302257600080fd5b823561302d81612d79565b9150602083013561303d81612d79565b809150509250929050565b60006020828403121561305a57600080fd5b5035919050565b6000806040838503121561307457600080fd5b823561307f81612dbb565b9150602083013561303d81612dbb565b600080604083850312156130a257600080fd5b8235612f3481612d79565b6000602082840312156130bf57600080fd5b81356001600160401b038111156130d557600080fd5b6130e184828501612e8a565b949350505050565b8151815260208083015160a083019161310490840182612e03565b506001600160401b036040840151166040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b801515811461215e57600080fd5b6000806040838503121561316057600080fd5b82356001600160401b0381111561317657600080fd5b61318285828601612e8a565b925050602083013561303d8161313f565b600080604083850312156131a657600080fd5b82356001600160401b03808211156131bd57600080fd5b6131c986838701612e8a565b935060208501359150808211156131df57600080fd5b50612f5b85828601612e8a565b600080604083850312156131ff57600080fd5b823561307f81612d79565b80356001600160e01b031981168114612d9957600080fd5b60008060006060848603121561323757600080fd5b833561324281612dbb565b9250602084013561325281612dbb565b91506132606040850161320a565b90509250925092565b60005b8381101561328457818101518382015260200161326c565b50506000910152565b60208152600082518060208401526132ac816040850160208701613269565b601f01601f19169190910160400192915050565b600080604083850312156132d357600080fd5b82356132de81612d79565b946020939093013593505050565b60008060006060848603121561330157600080fd5b833561330c81612d79565b925060208401356001600160401b0381111561332757600080fd5b61333386828701612e8a565b925050604084013561334481612d79565b809150509250925092565b60006020828403121561336157600080fd5b81516109638161313f565b828152604081016109636020830184612e03565b6001600160401b0383168152604081016109636020830184612e03565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133c557600080fd5b815161096381612d79565b6000826133ed57634e487b7160e01b600052601260045260246000fd5b500690565b6001600160401b039290921682526001600160a01b0316602082015260400190565b6000806040838503121561342757600080fd5b82516134328161313f565b602084015190925063ffffffff8116811461303d57600080fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000808585111561349f57600080fd5b838611156134ac57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156134e15780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561353b57600080fd5b815164ffffffffff8116811461096357600080fd5b80516020808301519190811015613571576000198160200360031b1b821691505b50919050565b6001600160a01b038516815260606020808301829052908201849052600090859060808401835b878110156135cb576001600160e01b03196135b88561320a565b168252928201929082019060010161359e565b508093505050506001600160401b038316604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039080821115612146576121466135ea565b600060018201613632576136326135ea565b5060010190565b6001600160401b03818116838216019080821115612146576121466135ea565b6000825161366b818460208701613269565b9190910192915050565b60006020828403121561368757600080fd5b815161096381612dbb565b818103818111156105cc576105cc6135ea565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220fd63678e2b212a7d8c1f67e70551ffdf9dd4a7f03336ce110a9a4461dd41e02a64736f6c63430008140033",
1024
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102115760003560e01c80635bfa502711610125578063b7d2b162116100ad578063c6a001791161007c578063c6a001791461054c578063d1f856ee1461055f578063d45f8f9214610572578063eaf09b3714610585578063f2345aea1461059857600080fd5b8063b7d2b162146104bb578063bc62a0a5146104ce578063bcfb11b014610503578063bf7e214f1461052c57600080fd5b80637a9e5e4b116100f45780637a9e5e4b146104125780637b33d4fe146104255780638fb3603714610458578063b428b0b014610479578063b70096131461048c57600080fd5b80635bfa5027146103c35780635dfa73db146103e3578063605aa10a146103ec57806363709eaf146103ff57600080fd5b8063392f5f64116101a8578063495ea56411610177578063495ea564146103435780634a3a1e0014610356578063530dd456146103695780635511a6f31461039d57806356eedb4a146103b057600080fd5b8063392f5f64146102ea5780633fd85561146102f257806344ec4c301461031d578063485cc9551461033057600080fd5b806329db8c3d116101e457806329db8c3d1461029457806330cae187146102a757806337f135d7146102ba578063384c9a57146102d757600080fd5b8063030149741461021657806312e1ebc51461023c57806312f48f151461025c57806326decd4014610271575b600080fd5b610229610224366004612d9e565b6105ab565b6040519081526020015b60405180910390f35b61024f61024a366004612dd0565b6105d2565b6040516102339190612e25565b61026f61026a366004612f16565b610690565b005b61028461027f366004612dd0565b6106ad565b6040519015158152602001610233565b61026f6102a2366004612f65565b61071c565b61026f6102b536600461300f565b610854565b6102c2600081565b60405163ffffffff9091168152602001610233565b6102846102e5366004612d9e565b610956565b600354610229565b610305610300366004613048565b61096a565b6040516001600160401b039091168152602001610233565b61026f61032b366004612f16565b6109af565b61026f61033e366004613061565b6109c4565b610284610351366004612d9e565b610bdd565b61026f61036436600461308f565b610c8b565b610305610377366004612d9e565b6001600160401b0390811660009081526020819052604090206001015461010090041690565b6103056103ab3660046130ad565b610ca0565b61026f6103be366004612f65565b610ccf565b6103d66103d1366004612d9e565b610d7a565b60405161023391906130e9565b61030561271081565b6102846103fa366004612dd0565b610e40565b61026f61040d36600461314d565b610eb9565b61026f610420366004612dd0565b611014565b610438610433366004613193565b611097565b604080516001600160401b03938416815292909116602083015201610233565b6104606110e5565b6040516001600160e01b03199091168152602001610233565b6102846104873660046131ec565b61111e565b61049f61049a366004613222565b6113fd565b60408051921515835263ffffffff909116602083015201610233565b6102846104c93660046131ec565b611482565b6104f66040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b604051610233919061328d565b6104f66040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105346115e0565b6040516001600160a01b039091168152602001610233565b61028461055a366004612d9e565b6115fc565b61028461056d3660046131ec565b61165d565b61026f610580366004612f16565b611755565b6105346105933660046132c0565b611801565b61026f6105a63660046132ec565b611823565b6001600160401b03811660009081526001602052604081206105cc90611847565b92915050565b6040805160a080820183526000808352602080840182905283850182905260608401829052608084018290526001600160a01b038616825260058152908490208451928301909452835482526001840154929391929083019060ff16600381111561063f5761063f612ded565b600381111561065057610650612ded565b81526001919091015460ff6101008204161515602083015264ffffffffff62010000820481166040840152600160381b9091041660609091015292915050565b61069d335b600036611851565b6106a98282600161194f565b5050565b60085460405163a166aa8960e01b81526001600160a01b038381166004830152600092169063a166aa8990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061334f565b61072533610695565b600061073085611d60565b6000818152600660205260409020549091506001600160a01b031660036001600160a01b03821660009081526005602052604090206001015460ff16600381111561077d5761077d612ded565b036107c9576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60405180910390fd5b60035b6001600160401b03841660009081526020819052604090206001015460ff1660038111156107fc576107fc612ded565b0361083f576001600160401b03831660009081526020819052604090819020600101549051630bb1a0c760e01b81526107c091859160ff90911690600401613380565b61084c8183878787611d9e565b505050505050565b61085d33610695565b610866826115fc565b61088e576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b60016001600160401b03831660009081526020819052604090206001015460ff1660038111156108c0576108c0612ded565b036108e9576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b6108f2816115fc565b61091a576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6001600160401b0391821660009081526020819052604090206001018054929091166101000268ffffffffffffffff0019909216919091179055565b6000336109638382611e69565b9392505050565b60006003828154811061097f5761097f61339d565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6109b833610695565b6106a98282600261194f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7b57845460ff60401b1916600160401b1785555b6001600160a01b038716610a8e57600080fd5b6001600160a01b038616610aa157600080fd5b610aaa8761214d565b600880546001600160a01b03808a166001600160a01b03199283161790925560098054928916929091169190911790556004805467ffffffffffffffff1916612710179055610b23610afa612161565b6040518060400160405280600981526020016841646d696e526f6c6560b81b81525060016121de565b610b58610b2e612562565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525060016121de565b610b8d60016000610b67612161565b6001600160401b03166001600160401b03168152602001908152602001600020306125a3565b508315610bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b604051631517388760e21b81526001600160401b0382166004820152600090819073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5e91906133b3565b6001600160401b0316905061271081108015906109635750610c816002826133d0565b6001149392505050565b610c9433610695565b6106a9828260016121de565b600060026000610caf84611d60565b81526020810191909152604001600020546001600160401b031692915050565b610cd833610695565b6000610ce385611d60565b6000818152600660205260409020549091506001600160a01b031660016001600160a01b03821660009081526005602052604090206001015460ff166003811115610d3057610d30612ded565b03610d73576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60016107cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160401b03821660009081526020818152604091829020825160a08101909352805483526001810154909183019060ff166003811115610dea57610dea612ded565b6003811115610dfb57610dfb612ded565b8152600191909101546001600160401b03610100820416602083015264ffffffffff600160481b820481166040840152600160701b9091041660609091015292915050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af41580156106f8573d6000803e3d6000fd5b610ec233610695565b6000610ecd83611d60565b6000818152600660205260409020549091506001600160a01b031680610f095760405163c3ab297f60e01b8152600481018390526024016107c0565b60016001600160a01b03821660009081526005602052604090206001015460ff166003811115610f3b57610f3b612ded565b03610f7e576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b6001600160a01b0381811660008181526005602052604090819020600101805461ff00191661010088151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b158015610ff657600080fd5b505af115801561100a573d6000803e3d6000fd5b5050505050505050565b3361101d6115e0565b6001600160a01b0316816001600160a01b0316146110585760405162d1953b60e31b81526001600160a01b03821660048201526024016107c0565b816001600160a01b03163b60000361108e576040516361798f2f60e11b81526001600160a01b03831660048201526024016107c0565b6106a9826125b8565b6000806110a333610695565b6110ab612619565b90925090506110bc828560036121de565b6110c8818460036121de565b6110d28282610854565b6110de816102b561275b565b9250929050565b6000805160206136bc833981519152805460009190600160a01b900460ff1661110f576000611118565b638fb3603760e01b5b91505090565b600082600061114d826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e491906133b3565b336040518363ffffffff1660e01b81526004016112029291906133f2565b6040805180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190613414565b915091508063ffffffff1660001461125c5761125c61344c565b8161129757335b6040516366c7cee960e01b81526001600160a01b0390911660048201526001600160401b03851660248201526044016107c0565b6112a0876115fc565b6112c8576040516368f4b88960e01b81526001600160401b03881660048201526024016107c0565b6001600160401b03871660009081526001602052604090206112ea90876125a3565b945084156113f357600854604051631517388760e21b81526001600160401b03891660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906133b3565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038916602482015260006044820152606401600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050505b5050505092915050565b60085460405163b700961360e01b815260009182916001600160a01b039091169063b70096139061143690889088908890600401613462565b6040805180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190613414565b91509150935093915050565b60008260006114b1826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154891906133b3565b336040518363ffffffff1660e01b81526004016115669291906133f2565b6040805180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190613414565b915091508063ffffffff166000146115c0576115c061344c565b816115cb5733611263565b6115d58787611e69565b979650505050505050565b6000805160206136bc833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b8152600160481b90910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610e9c565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef91906133b3565b846040518363ffffffff1660e01b815260040161170d9291906133f2565b6040805180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d9190613414565b509392505050565b61175e33610695565b60095460405163c3c5a54760e01b81526001600160a01b0384811660048301529091169063c3c5a54790602401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc919061334f565b156117f557604051631d53345160e21b81526001600160a01b03831660048201526024016107c0565b6106a98282600361194f565b6001600160401b03821660009081526001602052604081206109639083612796565b61182c33610695565b611838838360026121de565b6118428382610854565b505050565b60006105cc825490565b6000805160206136bc83398151915260008061188c61186e6115e0565b873061187e600460008a8c61348f565b611887916134b9565b6127a2565b915091508161084c5763ffffffff81161561192c57825460ff60a01b1916600160a01b1783556118ba6115e0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016118e9939291906134e9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050845460ff60a01b191685555061084c9050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107c0565b600061195a83611d60565b9050611967848284612899565b6001600160a01b03841660009081526005602052604090819020600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061334f565b15611a45576001600160a01b03841660008181526005602052604090819020549051630e0a57d560e11b8152600481019290925260248201526044016107c0565b6000818152600660205260409020546001600160a01b031615611aa657600081815260066020526040908190205490516361c0558f60e01b81526001600160a01b0380871660048301529091166024820152604481018290526064016107c0565b60006040518060a00160405280838152602001846003811115611acb57611acb612ded565b815260085460405163a166aa8960e01b81526001600160a01b0389811660048301526020909301929091169063a166aa8990602401602060405180830381865afa158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b41919061334f565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb59190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613529565b64ffffffffff1690526001600160a01b03861660009081526005602090815260409091208251815590820151600180830180549495508594909160ff1990911690836003811115611c8157611c81612ded565b021790555060408281015160019283018054606086015160809096015166ffffffffffff00199091166101009315159390930266ffffffffff00001916929092176201000064ffffffffff96871602176bffffffffff000000000000001916600160381b95909216949094021790925591516000908152600660205290812080546001600160a01b03199081166001600160a01b03989098169788179091556007805493840181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889091018054909116909417909355505050565b600080829050601f81511115611d8b578260405163305a27a960e01b81526004016107c0919061328d565b8051611d9682613550565b179392505050565b6001600160a01b038516611dc85760405163c3ab297f60e01b8152600481018590526024016107c0565b611dd1816115fc565b611df9576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6008546040516308d6122d60e01b815282916001600160a01b0316906308d6122d90611e2f908990889088908790600401613577565b600060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050505050505050565b6000611e74836115fc565b611e9c576040516368f4b88960e01b81526001600160401b03841660048201526024016107c0565b6001600160401b0383166000908152600160205260409020611ebe9083612985565b905080156105cc57604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906133b3565b600854604051635be958b160e11b81529192506001600160a01b03169063b7d2b16290611f7890849087906004016133f2565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b50505050611fb384610bdd565b15612146576000611fc5600183613600565b6040516368aebf7b60e01b81526001600160401b038216600482015290915060009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906133b3565b6001600160401b03811660009081526001602052604081209192509061206c90611847565b905060005b81811015612141576001600160401b038316600090815260016020526040902061209b9082612796565b6001600160401b0384166000908152600160205260408120919850906120c19089612985565b9050801561212e57600854604051635be958b160e11b81526001600160a01b039091169063b7d2b162906120fb9088908c906004016133f2565b600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050505b508061213981613620565b915050612071565b505050505b5092915050565b61215561299a565b61215e816129e5565b50565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906133b3565b905090565b60006121e983611d60565b90506121f68482846129f6565b6121ff846115fc565b1561222857604051631aacd43160e21b81526001600160401b03851660048201526024016107c0565b6000818152600260205260409081902054905163a42e52e960e01b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063a42e52e990602401602060405180830381865af4158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061334f565b156122f65760008181526002602052604090819020549051637169291360e11b81526001600160401b039091166004820152602481018290526044016107c0565b60006040518060a0016040528083815260200184600381111561231b5761231b612ded565b8152602001612328612161565b6001600160401b0316815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c9190613529565b64ffffffffff1690526001600160401b0386166000908152602081815260409091208251815590820151600180830180549495508594909160ff199091169083600381111561246d5761246d612ded565b02179055506040828101516001928301805460608601516080909601516dffffffffffffffffffffffffff00199091166101006001600160401b0394851681026dffffffffff000000000000000000191691909117600160481b64ffffffffff988916021764ffffffffff60701b1916600160701b9790921696909602179055935160009081526002602052908120805467ffffffffffffffff19169885169889179055600380549283018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600483040180549290911660080290920a92830219169190950217909355505050565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b6000610963836001600160a01b038416612be5565b6000805160206136bc83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60045460009081906001600160401b031681612636826001613639565b9050612643826002613639565b6004805467ffffffffffffffff19166001600160401b039283161781556040516368aebf7b60e01b81529184169082015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af41580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d491906133b3565b6040516368aebf7b60e01b81526001600160401b038316600482015290945073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801561272f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275391906133b3565b925050509091565b6040516368aebf7b60e01b81526001600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b60006109638383612c34565b600080600080876001600160a01b03168787876040516024016127c793929190613462565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516127fc9190613659565b600060405180830381855afa9150503d8060008114612837576040519150601f19603f3d011682016040523d82523d6000602084013e61283c565b606091505b5091509150811561288e57604081511061286e57808060200190518101906128649190613414565b909450925061288e565b602081511061288e578080602001905181019061288b919061334f565b93505b505094509492505050565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190613675565b90506129076115e0565b6001600160a01b0316816001600160a01b03161461294b57604051631db0625160e01b81526001600160a01b038086166004830152821660248201526044016107c0565b61295483612c5e565b60000361297f5760405163a12ddedf60e01b81526001600160a01b03851660048201526024016107c0565b50505050565b6000610963836001600160a01b038416612c86565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129e357604051631afcd79f60e31b815260040160405180910390fd5b565b6129ed61299a565b61215e816125b8565b604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7591906133b3565b6001600160401b031690506003826003811115612a9457612a94612ded565b148015612aa2575061271081105b15612acb5760405163be511cc160e01b81526001600160401b03851660048201526024016107c0565b6003826003811115612adf57612adf612ded565b14158015612aef57506127108110155b8015612b885750612afe612562565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906133b3565b6001600160401b03168114155b15612bb157604051630e08ff2d60e11b81526001600160401b03851660048201526024016107c0565b612bba83612c5e565b60000361297f57604051631367e80d60e31b81526001600160401b03851660048201526024016107c0565b6000818152600183016020526040812054612c2c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cc565b5060006105cc565b6000826000018281548110612c4b57612c4b61339d565b9060005260206000200154905092915050565b600060ff8216601f8111156105cc57604051632cd44ac360e21b815260040160405180910390fd5b60008181526001830160205260408120548015612d6f576000612caa600183613692565b8554909150600090612cbe90600190613692565b9050808214612d23576000866000018281548110612cde57612cde61339d565b9060005260206000200154905080876000018481548110612d0157612d0161339d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d3457612d346136a5565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cc565b60009150506105cc565b6001600160401b038116811461215e57600080fd5b8035612d9981612d79565b919050565b600060208284031215612db057600080fd5b813561096381612d79565b6001600160a01b038116811461215e57600080fd5b600060208284031215612de257600080fd5b813561096381612dbb565b634e487b7160e01b600052602160045260246000fd5b60048110612e2157634e487b7160e01b600052602160045260246000fd5b9052565b8151815260208083015160a0830191612e4090840182612e03565b50604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612e9b57600080fd5b81356001600160401b0380821115612eb557612eb5612e74565b604051601f8301601f19908116603f01168101908282118183101715612edd57612edd612e74565b81604052838152866020858801011115612ef657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612f2957600080fd5b8235612f3481612dbb565b915060208301356001600160401b03811115612f4f57600080fd5b612f5b85828601612e8a565b9150509250929050565b60008060008060608587031215612f7b57600080fd5b84356001600160401b0380821115612f9257600080fd5b612f9e88838901612e8a565b95506020870135915080821115612fb457600080fd5b818701915087601f830112612fc857600080fd5b813581811115612fd757600080fd5b8860208260051b8501011115612fec57600080fd5b60208301955080945050505061300460408601612d8e565b905092959194509250565b6000806040838503121561302257600080fd5b823561302d81612d79565b9150602083013561303d81612d79565b809150509250929050565b60006020828403121561305a57600080fd5b5035919050565b6000806040838503121561307457600080fd5b823561307f81612dbb565b9150602083013561303d81612dbb565b600080604083850312156130a257600080fd5b8235612f3481612d79565b6000602082840312156130bf57600080fd5b81356001600160401b038111156130d557600080fd5b6130e184828501612e8a565b949350505050565b8151815260208083015160a083019161310490840182612e03565b506001600160401b036040840151166040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b801515811461215e57600080fd5b6000806040838503121561316057600080fd5b82356001600160401b0381111561317657600080fd5b61318285828601612e8a565b925050602083013561303d8161313f565b600080604083850312156131a657600080fd5b82356001600160401b03808211156131bd57600080fd5b6131c986838701612e8a565b935060208501359150808211156131df57600080fd5b50612f5b85828601612e8a565b600080604083850312156131ff57600080fd5b823561307f81612d79565b80356001600160e01b031981168114612d9957600080fd5b60008060006060848603121561323757600080fd5b833561324281612dbb565b9250602084013561325281612dbb565b91506132606040850161320a565b90509250925092565b60005b8381101561328457818101518382015260200161326c565b50506000910152565b60208152600082518060208401526132ac816040850160208701613269565b601f01601f19169190910160400192915050565b600080604083850312156132d357600080fd5b82356132de81612d79565b946020939093013593505050565b60008060006060848603121561330157600080fd5b833561330c81612d79565b925060208401356001600160401b0381111561332757600080fd5b61333386828701612e8a565b925050604084013561334481612d79565b809150509250925092565b60006020828403121561336157600080fd5b81516109638161313f565b828152604081016109636020830184612e03565b6001600160401b0383168152604081016109636020830184612e03565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133c557600080fd5b815161096381612d79565b6000826133ed57634e487b7160e01b600052601260045260246000fd5b500690565b6001600160401b039290921682526001600160a01b0316602082015260400190565b6000806040838503121561342757600080fd5b82516134328161313f565b602084015190925063ffffffff8116811461303d57600080fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000808585111561349f57600080fd5b838611156134ac57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156134e15780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561353b57600080fd5b815164ffffffffff8116811461096357600080fd5b80516020808301519190811015613571576000198160200360031b1b821691505b50919050565b6001600160a01b038516815260606020808301829052908201849052600090859060808401835b878110156135cb576001600160e01b03196135b88561320a565b168252928201929082019060010161359e565b508093505050506001600160401b038316604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039080821115612146576121466135ea565b600060018201613632576136326135ea565b5060010190565b6001600160401b03818116838216019080821115612146576121466135ea565b6000825161366b818460208701613269565b9190910192915050565b60006020828403121561368757600080fd5b815161096381612dbb565b818103818111156105cc576105cc6135ea565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220fd63678e2b212a7d8c1f67e70551ffdf9dd4a7f03336ce110a9a4461dd41e02a64736f6c63430008140033",
769
1025
  "linkReferences": {
770
1026
  "contracts/types/RoleId.sol": {
771
1027
  "RoleIdLib": [
772
1028
  {
773
1029
  "length": 20,
774
- "start": 118
1030
+ "start": 3104
775
1031
  },
776
1032
  {
777
1033
  "length": 20,
778
- "start": 380
1034
+ "start": 4518
779
1035
  },
780
1036
  {
781
1037
  "length": 20,
782
- "start": 2298
1038
+ "start": 4933
783
1039
  },
784
1040
  {
785
1041
  "length": 20,
786
- "start": 4323
1042
+ "start": 5386
787
1043
  },
788
1044
  {
789
1045
  "length": 20,
790
- "start": 5796
1046
+ "start": 5809
791
1047
  },
792
1048
  {
793
1049
  "length": 20,
794
- "start": 6195
1050
+ "start": 7943
795
1051
  },
796
1052
  {
797
1053
  "length": 20,
798
- "start": 6577
1054
+ "start": 8201
799
1055
  },
800
1056
  {
801
1057
  "length": 20,
802
- "start": 10061
803
- }
804
- ]
805
- },
806
- "contracts/types/Timestamp.sol": {
807
- "TimestampLib": [
1058
+ "start": 8602
1059
+ },
1060
+ {
1061
+ "length": 20,
1062
+ "start": 8823
1063
+ },
808
1064
  {
809
1065
  "length": 20,
810
- "start": 842
1066
+ "start": 9633
811
1067
  },
812
1068
  {
813
1069
  "length": 20,
814
- "start": 966
1070
+ "start": 9878
815
1071
  },
816
1072
  {
817
1073
  "length": 20,
818
- "start": 1858
1074
+ "start": 10005
819
1075
  },
820
1076
  {
821
1077
  "length": 20,
822
- "start": 4782
1078
+ "start": 10132
823
1079
  },
824
1080
  {
825
1081
  "length": 20,
826
- "start": 5404
1082
+ "start": 10807
827
1083
  },
828
1084
  {
829
1085
  "length": 20,
830
- "start": 6491
1086
+ "start": 11069
1087
+ }
1088
+ ]
1089
+ },
1090
+ "contracts/types/Timestamp.sol": {
1091
+ "TimestampLib": [
1092
+ {
1093
+ "length": 20,
1094
+ "start": 3742
1095
+ },
1096
+ {
1097
+ "length": 20,
1098
+ "start": 5723
831
1099
  },
832
1100
  {
833
1101
  "length": 20,
834
- "start": 7377
1102
+ "start": 6598
835
1103
  },
836
1104
  {
837
1105
  "length": 20,
838
- "start": 7498
1106
+ "start": 7018
839
1107
  },
840
1108
  {
841
1109
  "length": 20,
842
- "start": 8019
1110
+ "start": 7139
843
1111
  },
844
1112
  {
845
1113
  "length": 20,
846
- "start": 8140
1114
+ "start": 9048
847
1115
  },
848
1116
  {
849
1117
  "length": 20,
850
- "start": 9640
1118
+ "start": 9169
851
1119
  }
852
1120
  ]
853
1121
  }
@@ -857,23 +1125,63 @@
857
1125
  "RoleIdLib": [
858
1126
  {
859
1127
  "length": 20,
860
- "start": 1361
1128
+ "start": 3072
1129
+ },
1130
+ {
1131
+ "length": 20,
1132
+ "start": 4486
861
1133
  },
862
1134
  {
863
1135
  "length": 20,
864
- "start": 2834
1136
+ "start": 4901
865
1137
  },
866
1138
  {
867
1139
  "length": 20,
868
- "start": 3233
1140
+ "start": 5354
869
1141
  },
870
1142
  {
871
1143
  "length": 20,
872
- "start": 3615
1144
+ "start": 5777
873
1145
  },
874
1146
  {
875
1147
  "length": 20,
876
- "start": 7099
1148
+ "start": 7911
1149
+ },
1150
+ {
1151
+ "length": 20,
1152
+ "start": 8169
1153
+ },
1154
+ {
1155
+ "length": 20,
1156
+ "start": 8570
1157
+ },
1158
+ {
1159
+ "length": 20,
1160
+ "start": 8791
1161
+ },
1162
+ {
1163
+ "length": 20,
1164
+ "start": 9601
1165
+ },
1166
+ {
1167
+ "length": 20,
1168
+ "start": 9846
1169
+ },
1170
+ {
1171
+ "length": 20,
1172
+ "start": 9973
1173
+ },
1174
+ {
1175
+ "length": 20,
1176
+ "start": 10100
1177
+ },
1178
+ {
1179
+ "length": 20,
1180
+ "start": 10775
1181
+ },
1182
+ {
1183
+ "length": 20,
1184
+ "start": 11037
877
1185
  }
878
1186
  ]
879
1187
  },
@@ -881,35 +1189,31 @@
881
1189
  "TimestampLib": [
882
1190
  {
883
1191
  "length": 20,
884
- "start": 1820
885
- },
886
- {
887
- "length": 20,
888
- "start": 2442
1192
+ "start": 3710
889
1193
  },
890
1194
  {
891
1195
  "length": 20,
892
- "start": 3529
1196
+ "start": 5691
893
1197
  },
894
1198
  {
895
1199
  "length": 20,
896
- "start": 4415
1200
+ "start": 6566
897
1201
  },
898
1202
  {
899
1203
  "length": 20,
900
- "start": 4536
1204
+ "start": 6986
901
1205
  },
902
1206
  {
903
1207
  "length": 20,
904
- "start": 5057
1208
+ "start": 7107
905
1209
  },
906
1210
  {
907
1211
  "length": 20,
908
- "start": 5178
1212
+ "start": 9016
909
1213
  },
910
1214
  {
911
1215
  "length": 20,
912
- "start": 6678
1216
+ "start": 9137
913
1217
  }
914
1218
  ]
915
1219
  }