@etherisc/gif-next 0.0.2-d3543ee-217 → 0.0.2-da77c50-824

Sign up to get free protection for your applications and to get access to all the features.
Files changed (306) hide show
  1. package/README.md +92 -0
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +26 -57
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +26 -57
  6. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IProductComponent.sol/IProductComponent.json} +89 -65
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +134 -75
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +72 -113
  14. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  16. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  34. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  36. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +790 -247
  42. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  44. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{access/IAccess.sol/IAccessComponentTypeRoles.json → IServiceLinked.sol/IServiceLinked.json} +14 -14
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +926 -363
  48. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → InstanceBase.sol/InstanceBase.json} +143 -129
  50. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  52. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  54. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  56. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +276 -0
  58. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  60. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +276 -0
  62. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
  64. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  66. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +33 -62
  68. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycle.json +1 -1
  70. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycleModule.json +1 -1
  72. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +221 -0
  74. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +132 -125
  78. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +132 -125
  80. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  82. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +67 -47
  84. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +51 -57
  86. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +10 -0
  88. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +10 -0
  90. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
  92. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasuryModule.json +100 -52
  94. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  96. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol/TreasuryModule.json +100 -52
  98. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +519 -0
  100. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
  102. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  104. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
  106. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
  108. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IService.sol/IService.json +300 -0
  110. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +499 -0
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +685 -0
  114. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +300 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  118. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +147 -30
  121. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  122. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  123. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/Registry.sol/Registry.json +241 -25
  125. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  127. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  128. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  130. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +16 -61
  131. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  133. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  134. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +16 -61
  135. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
  137. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  138. package/artifacts/contracts/test/TestFee.sol/TestFee.json +95 -0
  139. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  140. package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
  141. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  142. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +82 -0
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +407 -0
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  152. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +222 -0
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  154. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +230 -0
  155. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  161. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  163. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  164. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  165. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  167. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  169. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  171. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +58 -58
  173. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Version.sol/VersionLib.json +78 -0
  175. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  177. package/contracts/components/BaseComponent.sol +89 -0
  178. package/contracts/components/IBaseComponent.sol +19 -0
  179. package/contracts/components/IPoolComponent.sol +57 -0
  180. package/contracts/components/{IProduct.sol → IProductComponent.sol} +9 -6
  181. package/contracts/components/Pool.sol +140 -18
  182. package/contracts/components/Product.sol +53 -25
  183. package/contracts/instance/IInstance.sol +35 -10
  184. package/contracts/instance/IInstanceLinked.sol +8 -0
  185. package/contracts/instance/IServiceLinked.sol +12 -0
  186. package/contracts/instance/Instance.sol +40 -50
  187. package/contracts/instance/InstanceBase.sol +74 -0
  188. package/contracts/instance/module/access/Access.sol +149 -0
  189. package/contracts/instance/module/access/IAccess.sol +53 -0
  190. package/contracts/instance/module/bundle/BundleModule.sol +228 -0
  191. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  192. package/contracts/instance/module/component/ComponentModule.sol +104 -0
  193. package/contracts/instance/module/component/IComponent.sol +53 -0
  194. package/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol +3 -3
  195. package/contracts/instance/{lifecycle → module/lifecycle}/LifecycleModule.sol +5 -4
  196. package/contracts/instance/module/policy/IPolicy.sol +60 -0
  197. package/contracts/instance/module/policy/PolicyModule.sol +84 -0
  198. package/contracts/instance/module/pool/IPoolModule.sol +41 -0
  199. package/contracts/instance/module/pool/PoolModule.sol +87 -0
  200. package/contracts/instance/module/product/IProductModule.sol +6 -0
  201. package/contracts/instance/module/product/ProductModule.sol +8 -0
  202. package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +25 -12
  203. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  204. package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +33 -53
  205. package/contracts/instance/service/ComponentOwnerService.sol +174 -0
  206. package/contracts/instance/service/ComponentServiceBase.sol +41 -0
  207. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  208. package/contracts/instance/service/IPoolService.sol +30 -0
  209. package/contracts/instance/service/IProductService.sol +58 -0
  210. package/contracts/instance/service/IService.sol +15 -0
  211. package/contracts/instance/service/PoolService.sol +98 -0
  212. package/contracts/instance/service/ProductService.sol +358 -0
  213. package/contracts/instance/service/ServiceBase.sol +39 -0
  214. package/contracts/registry/ChainNft.sol +61 -37
  215. package/contracts/registry/IRegistry.sol +24 -34
  216. package/contracts/registry/IRegistryLinked.sol +8 -0
  217. package/contracts/registry/Registry.sol +284 -85
  218. package/contracts/shared/ERC165.sol +21 -0
  219. package/contracts/shared/IOwnable.sol +6 -0
  220. package/contracts/shared/IRegisterable.sol +24 -0
  221. package/contracts/shared/IVersionable.sol +52 -0
  222. package/contracts/shared/Registerable.sol +86 -0
  223. package/contracts/shared/Versionable.sol +92 -0
  224. package/contracts/test/TestFee.sol +25 -0
  225. package/contracts/test/TestPool.sol +22 -0
  226. package/contracts/test/TestProduct.sol +44 -0
  227. package/contracts/test/TestRegisterable.sol +19 -0
  228. package/contracts/test/TestRoleId.sol +14 -0
  229. package/contracts/test/TestService.sol +35 -0
  230. package/contracts/test/TestToken.sol +26 -0
  231. package/contracts/test/TestVersion.sol +47 -0
  232. package/contracts/test/TestVersionable.sol +20 -0
  233. package/contracts/types/AddressSet.sol +58 -0
  234. package/contracts/types/NftId.sol +7 -1
  235. package/contracts/types/NftIdSet.sol +60 -0
  236. package/contracts/types/ObjectType.sol +22 -14
  237. package/contracts/types/RoleId.sol +36 -0
  238. package/contracts/types/StateId.sol +6 -2
  239. package/contracts/types/Timestamp.sol +22 -1
  240. package/contracts/types/UFixed.sol +15 -15
  241. package/contracts/types/Version.sol +91 -0
  242. package/package.json +12 -4
  243. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  244. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  245. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  246. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  247. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  248. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  249. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  250. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  251. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  252. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  253. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  254. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  255. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  256. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  257. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  258. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  259. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  260. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  261. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  262. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  263. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  264. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  265. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  267. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  268. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  269. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  270. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  271. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  272. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  274. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  275. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  276. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  277. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  278. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  279. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  280. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  281. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  282. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  283. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  284. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  285. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  286. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  287. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  288. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  289. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  290. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  291. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  292. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  293. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  294. package/contracts/components/Component.sol +0 -77
  295. package/contracts/components/IPool.sol +0 -15
  296. package/contracts/instance/access/Access.sol +0 -165
  297. package/contracts/instance/access/IAccess.sol +0 -63
  298. package/contracts/instance/component/ComponentModule.sol +0 -274
  299. package/contracts/instance/component/IComponent.sol +0 -74
  300. package/contracts/instance/policy/IPolicy.sol +0 -50
  301. package/contracts/instance/policy/PolicyModule.sol +0 -114
  302. package/contracts/instance/pool/IPoolModule.sol +0 -23
  303. package/contracts/instance/pool/PoolModule.sol +0 -81
  304. package/contracts/instance/product/IProductService.sol +0 -36
  305. package/contracts/instance/product/ProductService.sol +0 -136
  306. package/contracts/instance/treasury/TokenHandler.sol +0 -24
@@ -11,14 +11,9 @@
11
11
  "type": "address"
12
12
  },
13
13
  {
14
- "internalType": "address",
15
- "name": "componentOwnerService",
16
- "type": "address"
17
- },
18
- {
19
- "internalType": "address",
20
- "name": "productService",
21
- "type": "address"
14
+ "internalType": "NftId",
15
+ "name": "registryNftId",
16
+ "type": "uint96"
22
17
  }
23
18
  ],
24
19
  "stateMutability": "nonpayable",
@@ -71,9 +66,28 @@
71
66
  "inputs": [
72
67
  {
73
68
  "indexed": false,
74
- "internalType": "bytes32",
69
+ "internalType": "RoleId",
70
+ "name": "role",
71
+ "type": "bytes8"
72
+ },
73
+ {
74
+ "indexed": false,
75
+ "internalType": "string",
76
+ "name": "roleName",
77
+ "type": "string"
78
+ }
79
+ ],
80
+ "name": "LogAccessRoleCreated",
81
+ "type": "event"
82
+ },
83
+ {
84
+ "anonymous": false,
85
+ "inputs": [
86
+ {
87
+ "indexed": false,
88
+ "internalType": "RoleId",
75
89
  "name": "role",
76
- "type": "bytes32"
90
+ "type": "bytes8"
77
91
  },
78
92
  {
79
93
  "indexed": false,
@@ -91,6 +105,25 @@
91
105
  "name": "LogAccessRoleGranted",
92
106
  "type": "event"
93
107
  },
108
+ {
109
+ "anonymous": false,
110
+ "inputs": [
111
+ {
112
+ "indexed": false,
113
+ "internalType": "RoleId",
114
+ "name": "role",
115
+ "type": "bytes8"
116
+ },
117
+ {
118
+ "indexed": false,
119
+ "internalType": "bool",
120
+ "name": "active",
121
+ "type": "bool"
122
+ }
123
+ ],
124
+ "name": "LogAccessRoleStateSet",
125
+ "type": "event"
126
+ },
94
127
  {
95
128
  "anonymous": false,
96
129
  "inputs": [
@@ -147,31 +180,6 @@
147
180
  "name": "LogComponentStateChanged",
148
181
  "type": "event"
149
182
  },
150
- {
151
- "anonymous": false,
152
- "inputs": [
153
- {
154
- "indexed": false,
155
- "internalType": "uint256",
156
- "name": "idx",
157
- "type": "uint256"
158
- },
159
- {
160
- "indexed": false,
161
- "internalType": "address",
162
- "name": "module",
163
- "type": "address"
164
- },
165
- {
166
- "indexed": false,
167
- "internalType": "string",
168
- "name": "comment",
169
- "type": "string"
170
- }
171
- ],
172
- "name": "LogDebug",
173
- "type": "event"
174
- },
175
183
  {
176
184
  "anonymous": false,
177
185
  "inputs": [
@@ -198,118 +206,67 @@
198
206
  "type": "event"
199
207
  },
200
208
  {
201
- "inputs": [],
202
- "name": "INITIAL_CAPITAL",
203
- "outputs": [
204
- {
205
- "internalType": "uint256",
206
- "name": "",
207
- "type": "uint256"
208
- }
209
- ],
210
- "stateMutability": "view",
211
- "type": "function"
212
- },
213
- {
214
- "inputs": [],
215
- "name": "INITIAL_LOCKED_CAPITAL",
216
- "outputs": [
217
- {
218
- "internalType": "uint256",
219
- "name": "",
220
- "type": "uint256"
221
- }
222
- ],
223
- "stateMutability": "view",
224
- "type": "function"
225
- },
226
- {
227
- "inputs": [],
228
- "name": "ORACLE_OWNER",
229
- "outputs": [
230
- {
231
- "internalType": "string",
232
- "name": "",
233
- "type": "string"
234
- }
235
- ],
236
- "stateMutability": "view",
237
- "type": "function"
238
- },
239
- {
240
- "inputs": [],
241
- "name": "ORACLE_OWNER_ROLE",
242
- "outputs": [
209
+ "anonymous": false,
210
+ "inputs": [
243
211
  {
244
- "internalType": "bytes32",
245
- "name": "role",
246
- "type": "bytes32"
247
- }
248
- ],
249
- "stateMutability": "view",
250
- "type": "function"
251
- },
252
- {
253
- "inputs": [],
254
- "name": "POOL_OWNER",
255
- "outputs": [
212
+ "indexed": false,
213
+ "internalType": "Version",
214
+ "name": "version",
215
+ "type": "uint24"
216
+ },
256
217
  {
257
- "internalType": "string",
258
- "name": "",
259
- "type": "string"
260
- }
261
- ],
262
- "stateMutability": "view",
263
- "type": "function"
264
- },
265
- {
266
- "inputs": [],
267
- "name": "POOL_OWNER_ROLE",
268
- "outputs": [
218
+ "indexed": false,
219
+ "internalType": "address",
220
+ "name": "implementation",
221
+ "type": "address"
222
+ },
269
223
  {
270
- "internalType": "bytes32",
271
- "name": "role",
272
- "type": "bytes32"
224
+ "indexed": false,
225
+ "internalType": "address",
226
+ "name": "activatedBy",
227
+ "type": "address"
273
228
  }
274
229
  ],
275
- "stateMutability": "view",
276
- "type": "function"
230
+ "name": "LogVersionableActivated",
231
+ "type": "event"
277
232
  },
278
233
  {
279
- "inputs": [],
280
- "name": "PRODUCT_OWNER",
281
- "outputs": [
234
+ "inputs": [
282
235
  {
283
- "internalType": "string",
284
- "name": "",
285
- "type": "string"
286
- }
287
- ],
288
- "stateMutability": "view",
289
- "type": "function"
290
- },
291
- {
292
- "inputs": [],
293
- "name": "PRODUCT_OWNER_ROLE",
294
- "outputs": [
236
+ "internalType": "address",
237
+ "name": "implementation",
238
+ "type": "address"
239
+ },
295
240
  {
296
- "internalType": "bytes32",
297
- "name": "role",
298
- "type": "bytes32"
241
+ "internalType": "address",
242
+ "name": "activatedBy",
243
+ "type": "address"
299
244
  }
300
245
  ],
301
- "stateMutability": "view",
246
+ "name": "activate",
247
+ "outputs": [],
248
+ "stateMutability": "nonpayable",
302
249
  "type": "function"
303
250
  },
304
251
  {
305
252
  "inputs": [
306
253
  {
307
254
  "internalType": "NftId",
308
- "name": "nftId",
255
+ "name": "bundleNftId",
309
256
  "type": "uint96"
257
+ },
258
+ {
259
+ "internalType": "NftId",
260
+ "name": "poolNftId",
261
+ "type": "uint96"
262
+ },
263
+ {
264
+ "internalType": "uint256",
265
+ "name": "",
266
+ "type": "uint256"
310
267
  }
311
268
  ],
312
- "name": "activate",
269
+ "name": "addBundleToPool",
313
270
  "outputs": [],
314
271
  "stateMutability": "nonpayable",
315
272
  "type": "function"
@@ -390,56 +347,39 @@
390
347
  "type": "function"
391
348
  },
392
349
  {
393
- "inputs": [],
394
- "name": "components",
395
- "outputs": [
350
+ "inputs": [
351
+ {
352
+ "internalType": "NftId",
353
+ "name": "bundleNftId",
354
+ "type": "uint96"
355
+ },
356
+ {
357
+ "internalType": "NftId",
358
+ "name": "policyNftId",
359
+ "type": "uint96"
360
+ },
396
361
  {
397
362
  "internalType": "uint256",
398
- "name": "numberOfCompnents",
363
+ "name": "collateralAmount",
399
364
  "type": "uint256"
400
365
  }
401
366
  ],
402
- "stateMutability": "view",
367
+ "name": "collateralizePolicy",
368
+ "outputs": [],
369
+ "stateMutability": "nonpayable",
403
370
  "type": "function"
404
371
  },
405
372
  {
406
373
  "inputs": [
407
374
  {
408
- "components": [
409
- {
410
- "internalType": "NftId",
411
- "name": "nftId",
412
- "type": "uint96"
413
- },
414
- {
415
- "internalType": "NftId",
416
- "name": "parentNftId",
417
- "type": "uint96"
418
- },
419
- {
420
- "internalType": "ObjectType",
421
- "name": "objectType",
422
- "type": "uint8"
423
- },
424
- {
425
- "internalType": "address",
426
- "name": "objectAddress",
427
- "type": "address"
428
- },
429
- {
430
- "internalType": "address",
431
- "name": "initialOwner",
432
- "type": "address"
433
- }
434
- ],
435
- "internalType": "struct IRegistry.RegistryInfo",
436
- "name": "productInfo",
437
- "type": "tuple"
375
+ "internalType": "NftId",
376
+ "name": "productNftId",
377
+ "type": "uint96"
438
378
  },
439
379
  {
440
- "internalType": "address",
441
- "name": "applicationOwner",
442
- "type": "address"
380
+ "internalType": "NftId",
381
+ "name": "policyNftId",
382
+ "type": "uint96"
443
383
  },
444
384
  {
445
385
  "internalType": "uint256",
@@ -463,13 +403,40 @@
463
403
  }
464
404
  ],
465
405
  "name": "createApplication",
466
- "outputs": [
406
+ "outputs": [],
407
+ "stateMutability": "nonpayable",
408
+ "type": "function"
409
+ },
410
+ {
411
+ "inputs": [
467
412
  {
468
413
  "internalType": "NftId",
469
- "name": "nftId",
414
+ "name": "bundleNftId",
415
+ "type": "uint96"
416
+ },
417
+ {
418
+ "internalType": "NftId",
419
+ "name": "poolNftId",
470
420
  "type": "uint96"
421
+ },
422
+ {
423
+ "internalType": "uint256",
424
+ "name": "amount",
425
+ "type": "uint256"
426
+ },
427
+ {
428
+ "internalType": "uint256",
429
+ "name": "lifetime",
430
+ "type": "uint256"
431
+ },
432
+ {
433
+ "internalType": "bytes",
434
+ "name": "filter",
435
+ "type": "bytes"
471
436
  }
472
437
  ],
438
+ "name": "createBundleInfo",
439
+ "outputs": [],
473
440
  "stateMutability": "nonpayable",
474
441
  "type": "function"
475
442
  },
@@ -484,9 +451,9 @@
484
451
  "name": "createRole",
485
452
  "outputs": [
486
453
  {
487
- "internalType": "bytes32",
454
+ "internalType": "RoleId",
488
455
  "name": "role",
489
- "type": "bytes32"
456
+ "type": "bytes8"
490
457
  }
491
458
  ],
492
459
  "stateMutability": "nonpayable",
@@ -495,43 +462,93 @@
495
462
  {
496
463
  "inputs": [
497
464
  {
498
- "internalType": "bytes32",
499
- "name": "role",
500
- "type": "bytes32"
465
+ "internalType": "NftId",
466
+ "name": "poolNftId",
467
+ "type": "uint96"
501
468
  }
502
469
  ],
503
- "name": "disableRole",
504
- "outputs": [],
505
- "stateMutability": "nonpayable",
506
- "type": "function"
507
- },
508
- {
509
- "inputs": [
470
+ "name": "getBundleCount",
471
+ "outputs": [
510
472
  {
511
- "internalType": "bytes32",
512
- "name": "role",
513
- "type": "bytes32"
473
+ "internalType": "uint256",
474
+ "name": "bundleCount",
475
+ "type": "uint256"
514
476
  }
515
477
  ],
516
- "name": "enableRole",
517
- "outputs": [],
518
- "stateMutability": "nonpayable",
478
+ "stateMutability": "view",
519
479
  "type": "function"
520
480
  },
521
481
  {
522
482
  "inputs": [
523
483
  {
524
484
  "internalType": "NftId",
525
- "name": "nftId",
485
+ "name": "bundleNftId",
526
486
  "type": "uint96"
527
487
  }
528
488
  ],
529
- "name": "getBundleNftForPolicy",
489
+ "name": "getBundleInfo",
530
490
  "outputs": [
531
491
  {
532
- "internalType": "NftId",
533
- "name": "bundleNft",
534
- "type": "uint96"
492
+ "components": [
493
+ {
494
+ "internalType": "NftId",
495
+ "name": "nftId",
496
+ "type": "uint96"
497
+ },
498
+ {
499
+ "internalType": "NftId",
500
+ "name": "poolNftId",
501
+ "type": "uint96"
502
+ },
503
+ {
504
+ "internalType": "StateId",
505
+ "name": "state",
506
+ "type": "uint8"
507
+ },
508
+ {
509
+ "internalType": "bytes",
510
+ "name": "filter",
511
+ "type": "bytes"
512
+ },
513
+ {
514
+ "internalType": "uint256",
515
+ "name": "capitalAmount",
516
+ "type": "uint256"
517
+ },
518
+ {
519
+ "internalType": "uint256",
520
+ "name": "lockedAmount",
521
+ "type": "uint256"
522
+ },
523
+ {
524
+ "internalType": "uint256",
525
+ "name": "balanceAmount",
526
+ "type": "uint256"
527
+ },
528
+ {
529
+ "internalType": "Timestamp",
530
+ "name": "createdAt",
531
+ "type": "uint40"
532
+ },
533
+ {
534
+ "internalType": "Timestamp",
535
+ "name": "expiredAt",
536
+ "type": "uint40"
537
+ },
538
+ {
539
+ "internalType": "Timestamp",
540
+ "name": "closedAt",
541
+ "type": "uint40"
542
+ },
543
+ {
544
+ "internalType": "Blocknumber",
545
+ "name": "updatedIn",
546
+ "type": "uint32"
547
+ }
548
+ ],
549
+ "internalType": "struct IBundle.BundleInfo",
550
+ "name": "bundleInfo",
551
+ "type": "tuple"
535
552
  }
536
553
  ],
537
554
  "stateMutability": "view",
@@ -540,22 +557,40 @@
540
557
  {
541
558
  "inputs": [
542
559
  {
543
- "internalType": "address",
544
- "name": "componentAddress",
545
- "type": "address"
560
+ "internalType": "NftId",
561
+ "name": "poolNftId",
562
+ "type": "uint96"
563
+ },
564
+ {
565
+ "internalType": "uint256",
566
+ "name": "index",
567
+ "type": "uint256"
546
568
  }
547
569
  ],
548
- "name": "getComponentId",
570
+ "name": "getBundleNftId",
549
571
  "outputs": [
550
572
  {
551
573
  "internalType": "NftId",
552
- "name": "componentNftId",
574
+ "name": "bundleNftId",
553
575
  "type": "uint96"
554
576
  }
555
577
  ],
556
578
  "stateMutability": "view",
557
579
  "type": "function"
558
580
  },
581
+ {
582
+ "inputs": [],
583
+ "name": "getComponentCount",
584
+ "outputs": [
585
+ {
586
+ "internalType": "uint256",
587
+ "name": "numberOfCompnents",
588
+ "type": "uint256"
589
+ }
590
+ ],
591
+ "stateMutability": "view",
592
+ "type": "function"
593
+ },
559
594
  {
560
595
  "inputs": [
561
596
  {
@@ -617,7 +652,7 @@
617
652
  "outputs": [
618
653
  {
619
654
  "internalType": "contract IComponentOwnerService",
620
- "name": "",
655
+ "name": "service",
621
656
  "type": "address"
622
657
  }
623
658
  ],
@@ -634,20 +669,43 @@
634
669
  "type": "bytes"
635
670
  }
636
671
  ],
637
- "stateMutability": "pure",
672
+ "stateMutability": "view",
638
673
  "type": "function"
639
674
  },
640
675
  {
641
- "inputs": [],
642
- "name": "getInitialOwner",
676
+ "inputs": [
677
+ {
678
+ "internalType": "UFixed",
679
+ "name": "fractionalFee",
680
+ "type": "uint256"
681
+ },
682
+ {
683
+ "internalType": "uint256",
684
+ "name": "fixedFee",
685
+ "type": "uint256"
686
+ }
687
+ ],
688
+ "name": "getFee",
643
689
  "outputs": [
644
690
  {
645
- "internalType": "address",
646
- "name": "deployer",
647
- "type": "address"
691
+ "components": [
692
+ {
693
+ "internalType": "UFixed",
694
+ "name": "fractionalFee",
695
+ "type": "uint256"
696
+ },
697
+ {
698
+ "internalType": "uint256",
699
+ "name": "fixedFee",
700
+ "type": "uint256"
701
+ }
702
+ ],
703
+ "internalType": "struct Fee",
704
+ "name": "fee",
705
+ "type": "tuple"
648
706
  }
649
707
  ],
650
- "stateMutability": "view",
708
+ "stateMutability": "pure",
651
709
  "type": "function"
652
710
  },
653
711
  {
@@ -701,11 +759,11 @@
701
759
  "outputs": [
702
760
  {
703
761
  "internalType": "NftId",
704
- "name": "",
762
+ "name": "nftId",
705
763
  "type": "uint96"
706
764
  }
707
765
  ],
708
- "stateMutability": "pure",
766
+ "stateMutability": "view",
709
767
  "type": "function"
710
768
  },
711
769
  {
@@ -725,6 +783,21 @@
725
783
  "name": "nftId",
726
784
  "type": "uint96"
727
785
  },
786
+ {
787
+ "internalType": "NftId",
788
+ "name": "productNftId",
789
+ "type": "uint96"
790
+ },
791
+ {
792
+ "internalType": "NftId",
793
+ "name": "bundleNftId",
794
+ "type": "uint96"
795
+ },
796
+ {
797
+ "internalType": "address",
798
+ "name": "beneficiary",
799
+ "type": "address"
800
+ },
728
801
  {
729
802
  "internalType": "StateId",
730
803
  "name": "state",
@@ -751,29 +824,34 @@
751
824
  "type": "uint256"
752
825
  },
753
826
  {
754
- "internalType": "uint256",
755
- "name": "createdAt",
756
- "type": "uint256"
827
+ "internalType": "bytes",
828
+ "name": "data",
829
+ "type": "bytes"
757
830
  },
758
831
  {
759
- "internalType": "uint256",
760
- "name": "updatedAt",
761
- "type": "uint256"
832
+ "internalType": "Timestamp",
833
+ "name": "createdAt",
834
+ "type": "uint40"
762
835
  },
763
836
  {
764
- "internalType": "uint256",
837
+ "internalType": "Timestamp",
765
838
  "name": "activatedAt",
766
- "type": "uint256"
839
+ "type": "uint40"
767
840
  },
768
841
  {
769
- "internalType": "uint256",
842
+ "internalType": "Timestamp",
770
843
  "name": "expiredAt",
771
- "type": "uint256"
844
+ "type": "uint40"
772
845
  },
773
846
  {
774
- "internalType": "uint256",
847
+ "internalType": "Timestamp",
775
848
  "name": "closedAt",
776
- "type": "uint256"
849
+ "type": "uint40"
850
+ },
851
+ {
852
+ "internalType": "Blocknumber",
853
+ "name": "updatedIn",
854
+ "type": "uint32"
777
855
  }
778
856
  ],
779
857
  "internalType": "struct IPolicy.PolicyInfo",
@@ -802,13 +880,13 @@
802
880
  "type": "uint96"
803
881
  },
804
882
  {
805
- "internalType": "uint256",
806
- "name": "capital",
807
- "type": "uint256"
883
+ "internalType": "bool",
884
+ "name": "isVerifying",
885
+ "type": "bool"
808
886
  },
809
887
  {
810
- "internalType": "uint256",
811
- "name": "lockedCapital",
888
+ "internalType": "UFixed",
889
+ "name": "collateralizationLevel",
812
890
  "type": "uint256"
813
891
  }
814
892
  ],
@@ -820,6 +898,19 @@
820
898
  "stateMutability": "view",
821
899
  "type": "function"
822
900
  },
901
+ {
902
+ "inputs": [],
903
+ "name": "getPoolService",
904
+ "outputs": [
905
+ {
906
+ "internalType": "contract IPoolService",
907
+ "name": "service",
908
+ "type": "address"
909
+ }
910
+ ],
911
+ "stateMutability": "view",
912
+ "type": "function"
913
+ },
823
914
  {
824
915
  "inputs": [
825
916
  {
@@ -877,7 +968,7 @@
877
968
  "type": "tuple"
878
969
  }
879
970
  ],
880
- "internalType": "struct ITreasuryModule.PoolSetup",
971
+ "internalType": "struct ITreasury.PoolSetup",
881
972
  "name": "setup",
882
973
  "type": "tuple"
883
974
  }
@@ -891,7 +982,7 @@
891
982
  "outputs": [
892
983
  {
893
984
  "internalType": "contract IProductService",
894
- "name": "",
985
+ "name": "service",
895
986
  "type": "address"
896
987
  }
897
988
  ],
@@ -926,7 +1017,7 @@
926
1017
  "type": "uint96"
927
1018
  },
928
1019
  {
929
- "internalType": "contract IERC20",
1020
+ "internalType": "contract IERC20Metadata",
930
1021
  "name": "token",
931
1022
  "type": "address"
932
1023
  },
@@ -975,7 +1066,7 @@
975
1066
  "type": "tuple"
976
1067
  }
977
1068
  ],
978
- "internalType": "struct ITreasuryModule.ProductSetup",
1069
+ "internalType": "struct ITreasury.ProductSetup",
979
1070
  "name": "setup",
980
1071
  "type": "tuple"
981
1072
  }
@@ -1007,9 +1098,9 @@
1007
1098
  "name": "getRole",
1008
1099
  "outputs": [
1009
1100
  {
1010
- "internalType": "bytes32",
1101
+ "internalType": "RoleId",
1011
1102
  "name": "role",
1012
- "type": "bytes32"
1103
+ "type": "bytes8"
1013
1104
  }
1014
1105
  ],
1015
1106
  "stateMutability": "view",
@@ -1036,12 +1127,12 @@
1036
1127
  "type": "string"
1037
1128
  }
1038
1129
  ],
1039
- "name": "getRoleForName",
1130
+ "name": "getRoleId",
1040
1131
  "outputs": [
1041
1132
  {
1042
- "internalType": "bytes32",
1133
+ "internalType": "RoleId",
1043
1134
  "name": "role",
1044
- "type": "bytes32"
1135
+ "type": "bytes8"
1045
1136
  }
1046
1137
  ],
1047
1138
  "stateMutability": "pure",
@@ -1050,28 +1141,9 @@
1050
1141
  {
1051
1142
  "inputs": [
1052
1143
  {
1053
- "internalType": "ObjectType",
1054
- "name": "cType",
1055
- "type": "uint8"
1056
- }
1057
- ],
1058
- "name": "getRoleForType",
1059
- "outputs": [
1060
- {
1061
- "internalType": "bytes32",
1062
- "name": "role",
1063
- "type": "bytes32"
1064
- }
1065
- ],
1066
- "stateMutability": "view",
1067
- "type": "function"
1068
- },
1069
- {
1070
- "inputs": [
1071
- {
1072
- "internalType": "bytes32",
1144
+ "internalType": "RoleId",
1073
1145
  "name": "role",
1074
- "type": "bytes32"
1146
+ "type": "bytes8"
1075
1147
  }
1076
1148
  ],
1077
1149
  "name": "getRoleInfo",
@@ -1079,9 +1151,9 @@
1079
1151
  {
1080
1152
  "components": [
1081
1153
  {
1082
- "internalType": "bytes32",
1154
+ "internalType": "RoleId",
1083
1155
  "name": "id",
1084
- "type": "bytes32"
1156
+ "type": "bytes8"
1085
1157
  },
1086
1158
  {
1087
1159
  "internalType": "string",
@@ -1105,9 +1177,9 @@
1105
1177
  {
1106
1178
  "inputs": [
1107
1179
  {
1108
- "internalType": "bytes32",
1180
+ "internalType": "RoleId",
1109
1181
  "name": "role",
1110
- "type": "bytes32"
1182
+ "type": "bytes8"
1111
1183
  },
1112
1184
  {
1113
1185
  "internalType": "uint256",
@@ -1129,9 +1201,9 @@
1129
1201
  {
1130
1202
  "inputs": [
1131
1203
  {
1132
- "internalType": "bytes32",
1204
+ "internalType": "RoleId",
1133
1205
  "name": "role",
1134
- "type": "bytes32"
1206
+ "type": "bytes8"
1135
1207
  }
1136
1208
  ],
1137
1209
  "name": "getRoleMemberCount",
@@ -1180,53 +1252,41 @@
1180
1252
  {
1181
1253
  "inputs": [
1182
1254
  {
1183
- "internalType": "bytes32",
1184
- "name": "role",
1185
- "type": "bytes32"
1186
- },
1187
- {
1188
- "internalType": "address",
1189
- "name": "member",
1190
- "type": "address"
1191
- }
1192
- ],
1193
- "name": "grantRole",
1194
- "outputs": [],
1195
- "stateMutability": "nonpayable",
1196
- "type": "function"
1197
- },
1198
- {
1199
- "inputs": [
1200
- {
1201
- "internalType": "bytes32",
1202
- "name": "role",
1203
- "type": "bytes32"
1255
+ "internalType": "uint256",
1256
+ "name": "a",
1257
+ "type": "uint256"
1204
1258
  },
1205
1259
  {
1206
- "internalType": "address",
1207
- "name": "member",
1208
- "type": "address"
1260
+ "internalType": "int8",
1261
+ "name": "exp",
1262
+ "type": "int8"
1209
1263
  }
1210
1264
  ],
1211
- "name": "hasRole",
1265
+ "name": "getUFixed",
1212
1266
  "outputs": [
1213
1267
  {
1214
- "internalType": "bool",
1268
+ "internalType": "UFixed",
1215
1269
  "name": "",
1216
- "type": "bool"
1270
+ "type": "uint256"
1217
1271
  }
1218
1272
  ],
1219
- "stateMutability": "view",
1273
+ "stateMutability": "pure",
1220
1274
  "type": "function"
1221
1275
  },
1222
1276
  {
1223
- "inputs": [],
1224
- "name": "isRegisterable",
1277
+ "inputs": [
1278
+ {
1279
+ "internalType": "uint256",
1280
+ "name": "a",
1281
+ "type": "uint256"
1282
+ }
1283
+ ],
1284
+ "name": "getUFixed",
1225
1285
  "outputs": [
1226
1286
  {
1227
- "internalType": "bool",
1287
+ "internalType": "UFixed",
1228
1288
  "name": "",
1229
- "type": "bool"
1289
+ "type": "uint256"
1230
1290
  }
1231
1291
  ],
1232
1292
  "stateMutability": "pure",
@@ -1234,99 +1294,213 @@
1234
1294
  },
1235
1295
  {
1236
1296
  "inputs": [],
1237
- "name": "isRegistered",
1297
+ "name": "getVersion",
1238
1298
  "outputs": [
1239
1299
  {
1240
- "internalType": "bool",
1300
+ "internalType": "Version",
1241
1301
  "name": "",
1242
- "type": "bool"
1302
+ "type": "uint24"
1243
1303
  }
1244
1304
  ],
1245
- "stateMutability": "view",
1305
+ "stateMutability": "pure",
1246
1306
  "type": "function"
1247
1307
  },
1248
1308
  {
1249
1309
  "inputs": [
1250
1310
  {
1251
- "internalType": "ObjectType",
1252
- "name": "objectType",
1253
- "type": "uint8"
1254
- },
1255
- {
1256
- "internalType": "StateId",
1257
- "name": "fromId",
1258
- "type": "uint8"
1259
- },
1260
- {
1261
- "internalType": "StateId",
1262
- "name": "toId",
1263
- "type": "uint8"
1311
+ "internalType": "uint256",
1312
+ "name": "idx",
1313
+ "type": "uint256"
1264
1314
  }
1265
1315
  ],
1266
- "name": "isValidTransition",
1316
+ "name": "getVersion",
1267
1317
  "outputs": [
1268
1318
  {
1269
- "internalType": "bool",
1319
+ "internalType": "Version",
1270
1320
  "name": "",
1271
- "type": "bool"
1321
+ "type": "uint24"
1272
1322
  }
1273
1323
  ],
1274
1324
  "stateMutability": "view",
1275
1325
  "type": "function"
1276
1326
  },
1277
1327
  {
1278
- "inputs": [
1328
+ "inputs": [],
1329
+ "name": "getVersionCount",
1330
+ "outputs": [
1279
1331
  {
1280
- "internalType": "NftId",
1281
- "name": "nftId",
1282
- "type": "uint96"
1332
+ "internalType": "uint256",
1333
+ "name": "",
1334
+ "type": "uint256"
1283
1335
  }
1284
1336
  ],
1285
- "name": "processPremium",
1286
- "outputs": [],
1287
- "stateMutability": "nonpayable",
1337
+ "stateMutability": "view",
1288
1338
  "type": "function"
1289
1339
  },
1290
1340
  {
1291
1341
  "inputs": [
1292
1342
  {
1293
- "internalType": "NftId",
1294
- "name": "policyNftId",
1295
- "type": "uint96"
1296
- },
1343
+ "internalType": "Version",
1344
+ "name": "_version",
1345
+ "type": "uint24"
1346
+ }
1347
+ ],
1348
+ "name": "getVersionInfo",
1349
+ "outputs": [
1297
1350
  {
1298
- "internalType": "NftId",
1299
- "name": "productNftId",
1300
- "type": "uint96"
1351
+ "components": [
1352
+ {
1353
+ "internalType": "Version",
1354
+ "name": "version",
1355
+ "type": "uint24"
1356
+ },
1357
+ {
1358
+ "internalType": "address",
1359
+ "name": "implementation",
1360
+ "type": "address"
1361
+ },
1362
+ {
1363
+ "internalType": "address",
1364
+ "name": "activatedBy",
1365
+ "type": "address"
1366
+ },
1367
+ {
1368
+ "internalType": "Blocknumber",
1369
+ "name": "activatedIn",
1370
+ "type": "uint32"
1371
+ },
1372
+ {
1373
+ "internalType": "Timestamp",
1374
+ "name": "activatedAt",
1375
+ "type": "uint40"
1376
+ }
1377
+ ],
1378
+ "internalType": "struct IVersionable.VersionInfo",
1379
+ "name": "",
1380
+ "type": "tuple"
1301
1381
  }
1302
1382
  ],
1303
- "name": "processPremium",
1304
- "outputs": [],
1305
- "stateMutability": "nonpayable",
1383
+ "stateMutability": "view",
1306
1384
  "type": "function"
1307
1385
  },
1308
1386
  {
1309
1387
  "inputs": [],
1310
- "name": "register",
1388
+ "name": "getZeroFee",
1311
1389
  "outputs": [
1312
1390
  {
1313
- "internalType": "NftId",
1314
- "name": "nftId",
1315
- "type": "uint96"
1391
+ "components": [
1392
+ {
1393
+ "internalType": "UFixed",
1394
+ "name": "fractionalFee",
1395
+ "type": "uint256"
1396
+ },
1397
+ {
1398
+ "internalType": "uint256",
1399
+ "name": "fixedFee",
1400
+ "type": "uint256"
1401
+ }
1402
+ ],
1403
+ "internalType": "struct Fee",
1404
+ "name": "fee",
1405
+ "type": "tuple"
1316
1406
  }
1317
1407
  ],
1408
+ "stateMutability": "pure",
1409
+ "type": "function"
1410
+ },
1411
+ {
1412
+ "inputs": [
1413
+ {
1414
+ "internalType": "RoleId",
1415
+ "name": "role",
1416
+ "type": "bytes8"
1417
+ },
1418
+ {
1419
+ "internalType": "address",
1420
+ "name": "member",
1421
+ "type": "address"
1422
+ }
1423
+ ],
1424
+ "name": "grantRole",
1425
+ "outputs": [],
1318
1426
  "stateMutability": "nonpayable",
1319
1427
  "type": "function"
1320
1428
  },
1321
1429
  {
1322
1430
  "inputs": [
1323
1431
  {
1324
- "internalType": "contract IComponentContract",
1325
- "name": "component",
1432
+ "internalType": "RoleId",
1433
+ "name": "role",
1434
+ "type": "bytes8"
1435
+ },
1436
+ {
1437
+ "internalType": "address",
1438
+ "name": "member",
1326
1439
  "type": "address"
1327
1440
  }
1328
1441
  ],
1329
- "name": "registerComponent",
1442
+ "name": "hasRole",
1443
+ "outputs": [
1444
+ {
1445
+ "internalType": "bool",
1446
+ "name": "",
1447
+ "type": "bool"
1448
+ }
1449
+ ],
1450
+ "stateMutability": "view",
1451
+ "type": "function"
1452
+ },
1453
+ {
1454
+ "inputs": [
1455
+ {
1456
+ "internalType": "Version",
1457
+ "name": "_version",
1458
+ "type": "uint24"
1459
+ }
1460
+ ],
1461
+ "name": "isActivated",
1462
+ "outputs": [
1463
+ {
1464
+ "internalType": "bool",
1465
+ "name": "",
1466
+ "type": "bool"
1467
+ }
1468
+ ],
1469
+ "stateMutability": "view",
1470
+ "type": "function"
1471
+ },
1472
+ {
1473
+ "inputs": [
1474
+ {
1475
+ "internalType": "ObjectType",
1476
+ "name": "objectType",
1477
+ "type": "uint8"
1478
+ },
1479
+ {
1480
+ "internalType": "StateId",
1481
+ "name": "fromId",
1482
+ "type": "uint8"
1483
+ },
1484
+ {
1485
+ "internalType": "StateId",
1486
+ "name": "toId",
1487
+ "type": "uint8"
1488
+ }
1489
+ ],
1490
+ "name": "isValidTransition",
1491
+ "outputs": [
1492
+ {
1493
+ "internalType": "bool",
1494
+ "name": "",
1495
+ "type": "bool"
1496
+ }
1497
+ ],
1498
+ "stateMutability": "view",
1499
+ "type": "function"
1500
+ },
1501
+ {
1502
+ "inputs": [],
1503
+ "name": "register",
1330
1504
  "outputs": [
1331
1505
  {
1332
1506
  "internalType": "NftId",
@@ -1343,9 +1517,19 @@
1343
1517
  "internalType": "NftId",
1344
1518
  "name": "nftId",
1345
1519
  "type": "uint96"
1520
+ },
1521
+ {
1522
+ "internalType": "ObjectType",
1523
+ "name": "objectType",
1524
+ "type": "uint8"
1525
+ },
1526
+ {
1527
+ "internalType": "contract IERC20Metadata",
1528
+ "name": "token",
1529
+ "type": "address"
1346
1530
  }
1347
1531
  ],
1348
- "name": "registerPool",
1532
+ "name": "registerComponent",
1349
1533
  "outputs": [],
1350
1534
  "stateMutability": "nonpayable",
1351
1535
  "type": "function"
@@ -1402,6 +1586,29 @@
1402
1586
  "stateMutability": "nonpayable",
1403
1587
  "type": "function"
1404
1588
  },
1589
+ {
1590
+ "inputs": [
1591
+ {
1592
+ "internalType": "NftId",
1593
+ "name": "nftId",
1594
+ "type": "uint96"
1595
+ },
1596
+ {
1597
+ "internalType": "bool",
1598
+ "name": "isVerifying",
1599
+ "type": "bool"
1600
+ },
1601
+ {
1602
+ "internalType": "UFixed",
1603
+ "name": "collateralizationRate",
1604
+ "type": "uint256"
1605
+ }
1606
+ ],
1607
+ "name": "registerPool",
1608
+ "outputs": [],
1609
+ "stateMutability": "nonpayable",
1610
+ "type": "function"
1611
+ },
1405
1612
  {
1406
1613
  "inputs": [
1407
1614
  {
@@ -1420,7 +1627,7 @@
1420
1627
  "type": "uint96"
1421
1628
  },
1422
1629
  {
1423
- "internalType": "contract IERC20",
1630
+ "internalType": "contract IERC20Metadata",
1424
1631
  "name": "token",
1425
1632
  "type": "address"
1426
1633
  },
@@ -1472,9 +1679,33 @@
1472
1679
  {
1473
1680
  "inputs": [
1474
1681
  {
1475
- "internalType": "bytes32",
1682
+ "internalType": "NftId",
1683
+ "name": "bundleNftId",
1684
+ "type": "uint96"
1685
+ },
1686
+ {
1687
+ "internalType": "NftId",
1688
+ "name": "policyNftId",
1689
+ "type": "uint96"
1690
+ }
1691
+ ],
1692
+ "name": "releasePolicy",
1693
+ "outputs": [
1694
+ {
1695
+ "internalType": "uint256",
1696
+ "name": "collateralAmount",
1697
+ "type": "uint256"
1698
+ }
1699
+ ],
1700
+ "stateMutability": "nonpayable",
1701
+ "type": "function"
1702
+ },
1703
+ {
1704
+ "inputs": [
1705
+ {
1706
+ "internalType": "RoleId",
1476
1707
  "name": "role",
1477
- "type": "bytes32"
1708
+ "type": "bytes8"
1478
1709
  },
1479
1710
  {
1480
1711
  "internalType": "address",
@@ -1487,6 +1718,95 @@
1487
1718
  "stateMutability": "nonpayable",
1488
1719
  "type": "function"
1489
1720
  },
1721
+ {
1722
+ "inputs": [
1723
+ {
1724
+ "internalType": "RoleId",
1725
+ "name": "role",
1726
+ "type": "bytes8"
1727
+ }
1728
+ ],
1729
+ "name": "roleExists",
1730
+ "outputs": [
1731
+ {
1732
+ "internalType": "bool",
1733
+ "name": "",
1734
+ "type": "bool"
1735
+ }
1736
+ ],
1737
+ "stateMutability": "view",
1738
+ "type": "function"
1739
+ },
1740
+ {
1741
+ "inputs": [
1742
+ {
1743
+ "components": [
1744
+ {
1745
+ "internalType": "NftId",
1746
+ "name": "nftId",
1747
+ "type": "uint96"
1748
+ },
1749
+ {
1750
+ "internalType": "NftId",
1751
+ "name": "poolNftId",
1752
+ "type": "uint96"
1753
+ },
1754
+ {
1755
+ "internalType": "StateId",
1756
+ "name": "state",
1757
+ "type": "uint8"
1758
+ },
1759
+ {
1760
+ "internalType": "bytes",
1761
+ "name": "filter",
1762
+ "type": "bytes"
1763
+ },
1764
+ {
1765
+ "internalType": "uint256",
1766
+ "name": "capitalAmount",
1767
+ "type": "uint256"
1768
+ },
1769
+ {
1770
+ "internalType": "uint256",
1771
+ "name": "lockedAmount",
1772
+ "type": "uint256"
1773
+ },
1774
+ {
1775
+ "internalType": "uint256",
1776
+ "name": "balanceAmount",
1777
+ "type": "uint256"
1778
+ },
1779
+ {
1780
+ "internalType": "Timestamp",
1781
+ "name": "createdAt",
1782
+ "type": "uint40"
1783
+ },
1784
+ {
1785
+ "internalType": "Timestamp",
1786
+ "name": "expiredAt",
1787
+ "type": "uint40"
1788
+ },
1789
+ {
1790
+ "internalType": "Timestamp",
1791
+ "name": "closedAt",
1792
+ "type": "uint40"
1793
+ },
1794
+ {
1795
+ "internalType": "Blocknumber",
1796
+ "name": "updatedIn",
1797
+ "type": "uint32"
1798
+ }
1799
+ ],
1800
+ "internalType": "struct IBundle.BundleInfo",
1801
+ "name": "bundleInfo",
1802
+ "type": "tuple"
1803
+ }
1804
+ ],
1805
+ "name": "setBundleInfo",
1806
+ "outputs": [],
1807
+ "stateMutability": "nonpayable",
1808
+ "type": "function"
1809
+ },
1490
1810
  {
1491
1811
  "inputs": [
1492
1812
  {
@@ -1523,6 +1843,96 @@
1523
1843
  "stateMutability": "nonpayable",
1524
1844
  "type": "function"
1525
1845
  },
1846
+ {
1847
+ "inputs": [
1848
+ {
1849
+ "components": [
1850
+ {
1851
+ "internalType": "NftId",
1852
+ "name": "nftId",
1853
+ "type": "uint96"
1854
+ },
1855
+ {
1856
+ "internalType": "NftId",
1857
+ "name": "productNftId",
1858
+ "type": "uint96"
1859
+ },
1860
+ {
1861
+ "internalType": "NftId",
1862
+ "name": "bundleNftId",
1863
+ "type": "uint96"
1864
+ },
1865
+ {
1866
+ "internalType": "address",
1867
+ "name": "beneficiary",
1868
+ "type": "address"
1869
+ },
1870
+ {
1871
+ "internalType": "StateId",
1872
+ "name": "state",
1873
+ "type": "uint8"
1874
+ },
1875
+ {
1876
+ "internalType": "uint256",
1877
+ "name": "sumInsuredAmount",
1878
+ "type": "uint256"
1879
+ },
1880
+ {
1881
+ "internalType": "uint256",
1882
+ "name": "premiumAmount",
1883
+ "type": "uint256"
1884
+ },
1885
+ {
1886
+ "internalType": "uint256",
1887
+ "name": "premiumPaidAmount",
1888
+ "type": "uint256"
1889
+ },
1890
+ {
1891
+ "internalType": "uint256",
1892
+ "name": "lifetime",
1893
+ "type": "uint256"
1894
+ },
1895
+ {
1896
+ "internalType": "bytes",
1897
+ "name": "data",
1898
+ "type": "bytes"
1899
+ },
1900
+ {
1901
+ "internalType": "Timestamp",
1902
+ "name": "createdAt",
1903
+ "type": "uint40"
1904
+ },
1905
+ {
1906
+ "internalType": "Timestamp",
1907
+ "name": "activatedAt",
1908
+ "type": "uint40"
1909
+ },
1910
+ {
1911
+ "internalType": "Timestamp",
1912
+ "name": "expiredAt",
1913
+ "type": "uint40"
1914
+ },
1915
+ {
1916
+ "internalType": "Timestamp",
1917
+ "name": "closedAt",
1918
+ "type": "uint40"
1919
+ },
1920
+ {
1921
+ "internalType": "Blocknumber",
1922
+ "name": "updatedIn",
1923
+ "type": "uint32"
1924
+ }
1925
+ ],
1926
+ "internalType": "struct IPolicy.PolicyInfo",
1927
+ "name": "policyInfo",
1928
+ "type": "tuple"
1929
+ }
1930
+ ],
1931
+ "name": "setPolicyInfo",
1932
+ "outputs": [],
1933
+ "stateMutability": "nonpayable",
1934
+ "type": "function"
1935
+ },
1526
1936
  {
1527
1937
  "inputs": [
1528
1938
  {
@@ -1620,50 +2030,105 @@
1620
2030
  {
1621
2031
  "inputs": [
1622
2032
  {
1623
- "internalType": "NftId",
1624
- "name": "policyNftId",
1625
- "type": "uint96"
2033
+ "internalType": "RoleId",
2034
+ "name": "role",
2035
+ "type": "bytes8"
1626
2036
  },
1627
2037
  {
1628
- "internalType": "NftId",
1629
- "name": "productNftId",
1630
- "type": "uint96"
2038
+ "internalType": "bool",
2039
+ "name": "active",
2040
+ "type": "bool"
1631
2041
  }
1632
2042
  ],
1633
- "name": "underwrite",
2043
+ "name": "setRoleState",
1634
2044
  "outputs": [],
1635
2045
  "stateMutability": "nonpayable",
1636
2046
  "type": "function"
2047
+ },
2048
+ {
2049
+ "inputs": [
2050
+ {
2051
+ "internalType": "bytes4",
2052
+ "name": "interfaceId",
2053
+ "type": "bytes4"
2054
+ }
2055
+ ],
2056
+ "name": "supportsInterface",
2057
+ "outputs": [
2058
+ {
2059
+ "internalType": "bool",
2060
+ "name": "",
2061
+ "type": "bool"
2062
+ }
2063
+ ],
2064
+ "stateMutability": "view",
2065
+ "type": "function"
1637
2066
  }
1638
2067
  ],
1639
- "bytecode": "0x60e06040523480156200001157600080fd5b506040516200a33c3803806200a33c833981810160405281019062000037919062000e1a565b808182848680806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001066040518060400160405280600c81526020017f50726f647563744f776e657200000000000000000000000000000000000000008152506200050560201b60201c565b60808181525050620001536040518060400160405280600b81526020017f4f7261636c654f776e65720000000000000000000000000000000000000000008152506200050560201b60201c565b60a08181525050620001a06040518060400160405280600981526020017f506f6f6c4f776e657200000000000000000000000000000000000000000000008152506200050560201b60201c565b60c08181525050620001c7620001bb6200054460201b60201c565b6200055d60201b60201c565b620001e7620001db6200071b60201b60201c565b6200055d60201b60201c565b62000207620001fb6200073460201b60201c565b6200055d60201b60201c565b620002176200074d60201b60201c565b620002276200094660201b60201c565b600030905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505030601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505030601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505030601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200128a565b60008060405180606001604052806000801b81526020018481526020016001151581525090506200053c8162000bcc60201b60201c565b915050919050565b600062000558603c62000c8960201b60201c565b905090565b6200056d62000c9360201b60201c565b600660008360ff1660ff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506001600760008360ff1660ff1681526020019081526020016000206000620005cb62000c9360201b60201c565b60ff1660ff1681526020019081526020016000206000620005f162000cac60201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008360ff1660ff16815260200190815260200160002060006200064962000cac60201b60201c565b60ff1660ff16815260200190815260200160002060006200066f62000c9360201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008360ff1660ff1681526020019081526020016000206000620006c762000cac60201b60201c565b60ff1660ff1681526020019081526020016000206000620006ed62000cc560201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006200072f604662000c8960201b60201c565b905090565b600062000748605062000c8960201b60201c565b905090565b6200075d62000c9360201b60201c565b600660006200077162000cde60201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600160076000620007b362000cde60201b60201c565b60ff1660ff1681526020019081526020016000206000620007d962000c9360201b60201c565b60ff1660ff1681526020019081526020016000206000620007ff62000cac60201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006200084062000cde60201b60201c565b60ff1660ff16815260200190815260200160002060006200086662000cac60201b60201c565b60ff1660ff16815260200190815260200160002060006200088c62000c9360201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620008cd62000cde60201b60201c565b60ff1660ff1681526020019081526020016000206000620008f362000cac60201b60201c565b60ff1660ff16815260200190815260200160002060006200091962000cf760201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6200095662000d1060201b60201c565b600660006200096a62000d2960201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600160076000620009ac62000d2960201b60201c565b60ff1660ff1681526020019081526020016000206000620009d262000d1060201b60201c565b60ff1660ff1681526020019081526020016000206000620009f862000d4260201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600062000a3962000d2960201b60201c565b60ff1660ff168152602001908152602001600020600062000a5f62000d1060201b60201c565b60ff1660ff168152602001908152602001600020600062000a8562000d5b60201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600062000ac662000d2960201b60201c565b60ff1660ff168152602001908152602001600020600062000aec62000d1060201b60201c565b60ff1660ff168152602001908152602001600020600062000b1262000c9360201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600062000b5362000d2960201b60201c565b60ff1660ff168152602001908152602001600020600062000b7962000c9360201b60201c565b60ff1660ff168152602001908152602001600020600062000b9f62000cf760201b60201c565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000816000015190506000801b810362000c2b5762000bf5826020015162000d7460201b60201c565b90508082600001818152505060038190806001815401808255809150506001900390600052602060002001600090919091909150555b816002600083815260200190815260200160002060008201518160000155602082015181600101908162000c609190620010f0565b5060408201518160020160006101000a81548160ff021916908315150217905550905050919050565b6000819050919050565b600062000ca7606462000da660201b60201c565b905090565b600062000cc0606e62000da660201b60201c565b905090565b600062000cd960d262000da660201b60201c565b905090565b600062000cf2605162000c8960201b60201c565b905090565b600062000d0b60c862000da660201b60201c565b905090565b600062000d24600a62000da660201b60201c565b905090565b600062000d3d605a62000c8960201b60201c565b905090565b600062000d56601462000da660201b60201c565b905090565b600062000d6f601e62000da660201b60201c565b905090565b60008160405160200162000d89919062001266565b604051602081830303815290604052805190602001209050919050565b6000819050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000de28262000db5565b9050919050565b62000df48162000dd5565b811462000e0057600080fd5b50565b60008151905062000e148162000de9565b92915050565b60008060006060848603121562000e365762000e3562000db0565b5b600062000e468682870162000e03565b935050602062000e598682870162000e03565b925050604062000e6c8682870162000e03565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ef857607f821691505b60208210810362000f0e5762000f0d62000eb0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f39565b62000f84868362000f39565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fd162000fcb62000fc58462000f9c565b62000fa6565b62000f9c565b9050919050565b6000819050919050565b62000fed8362000fb0565b6200100562000ffc8262000fd8565b84845462000f46565b825550505050565b600090565b6200101c6200100d565b6200102981848462000fe2565b505050565b5b8181101562001051576200104560008262001012565b6001810190506200102f565b5050565b601f821115620010a0576200106a8162000f14565b620010758462000f29565b8101602085101562001085578190505b6200109d620010948562000f29565b8301826200102e565b50505b505050565b600082821c905092915050565b6000620010c560001984600802620010a5565b1980831691505092915050565b6000620010e08383620010b2565b9150826002028217905092915050565b620010fb8262000e76565b67ffffffffffffffff81111562001117576200111662000e81565b5b62001123825462000edf565b6200113082828562001055565b600060209050601f83116001811462001168576000841562001153578287015190505b6200115f8582620010d2565b865550620011cf565b601f198416620011788662000f14565b60005b82811015620011a2578489015182556001820191506020850194506020810190506200117b565b86831015620011c25784890151620011be601f891682620010b2565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b60005b8381101562001208578082015181840152602081019050620011eb565b60008484015250505050565b6000601f19601f8301169050919050565b6000620012328262000e76565b6200123e8185620011d7565b935062001250818560208601620011e8565b6200125b8162001214565b840191505092915050565b6000602082019050818103600083015262001282818462001225565b905092915050565b60805160a05160c051619082620012ba6000396000611c4b0152600061160601526000612ea201526190826000f3fe60806040523480156200001157600080fd5b5060043610620003f45760003560e01c80637ff826131162000219578063bd7d9d851162000129578063e9e96c7011620000bd578063f174ce191162000087578063f174ce191462000ce5578063f274e87d1462000d07578063fb2cb1011462000d3e578063fc0ae0541462000d6057620003f4565b8063e9e96c701462000c37578063eb71e8c41462000c6d578063eb7f494d1462000c8f578063f0ea17c31462000caf57620003f4565b8063ca38559811620000ff578063ca3855981462000bb7578063d0bb064c1462000bd7578063d547741f1462000bf7578063dc261c3a1462000c1757620003f4565b8063bd7d9d851462000b15578063be409a111462000b4b578063ca15c8731462000b8157620003f4565b80639cad005211620001ad578063b90915521162000177578063b90915521462000a7b578063ba62fbe41462000a9d578063bce395231462000abf578063bd62faf71462000adf57620003f4565b80639cad005214620009a3578063a310e2a314620009d9578063a7f3669b1462000a0f578063af17d38a1462000a4557620003f4565b80638aa03b6b11620001ef5780638aa03b6b14620008f55780639010d07c146200091757806391d14854146200094d57806393865aec146200098357620003f4565b80637ff82613146200089157806383d3331914620008b1578063893d20e814620008d357620003f4565b80633300a8a811620003155780636078a3b211620002a95780636fa2985311620002735780636fa2985314620007f757806379e829d014620008195780637c4a13b1146200083b5780637fec8b31146200085b57620003f4565b80636078a3b2146200075d578063644c45e014620007935780636c137ea914620007b55780636ce5caea14620007d757620003f4565b80634fd077f511620002eb5780634fd077f514620006995780635312fdc214620006cf57806357f80bbf14620007055780635ab1bd53146200073b57620003f4565b80633300a8a8146200061f5780633bc5de3014620006555780634288121d146200067757620003f4565b806322366844116200038d5780632f2ff15d11620003635780632f2ff15d146200059b57806331b62a3b14620005bb57806331e48e3214620005dd57806332e3a6e914620005fd57620003f4565b80632236684414620005215780632a5f6e8514620005435780632b1c7f73146200056557620003f4565b806313f7dcfc11620003cf57806313f7dcfc146200048757806315dae03e14620004a75780631aa3a00814620004c95780632064717e14620004eb57620003f4565b806301ed760414620003f957806302393c41146200042f5780630d3581811462000451575b600080fd5b62000417600480360381019062000411919062006000565b62000d96565b60405162000426919062006075565b60405180910390f35b6200043962000de7565b604051620004489190620060ad565b60405180910390f35b6200046f600480360381019062000469919062006108565b62000df0565b6040516200047e919062006173565b60405180910390f35b620004a560048036038101906200049f919062006000565b62000e20565b005b620004b162000f00565b604051620004c09190620061a1565b60405180910390f35b620004d362000f11565b604051620004e2919062006075565b60405180910390f35b62000509600480360381019062000503919062006389565b6200104a565b60405162000518919062006075565b60405180910390f35b6200052b620014cb565b6040516200053a919062006445565b60405180910390f35b6200054d62001602565b6040516200055c91906200647d565b60405180910390f35b6200058360048036038101906200057d91906200649a565b6200162a565b60405162000592919062006075565b60405180910390f35b620005b96004803603810190620005b39190620064fd565b6200168b565b005b620005c56200195d565b604051620005d4919062006075565b60405180910390f35b620005fb6004803603810190620005f5919062006613565b62001970565b005b6200060762001c47565b6040516200061691906200647d565b60405180910390f35b6200063d600480360381019062000637919062006000565b62001c6f565b6040516200064c9190620067c3565b60405180910390f35b6200065f62001d9e565b6040516200066e919062006869565b60405180910390f35b6200068162001dc8565b604051620006909190620068ee565b60405180910390f35b620006b76004803603810190620006b1919062006000565b62001df2565b604051620006c6919062006a08565b60405180910390f35b620006ed6004803603810190620006e7919062006a26565b6200204a565b604051620006fc91906200647d565b60405180910390f35b6200072360048036038101906200071d919062006000565b62002075565b60405162000732919062006aa0565b60405180910390f35b6200074562002112565b60405162000754919062006ae2565b60405180910390f35b6200077b600480360381019062000775919062006b44565b6200213b565b6040516200078a919062006075565b60405180910390f35b6200079d62002df7565b604051620007ac919062006075565b60405180910390f35b620007bf62002e9e565b604051620007ce91906200647d565b60405180910390f35b620007f56004803603810190620007ef919062006b76565b62002ec6565b005b6200080162003504565b60405162000810919062006be2565b60405180910390f35b620008236200352e565b60405162000832919062006445565b60405180910390f35b62000859600480360381019062000853919062006bff565b62003537565b005b62000879600480360381019062000873919062006a26565b62003764565b60405162000888919062006075565b60405180910390f35b620008af6004803603810190620008a9919062006000565b620037b2565b005b620008bb62003987565b604051620008ca9190620060ad565b60405180910390f35b620008dd62003994565b604051620008ec919062006c42565b60405180910390f35b620008ff62003b3f565b6040516200090e9190620060ad565b60405180910390f35b6200093560048036038101906200092f919062006c5f565b62003b44565b60405162000944919062006c42565b60405180910390f35b6200096b6004803603810190620009659190620064fd565b62003b75565b6040516200097a919062006445565b60405180910390f35b620009a160048036038101906200099b919062006ca6565b62003bdd565b005b620009c16004803603810190620009bb919062006dcf565b62003c4e565b604051620009d091906200647d565b60405180910390f35b620009f76004803603810190620009f1919062006000565b62003c80565b60405162000a06919062006e31565b60405180910390f35b62000a2d600480360381019062000a27919062006e7f565b62003cdc565b60405162000a3c919062006173565b60405180910390f35b62000a63600480360381019062000a5d919062006dcf565b62003f21565b60405162000a7291906200647d565b60405180910390f35b62000a8562004017565b60405162000a94919062006f4e565b60405180910390f35b62000aa762004050565b60405162000ab69190620060ad565b60405180910390f35b62000add600480360381019062000ad7919062006b76565b6200405d565b005b62000afd600480360381019062000af7919062007026565b6200440e565b60405162000b0c919062006075565b60405180910390f35b62000b33600480360381019062000b2d919062006000565b62004918565b60405162000b42919062007160565b60405180910390f35b62000b69600480360381019062000b63919062006bff565b62004a19565b60405162000b78919062007248565b60405180910390f35b62000b9f600480360381019062000b99919062006bff565b62004b07565b60405162000bae9190620060ad565b60405180910390f35b62000bd5600480360381019062000bcf919062006000565b62004b2d565b005b62000bf5600480360381019062000bef91906200726c565b62004cf5565b005b62000c15600480360381019062000c0f9190620064fd565b62004e2e565b005b62000c35600480360381019062000c2f919062006ca6565b62005000565b005b62000c55600480360381019062000c4f9190620072de565b62005071565b60405162000c64919062006445565b60405180910390f35b62000c77620050d1565b60405162000c86919062006f4e565b60405180910390f35b62000cad600480360381019062000ca7919062006bff565b6200510a565b005b62000ccd600480360381019062000cc7919062006000565b62005337565b60405162000cdc9190620073a7565b60405180910390f35b62000cef62005433565b60405162000cfe919062006f4e565b60405180910390f35b62000d25600480360381019062000d1f9190620073c4565b6200546c565b60405162000d359291906200740b565b60405180910390f35b62000d48620055a7565b60405162000d57919062006c42565b60405180910390f35b62000d7e600480360381019062000d78919062006108565b620055d1565b60405162000d8d91906200647d565b60405180910390f35b600060116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b6402540be40081565b6000600660008360ff1660ff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000eaa90620074ae565b60405180910390fd5b600060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050806002015481600301819055504281600601819055505050565b600062000f0c62005798565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9b9062007520565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040162000fff919062006c42565b6020604051808303816000875af11580156200101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001045919062007559565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620010df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010d690620074ae565b60405180910390fd5b816bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b81526004016200112891906200759c565b602060405180830381865af415801562001146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200116c9190620075ea565b503073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df919062007661565b73ffffffffffffffffffffffffffffffffffffffff16631d1b0cac886000015162001209620057ab565b896040518463ffffffff1660e01b81526004016200122a9392919062007693565b6020604051808303816000875af11580156200124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001270919062007559565b9050604051806101600160405280826bffffffffffffffffffffffff168152602001601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d358181620012da620057ab565b6040518263ffffffff1660e01b8152600401620012f89190620061a1565b602060405180830381865afa15801562001316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133c9190620076e7565b60ff168152602001868152602001858152602001600081526020018481526020014281526020014281526020016000815260200160008152602001600081525060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e082015181600601556101008201518160070155610120820151816008015561014082015181600901559050508160116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509695505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b815260040162001529919062006c42565b602060405180830381865afa15801562001547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156d919062007559565b9050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401620015b891906200759c565b602060405180830381865af4158015620015d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015fc9190620075ea565b91505090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016fd919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200176d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200176490620077b2565b60405180910390fd5b81600260008481526020019081526020016000206000015414620017c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017bf9062007824565b60405180910390fd5b6002600083815260200190815260200160002060020160009054906101000a900460ff166200182e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018259062007896565b60405180910390fd5b60016004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620018be8160056000858152602001908152602001600020620057be90919063ffffffff16565b507f9a2df6ca1a9ab5e734f2f076b73fd00974eca8e06b9895f8f4eaebb590cc09a582826004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040516200195193929190620078b8565b60405180910390a15050565b60006200196b6000620057f0565b905090565b600084604051620019819062005d56565b6200198d919062006c42565b604051809103906000f080158015620019aa573d6000803e3d6000fd5b509050604051806101000160405280896bffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff168152602001876bffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250601960008a6bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004016000820151816000015560208201518160010155505060e082015181600601600082015181600001556020820151816001015550509050505050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b62001c7962005d64565b601b6000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182016040518060400160405290816000820154815260200160018201548152505081526020016003820160405180604001604052908160008201548152602001600182015481525050815250509050919050565b6060600060405160200162001db4919062007938565b604051602081830303815290604052905090565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62001dfc62005dc0565b60196000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482016040518060400160405290816000820154815260200160018201548152505081526020016006820160405180604001604052908160008201548152602001600182015481525050815250509050919050565b60006003828154811062002063576200206262007955565b5b90600052602060002001549050919050565b6200207f62005e81565b60146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620021d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620021c790620079d4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200221e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002244919062007a0d565b905060006200225382620055d1565b90503073ffffffffffffffffffffffffffffffffffffffff166391d14854828673ffffffffffffffffffffffffffffffffffffffff1663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e4919062007730565b6040518363ffffffff1660e01b81526004016200230392919062007a3f565b602060405180830381865afa15801562002321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023479190620075ea565b62002389576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023809062007abc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620023d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023fb919062007661565b73ffffffffffffffffffffffffffffffffffffffff16634420e486856040518263ffffffff1660e01b815260040162002435919062006c42565b6020604051808303816000875af115801562002455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200247b919062007559565b925060008473ffffffffffffffffffffffffffffffffffffffff166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024f1919062007af5565b905060008573ffffffffffffffffffffffffffffffffffffffff1663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002541573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002567919062007730565b90506040518060600160405280866bffffffffffffffffffffffff168152602001600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d358181876040518263ffffffff1660e01b8152600401620025e59190620061a1565b602060405180830381865afa15801562002603573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026299190620076e7565b60ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681525060086000876bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050620027a28673ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002792919062007a0d565b6200279c620057fa565b6200580d565b1562002a8657600086905060008173ffffffffffffffffffffffffffffffffffffffff16631bdd6b766040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002821919062007559565b9050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b81526004016200286c91906200759c565b602060405180830381865af41580156200288a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028b09190620075ea565b620028f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620028e99062007b77565b60405180910390fd5b6000620028fe62005820565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e48e3289838589898973ffffffffffffffffffffffffffffffffffffffff1663bc74aab06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200298e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b4919062007c20565b8a73ffffffffffffffffffffffffffffffffffffffff1663daafed406040518163ffffffff1660e01b81526004016040805180830381865afa158015620029ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a25919062007c20565b6040518863ffffffff1660e01b815260040162002a49979695949392919062007c96565b600060405180830381600087803b15801562002a6457600080fd5b505af115801562002a79573d6000803e3d6000fd5b5050505050505062002d22565b62002b0c8673ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002afc919062007a0d565b62002b0662005825565b6200580d565b1562002d21576000869050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca385598876040518263ffffffff1660e01b815260040162002b74919062006075565b600060405180830381600087803b15801562002b8f57600080fd5b505af115801562002ba4573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0bb064c87848473ffffffffffffffffffffffffffffffffffffffff16634b270a466040518163ffffffff1660e01b81526004016040805180830381865afa15801562002c33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c59919062007c20565b8573ffffffffffffffffffffffffffffffffffffffff1663235c36036040518163ffffffff1660e01b81526004016040805180830381865afa15801562002ca4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cca919062007c20565b6040518563ffffffff1660e01b815260040162002ceb949392919062007d14565b600060405180830381600087803b15801562002d0657600080fd5b505af115801562002d1b573d6000803e3d6000fd5b50505050505b5b84600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600a859080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b815260040162002e55919062006c42565b602060405180830381865afa15801562002e73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e99919062007559565b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd7d9d85846040518263ffffffff1660e01b815260040162002f25919062006075565b61016060405180830381865afa15801562002f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f6a919062007e88565b905062002f7c81600001518462005838565b62002fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002fb59062007f0b565b60405180910390fd5b600060196000846bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201604051806040016040529081600082015481526020016001820154815250508152602001600682016040518060400160405290816000820154815260200160018201548152505081525050905060008160800151905060003073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003286919062007661565b73ffffffffffffffffffffffffffffffffffffffff1663df33330b876040518263ffffffff1660e01b8152600401620032c0919062006075565b602060405180830381865afa158015620032de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003304919062007730565b90506000601b600085604001516bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620033708460c0015162005861565b15620033f3578273ffffffffffffffffffffffffffffffffffffffff1663beabacc8838388606001516040518463ffffffff1660e01b8152600401620033b99392919062007f2d565b600060405180830381600087803b158015620033d457600080fd5b505af1158015620033e9573d6000803e3d6000fd5b50505050620034fb565b6000806200340a87606001518760c001516200546c565b915091508473ffffffffffffffffffffffffffffffffffffffff1663beabacc8858860a00151856040518463ffffffff1660e01b8152600401620034519392919062007f2d565b600060405180830381600087803b1580156200346c57600080fd5b505af115801562003481573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663beabacc88585846040518463ffffffff1660e01b8152600401620034c49392919062007f2d565b600060405180830381600087803b158015620034df57600080fd5b505af1158015620034f4573d6000803e3d6000fd5b5050505050505b50505050505050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006001905090565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035a9919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462003619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200361090620077b2565b60405180910390fd5b60006002600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054620036559062007f99565b80601f0160208091040260200160405190810160405280929190818152602001828054620036839062007f99565b8015620036d45780601f10620036a857610100808354040283529160200191620036d4565b820191906000526020600020905b815481529060010190602001808311620036b657829003601f168201915b505050505081526020016002820160009054906101000a900460ff16151515158152505090508181600001511462003743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200373a9062008044565b60405180910390fd5b60008160400190151590811515815250506200375f8162005882565b505050565b6000600a82815481106200377d576200377c62007955565b5b9060005260206000209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462003845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200383c90620074ae565b60405180910390fd5b600060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020905042816007018190555080600401544262003893919062008095565b8160080181905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7f3669b83620038e4620057ab565b84600001600c9054906101000a900460ff166200390062005939565b6040518563ffffffff1660e01b8152600401620039219493929190620080d0565b6020604051808303816000875af115801562003941573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039679190620076e7565b81600001600c6101000a81548160ff021916908360ff1602179055505050565b6000600380549050905090565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401620039f2919062006c42565b602060405180830381865afa15801562003a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a36919062007559565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df33330b826040518263ffffffff1660e01b815260040162003a93919062006075565b602060405180830381865afa15801562003ab1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ad7919062007730565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362003b3757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662003b39565b815b91505090565b600081565b600062003b6d82600560008681526020019081526020016000206200594c90919063ffffffff16565b905092915050565b60006004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601b6000856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050828160010160008201518160000155602082015181600101559050508181600301600082015181600001556020820151816001015590505050505050565b60008160405160200162003c63919062006f4e565b604051602081830303815290604052805190602001209050919050565b600060196000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600760008560ff1660ff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1662003d7d57848484846040517f33760ddc00000000000000000000000000000000000000000000000000000000815260040162003d749493929190620080d0565b60405180910390fd5b62003d928462003d8c620057ab565b6200580d565b1562003ddb577f3453c320908f5844705a0f2acbb230412df911a60544eca9236d16f5f9f1f6f685848460405162003dcd939291906200811d565b60405180910390a162003f16565b62003df08462003dea62005968565b6200580d565b1562003e39577f92e25bf636cb4bfa6edf8b4fa57c0d64b6d959e3c6376d17c9bcc168fe36be1985848460405162003e2b939291906200811d565b60405180910390a162003f15565b62003e4e8462003e48620057fa565b6200580d565b8062003e6b575062003e6a8462003e646200597b565b6200580d565b5b8062003e88575062003e878462003e8162005825565b6200580d565b5b1562003ed3577fcc75054af33cdb7ef0c6dd9d4cb6f22e1dc2d22204db49d769d5da19579fb84e8585858560405162003ec59493929190620080d0565b60405180910390a162003f14565b84846040517f092b31d400000000000000000000000000000000000000000000000000000000815260040162003f0b9291906200815a565b60405180910390fd5b5b5b819050949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f95919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462004005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003ffc90620077b2565b60405180910390fd5b62004010826200598e565b9050919050565b6040518060400160405280600b81526020017f4f7261636c654f776e657200000000000000000000000000000000000000000081525081565b6000600a80549050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620040f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620040e790620074ae565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd7d9d85846040518263ffffffff1660e01b81526004016200414f919062006075565b61016060405180830381865afa1580156200416e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004194919062007e88565b9050620041a681600001518462005838565b620041e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620041df90620081d7565b60405180910390fd5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd077f5846040518263ffffffff1660e01b815260040162004247919062006075565b61014060405180830381865afa15801562004266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200428c919062008335565b90506200429e81600001518462005838565b620042e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620042d790620083de565b60405180910390fd5b600081604001519050600060146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050620043448160000160009054906101000a90046bffffffffffffffffffffffff168362005838565b62004386576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200437d9062008450565b60405180910390fd5b836040015181600201548260010154620043a1919062008472565b1015620043e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620043dc90620084fd565b60405180910390fd5b8360400151816002016000828254620043ff919062008095565b92505081905550505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620044a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200449a90620079d4565b60405180910390fd5b81600001519050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401620044f391906200759c565b602060405180830381865af415801562004511573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045379190620075ea565b801562004619575060086000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__63c4cade9d9091836040518363ffffffff1660e01b8152600401620045d49291906200851f565b602060405180830381865af4158015620045f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046189190620075ea565b5b6200465b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004652906200859c565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620046a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046cf919062007661565b73ffffffffffffffffffffffffffffffffffffffff16634c3371cd836040518263ffffffff1660e01b815260040162004709919062006075565b60a060405180830381865afa15801562004727573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200474d919062008659565b604001519050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7f3669b838360086000876bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600001600c9054906101000a900460ff1687602001516040518563ffffffff1660e01b8152600401620047f99493929190620080d0565b6020604051808303816000875af115801562004819573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200483f9190620076e7565b508260086000846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505050919050565b6200492262005eb0565b60106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509050919050565b62004a2362005f1b565b600260008381526020019081526020016000206040518060600160405290816000820154815260200160018201805462004a5d9062007f99565b80601f016020809104026020016040519081016040528092919081815260200182805462004a8b9062007f99565b801562004adc5780601f1062004ab05761010080835404028352916020019162004adc565b820191906000526020600020905b81548152906001019060200180831162004abe57829003601f168201915b505050505081526020016002820160009054906101000a900460ff1615151515815250509050919050565b600062004b2660056000848152602001908152602001600020620059c7565b9050919050565b60146000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6352694ee890916040518263ffffffff1660e01b815260040162004bc091906200759c565b602060405180830381865af415801562004bde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c049190620075ea565b62004c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c3d90620086db565b60405180910390fd5b6040518060600160405280826bffffffffffffffffffffffff1681526020016402540be4008152602001600081525060146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600101556040820151816002015590505050565b6040518060800160405280856bffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815250601b6000866bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101600082015181600001556020820151816001015550506060820151816003016000820151816000015560208201518160010155505090505050505050565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004e7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ea0919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462004f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f0790620077b2565b60405180910390fd5b8160026000848152602001908152602001600020600001541462004f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f62906200874d565b60405180910390fd5b60006004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062004ffb8160056000858152602001908152602001600020620059de90919063ffffffff16565b505050565b600060196000856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050828160040160008201518160000155602082015181600101559050508181600601600082015181600001556020820151816001015590505050505050565b6000600760008560ff1660ff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1690509392505050565b6040518060400160405280600981526020017f506f6f6c4f776e6572000000000000000000000000000000000000000000000081525081565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200517c919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620051ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620051e390620077b2565b60405180910390fd5b60006002600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054620052289062007f99565b80601f0160208091040260200160405190810160405280929190818152602001828054620052569062007f99565b8015620052a75780601f106200527b57610100808354040283529160200191620052a7565b820191906000526020600020905b8154815290600101906020018083116200528957829003601f168201915b505050505081526020016002820160009054906101000a900460ff16151515158152505090508181600001511462005316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200530d90620087e5565b60405180910390fd5b6001816040019015159081151581525050620053328162005882565b505050565b6200534162005f41565b60086000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b6040518060400160405280600c81526020017f50726f647563744f776e6572000000000000000000000000000000000000000081525081565b6000806000620054fd73__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__6392ae8ce0876040518263ffffffff1660e01b8152600401620054ae919062008818565b602060405180830381865af4158015620054cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054f2919062008835565b856000015162005a10565b9050836020015173__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__63d05b0452836040518263ffffffff1660e01b81526004016200553d919062008878565b602060405180830381865af41580156200555b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005581919062008895565b6200558d919062008095565b925082856200559d919062008472565b9150509250929050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000620055e882620055e2620057fa565b6200580d565b1562005668573073ffffffffffffffffffffffffffffffffffffffff16636c137ea96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200563a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056609190620088de565b905062005793565b6200567d826200567762005825565b6200580d565b15620056fd573073ffffffffffffffffffffffffffffffffffffffff166332e3a6e96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620056cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056f59190620088de565b905062005793565b62005712826200570c6200597b565b6200580d565b1562005792573073ffffffffffffffffffffffffffffffffffffffff16632a5f6e856040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578a9190620088de565b905062005793565b5b919050565b6000620057a6603262005a2f565b905090565b6000620057b9605a62005a2f565b905090565b6000620057e8836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62005a39565b905092915050565b6000819050919050565b600062005808603c62005a2f565b905090565b60008160ff168360ff1614905092915050565b600090565b600062005833605062005a2f565b905090565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b60008082602001511480156200587b575060008260000151145b9050919050565b6000816000015190506000801b8103620058db57620058a5826020015162003c4e565b90508082600001818152505060038190806001815401808255809150506001900390600052602060002001600090919091909150555b816002600083815260200190815260200160002060008201518160000155602082015181600101908162005910919062008ab0565b5060408201518160020160006101000a81548160ff021916908315150217905550905050919050565b600062005947606462005aad565b905090565b60006200595d836000018362005ab7565b60001c905092915050565b600062005976605162005a2f565b905090565b600062005989604662005a2f565b905090565b60008060405180606001604052806000801b8152602001848152602001600115158152509050620059bf8162005882565b915050919050565b6000620059d78260000162005ae5565b9050919050565b600062005a08836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62005af6565b905092915050565b600062005a278383670de0b6b3a764000062005c1a565b905092915050565b6000819050919050565b600062005a47838362005d33565b62005aa257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062005aa7565b600090505b92915050565b6000819050919050565b600082600001828154811062005ad25762005ad162007955565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811462005c0e57600060018262005b2b919062008472565b905060006001866000018054905062005b45919062008472565b905081811462005bbb57600086600001828154811062005b6a5762005b6962007955565b5b906000526020600020015490508087600001848154811062005b915762005b9062007955565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548062005bd25762005bd162008b97565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062005c14565b60009150505b92915050565b600080600080198587098587029250828110838203039150506000810362005c5a5783828162005c4f5762005c4e62008bc6565b5b049250505062005d2c565b80841162005c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005c969062008c45565b60405180910390fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b600080836001016000848152602001908152602001600020541415905092915050565b6103e58062008c6883390190565b604051806080016040528060006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200162005dab62005f89565b815260200162005dba62005f89565b81525090565b60405180610100016040528060006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200162005e6c62005f89565b815260200162005e7b62005f89565b81525090565b604051806060016040528060006bffffffffffffffffffffffff16815260200160008152602001600081525090565b60405180610160016040528060006bffffffffffffffffffffffff168152602001600060ff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060008019168152602001606081526020016000151581525090565b604051806060016040528060006bffffffffffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60006bffffffffffffffffffffffff82169050919050565b62005fda8162005fb7565b811462005fe657600080fd5b50565b60008135905062005ffa8162005fcf565b92915050565b60006020828403121562006019576200601862005fad565b5b6000620060298482850162005fe9565b91505092915050565b6000819050919050565b60006200605d62006057620060518462005fb7565b62006032565b62005fb7565b9050919050565b6200606f816200603c565b82525050565b60006020820190506200608c600083018462006064565b92915050565b6000819050919050565b620060a78162006092565b82525050565b6000602082019050620060c460008301846200609c565b92915050565b600060ff82169050919050565b620060e281620060ca565b8114620060ee57600080fd5b50565b6000813590506200610281620060d7565b92915050565b60006020828403121562006121576200612062005fad565b5b60006200613184828501620060f1565b91505092915050565b60006200615b620061556200614f84620060ca565b62006032565b620060ca565b9050919050565b6200616d816200613a565b82525050565b60006020820190506200618a600083018462006162565b92915050565b6200619b816200613a565b82525050565b6000602082019050620061b8600083018462006190565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200620e82620061c3565b810181811067ffffffffffffffff8211171562006230576200622f620061d4565b5b80604052505050565b60006200624562005fa3565b905062006253828262006203565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620062858262006258565b9050919050565b620062978162006278565b8114620062a357600080fd5b50565b600081359050620062b7816200628c565b92915050565b600060a08284031215620062d657620062d5620061be565b5b620062e260a062006239565b90506000620062f48482850162005fe9565b60008301525060206200630a8482850162005fe9565b60208301525060406200632084828501620060f1565b60408301525060606200633684828501620062a6565b60608301525060806200634c84828501620062a6565b60808301525092915050565b620063638162006092565b81146200636f57600080fd5b50565b600081359050620063838162006358565b92915050565b6000806000806000806101408789031215620063aa57620063a962005fad565b5b6000620063ba89828a01620062bd565b96505060a0620063cd89828a01620062a6565b95505060c0620063e089828a0162006372565b94505060e0620063f389828a0162006372565b9350506101006200640789828a0162006372565b9250506101206200641b89828a0162005fe9565b9150509295509295509295565b60008115159050919050565b6200643f8162006428565b82525050565b60006020820190506200645c600083018462006434565b92915050565b6000819050919050565b620064778162006462565b82525050565b60006020820190506200649460008301846200646c565b92915050565b600060208284031215620064b357620064b262005fad565b5b6000620064c384828501620062a6565b91505092915050565b620064d78162006462565b8114620064e357600080fd5b50565b600081359050620064f781620064cc565b92915050565b6000806040838503121562006517576200651662005fad565b5b60006200652785828601620064e6565b92505060206200653a85828601620062a6565b9150509250929050565b6000620065518262006278565b9050919050565b620065638162006544565b81146200656f57600080fd5b50565b600081359050620065838162006558565b92915050565b620065948162006092565b8114620065a057600080fd5b50565b600081359050620065b48162006589565b92915050565b600060408284031215620065d357620065d2620061be565b5b620065df604062006239565b90506000620065f184828501620065a3565b6000830152506020620066078482850162006372565b60208301525092915050565b6000806000806000806000610120888a03121562006636576200663562005fad565b5b6000620066468a828b0162005fe9565b9750506020620066598a828b0162005fe9565b96505060406200666c8a828b0162005fe9565b95505060606200667f8a828b0162006572565b9450506080620066928a828b01620062a6565b93505060a0620066a58a828b01620065ba565b92505060e0620066b88a828b01620065ba565b91505092959891949750929550565b620066d2816200603c565b82525050565b620066e38162006278565b82525050565b60006200670a62006704620066fe8462006092565b62006032565b62006092565b9050919050565b6200671c81620066e9565b82525050565b6200672d8162006092565b82525050565b6040820160008201516200674b600085018262006711565b50602082015162006760602085018262006722565b50505050565b60c0820160008201516200677e6000850182620066c7565b506020820151620067936020850182620066d8565b506040820151620067a8604085018262006733565b506060820151620067bd608085018262006733565b50505050565b600060c082019050620067da600083018462006766565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200681c578082015181840152602081019050620067ff565b60008484015250505050565b60006200683582620067e0565b620068418185620067eb565b935062006853818560208601620067fc565b6200685e81620061c3565b840191505092915050565b6000602082019050818103600083015262006885818462006828565b905092915050565b6000620068ae620068a8620068a28462006258565b62006032565b62006258565b9050919050565b6000620068c2826200688d565b9050919050565b6000620068d682620068b5565b9050919050565b620068e881620068c9565b82525050565b6000602082019050620069056000830184620068dd565b92915050565b60006200691882620068b5565b9050919050565b6200692a816200690b565b82525050565b60006200693d82620068b5565b9050919050565b6200694f8162006930565b82525050565b610140820160008201516200696e6000850182620066c7565b506020820151620069836020850182620066c7565b506040820151620069986040850182620066c7565b506060820151620069ad60608501826200691f565b506080820151620069c2608085018262006944565b5060a0820151620069d760a0850182620066d8565b5060c0820151620069ec60c085018262006733565b5060e082015162006a0261010085018262006733565b50505050565b60006101408201905062006a20600083018462006955565b92915050565b60006020828403121562006a3f5762006a3e62005fad565b5b600062006a4f8482850162006372565b91505092915050565b60608201600082015162006a706000850182620066c7565b50602082015162006a85602085018262006722565b50604082015162006a9a604085018262006722565b50505050565b600060608201905062006ab7600083018462006a58565b92915050565b600062006aca82620068b5565b9050919050565b62006adc8162006abd565b82525050565b600060208201905062006af9600083018462006ad1565b92915050565b600062006b0c8262006278565b9050919050565b62006b1e8162006aff565b811462006b2a57600080fd5b50565b60008135905062006b3e8162006b13565b92915050565b60006020828403121562006b5d5762006b5c62005fad565b5b600062006b6d8482850162006b2d565b91505092915050565b6000806040838503121562006b905762006b8f62005fad565b5b600062006ba08582860162005fe9565b925050602062006bb38582860162005fe9565b9150509250929050565b600062006bca82620068b5565b9050919050565b62006bdc8162006bbd565b82525050565b600060208201905062006bf9600083018462006bd1565b92915050565b60006020828403121562006c185762006c1762005fad565b5b600062006c2884828501620064e6565b91505092915050565b62006c3c8162006278565b82525050565b600060208201905062006c59600083018462006c31565b92915050565b6000806040838503121562006c795762006c7862005fad565b5b600062006c8985828601620064e6565b925050602062006c9c8582860162006372565b9150509250929050565b600080600060a0848603121562006cc25762006cc162005fad565b5b600062006cd28682870162005fe9565b935050602062006ce586828701620065ba565b925050606062006cf886828701620065ba565b9150509250925092565b600080fd5b600080fd5b600067ffffffffffffffff82111562006d2a5762006d29620061d4565b5b62006d3582620061c3565b9050602081019050919050565b82818337600083830152505050565b600062006d6862006d628462006d0c565b62006239565b90508281526020810184848401111562006d875762006d8662006d07565b5b62006d9484828562006d42565b509392505050565b600082601f83011262006db45762006db362006d02565b5b813562006dc684826020860162006d51565b91505092915050565b60006020828403121562006de85762006de762005fad565b5b600082013567ffffffffffffffff81111562006e095762006e0862005fb2565b5b62006e178482850162006d9c565b91505092915050565b62006e2b8162006930565b82525050565b600060208201905062006e48600083018462006e20565b92915050565b62006e5981620060ca565b811462006e6557600080fd5b50565b60008135905062006e798162006e4e565b92915050565b6000806000806080858703121562006e9c5762006e9b62005fad565b5b600062006eac8782880162005fe9565b945050602062006ebf87828801620060f1565b935050604062006ed28782880162006e68565b925050606062006ee58782880162006e68565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b600062006f1a8262006ef1565b62006f26818562006efc565b935062006f38818560208601620067fc565b62006f4381620061c3565b840191505092915050565b6000602082019050818103600083015262006f6a818462006f0d565b905092915050565b600062006f7f8262006278565b9050919050565b62006f918162006f72565b811462006f9d57600080fd5b50565b60008135905062006fb18162006f86565b92915050565b60006060828403121562006fd05762006fcf620061be565b5b62006fdc606062006239565b9050600062006fee8482850162005fe9565b6000830152506020620070048482850162006e68565b60208301525060406200701a8482850162006fa0565b60408301525092915050565b6000606082840312156200703f576200703e62005fad565b5b60006200704f8482850162006fb7565b91505092915050565b62007063816200613a565b82525050565b61016082016000820151620070826000850182620066c7565b50602082015162007097602085018262007058565b506040820151620070ac604085018262006722565b506060820151620070c1606085018262006722565b506080820151620070d6608085018262006722565b5060a0820151620070eb60a085018262006722565b5060c08201516200710060c085018262006722565b5060e08201516200711560e085018262006722565b506101008201516200712c61010085018262006722565b506101208201516200714361012085018262006722565b506101408201516200715a61014085018262006722565b50505050565b60006101608201905062007178600083018462007069565b92915050565b620071898162006462565b82525050565b600082825260208201905092915050565b6000620071ad8262006ef1565b620071b981856200718f565b9350620071cb818560208601620067fc565b620071d681620061c3565b840191505092915050565b620071ec8162006428565b82525050565b60006060830160008301516200720c60008601826200717e565b5060208301518482036020860152620072268282620071a0565b91505060408301516200723d6040860182620071e1565b508091505092915050565b60006020820190508181036000830152620072648184620071f2565b905092915050565b60008060008060c0858703121562007289576200728862005fad565b5b6000620072998782880162005fe9565b9450506020620072ac87828801620062a6565b9350506040620072bf87828801620065ba565b9250506080620072d287828801620065ba565b91505092959194509250565b600080600060608486031215620072fa57620072f962005fad565b5b60006200730a86828701620060f1565b93505060206200731d8682870162006e68565b9250506040620073308682870162006e68565b9150509250925092565b60006200734782620068b5565b9050919050565b62007359816200733a565b82525050565b606082016000820151620073776000850182620066c7565b5060208201516200738c602085018262007058565b506040820151620073a160408501826200734e565b50505050565b6000606082019050620073be60008301846200735f565b92915050565b60008060608385031215620073de57620073dd62005fad565b5b6000620073ee8582860162006372565b92505060206200740185828601620065ba565b9150509250929050565b60006040820190506200742260008301856200609c565b6200743160208301846200609c565b9392505050565b7f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f53455256494360008201527f4500000000000000000000000000000000000000000000000000000000000000602082015250565b60006200749660218362006efc565b9150620074a38262007438565b604082019050919050565b60006020820190508181036000830152620074c98162007487565b9050919050565b7f4552524f523a5052442d3030313a52454749535452595f5a45524f0000000000600082015250565b600062007508601b8362006efc565b91506200751582620074d0565b602082019050919050565b600060208201905081810360008301526200753b81620074f9565b9050919050565b600081519050620075538162005fcf565b92915050565b60006020828403121562007572576200757162005fad565b5b6000620075828482850162007542565b91505092915050565b62007596816200603c565b82525050565b6000602082019050620075b360008301846200758b565b92915050565b620075c48162006428565b8114620075d057600080fd5b50565b600081519050620075e481620075b9565b92915050565b60006020828403121562007603576200760262005fad565b5b60006200761384828501620075d3565b91505092915050565b6000620076298262006278565b9050919050565b6200763b816200761c565b81146200764757600080fd5b50565b6000815190506200765b8162007630565b92915050565b6000602082840312156200767a576200767962005fad565b5b60006200768a848285016200764a565b91505092915050565b6000606082019050620076aa600083018662006064565b620076b9602083018562006190565b620076c8604083018462006c31565b949350505050565b600081519050620076e18162006e4e565b92915050565b6000602082840312156200770057620076ff62005fad565b5b60006200771084828501620076d0565b91505092915050565b6000815190506200772a816200628c565b92915050565b60006020828403121562007749576200774862005fad565b5b6000620077598482850162007719565b91505092915050565b7f4552524f523a41434d2d3030313a4e4f545f4f574e4552000000000000000000600082015250565b60006200779a60178362006efc565b9150620077a78262007762565b602082019050919050565b60006020820190508181036000830152620077cd816200778b565b9050919050565b7f4552524f523a41434d2d3031303a524f4c455f4e4f545f4558495354494e4700600082015250565b60006200780c601f8362006efc565b91506200781982620077d4565b602082019050919050565b600060208201905081810360008301526200783f81620077fd565b9050919050565b7f4552524f523a41434d2d3031313a524f4c455f4e4f545f414354495645000000600082015250565b60006200787e601d8362006efc565b91506200788b8262007846565b602082019050919050565b60006020820190508181036000830152620078b1816200786f565b9050919050565b6000606082019050620078cf60008301866200646c565b620078de602083018562006c31565b620078ed604083018462006434565b949350505050565b6000819050919050565b6000620079206200791a6200791484620078f5565b62006032565b620060ca565b9050919050565b6200793281620078ff565b82525050565b60006020820190506200794f600083018462007927565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500600082015250565b6000620079bc601f8362006efc565b9150620079c98262007984565b602082019050919050565b60006020820190508181036000830152620079ef81620079ad565b9050919050565b60008151905062007a0781620060d7565b92915050565b60006020828403121562007a265762007a2562005fad565b5b600062007a3684828501620079f6565b91505092915050565b600060408201905062007a5660008301856200646c565b62007a65602083018462006c31565b9392505050565b7f4552524f523a434d502d3030343a545950455f524f4c455f4d495353494e4700600082015250565b600062007aa4601f8362006efc565b915062007ab18262007a6c565b602082019050919050565b6000602082019050818103600083015262007ad78162007a95565b9050919050565b60008151905062007aef8162006f86565b92915050565b60006020828403121562007b0e5762007b0d62005fad565b5b600062007b1e8482850162007ade565b91505092915050565b7f4552524f523a434d502d3030353a504f4f4c5f554e4b4e4f574e000000000000600082015250565b600062007b5f601a8362006efc565b915062007b6c8262007b27565b602082019050919050565b6000602082019050818103600083015262007b928162007b50565b9050919050565b60008151905062007baa8162006589565b92915050565b60008151905062007bc18162006358565b92915050565b60006040828403121562007be05762007bdf620061be565b5b62007bec604062006239565b9050600062007bfe8482850162007b99565b600083015250602062007c148482850162007bb0565b60208301525092915050565b60006040828403121562007c395762007c3862005fad565b5b600062007c498482850162007bc7565b91505092915050565b62007c5d816200733a565b82525050565b60408201600082015162007c7b600085018262006711565b50602082015162007c90602085018262006722565b50505050565b60006101208201905062007cae600083018a62006064565b62007cbd602083018962006064565b62007ccc604083018862006064565b62007cdb606083018762007c52565b62007cea608083018662006c31565b62007cf960a083018562007c63565b62007d0860e083018462007c63565b98975050505050505050565b600060c08201905062007d2b600083018762006064565b62007d3a602083018662006c31565b62007d49604083018562007c63565b62007d58608083018462007c63565b95945050505050565b6000610160828403121562007d7b5762007d7a620061be565b5b62007d8861016062006239565b9050600062007d9a8482850162007542565b600083015250602062007db084828501620076d0565b602083015250604062007dc68482850162007bb0565b604083015250606062007ddc8482850162007bb0565b606083015250608062007df28482850162007bb0565b60808301525060a062007e088482850162007bb0565b60a08301525060c062007e1e8482850162007bb0565b60c08301525060e062007e348482850162007bb0565b60e08301525061010062007e4b8482850162007bb0565b6101008301525061012062007e638482850162007bb0565b6101208301525061014062007e7b8482850162007bb0565b6101408301525092915050565b6000610160828403121562007ea25762007ea162005fad565b5b600062007eb28482850162007d61565b91505092915050565b7f4552524f523a5452532d3032303a504f4c4943595f554e4b4e4f574e00000000600082015250565b600062007ef3601c8362006efc565b915062007f008262007ebb565b602082019050919050565b6000602082019050818103600083015262007f268162007ee4565b9050919050565b600060608201905062007f44600083018662006c31565b62007f53602083018562006c31565b62007f6260408301846200609c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062007fb257607f821691505b60208210810362007fc85762007fc762007f6a565b5b50919050565b7f4552524f523a414f532d3030313a524f4c455f444f45535f4e4f545f4558495360008201527f5400000000000000000000000000000000000000000000000000000000000000602082015250565b60006200802c60218362006efc565b9150620080398262007fce565b604082019050919050565b600060208201905081810360008301526200805f816200801d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620080a28262006092565b9150620080af8362006092565b9250828201905080821115620080ca57620080c962008066565b5b92915050565b6000608082019050620080e7600083018762006064565b620080f6602083018662006190565b62008105604083018562006162565b62008114606083018462006162565b95945050505050565b600060608201905062008134600083018662006064565b62008143602083018562006162565b62008152604083018462006162565b949350505050565b600060408201905062008171600083018562006064565b62008180602083018462006190565b9392505050565b7f4552524f523a504c2d3030323a504f4c4943595f554e4b4e4f574e0000000000600082015250565b6000620081bf601b8362006efc565b9150620081cc8262008187565b602082019050919050565b60006020820190508181036000830152620081f281620081b0565b9050919050565b6000815190506200820a8162006558565b92915050565b60006200821d8262006278565b9050919050565b6200822f8162008210565b81146200823b57600080fd5b50565b6000815190506200824f8162008224565b92915050565b600061014082840312156200826f576200826e620061be565b5b6200827c61010062006239565b905060006200828e8482850162007542565b6000830152506020620082a48482850162007542565b6020830152506040620082ba8482850162007542565b6040830152506060620082d084828501620081f9565b6060830152506080620082e6848285016200823e565b60808301525060a0620082fc8482850162007719565b60a08301525060c0620083128482850162007bc7565b60c083015250610100620083298482850162007bc7565b60e08301525092915050565b600061014082840312156200834f576200834e62005fad565b5b60006200835f8482850162008255565b91505092915050565b7f4552524f523a504c2d3030333a50524f445543545f53455455505f4d4953534960008201527f4e47000000000000000000000000000000000000000000000000000000000000602082015250565b6000620083c660228362006efc565b9150620083d38262008368565b604082019050919050565b60006020820190508181036000830152620083f981620083b7565b9050919050565b7f4552524f523a504c2d3030343a504f4f4c5f554e4b4e4f574e00000000000000600082015250565b60006200843860198362006efc565b9150620084458262008400565b602082019050919050565b600060208201905081810360008301526200846b8162008429565b9050919050565b60006200847f8262006092565b91506200848c8362006092565b9250828203905081811115620084a757620084a662008066565b5b92915050565b7f4552524f523a504c2d3030353a43415041434954595f544f4f5f4c4f57000000600082015250565b6000620084e5601d8362006efc565b9150620084f282620084ad565b602082019050919050565b600060208201905081810360008301526200851881620084d6565b9050919050565b60006040820190506200853660008301856200758b565b6200854560208301846200758b565b9392505050565b7f4552524f523a434d502d3030363a434f4d504f4e454e545f554e4b4e4f574e00600082015250565b600062008584601f8362006efc565b915062008591826200854c565b602082019050919050565b60006020820190508181036000830152620085b78162008575565b9050919050565b600060a08284031215620085d757620085d6620061be565b5b620085e360a062006239565b90506000620085f58482850162007542565b60008301525060206200860b8482850162007542565b60208301525060406200862184828501620079f6565b6040830152506060620086378482850162007719565b60608301525060806200864d8482850162007719565b60808301525092915050565b600060a0828403121562008672576200867162005fad565b5b60006200868284828501620085be565b91505092915050565b7f4552524f523a504c2d3030313a414c52454144595f4352454154454400000000600082015250565b6000620086c3601c8362006efc565b9150620086d0826200868b565b602082019050919050565b60006020820190508181036000830152620086f681620086b4565b9050919050565b7f4552524f523a41434d2d3032303a524f4c455f4e4f545f4558495354494e4700600082015250565b600062008735601f8362006efc565b91506200874282620086fd565b602082019050919050565b60006020820190508181036000830152620087688162008726565b9050919050565b7f4552524f523a414f532d3030323a524f4c455f444f45535f4e4f545f4558495360008201527f5400000000000000000000000000000000000000000000000000000000000000602082015250565b6000620087cd60218362006efc565b9150620087da826200876f565b604082019050919050565b600060208201905081810360008301526200880081620087be565b9050919050565b620088128162006092565b82525050565b60006020820190506200882f600083018462008807565b92915050565b6000602082840312156200884e576200884d62005fad565b5b60006200885e8482850162007b99565b91505092915050565b6200887281620066e9565b82525050565b60006020820190506200888f600083018462008867565b92915050565b600060208284031215620088ae57620088ad62005fad565b5b6000620088be8482850162007bb0565b91505092915050565b600081519050620088d881620064cc565b92915050565b600060208284031215620088f757620088f662005fad565b5b60006200890784828501620088c7565b91505092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620089747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262008935565b62008980868362008935565b95508019841693508086168417925050509392505050565b6000819050919050565b620089ad83620066e9565b620089c5620089bc8262008998565b84845462008942565b825550505050565b600090565b620089dc620089cd565b620089e9818484620089a2565b505050565b5b8181101562008a115762008a05600082620089d2565b600181019050620089ef565b5050565b601f82111562008a605762008a2a8162008910565b62008a358462008925565b8101602085101562008a45578190505b62008a5d62008a548562008925565b830182620089ee565b50505b505050565b600082821c905092915050565b600062008a856000198460080262008a65565b1980831691505092915050565b600062008aa0838362008a72565b9150826002028217905092915050565b62008abb8262006ef1565b67ffffffffffffffff81111562008ad75762008ad6620061d4565b5b62008ae3825462007f99565b62008af082828562008a15565b600060209050601f83116001811462008b28576000841562008b13578287015190505b62008b1f858262008a92565b86555062008b8f565b601f19841662008b388662008910565b60005b8281101562008b625784890151825560018201915060208501945060208101905062008b3b565b8683101562008b82578489015162008b7e601f89168262008a72565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4d6174683a206d756c446976206f766572666c6f770000000000000000000000600082015250565b600062008c2d60158362006efc565b915062008c3a8262008bf5565b602082019050919050565b6000602082019050818103600083015262008c608162008c1e565b905091905056fe608060405234801561001057600080fd5b506040516103e53803806103e5833981810160405281019061003291906100db565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a88261007d565b9050919050565b6100b88161009d565b81146100c357600080fd5b50565b6000815190506100d5816100af565b92915050565b6000602082840312156100f1576100f0610078565b5b60006100ff848285016100c6565b91505092915050565b6102ce806101176000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063beabacc814610030575b600080fd5b61004a6004803603810190610045919061018b565b61004c565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b81526004016100a9939291906101fc565b6020604051808303816000875af11580156100c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ec919061026b565b50505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610122826100f7565b9050919050565b61013281610117565b811461013d57600080fd5b50565b60008135905061014f81610129565b92915050565b6000819050919050565b61016881610155565b811461017357600080fd5b50565b6000813590506101858161015f565b92915050565b6000806000606084860312156101a4576101a36100f2565b5b60006101b286828701610140565b93505060206101c386828701610140565b92505060406101d486828701610176565b9150509250925092565b6101e781610117565b82525050565b6101f681610155565b82525050565b600060608201905061021160008301866101de565b61021e60208301856101de565b61022b60408301846101ed565b949350505050565b60008115159050919050565b61024881610233565b811461025357600080fd5b50565b6000815190506102658161023f565b92915050565b600060208284031215610281576102806100f2565b5b600061028f84828501610256565b9150509291505056fea2646970667358221220584830ad6020f92961817dc65ddc7db09473de72e053fbcf657fa124b0863b5764736f6c63430008140033a264697066735822122011b6b8bf36c4608b07a694419b40e86df6783a95c6c67dedff9a6fd43649186d64736f6c63430008140033",
1640
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620003f45760003560e01c80637ff826131162000219578063bd7d9d851162000129578063e9e96c7011620000bd578063f174ce191162000087578063f174ce191462000ce5578063f274e87d1462000d07578063fb2cb1011462000d3e578063fc0ae0541462000d6057620003f4565b8063e9e96c701462000c37578063eb71e8c41462000c6d578063eb7f494d1462000c8f578063f0ea17c31462000caf57620003f4565b8063ca38559811620000ff578063ca3855981462000bb7578063d0bb064c1462000bd7578063d547741f1462000bf7578063dc261c3a1462000c1757620003f4565b8063bd7d9d851462000b15578063be409a111462000b4b578063ca15c8731462000b8157620003f4565b80639cad005211620001ad578063b90915521162000177578063b90915521462000a7b578063ba62fbe41462000a9d578063bce395231462000abf578063bd62faf71462000adf57620003f4565b80639cad005214620009a3578063a310e2a314620009d9578063a7f3669b1462000a0f578063af17d38a1462000a4557620003f4565b80638aa03b6b11620001ef5780638aa03b6b14620008f55780639010d07c146200091757806391d14854146200094d57806393865aec146200098357620003f4565b80637ff82613146200089157806383d3331914620008b1578063893d20e814620008d357620003f4565b80633300a8a811620003155780636078a3b211620002a95780636fa2985311620002735780636fa2985314620007f757806379e829d014620008195780637c4a13b1146200083b5780637fec8b31146200085b57620003f4565b80636078a3b2146200075d578063644c45e014620007935780636c137ea914620007b55780636ce5caea14620007d757620003f4565b80634fd077f511620002eb5780634fd077f514620006995780635312fdc214620006cf57806357f80bbf14620007055780635ab1bd53146200073b57620003f4565b80633300a8a8146200061f5780633bc5de3014620006555780634288121d146200067757620003f4565b806322366844116200038d5780632f2ff15d11620003635780632f2ff15d146200059b57806331b62a3b14620005bb57806331e48e3214620005dd57806332e3a6e914620005fd57620003f4565b80632236684414620005215780632a5f6e8514620005435780632b1c7f73146200056557620003f4565b806313f7dcfc11620003cf57806313f7dcfc146200048757806315dae03e14620004a75780631aa3a00814620004c95780632064717e14620004eb57620003f4565b806301ed760414620003f957806302393c41146200042f5780630d3581811462000451575b600080fd5b62000417600480360381019062000411919062006000565b62000d96565b60405162000426919062006075565b60405180910390f35b6200043962000de7565b604051620004489190620060ad565b60405180910390f35b6200046f600480360381019062000469919062006108565b62000df0565b6040516200047e919062006173565b60405180910390f35b620004a560048036038101906200049f919062006000565b62000e20565b005b620004b162000f00565b604051620004c09190620061a1565b60405180910390f35b620004d362000f11565b604051620004e2919062006075565b60405180910390f35b62000509600480360381019062000503919062006389565b6200104a565b60405162000518919062006075565b60405180910390f35b6200052b620014cb565b6040516200053a919062006445565b60405180910390f35b6200054d62001602565b6040516200055c91906200647d565b60405180910390f35b6200058360048036038101906200057d91906200649a565b6200162a565b60405162000592919062006075565b60405180910390f35b620005b96004803603810190620005b39190620064fd565b6200168b565b005b620005c56200195d565b604051620005d4919062006075565b60405180910390f35b620005fb6004803603810190620005f5919062006613565b62001970565b005b6200060762001c47565b6040516200061691906200647d565b60405180910390f35b6200063d600480360381019062000637919062006000565b62001c6f565b6040516200064c9190620067c3565b60405180910390f35b6200065f62001d9e565b6040516200066e919062006869565b60405180910390f35b6200068162001dc8565b604051620006909190620068ee565b60405180910390f35b620006b76004803603810190620006b1919062006000565b62001df2565b604051620006c6919062006a08565b60405180910390f35b620006ed6004803603810190620006e7919062006a26565b6200204a565b604051620006fc91906200647d565b60405180910390f35b6200072360048036038101906200071d919062006000565b62002075565b60405162000732919062006aa0565b60405180910390f35b6200074562002112565b60405162000754919062006ae2565b60405180910390f35b6200077b600480360381019062000775919062006b44565b6200213b565b6040516200078a919062006075565b60405180910390f35b6200079d62002df7565b604051620007ac919062006075565b60405180910390f35b620007bf62002e9e565b604051620007ce91906200647d565b60405180910390f35b620007f56004803603810190620007ef919062006b76565b62002ec6565b005b6200080162003504565b60405162000810919062006be2565b60405180910390f35b620008236200352e565b60405162000832919062006445565b60405180910390f35b62000859600480360381019062000853919062006bff565b62003537565b005b62000879600480360381019062000873919062006a26565b62003764565b60405162000888919062006075565b60405180910390f35b620008af6004803603810190620008a9919062006000565b620037b2565b005b620008bb62003987565b604051620008ca9190620060ad565b60405180910390f35b620008dd62003994565b604051620008ec919062006c42565b60405180910390f35b620008ff62003b3f565b6040516200090e9190620060ad565b60405180910390f35b6200093560048036038101906200092f919062006c5f565b62003b44565b60405162000944919062006c42565b60405180910390f35b6200096b6004803603810190620009659190620064fd565b62003b75565b6040516200097a919062006445565b60405180910390f35b620009a160048036038101906200099b919062006ca6565b62003bdd565b005b620009c16004803603810190620009bb919062006dcf565b62003c4e565b604051620009d091906200647d565b60405180910390f35b620009f76004803603810190620009f1919062006000565b62003c80565b60405162000a06919062006e31565b60405180910390f35b62000a2d600480360381019062000a27919062006e7f565b62003cdc565b60405162000a3c919062006173565b60405180910390f35b62000a63600480360381019062000a5d919062006dcf565b62003f21565b60405162000a7291906200647d565b60405180910390f35b62000a8562004017565b60405162000a94919062006f4e565b60405180910390f35b62000aa762004050565b60405162000ab69190620060ad565b60405180910390f35b62000add600480360381019062000ad7919062006b76565b6200405d565b005b62000afd600480360381019062000af7919062007026565b6200440e565b60405162000b0c919062006075565b60405180910390f35b62000b33600480360381019062000b2d919062006000565b62004918565b60405162000b42919062007160565b60405180910390f35b62000b69600480360381019062000b63919062006bff565b62004a19565b60405162000b78919062007248565b60405180910390f35b62000b9f600480360381019062000b99919062006bff565b62004b07565b60405162000bae9190620060ad565b60405180910390f35b62000bd5600480360381019062000bcf919062006000565b62004b2d565b005b62000bf5600480360381019062000bef91906200726c565b62004cf5565b005b62000c15600480360381019062000c0f9190620064fd565b62004e2e565b005b62000c35600480360381019062000c2f919062006ca6565b62005000565b005b62000c55600480360381019062000c4f9190620072de565b62005071565b60405162000c64919062006445565b60405180910390f35b62000c77620050d1565b60405162000c86919062006f4e565b60405180910390f35b62000cad600480360381019062000ca7919062006bff565b6200510a565b005b62000ccd600480360381019062000cc7919062006000565b62005337565b60405162000cdc9190620073a7565b60405180910390f35b62000cef62005433565b60405162000cfe919062006f4e565b60405180910390f35b62000d25600480360381019062000d1f9190620073c4565b6200546c565b60405162000d359291906200740b565b60405180910390f35b62000d48620055a7565b60405162000d57919062006c42565b60405180910390f35b62000d7e600480360381019062000d78919062006108565b620055d1565b60405162000d8d91906200647d565b60405180910390f35b600060116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b6402540be40081565b6000600660008360ff1660ff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000eaa90620074ae565b60405180910390fd5b600060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050806002015481600301819055504281600601819055505050565b600062000f0c62005798565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9b9062007520565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040162000fff919062006c42565b6020604051808303816000875af11580156200101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001045919062007559565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620010df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010d690620074ae565b60405180910390fd5b816bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b81526004016200112891906200759c565b602060405180830381865af415801562001146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200116c9190620075ea565b503073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df919062007661565b73ffffffffffffffffffffffffffffffffffffffff16631d1b0cac886000015162001209620057ab565b896040518463ffffffff1660e01b81526004016200122a9392919062007693565b6020604051808303816000875af11580156200124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001270919062007559565b9050604051806101600160405280826bffffffffffffffffffffffff168152602001601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d358181620012da620057ab565b6040518263ffffffff1660e01b8152600401620012f89190620061a1565b602060405180830381865afa15801562001316573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133c9190620076e7565b60ff168152602001868152602001858152602001600081526020018481526020014281526020014281526020016000815260200160008152602001600081525060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e082015181600601556101008201518160070155610120820151816008015561014082015181600901559050508160116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509695505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b815260040162001529919062006c42565b602060405180830381865afa15801562001547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156d919062007559565b9050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401620015b891906200759c565b602060405180830381865af4158015620015d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015fc9190620075ea565b91505090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016fd919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200176d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200176490620077b2565b60405180910390fd5b81600260008481526020019081526020016000206000015414620017c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017bf9062007824565b60405180910390fd5b6002600083815260200190815260200160002060020160009054906101000a900460ff166200182e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018259062007896565b60405180910390fd5b60016004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620018be8160056000858152602001908152602001600020620057be90919063ffffffff16565b507f9a2df6ca1a9ab5e734f2f076b73fd00974eca8e06b9895f8f4eaebb590cc09a582826004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040516200195193929190620078b8565b60405180910390a15050565b60006200196b6000620057f0565b905090565b600084604051620019819062005d56565b6200198d919062006c42565b604051809103906000f080158015620019aa573d6000803e3d6000fd5b509050604051806101000160405280896bffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff168152602001876bffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250601960008a6bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004016000820151816000015560208201518160010155505060e082015181600601600082015181600001556020820151816001015550509050505050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b62001c7962005d64565b601b6000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182016040518060400160405290816000820154815260200160018201548152505081526020016003820160405180604001604052908160008201548152602001600182015481525050815250509050919050565b6060600060405160200162001db4919062007938565b604051602081830303815290604052905090565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62001dfc62005dc0565b60196000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482016040518060400160405290816000820154815260200160018201548152505081526020016006820160405180604001604052908160008201548152602001600182015481525050815250509050919050565b60006003828154811062002063576200206262007955565b5b90600052602060002001549050919050565b6200207f62005e81565b60146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620021d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620021c790620079d4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200221e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002244919062007a0d565b905060006200225382620055d1565b90503073ffffffffffffffffffffffffffffffffffffffff166391d14854828673ffffffffffffffffffffffffffffffffffffffff1663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e4919062007730565b6040518363ffffffff1660e01b81526004016200230392919062007a3f565b602060405180830381865afa15801562002321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023479190620075ea565b62002389576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023809062007abc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620023d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023fb919062007661565b73ffffffffffffffffffffffffffffffffffffffff16634420e486856040518263ffffffff1660e01b815260040162002435919062006c42565b6020604051808303816000875af115801562002455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200247b919062007559565b925060008473ffffffffffffffffffffffffffffffffffffffff166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024f1919062007af5565b905060008573ffffffffffffffffffffffffffffffffffffffff1663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002541573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002567919062007730565b90506040518060600160405280866bffffffffffffffffffffffff168152602001600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d358181876040518263ffffffff1660e01b8152600401620025e59190620061a1565b602060405180830381865afa15801562002603573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026299190620076e7565b60ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681525060086000876bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050620027a28673ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002792919062007a0d565b6200279c620057fa565b6200580d565b1562002a8657600086905060008173ffffffffffffffffffffffffffffffffffffffff16631bdd6b766040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002821919062007559565b9050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b81526004016200286c91906200759c565b602060405180830381865af41580156200288a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028b09190620075ea565b620028f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620028e99062007b77565b60405180910390fd5b6000620028fe62005820565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e48e3289838589898973ffffffffffffffffffffffffffffffffffffffff1663bc74aab06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200298e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b4919062007c20565b8a73ffffffffffffffffffffffffffffffffffffffff1663daafed406040518163ffffffff1660e01b81526004016040805180830381865afa158015620029ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a25919062007c20565b6040518863ffffffff1660e01b815260040162002a49979695949392919062007c96565b600060405180830381600087803b15801562002a6457600080fd5b505af115801562002a79573d6000803e3d6000fd5b5050505050505062002d22565b62002b0c8673ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002afc919062007a0d565b62002b0662005825565b6200580d565b1562002d21576000869050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca385598876040518263ffffffff1660e01b815260040162002b74919062006075565b600060405180830381600087803b15801562002b8f57600080fd5b505af115801562002ba4573d6000803e3d6000fd5b50505050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0bb064c87848473ffffffffffffffffffffffffffffffffffffffff16634b270a466040518163ffffffff1660e01b81526004016040805180830381865afa15801562002c33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c59919062007c20565b8573ffffffffffffffffffffffffffffffffffffffff1663235c36036040518163ffffffff1660e01b81526004016040805180830381865afa15801562002ca4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cca919062007c20565b6040518563ffffffff1660e01b815260040162002ceb949392919062007d14565b600060405180830381600087803b15801562002d0657600080fd5b505af115801562002d1b573d6000803e3d6000fd5b50505050505b5b84600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600a859080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b815260040162002e55919062006c42565b602060405180830381865afa15801562002e73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e99919062007559565b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd7d9d85846040518263ffffffff1660e01b815260040162002f25919062006075565b61016060405180830381865afa15801562002f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f6a919062007e88565b905062002f7c81600001518462005838565b62002fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002fb59062007f0b565b60405180910390fd5b600060196000846bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201604051806040016040529081600082015481526020016001820154815250508152602001600682016040518060400160405290816000820154815260200160018201548152505081525050905060008160800151905060003073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003286919062007661565b73ffffffffffffffffffffffffffffffffffffffff1663df33330b876040518263ffffffff1660e01b8152600401620032c0919062006075565b602060405180830381865afa158015620032de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003304919062007730565b90506000601b600085604001516bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620033708460c0015162005861565b15620033f3578273ffffffffffffffffffffffffffffffffffffffff1663beabacc8838388606001516040518463ffffffff1660e01b8152600401620033b99392919062007f2d565b600060405180830381600087803b158015620033d457600080fd5b505af1158015620033e9573d6000803e3d6000fd5b50505050620034fb565b6000806200340a87606001518760c001516200546c565b915091508473ffffffffffffffffffffffffffffffffffffffff1663beabacc8858860a00151856040518463ffffffff1660e01b8152600401620034519392919062007f2d565b600060405180830381600087803b1580156200346c57600080fd5b505af115801562003481573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663beabacc88585846040518463ffffffff1660e01b8152600401620034c49392919062007f2d565b600060405180830381600087803b158015620034df57600080fd5b505af1158015620034f4573d6000803e3d6000fd5b5050505050505b50505050505050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006001905090565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035a9919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462003619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200361090620077b2565b60405180910390fd5b60006002600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054620036559062007f99565b80601f0160208091040260200160405190810160405280929190818152602001828054620036839062007f99565b8015620036d45780601f10620036a857610100808354040283529160200191620036d4565b820191906000526020600020905b815481529060010190602001808311620036b657829003601f168201915b505050505081526020016002820160009054906101000a900460ff16151515158152505090508181600001511462003743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200373a9062008044565b60405180910390fd5b60008160400190151590811515815250506200375f8162005882565b505050565b6000600a82815481106200377d576200377c62007955565b5b9060005260206000209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462003845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200383c90620074ae565b60405180910390fd5b600060106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020905042816007018190555080600401544262003893919062008095565b8160080181905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7f3669b83620038e4620057ab565b84600001600c9054906101000a900460ff166200390062005939565b6040518563ffffffff1660e01b8152600401620039219493929190620080d0565b6020604051808303816000875af115801562003941573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039679190620076e7565b81600001600c6101000a81548160ff021916908360ff1602179055505050565b6000600380549050905090565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401620039f2919062006c42565b602060405180830381865afa15801562003a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a36919062007559565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df33330b826040518263ffffffff1660e01b815260040162003a93919062006075565b602060405180830381865afa15801562003ab1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ad7919062007730565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362003b3757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662003b39565b815b91505090565b600081565b600062003b6d82600560008681526020019081526020016000206200594c90919063ffffffff16565b905092915050565b60006004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601b6000856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050828160010160008201518160000155602082015181600101559050508181600301600082015181600001556020820151816001015590505050505050565b60008160405160200162003c63919062006f4e565b604051602081830303815290604052805190602001209050919050565b600060196000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600760008560ff1660ff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1662003d7d57848484846040517f33760ddc00000000000000000000000000000000000000000000000000000000815260040162003d749493929190620080d0565b60405180910390fd5b62003d928462003d8c620057ab565b6200580d565b1562003ddb577f3453c320908f5844705a0f2acbb230412df911a60544eca9236d16f5f9f1f6f685848460405162003dcd939291906200811d565b60405180910390a162003f16565b62003df08462003dea62005968565b6200580d565b1562003e39577f92e25bf636cb4bfa6edf8b4fa57c0d64b6d959e3c6376d17c9bcc168fe36be1985848460405162003e2b939291906200811d565b60405180910390a162003f15565b62003e4e8462003e48620057fa565b6200580d565b8062003e6b575062003e6a8462003e646200597b565b6200580d565b5b8062003e88575062003e878462003e8162005825565b6200580d565b5b1562003ed3577fcc75054af33cdb7ef0c6dd9d4cb6f22e1dc2d22204db49d769d5da19579fb84e8585858560405162003ec59493929190620080d0565b60405180910390a162003f14565b84846040517f092b31d400000000000000000000000000000000000000000000000000000000815260040162003f0b9291906200815a565b60405180910390fd5b5b5b819050949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f95919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462004005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003ffc90620077b2565b60405180910390fd5b62004010826200598e565b9050919050565b6040518060400160405280600b81526020017f4f7261636c654f776e657200000000000000000000000000000000000000000081525081565b6000600a80549050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620040f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620040e790620074ae565b60405180910390fd5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd7d9d85846040518263ffffffff1660e01b81526004016200414f919062006075565b61016060405180830381865afa1580156200416e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004194919062007e88565b9050620041a681600001518462005838565b620041e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620041df90620081d7565b60405180910390fd5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd077f5846040518263ffffffff1660e01b815260040162004247919062006075565b61014060405180830381865afa15801562004266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200428c919062008335565b90506200429e81600001518462005838565b620042e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620042d790620083de565b60405180910390fd5b600081604001519050600060146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050620043448160000160009054906101000a90046bffffffffffffffffffffffff168362005838565b62004386576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200437d9062008450565b60405180910390fd5b836040015181600201548260010154620043a1919062008472565b1015620043e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620043dc90620084fd565b60405180910390fd5b8360400151816002016000828254620043ff919062008095565b92505081905550505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620044a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200449a90620079d4565b60405180910390fd5b81600001519050806bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401620044f391906200759c565b602060405180830381865af415801562004511573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045379190620075ea565b801562004619575060086000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__63c4cade9d9091836040518363ffffffff1660e01b8152600401620045d49291906200851f565b602060405180830381865af4158015620045f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046189190620075ea565b5b6200465b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004652906200859c565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620046a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046cf919062007661565b73ffffffffffffffffffffffffffffffffffffffff16634c3371cd836040518263ffffffff1660e01b815260040162004709919062006075565b60a060405180830381865afa15801562004727573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200474d919062008659565b604001519050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a7f3669b838360086000876bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600001600c9054906101000a900460ff1687602001516040518563ffffffff1660e01b8152600401620047f99493929190620080d0565b6020604051808303816000875af115801562004819573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200483f9190620076e7565b508260086000846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548160ff021916908360ff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505050919050565b6200492262005eb0565b60106000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020604051806101600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509050919050565b62004a2362005f1b565b600260008381526020019081526020016000206040518060600160405290816000820154815260200160018201805462004a5d9062007f99565b80601f016020809104026020016040519081016040528092919081815260200182805462004a8b9062007f99565b801562004adc5780601f1062004ab05761010080835404028352916020019162004adc565b820191906000526020600020905b81548152906001019060200180831162004abe57829003601f168201915b505050505081526020016002820160009054906101000a900460ff1615151515815250509050919050565b600062004b2660056000848152602001908152602001600020620059c7565b9050919050565b60146000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6352694ee890916040518263ffffffff1660e01b815260040162004bc091906200759c565b602060405180830381865af415801562004bde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c049190620075ea565b62004c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c3d90620086db565b60405180910390fd5b6040518060600160405280826bffffffffffffffffffffffff1681526020016402540be4008152602001600081525060146000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600101556040820151816002015590505050565b6040518060800160405280856bffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815250601b6000866bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101600082015181600001556020820151816001015550506060820151816003016000820151816000015560208201518160010155505090505050505050565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004e7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ea0919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462004f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f0790620077b2565b60405180910390fd5b8160026000848152602001908152602001600020600001541462004f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004f62906200874d565b60405180910390fd5b60006004600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062004ffb8160056000858152602001908152602001600020620059de90919063ffffffff16565b505050565b600060196000856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209050828160040160008201518160000155602082015181600101559050508181600601600082015181600001556020820151816001015590505050505050565b6000600760008560ff1660ff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1690509392505050565b6040518060400160405280600981526020017f506f6f6c4f776e6572000000000000000000000000000000000000000000000081525081565b3073ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200517c919062007730565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620051ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620051e390620077b2565b60405180910390fd5b60006002600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054620052289062007f99565b80601f0160208091040260200160405190810160405280929190818152602001828054620052569062007f99565b8015620052a75780601f106200527b57610100808354040283529160200191620052a7565b820191906000526020600020905b8154815290600101906020018083116200528957829003601f168201915b505050505081526020016002820160009054906101000a900460ff16151515158152505090508181600001511462005316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200530d90620087e5565b60405180910390fd5b6001816040019015159081151581525050620053328162005882565b505050565b6200534162005f41565b60086000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b6040518060400160405280600c81526020017f50726f647563744f776e6572000000000000000000000000000000000000000081525081565b6000806000620054fd73__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__6392ae8ce0876040518263ffffffff1660e01b8152600401620054ae919062008818565b602060405180830381865af4158015620054cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054f2919062008835565b856000015162005a10565b9050836020015173__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__63d05b0452836040518263ffffffff1660e01b81526004016200553d919062008878565b602060405180830381865af41580156200555b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005581919062008895565b6200558d919062008095565b925082856200559d919062008472565b9150509250929050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000620055e882620055e2620057fa565b6200580d565b1562005668573073ffffffffffffffffffffffffffffffffffffffff16636c137ea96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200563a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056609190620088de565b905062005793565b6200567d826200567762005825565b6200580d565b15620056fd573073ffffffffffffffffffffffffffffffffffffffff166332e3a6e96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620056cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056f59190620088de565b905062005793565b62005712826200570c6200597b565b6200580d565b1562005792573073ffffffffffffffffffffffffffffffffffffffff16632a5f6e856040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578a9190620088de565b905062005793565b5b919050565b6000620057a6603262005a2f565b905090565b6000620057b9605a62005a2f565b905090565b6000620057e8836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62005a39565b905092915050565b6000819050919050565b600062005808603c62005a2f565b905090565b60008160ff168360ff1614905092915050565b600090565b600062005833605062005a2f565b905090565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b60008082602001511480156200587b575060008260000151145b9050919050565b6000816000015190506000801b8103620058db57620058a5826020015162003c4e565b90508082600001818152505060038190806001815401808255809150506001900390600052602060002001600090919091909150555b816002600083815260200190815260200160002060008201518160000155602082015181600101908162005910919062008ab0565b5060408201518160020160006101000a81548160ff021916908315150217905550905050919050565b600062005947606462005aad565b905090565b60006200595d836000018362005ab7565b60001c905092915050565b600062005976605162005a2f565b905090565b600062005989604662005a2f565b905090565b60008060405180606001604052806000801b8152602001848152602001600115158152509050620059bf8162005882565b915050919050565b6000620059d78260000162005ae5565b9050919050565b600062005a08836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62005af6565b905092915050565b600062005a278383670de0b6b3a764000062005c1a565b905092915050565b6000819050919050565b600062005a47838362005d33565b62005aa257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062005aa7565b600090505b92915050565b6000819050919050565b600082600001828154811062005ad25762005ad162007955565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811462005c0e57600060018262005b2b919062008472565b905060006001866000018054905062005b45919062008472565b905081811462005bbb57600086600001828154811062005b6a5762005b6962007955565b5b906000526020600020015490508087600001848154811062005b915762005b9062007955565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548062005bd25762005bd162008b97565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062005c14565b60009150505b92915050565b600080600080198587098587029250828110838203039150506000810362005c5a5783828162005c4f5762005c4e62008bc6565b5b049250505062005d2c565b80841162005c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162005c969062008c45565b60405180910390fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b600080836001016000848152602001908152602001600020541415905092915050565b6103e58062008c6883390190565b604051806080016040528060006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200162005dab62005f89565b815260200162005dba62005f89565b81525090565b60405180610100016040528060006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200162005e6c62005f89565b815260200162005e7b62005f89565b81525090565b604051806060016040528060006bffffffffffffffffffffffff16815260200160008152602001600081525090565b60405180610160016040528060006bffffffffffffffffffffffff168152602001600060ff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060008019168152602001606081526020016000151581525090565b604051806060016040528060006bffffffffffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60006bffffffffffffffffffffffff82169050919050565b62005fda8162005fb7565b811462005fe657600080fd5b50565b60008135905062005ffa8162005fcf565b92915050565b60006020828403121562006019576200601862005fad565b5b6000620060298482850162005fe9565b91505092915050565b6000819050919050565b60006200605d62006057620060518462005fb7565b62006032565b62005fb7565b9050919050565b6200606f816200603c565b82525050565b60006020820190506200608c600083018462006064565b92915050565b6000819050919050565b620060a78162006092565b82525050565b6000602082019050620060c460008301846200609c565b92915050565b600060ff82169050919050565b620060e281620060ca565b8114620060ee57600080fd5b50565b6000813590506200610281620060d7565b92915050565b60006020828403121562006121576200612062005fad565b5b60006200613184828501620060f1565b91505092915050565b60006200615b620061556200614f84620060ca565b62006032565b620060ca565b9050919050565b6200616d816200613a565b82525050565b60006020820190506200618a600083018462006162565b92915050565b6200619b816200613a565b82525050565b6000602082019050620061b8600083018462006190565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200620e82620061c3565b810181811067ffffffffffffffff8211171562006230576200622f620061d4565b5b80604052505050565b60006200624562005fa3565b905062006253828262006203565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620062858262006258565b9050919050565b620062978162006278565b8114620062a357600080fd5b50565b600081359050620062b7816200628c565b92915050565b600060a08284031215620062d657620062d5620061be565b5b620062e260a062006239565b90506000620062f48482850162005fe9565b60008301525060206200630a8482850162005fe9565b60208301525060406200632084828501620060f1565b60408301525060606200633684828501620062a6565b60608301525060806200634c84828501620062a6565b60808301525092915050565b620063638162006092565b81146200636f57600080fd5b50565b600081359050620063838162006358565b92915050565b6000806000806000806101408789031215620063aa57620063a962005fad565b5b6000620063ba89828a01620062bd565b96505060a0620063cd89828a01620062a6565b95505060c0620063e089828a0162006372565b94505060e0620063f389828a0162006372565b9350506101006200640789828a0162006372565b9250506101206200641b89828a0162005fe9565b9150509295509295509295565b60008115159050919050565b6200643f8162006428565b82525050565b60006020820190506200645c600083018462006434565b92915050565b6000819050919050565b620064778162006462565b82525050565b60006020820190506200649460008301846200646c565b92915050565b600060208284031215620064b357620064b262005fad565b5b6000620064c384828501620062a6565b91505092915050565b620064d78162006462565b8114620064e357600080fd5b50565b600081359050620064f781620064cc565b92915050565b6000806040838503121562006517576200651662005fad565b5b60006200652785828601620064e6565b92505060206200653a85828601620062a6565b9150509250929050565b6000620065518262006278565b9050919050565b620065638162006544565b81146200656f57600080fd5b50565b600081359050620065838162006558565b92915050565b620065948162006092565b8114620065a057600080fd5b50565b600081359050620065b48162006589565b92915050565b600060408284031215620065d357620065d2620061be565b5b620065df604062006239565b90506000620065f184828501620065a3565b6000830152506020620066078482850162006372565b60208301525092915050565b6000806000806000806000610120888a03121562006636576200663562005fad565b5b6000620066468a828b0162005fe9565b9750506020620066598a828b0162005fe9565b96505060406200666c8a828b0162005fe9565b95505060606200667f8a828b0162006572565b9450506080620066928a828b01620062a6565b93505060a0620066a58a828b01620065ba565b92505060e0620066b88a828b01620065ba565b91505092959891949750929550565b620066d2816200603c565b82525050565b620066e38162006278565b82525050565b60006200670a62006704620066fe8462006092565b62006032565b62006092565b9050919050565b6200671c81620066e9565b82525050565b6200672d8162006092565b82525050565b6040820160008201516200674b600085018262006711565b50602082015162006760602085018262006722565b50505050565b60c0820160008201516200677e6000850182620066c7565b506020820151620067936020850182620066d8565b506040820151620067a8604085018262006733565b506060820151620067bd608085018262006733565b50505050565b600060c082019050620067da600083018462006766565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200681c578082015181840152602081019050620067ff565b60008484015250505050565b60006200683582620067e0565b620068418185620067eb565b935062006853818560208601620067fc565b6200685e81620061c3565b840191505092915050565b6000602082019050818103600083015262006885818462006828565b905092915050565b6000620068ae620068a8620068a28462006258565b62006032565b62006258565b9050919050565b6000620068c2826200688d565b9050919050565b6000620068d682620068b5565b9050919050565b620068e881620068c9565b82525050565b6000602082019050620069056000830184620068dd565b92915050565b60006200691882620068b5565b9050919050565b6200692a816200690b565b82525050565b60006200693d82620068b5565b9050919050565b6200694f8162006930565b82525050565b610140820160008201516200696e6000850182620066c7565b506020820151620069836020850182620066c7565b506040820151620069986040850182620066c7565b506060820151620069ad60608501826200691f565b506080820151620069c2608085018262006944565b5060a0820151620069d760a0850182620066d8565b5060c0820151620069ec60c085018262006733565b5060e082015162006a0261010085018262006733565b50505050565b60006101408201905062006a20600083018462006955565b92915050565b60006020828403121562006a3f5762006a3e62005fad565b5b600062006a4f8482850162006372565b91505092915050565b60608201600082015162006a706000850182620066c7565b50602082015162006a85602085018262006722565b50604082015162006a9a604085018262006722565b50505050565b600060608201905062006ab7600083018462006a58565b92915050565b600062006aca82620068b5565b9050919050565b62006adc8162006abd565b82525050565b600060208201905062006af9600083018462006ad1565b92915050565b600062006b0c8262006278565b9050919050565b62006b1e8162006aff565b811462006b2a57600080fd5b50565b60008135905062006b3e8162006b13565b92915050565b60006020828403121562006b5d5762006b5c62005fad565b5b600062006b6d8482850162006b2d565b91505092915050565b6000806040838503121562006b905762006b8f62005fad565b5b600062006ba08582860162005fe9565b925050602062006bb38582860162005fe9565b9150509250929050565b600062006bca82620068b5565b9050919050565b62006bdc8162006bbd565b82525050565b600060208201905062006bf9600083018462006bd1565b92915050565b60006020828403121562006c185762006c1762005fad565b5b600062006c2884828501620064e6565b91505092915050565b62006c3c8162006278565b82525050565b600060208201905062006c59600083018462006c31565b92915050565b6000806040838503121562006c795762006c7862005fad565b5b600062006c8985828601620064e6565b925050602062006c9c8582860162006372565b9150509250929050565b600080600060a0848603121562006cc25762006cc162005fad565b5b600062006cd28682870162005fe9565b935050602062006ce586828701620065ba565b925050606062006cf886828701620065ba565b9150509250925092565b600080fd5b600080fd5b600067ffffffffffffffff82111562006d2a5762006d29620061d4565b5b62006d3582620061c3565b9050602081019050919050565b82818337600083830152505050565b600062006d6862006d628462006d0c565b62006239565b90508281526020810184848401111562006d875762006d8662006d07565b5b62006d9484828562006d42565b509392505050565b600082601f83011262006db45762006db362006d02565b5b813562006dc684826020860162006d51565b91505092915050565b60006020828403121562006de85762006de762005fad565b5b600082013567ffffffffffffffff81111562006e095762006e0862005fb2565b5b62006e178482850162006d9c565b91505092915050565b62006e2b8162006930565b82525050565b600060208201905062006e48600083018462006e20565b92915050565b62006e5981620060ca565b811462006e6557600080fd5b50565b60008135905062006e798162006e4e565b92915050565b6000806000806080858703121562006e9c5762006e9b62005fad565b5b600062006eac8782880162005fe9565b945050602062006ebf87828801620060f1565b935050604062006ed28782880162006e68565b925050606062006ee58782880162006e68565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b600062006f1a8262006ef1565b62006f26818562006efc565b935062006f38818560208601620067fc565b62006f4381620061c3565b840191505092915050565b6000602082019050818103600083015262006f6a818462006f0d565b905092915050565b600062006f7f8262006278565b9050919050565b62006f918162006f72565b811462006f9d57600080fd5b50565b60008135905062006fb18162006f86565b92915050565b60006060828403121562006fd05762006fcf620061be565b5b62006fdc606062006239565b9050600062006fee8482850162005fe9565b6000830152506020620070048482850162006e68565b60208301525060406200701a8482850162006fa0565b60408301525092915050565b6000606082840312156200703f576200703e62005fad565b5b60006200704f8482850162006fb7565b91505092915050565b62007063816200613a565b82525050565b61016082016000820151620070826000850182620066c7565b50602082015162007097602085018262007058565b506040820151620070ac604085018262006722565b506060820151620070c1606085018262006722565b506080820151620070d6608085018262006722565b5060a0820151620070eb60a085018262006722565b5060c08201516200710060c085018262006722565b5060e08201516200711560e085018262006722565b506101008201516200712c61010085018262006722565b506101208201516200714361012085018262006722565b506101408201516200715a61014085018262006722565b50505050565b60006101608201905062007178600083018462007069565b92915050565b620071898162006462565b82525050565b600082825260208201905092915050565b6000620071ad8262006ef1565b620071b981856200718f565b9350620071cb818560208601620067fc565b620071d681620061c3565b840191505092915050565b620071ec8162006428565b82525050565b60006060830160008301516200720c60008601826200717e565b5060208301518482036020860152620072268282620071a0565b91505060408301516200723d6040860182620071e1565b508091505092915050565b60006020820190508181036000830152620072648184620071f2565b905092915050565b60008060008060c0858703121562007289576200728862005fad565b5b6000620072998782880162005fe9565b9450506020620072ac87828801620062a6565b9350506040620072bf87828801620065ba565b9250506080620072d287828801620065ba565b91505092959194509250565b600080600060608486031215620072fa57620072f962005fad565b5b60006200730a86828701620060f1565b93505060206200731d8682870162006e68565b9250506040620073308682870162006e68565b9150509250925092565b60006200734782620068b5565b9050919050565b62007359816200733a565b82525050565b606082016000820151620073776000850182620066c7565b5060208201516200738c602085018262007058565b506040820151620073a160408501826200734e565b50505050565b6000606082019050620073be60008301846200735f565b92915050565b60008060608385031215620073de57620073dd62005fad565b5b6000620073ee8582860162006372565b92505060206200740185828601620065ba565b9150509250929050565b60006040820190506200742260008301856200609c565b6200743160208301846200609c565b9392505050565b7f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f53455256494360008201527f4500000000000000000000000000000000000000000000000000000000000000602082015250565b60006200749660218362006efc565b9150620074a38262007438565b604082019050919050565b60006020820190508181036000830152620074c98162007487565b9050919050565b7f4552524f523a5052442d3030313a52454749535452595f5a45524f0000000000600082015250565b600062007508601b8362006efc565b91506200751582620074d0565b602082019050919050565b600060208201905081810360008301526200753b81620074f9565b9050919050565b600081519050620075538162005fcf565b92915050565b60006020828403121562007572576200757162005fad565b5b6000620075828482850162007542565b91505092915050565b62007596816200603c565b82525050565b6000602082019050620075b360008301846200758b565b92915050565b620075c48162006428565b8114620075d057600080fd5b50565b600081519050620075e481620075b9565b92915050565b60006020828403121562007603576200760262005fad565b5b60006200761384828501620075d3565b91505092915050565b6000620076298262006278565b9050919050565b6200763b816200761c565b81146200764757600080fd5b50565b6000815190506200765b8162007630565b92915050565b6000602082840312156200767a576200767962005fad565b5b60006200768a848285016200764a565b91505092915050565b6000606082019050620076aa600083018662006064565b620076b9602083018562006190565b620076c8604083018462006c31565b949350505050565b600081519050620076e18162006e4e565b92915050565b6000602082840312156200770057620076ff62005fad565b5b60006200771084828501620076d0565b91505092915050565b6000815190506200772a816200628c565b92915050565b60006020828403121562007749576200774862005fad565b5b6000620077598482850162007719565b91505092915050565b7f4552524f523a41434d2d3030313a4e4f545f4f574e4552000000000000000000600082015250565b60006200779a60178362006efc565b9150620077a78262007762565b602082019050919050565b60006020820190508181036000830152620077cd816200778b565b9050919050565b7f4552524f523a41434d2d3031303a524f4c455f4e4f545f4558495354494e4700600082015250565b60006200780c601f8362006efc565b91506200781982620077d4565b602082019050919050565b600060208201905081810360008301526200783f81620077fd565b9050919050565b7f4552524f523a41434d2d3031313a524f4c455f4e4f545f414354495645000000600082015250565b60006200787e601d8362006efc565b91506200788b8262007846565b602082019050919050565b60006020820190508181036000830152620078b1816200786f565b9050919050565b6000606082019050620078cf60008301866200646c565b620078de602083018562006c31565b620078ed604083018462006434565b949350505050565b6000819050919050565b6000620079206200791a6200791484620078f5565b62006032565b620060ca565b9050919050565b6200793281620078ff565b82525050565b60006020820190506200794f600083018462007927565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500600082015250565b6000620079bc601f8362006efc565b9150620079c98262007984565b602082019050919050565b60006020820190508181036000830152620079ef81620079ad565b9050919050565b60008151905062007a0781620060d7565b92915050565b60006020828403121562007a265762007a2562005fad565b5b600062007a3684828501620079f6565b91505092915050565b600060408201905062007a5660008301856200646c565b62007a65602083018462006c31565b9392505050565b7f4552524f523a434d502d3030343a545950455f524f4c455f4d495353494e4700600082015250565b600062007aa4601f8362006efc565b915062007ab18262007a6c565b602082019050919050565b6000602082019050818103600083015262007ad78162007a95565b9050919050565b60008151905062007aef8162006f86565b92915050565b60006020828403121562007b0e5762007b0d62005fad565b5b600062007b1e8482850162007ade565b91505092915050565b7f4552524f523a434d502d3030353a504f4f4c5f554e4b4e4f574e000000000000600082015250565b600062007b5f601a8362006efc565b915062007b6c8262007b27565b602082019050919050565b6000602082019050818103600083015262007b928162007b50565b9050919050565b60008151905062007baa8162006589565b92915050565b60008151905062007bc18162006358565b92915050565b60006040828403121562007be05762007bdf620061be565b5b62007bec604062006239565b9050600062007bfe8482850162007b99565b600083015250602062007c148482850162007bb0565b60208301525092915050565b60006040828403121562007c395762007c3862005fad565b5b600062007c498482850162007bc7565b91505092915050565b62007c5d816200733a565b82525050565b60408201600082015162007c7b600085018262006711565b50602082015162007c90602085018262006722565b50505050565b60006101208201905062007cae600083018a62006064565b62007cbd602083018962006064565b62007ccc604083018862006064565b62007cdb606083018762007c52565b62007cea608083018662006c31565b62007cf960a083018562007c63565b62007d0860e083018462007c63565b98975050505050505050565b600060c08201905062007d2b600083018762006064565b62007d3a602083018662006c31565b62007d49604083018562007c63565b62007d58608083018462007c63565b95945050505050565b6000610160828403121562007d7b5762007d7a620061be565b5b62007d8861016062006239565b9050600062007d9a8482850162007542565b600083015250602062007db084828501620076d0565b602083015250604062007dc68482850162007bb0565b604083015250606062007ddc8482850162007bb0565b606083015250608062007df28482850162007bb0565b60808301525060a062007e088482850162007bb0565b60a08301525060c062007e1e8482850162007bb0565b60c08301525060e062007e348482850162007bb0565b60e08301525061010062007e4b8482850162007bb0565b6101008301525061012062007e638482850162007bb0565b6101208301525061014062007e7b8482850162007bb0565b6101408301525092915050565b6000610160828403121562007ea25762007ea162005fad565b5b600062007eb28482850162007d61565b91505092915050565b7f4552524f523a5452532d3032303a504f4c4943595f554e4b4e4f574e00000000600082015250565b600062007ef3601c8362006efc565b915062007f008262007ebb565b602082019050919050565b6000602082019050818103600083015262007f268162007ee4565b9050919050565b600060608201905062007f44600083018662006c31565b62007f53602083018562006c31565b62007f6260408301846200609c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062007fb257607f821691505b60208210810362007fc85762007fc762007f6a565b5b50919050565b7f4552524f523a414f532d3030313a524f4c455f444f45535f4e4f545f4558495360008201527f5400000000000000000000000000000000000000000000000000000000000000602082015250565b60006200802c60218362006efc565b9150620080398262007fce565b604082019050919050565b600060208201905081810360008301526200805f816200801d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620080a28262006092565b9150620080af8362006092565b9250828201905080821115620080ca57620080c962008066565b5b92915050565b6000608082019050620080e7600083018762006064565b620080f6602083018662006190565b62008105604083018562006162565b62008114606083018462006162565b95945050505050565b600060608201905062008134600083018662006064565b62008143602083018562006162565b62008152604083018462006162565b949350505050565b600060408201905062008171600083018562006064565b62008180602083018462006190565b9392505050565b7f4552524f523a504c2d3030323a504f4c4943595f554e4b4e4f574e0000000000600082015250565b6000620081bf601b8362006efc565b9150620081cc8262008187565b602082019050919050565b60006020820190508181036000830152620081f281620081b0565b9050919050565b6000815190506200820a8162006558565b92915050565b60006200821d8262006278565b9050919050565b6200822f8162008210565b81146200823b57600080fd5b50565b6000815190506200824f8162008224565b92915050565b600061014082840312156200826f576200826e620061be565b5b6200827c61010062006239565b905060006200828e8482850162007542565b6000830152506020620082a48482850162007542565b6020830152506040620082ba8482850162007542565b6040830152506060620082d084828501620081f9565b6060830152506080620082e6848285016200823e565b60808301525060a0620082fc8482850162007719565b60a08301525060c0620083128482850162007bc7565b60c083015250610100620083298482850162007bc7565b60e08301525092915050565b600061014082840312156200834f576200834e62005fad565b5b60006200835f8482850162008255565b91505092915050565b7f4552524f523a504c2d3030333a50524f445543545f53455455505f4d4953534960008201527f4e47000000000000000000000000000000000000000000000000000000000000602082015250565b6000620083c660228362006efc565b9150620083d38262008368565b604082019050919050565b60006020820190508181036000830152620083f981620083b7565b9050919050565b7f4552524f523a504c2d3030343a504f4f4c5f554e4b4e4f574e00000000000000600082015250565b60006200843860198362006efc565b9150620084458262008400565b602082019050919050565b600060208201905081810360008301526200846b8162008429565b9050919050565b60006200847f8262006092565b91506200848c8362006092565b9250828203905081811115620084a757620084a662008066565b5b92915050565b7f4552524f523a504c2d3030353a43415041434954595f544f4f5f4c4f57000000600082015250565b6000620084e5601d8362006efc565b9150620084f282620084ad565b602082019050919050565b600060208201905081810360008301526200851881620084d6565b9050919050565b60006040820190506200853660008301856200758b565b6200854560208301846200758b565b9392505050565b7f4552524f523a434d502d3030363a434f4d504f4e454e545f554e4b4e4f574e00600082015250565b600062008584601f8362006efc565b915062008591826200854c565b602082019050919050565b60006020820190508181036000830152620085b78162008575565b9050919050565b600060a08284031215620085d757620085d6620061be565b5b620085e360a062006239565b90506000620085f58482850162007542565b60008301525060206200860b8482850162007542565b60208301525060406200862184828501620079f6565b6040830152506060620086378482850162007719565b60608301525060806200864d8482850162007719565b60808301525092915050565b600060a0828403121562008672576200867162005fad565b5b60006200868284828501620085be565b91505092915050565b7f4552524f523a504c2d3030313a414c52454144595f4352454154454400000000600082015250565b6000620086c3601c8362006efc565b9150620086d0826200868b565b602082019050919050565b60006020820190508181036000830152620086f681620086b4565b9050919050565b7f4552524f523a41434d2d3032303a524f4c455f4e4f545f4558495354494e4700600082015250565b600062008735601f8362006efc565b91506200874282620086fd565b602082019050919050565b60006020820190508181036000830152620087688162008726565b9050919050565b7f4552524f523a414f532d3030323a524f4c455f444f45535f4e4f545f4558495360008201527f5400000000000000000000000000000000000000000000000000000000000000602082015250565b6000620087cd60218362006efc565b9150620087da826200876f565b604082019050919050565b600060208201905081810360008301526200880081620087be565b9050919050565b620088128162006092565b82525050565b60006020820190506200882f600083018462008807565b92915050565b6000602082840312156200884e576200884d62005fad565b5b60006200885e8482850162007b99565b91505092915050565b6200887281620066e9565b82525050565b60006020820190506200888f600083018462008867565b92915050565b600060208284031215620088ae57620088ad62005fad565b5b6000620088be8482850162007bb0565b91505092915050565b600081519050620088d881620064cc565b92915050565b600060208284031215620088f757620088f662005fad565b5b60006200890784828501620088c7565b91505092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620089747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262008935565b62008980868362008935565b95508019841693508086168417925050509392505050565b6000819050919050565b620089ad83620066e9565b620089c5620089bc8262008998565b84845462008942565b825550505050565b600090565b620089dc620089cd565b620089e9818484620089a2565b505050565b5b8181101562008a115762008a05600082620089d2565b600181019050620089ef565b5050565b601f82111562008a605762008a2a8162008910565b62008a358462008925565b8101602085101562008a45578190505b62008a5d62008a548562008925565b830182620089ee565b50505b505050565b600082821c905092915050565b600062008a856000198460080262008a65565b1980831691505092915050565b600062008aa0838362008a72565b9150826002028217905092915050565b62008abb8262006ef1565b67ffffffffffffffff81111562008ad75762008ad6620061d4565b5b62008ae3825462007f99565b62008af082828562008a15565b600060209050601f83116001811462008b28576000841562008b13578287015190505b62008b1f858262008a92565b86555062008b8f565b601f19841662008b388662008910565b60005b8281101562008b625784890151825560018201915060208501945060208101905062008b3b565b8683101562008b82578489015162008b7e601f89168262008a72565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4d6174683a206d756c446976206f766572666c6f770000000000000000000000600082015250565b600062008c2d60158362006efc565b915062008c3a8262008bf5565b602082019050919050565b6000602082019050818103600083015262008c608162008c1e565b905091905056fe608060405234801561001057600080fd5b506040516103e53803806103e5833981810160405281019061003291906100db565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a88261007d565b9050919050565b6100b88161009d565b81146100c357600080fd5b50565b6000815190506100d5816100af565b92915050565b6000602082840312156100f1576100f0610078565b5b60006100ff848285016100c6565b91505092915050565b6102ce806101176000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063beabacc814610030575b600080fd5b61004a6004803603810190610045919061018b565b61004c565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b81526004016100a9939291906101fc565b6020604051808303816000875af11580156100c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ec919061026b565b50505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610122826100f7565b9050919050565b61013281610117565b811461013d57600080fd5b50565b60008135905061014f81610129565b92915050565b6000819050919050565b61016881610155565b811461017357600080fd5b50565b6000813590506101858161015f565b92915050565b6000806000606084860312156101a4576101a36100f2565b5b60006101b286828701610140565b93505060206101c386828701610140565b92505060406101d486828701610176565b9150509250925092565b6101e781610117565b82525050565b6101f681610155565b82525050565b600060608201905061021160008301866101de565b61021e60208301856101de565b61022b60408301846101ed565b949350505050565b60008115159050919050565b61024881610233565b811461025357600080fd5b50565b6000815190506102658161023f565b92915050565b600060208284031215610281576102806100f2565b5b600061028f84828501610256565b9150509291505056fea2646970667358221220584830ad6020f92961817dc65ddc7db09473de72e053fbcf657fa124b0863b5764736f6c63430008140033a264697066735822122011b6b8bf36c4608b07a694419b40e86df6783a95c6c67dedff9a6fd43649186d64736f6c63430008140033",
2068
+ "bytecode": "0x60e06040523480156200001157600080fd5b50604051620077ad380380620077ad833981016040819052620000349162001456565b818181816200004560003362000474565b6301ffc9a760e01b60005260026020527f71203db6a8b906f8e7c7701ea536708e3d7c6018d3ad50e5680c3241edacce17805460ff191660011790556001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f000000000060448201526064015b60405180910390fd5b6001600160a01b03821660808190526040516301ffc9a760e01b81526306ecd8ef60e01b60048201526301ffc9a790602401602060405180830381865afa1580156200012d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015391906200149e565b620001a15760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f52454749535452590000000000006044820152606401620000d4565b6001600160601b03811660a081905260805160405163e74d052f60e01b815260048101929092526001600160a01b03169063e74d052f90602401602060405180830381865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f91906200149e565b620002795760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5247422d3031323a504152454e545f4e4f545f5245474953544560448201526214915160ea1b6064820152608401620000d4565b3360c052631dfba64760e11b60005260026020527ffc5164b528507fb56c225cc68864b8f0ef1e129250403b69e252bd0b2789bfea805460ff191660011790555050630cc0a10960e01b60005260026020527f06f4e33d2ce7c0973a7c224b2899406defdb8885f5882370cb69478e6016b453805460ff19166001179055620003016200074b565b506200034c905062000312620008de565b60408051808201909152601481527f4469737472696275746f724f776e6572526f6c6500000000000000000000000060208201526200092b565b620003866200035a62000990565b60408051808201909152600f81526e4f7261636c654f776e6572526f6c6560881b60208201526200092b565b620003be62000394620009ca565b60408051808201909152600d81526c506f6f6c4f776e6572526f6c6560981b60208201526200092b565b620003f9620003cc62000a02565b60408051808201909152601081526f50726f647563744f776e6572526f6c6560801b60208201526200092b565b600d8054306001600160a01b031991821681179092556011805490911690911790556200042e62000428606490565b62000a42565b6200043a607862000a42565b62000446608262000a42565b6200045062000b73565b6200045a62000d2a565b5050601580546001600160a01b03191630179055620017a2565b60006200048062000f97565b90506200048d8162000fa8565b15620004ec5760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b6064820152608401620000d4565b60015415620005ac5760018054600091906200050a908290620014df565b815481106200051d576200051d620014f5565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1690506200055082826200104c565b620005aa5760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b6064820152608401620000d4565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b03808616602084015284169082015260608101620006354390565b63ffffffff1681526020014264ffffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c01b0264ffffffffff60c01b1963ffffffff909716600160a01b026001600160c01b031990961692909416919091179390931793909316179055517f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d4419906200073e9083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050565b60006200075762000f97565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015620007ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d391906200150b565b90506200081c6040518060400160405280601581526020017f436f6d706f6e656e744f776e6572536572766963650000000000000000000000815250826200105e60201b60201c565b600380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d50726f647563745365727669636560901b60208201526200086d90826200105e565b600480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a506f6f6c5365727669636560a81b6020820152620008bb90826200105e565b600580546001600160a01b0319166001600160a01b039290921691909117905550565b6000620009266040518060400160405280601481526020017f4469737472696275746f724f776e6572526f6c650000000000000000000000008152506200113160201b60201c565b905090565b604080516060810182526001600160c01b031984168152602081018390526001918101919091526200095d8162001163565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c648583836040516200073e92919062001578565b6000620009266040518060400160405280600f81526020016e4f7261636c654f776e6572526f6c6560881b8152506200113160201b60201c565b6000620009266040518060400160405280600d81526020016c506f6f6c4f776e6572526f6c6560981b8152506200113160201b60201c565b6000620009266040518060400160405280601081526020016f50726f647563744f776e6572526f6c6560801b8152506200113160201b60201c565b606490565b60ff81166000908152601260209081526040808320805460ff1916606490811790915560138352818420908452909152812060019162000a80606e90565b60ff908116825260208083019390935260409182016000908120805460ff191695151595909517909455841683526013909152812060019162000ac1606e90565b60ff1660ff168152602001908152602001600020600062000ae762000a3d60201b60201c565b60ff908116825260208083019390935260409182016000908120805460ff191695151595909517909455841683526013909152812060019162000b28606e90565b60ff1660ff168152602001908152602001600020600062000b4e6200124660201b60201c565b60ff1681526020810191909152604001600020805460ff191691151591909117905550565b60d2600090815260126020527f8abd79d2c9af309cd354b73057265bd4872c5c303d4996bc882615d683cfe7c2805460ff1916606417905560019060139062000bba60d290565b60ff1660ff168152602001908152602001600020600062000be062000a3d60201b60201c565b60ff1660ff168152602001908152602001600020600062000c066200124160201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000c3a60d290565b60ff1660ff168152602001908152602001600020600062000c606200124160201b60201c565b60ff1660ff168152602001908152602001600020600062000c8662000a3d60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000cba60d290565b60ff1660ff168152602001908152602001600020600062000ce06200124160201b60201c565b60ff1660ff168152602001908152602001600020600062000d066200124b60201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b60c8600090815260126020527f7f5e610a07c00efd358a9ca9fe4176531c20c22db02aa408e24d88c54cc13d1f805460ff1916600a17905560019060139062000d7160c890565b60ff1660ff168152602001908152602001600020600062000d976200125060201b60201c565b60ff1660ff168152602001908152602001600020600062000dbd6200125560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000df160c890565b60ff1660ff168152602001908152602001600020600062000e176200125060201b60201c565b60ff1660ff168152602001908152602001600020600062000e3d6200125a60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000e7160c890565b60ff1660ff168152602001908152602001600020600062000e976200125060201b60201c565b60ff1660ff168152602001908152602001600020600062000ebd6200125f60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000ef160c890565b60ff1660ff168152602001908152602001600020600062000f176200125f60201b60201c565b60ff1660ff168152602001908152602001600020600062000f3d62000a3d60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060139062000f7160c890565b60ff1660ff168152602001908152602001600020600062000ce062000a3d60201b60201c565b600062000926600360008062001264565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160a01b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156200101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010459190620015a7565b1192915050565b62ffffff808216908316115b92915050565b60805160405163a3bcd81d60e01b81526000916001600160a01b03169063a3bcd81d90620010939086908690600401620015c1565b602060405180830381865afa158015620010b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d79190620015e8565b90506001600160a01b038116620010585760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a494e532d3030313a4e4f545f52454749535445524544000000006044820152606401620000d4565b60008160405160200162001146919062001606565b604051602081830303815290604052805190602001209050919050565b80516001600160c01b031981166000908152600660209081526040909120835181546001600160401b03191660c09190911c178155908301518391906001820190620011b09082620016c0565b50604091909101516002909101805460ff1916911515919091179055620011d7816200140e565b6200123d57600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600482040180546001600160401b0360039093166008026101000a928302191660c084901c929092029190911790555b5050565b606e90565b60d290565b60c890565b600a90565b601490565b601e90565b602890565b604051632b10f60d60e21b815260ff84166004820152600090819073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af4158015620012bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e29190620015a7565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af41580156200133b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013619190620015a7565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af4158015620013ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e09190620015a7565b905080620013f7600884901b601086901b6200178c565b6200140391906200178c565b979650505050505050565b6001600160c01b0319818116600081815260066020526040812054909260c09190911b161462001058565b80516001600160a01b03811681146200145157600080fd5b919050565b600080604083850312156200146a57600080fd5b620014758362001439565b60208401519092506001600160601b03811681146200149357600080fd5b809150509250929050565b600060208284031215620014b157600080fd5b81518015158114620014c257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620010585762001058620014c9565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200151e57600080fd5b815160ff81168114620014c257600080fd5b6000815180845260005b8181101562001558576020818501810151868301820152016200153a565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160c01b0319831681526040602082018190526000906200159f9083018462001530565b949350505050565b600060208284031215620015ba57600080fd5b5051919050565b604081526000620015d6604083018562001530565b905060ff831660208301529392505050565b600060208284031215620015fb57600080fd5b620014c28262001439565b602081526000620014c2602083018462001530565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200164657607f821691505b6020821081036200166757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620016bb57600081815260208120601f850160051c81016020861015620016965750805b601f850160051c820191505b81811015620016b757828155600101620016a2565b5050505b505050565b81516001600160401b03811115620016dc57620016dc6200161b565b620016f481620016ed845462001631565b846200166d565b602080601f8311600181146200172c5760008415620017135750858301515b600019600386901b1c1916600185901b178555620016b7565b600085815260208120601f198616915b828110156200175d578886015182559484019460019091019084016200173c565b50858210156200177c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620010585762001058620014c9565b60805160a05160c051615fbf620017ee6000396000613f3b015260006105310152600081816107890152818161128101528181611d0b01528181613eba0152613f7e0152615fbf6000f3fe60806040523480156200001157600080fd5b5060043610620004095760003560e01c8063893d20e8116200021d578063bd62faf71162000131578063dc261c3a11620000bb578063e9e96c701162000086578063e9e96c701462000c1a578063ee0fdf711462000c31578063f0ea17c31462000c48578063f274e87d1462000cf957600080fd5b8063dc261c3a1462000b84578063e03eeb851462000bd5578063e1f64d771462000bec578063e79597401462000c0357600080fd5b8063d0bb064c11620000fc578063d0bb064c1462000aaf578063d250185c1462000b3f578063dad73bed1462000b56578063db70354c1462000b6d57600080fd5b8063bd62faf71462000a35578063bd7d9d851462000a4c578063c2bf7d261462000a72578063cf5ccedb1462000a8957600080fd5b806399fd467711620001b3578063af17d38a116200017e578063af17d38a14620009d9578063b88da75914620009f0578063b8c510671462000a07578063b9f36dde1462000a1e57600080fd5b806399fd4677146200095c578063a310e2a31462000973578063a7f3669b14620009ab578063a90be90714620009c257600080fd5b8063946dfcfe11620001f4578063946dfcfe146200090e5780639555c4db14620009175780639675513d146200092e57806398457437146200094557600080fd5b8063893d20e8146200089c5780638b59fe2a14620008a657806393865aec14620008bd57600080fd5b80634793b4ab1162000321578063674d0ccf11620002ab57806375a07ed2116200027657806375a07ed214620008215780637fec8b31146200083857806383d33319146200084f57806387c56586146200085857600080fd5b8063674d0ccf14620007cf57806369a44a1b14620007e65780636b9bf08b14620007fd5780636fa29853146200080f57600080fd5b806357f80bbf11620002ec57806357f80bbf14620006e75780635ab1bd5314620007875780635fe9f2a514620007ae578063644c45e014620007c557600080fd5b80634793b4ab14620005f55780634d459c90146200061b5780634fd077f514620006905780635312fdc214620006b657600080fd5b80631aa3a00811620003a3578063349195f9116200036e578063349195f914620005935780633bc5de30146200059c5780634288121d14620005b857806345c5a27d14620005de57600080fd5b80631aa3a008146200050c57806331b62a3b146200052f57806331e48e3214620005565780633300a8a8146200056d57600080fd5b80630d0ccc5b11620003e45780630d0ccc5b14620004835780630d35818114620004a95780630d8e6e2c14620004e557806315dae03e146200050457600080fd5b806301ffc9a7146200040e5780630591087414620004535780630abd8434146200046c575b600080fd5b6200043e6200041f366004620047d3565b6001600160e01b03191660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200046a6200046436600462004825565b62000d26565b005b6200043e6200047d366004620048d7565b620010b9565b6200049a62000494366004620048fe565b6200115d565b6040519081526020016200044a565b620004d2620004ba36600462004953565b60ff9081166000908152601260205260409020541690565b60405160ff90911681526020016200044a565b620004ef620011e8565b60405162ffffff90911681526020016200044a565b6032620004d2565b62000516620011fe565b6040516001600160601b0390911681526020016200044a565b7f000000000000000000000000000000000000000000000000000000000000000062000516565b6200046a6200056736600462004aa8565b620012f9565b620005846200057e36600462004b4a565b62001444565b6040516200044a919062004b6a565b600f546200049a565b604080516020810182526000815290516200044a919062004c1d565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016200044a565b6200046a620005ef36600462004cf8565b620014ca565b6200060c6200060636600462004b4a565b62001746565b6040516200044a919062004e1b565b620006326200062c366004620048d7565b620018f5565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015163ffffffff169082015260809182015164ffffffffff169181019190915260a0016200044a565b620006a7620006a136600462004b4a565b620019f0565b6040516200044a919062004f08565b620006cd620006c736600462004fbd565b62001aa8565b6040516001600160c01b031990911681526020016200044a565b62000759620006f836600462004b4a565b6040805160608082018352600080835260208084018290529284018190526001600160601b039485168152601683528390208351918201845280549485168252600160601b90940460ff161515918101919091526001909201549082015290565b6040805182516001600160601b0316815260208084015115159082015291810151908201526060016200044a565b7f0000000000000000000000000000000000000000000000000000000000000000620005c5565b6200046a620007bf36600462004fd7565b62001aea565b6200051662001cf3565b6200049a620007e036600462005151565b62001d5b565b6200049a620007f736600462004b4a565b62001d7f565b6005546001600160a01b0316620005c5565b6003546001600160a01b0316620005c5565b6200046a620008323660046200516f565b62001e10565b620005166200084936600462004fbd565b62002143565b6007546200049a565b604080518082018252600080825260209182018190528251808401845281815282018190528251808401909352808352908201525b6040516200044a9190620051dd565b620005c56200218b565b6200046a620008b7366004620051f5565b62002197565b6200046a620008ce36600462005247565b6001600160601b039092166000908152601a6020908152604090912082516001820155918101516002830155825160038301559190910151600490910155565b6001546200049a565b6200046a6200092836600462005295565b620023b6565b6200049a6200093f366004620052c8565b620023c6565b6200046a62000956366004620052fb565b62002530565b6200043e6200096d36600462005341565b620026b0565b620005c56200098436600462004b4a565b6001600160601b03166000908152601860205260409020600201546001600160a01b031690565b620004d2620009bc36600462005360565b620026e7565b6200049a620009d336600462004fbd565b620028f1565b620006cd620009ea366004620053c5565b6200292d565b620004ef62000a0136600462004fbd565b62002a49565b620006cd62000a18366004620053c5565b62002ae1565b6200046a62000a2f36600462005341565b62002aee565b6200051662000a463660046200541a565b62002c57565b62000a6362000a5d36600462004b4a565b6200309a565b6040516200044a919062005495565b6200046a62000a8336600462005341565b6200329f565b62000aa062000a9a36600462005151565b6200349f565b6040516200044a9190620055c7565b6200046a62000ac036600462005610565b604080516080810182526001600160601b039586168082526001600160a01b039586166020808401918252838501968752606084019586526000928352601a81529390912091519051909516600160601b0294909516939093178455905180516001850155820151600284015551805160038401550151600490910155565b6200088d62000b5036600462005673565b6200359d565b6200046a62000b67366004620056a5565b620035dd565b6200051662000b7e366004620056d6565b620037fb565b6200046a62000b9536600462005247565b6001600160601b03909216600090815260186020908152604090912082516004820155918101516005830155825160068301559190910151600790910155565b6200046a62000be636600462005705565b62003892565b6200046a62000bfd366004620052fb565b620039d8565b620005c562000c143660046200573a565b62003b2c565b6200043e62000c2b36600462005759565b62003b51565b6200043e62000c4236600462005151565b62003b85565b62000cc162000c5936600462004b4a565b6040805160608082018352600080835260208084018290529284018190526001600160601b039485168152600e83528390208351918201845280549485168252600160601b90940460ff16918101919091526001909201546001600160a01b03169082015290565b6040805182516001600160601b0316815260208084015160ff1690820152918101516001600160a01b0316908201526060016200044a565b62000d1062000d0a366004620057a0565b62003bb0565b604080519283526020830191909152016200044a565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d8d9190620057d0565b6001600160a01b0316336001600160a01b03161462000df35760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f53455256494345000060448201526064015b60405180910390fd5b60408051610160810182526001600160601b03888116825287166020820152600d5490918201906001600160a01b0316630d35818160d26040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865afa15801562000e69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8f9190620057f0565b60ff16815260200183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602082018790526040820152606081018690526080014264ffffffffff16815260200142604051631ded81af60e31b815264ffffffffff90911660048201526024810186905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562000f52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f78919062005810565b64ffffffffff168152602001600064ffffffffff1681526020014363ffffffff1690526001600160601b038088166000908152600a602090815260409182902084518154928601519386015160ff16600160c01b0260ff60c01b19948616600160601b026001600160c01b03199094169190951617919091179190911691909117815560608201516001820190620010119082620058bf565b506080820151600282015560a0820151600382015560c0820151600482015560e0820151600590910180546101008401516101208501516101409095015163ffffffff16600160781b0263ffffffff60781b1964ffffffffff968716600160501b021668ffffffffffffffffff60501b19928716600160281b0269ffffffffffffffffffff199094169690951695909517919091171691909117919091179055505050505050565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160a01b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801562001130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200115691906200598b565b1192915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af4158015620011b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df91906200598b565b90505b92915050565b6000620011f9600360008062003ce3565b905090565b60006200120a6200218b565b6001600160a01b0316336001600160a01b0316146200126c5760405162461bcd60e51b815260206004820152601760248201527f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000604482015260640162000dea565b604051632210724360e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634420e486906024016020604051808303816000875af1158015620012d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011f99190620059a5565b600087856040516200130b9062004707565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562001346573d6000803e3d6000fd5b5060408051610100810182526001600160601b039a8b16808252998b166020808301918252998c168284019081526001600160a01b03998a1660608401908152948a1660808401908152988a1660a0840190815260c0840198895260e0840197885260009c8d5260188c5293909b20915182549151908d166001600160c01b031990921691909117600160601b918d1682021782559951925192909a169187169098021760018901555091516002870180546001600160a01b03199081169286169290921790559451600387018054909616931692909217909355518051600485015581015160058401559051805160068401550151600790910155565b6200144e62004715565b506001600160601b039081166000908152601a6020908152604091829020825160808101845281549485168152600160601b9094046001600160a01b0316848301528251808401845260018201548152600282015481840152848401528251808401909352600381015483526004015490820152606082015290565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200150b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015319190620057d0565b6001600160a01b0316336001600160a01b03161480620015c85750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200158d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b39190620057d0565b6001600160a01b0316336001600160a01b0316145b620016285760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000dea565b80516001600160601b039081166000908152600a602090815260409182902084518154928601519386015160ff16600160c01b0260ff60c01b19948616600160601b026001600160c01b03199094169190951617919091179190911691909117815560608201518291906001820190620016a39082620058bf565b506080820151600282015560a0820151600382015560c0820151600482015560e0820151600590910180546101008401516101208501516101409095015163ffffffff16600160781b0263ffffffff60781b1964ffffffffff968716600160501b021668ffffffffffffffffff60501b19928716600160281b0269ffffffffffffffffffff19909416969095169590951791909117169190911791909117905550565b60408051610160810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526001600160601b038281166000908152600a602090815260409182902082516101608101845281548086168252600160601b810490951692810192909252600160c01b90930460ff1691810191909152600182018054919291606084019190620018089062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620018369062005830565b8015620018875780601f106200185b5761010080835404028352916020019162001887565b820191906000526020600020905b8154815290600101906020018083116200186957829003601f168201915b505050918352505060028201546020820152600382015460408201526004820154606082015260059091015464ffffffffff8082166080840152600160281b8204811660a0840152600160501b82041660c0830152600160781b900463ffffffff1660e09091015292915050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526200192b82620010b9565b620019795760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3032303a56455253494f4e5f554e4b4e4f574e000000604482015260640162000dea565b5062ffffff90811660009081526020818152604091829020825160a0810184528154948516815263010000009094046001600160a01b03908116928501929092526001015490811691830191909152600160a01b810463ffffffff166060830152600160c01b900464ffffffffff16608082015290565b620019fa62004786565b506001600160601b0390811660009081526018602090815260409182902082516101008101845281548086168252600160601b908190048616828501526001830154958616828601526001600160a01b03950485166060820152600282015485166080820152600382015490941660a0850152825180840184526004820154815260058201548184015260c0850152825180840190935260068101548352600701549082015260e082015290565b60006007828154811062001ac05762001ac0620059c5565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001b2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b519190620057d0565b6001600160a01b0316336001600160a01b03161462001b845760405162461bcd60e51b815260040162000dea90620059db565b80516001600160601b0390811660009081526014602090815260409182902084518154928601519085166001600160c01b031990931692909217600160601b928516830217815591840151606085015193166001600160a01b0390931602919091176001820155608082015160028201805460ff191660ff90921691909117905560a0820151600382015560c0820151600482015560e082015160058201556101008201516006820155610120820151829190600782019062001c489082620058bf565b50610140820151600890910180546101608401516101808501516101a08601516101c09096015163ffffffff16600160a01b0263ffffffff60a01b1964ffffffffff978816600160781b0264ffffffffff60781b19938916600160501b029390931669ffffffffffffffffffff60501b19948916600160281b0269ffffffffffffffffffff199096169890971697909717939093179190911693909317929092179290921617905550565b604051636939560f60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d272ac1e90602401602060405180830381865afa158015620012d3573d6000803e3d6000fd5b6001600160c01b031981166000908152600960205260408120620011e29062003e8d565b6001600160601b038116600090815260176020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011e291906200598b565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e779190620057d0565b6001600160a01b0316336001600160a01b03161462001eaa5760405162461bcd60e51b815260040162000dea90620059db565b604080516101e0810182526001600160601b03878116825288811660208301528316918101919091526000606082015260155460808201906001600160a01b0316630d35818160c86040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865afa15801562001f31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f579190620057f0565b60ff1681526020018581526020018481526020016000815260200183815260200160405180602001604052806000815250815260200162001f954290565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff1681526020014363ffffffff1690526001600160601b0386811660009081526014602090815260409182902084518154928601519085166001600160c01b031990931692909217600160601b928516830217815591840151606085015193166001600160a01b0390931602919091176001820155608082015160028201805460ff191660ff90921691909117905560a0820151600382015560c0820151600482015560e0820151600582015561010082015160068201556101208201516007820190620020939082620058bf565b50610140820151600890910180546101608401516101808501516101a08601516101c09096015163ffffffff16600160a01b0263ffffffff60a01b1964ffffffffff978816600160781b0264ffffffffff60781b19938916600160501b029390931669ffffffffffffffffffff60501b19948916600160281b0269ffffffffffffffffffff1990961698909716979097179390931791909116939093179290921792909216179055505050505050565b6000600f82815481106200215b576200215b620059c5565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b6000620011f962003e98565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620021d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021fc9190620057d0565b6001600160a01b0316336001600160a01b0316146200225e5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dea565b604080516060810182526001600160601b03851681526011549151630d35818160e01b815260ff85166004820152909160208301916001600160a01b0390911690630d35818190602401602060405180830381865afa158015620022c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ec9190620057f0565b60ff90811682526001600160a01b039384166020928301526001600160601b039586166000818152600e845260408082208651815496880151909516600160601b026001600160681b0319909616948a1694909417949094178355939092015160019182018054919095166001600160a01b031990911617909355600f805480850182559252600282047f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805492909316600c026101000a908102940219169290921790915550565b620023c2828262003ffa565b5050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200242f9190620057d0565b6001600160a01b0316336001600160a01b031614620024625760405162461bcd60e51b815260040162000dea9062005a1c565b506001600160601b038083166000818152600c602090815260408083209486168352938152838220805490839055928252600b9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d575691620024e59186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562002503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002529919062005a5d565b5092915050565b6001600160601b03828116600090815260176020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620025a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ca919062005a5d565b15620026235760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000dea565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562002683573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026a9919062005a5d565b5050505050565b6001600160c01b0319821660009081526008602090815260408083206001600160a01b038516845290915281205460ff16620011df565b60ff80841660009081526013602090815260408083208685168452825280832085851684529091528120549091166200275857604051630cdd837760e21b81526001600160601b038616600482015260ff808616602483015280851660448301528316606482015260840162000dea565b6200276b8460c85b60ff90811691161490565b15620027c857604080516001600160601b038716815260ff80861660208301528416918101919091527f3453c320908f5844705a0f2acbb230412df911a60544eca9236d16f5f9f1f6f6906060015b60405180910390a1620028e9565b620027d58460d262002760565b156200282957604080516001600160601b038716815260ff80861660208301528416918101919091527f92e25bf636cb4bfa6edf8b4fa57c0d64b6d959e3c6376d17c9bcc168fe36be1990606001620027ba565b6200283684606462002760565b806200284a57506200284a84607862002760565b806200285e57506200285e84608262002760565b15620028bb57604080516001600160601b038716815260ff80871660208301528086169282019290925290831660608201527fcc75054af33cdb7ef0c6dd9d4cb6f22e1dc2d22204db49d769d5da19579fb84e90608001620027ba565b60405163024acc7560e21b81526001600160601b038616600482015260ff8516602482015260440162000dea565b509392505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001dcc565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200296e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029949190620057d0565b6001600160a01b0316336001600160a01b031614620029c75760405162461bcd60e51b815260040162000dea9062005a8a565b620029d282620042cb565b9050620029df8162003b85565b1562002a385760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000dea565b62002a448183620042fd565b919050565b600154600090821062002a9f5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3031303a494e4445585f544f4f5f4c41524745000000604482015260640162000dea565b6001828154811062002ab55762002ab5620059c5565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000620011e282620042cb565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b161462002b325760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b979190620057d0565b6001600160a01b0316336001600160a01b03161462002bca5760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b0319831660008181526008602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600990522062002c13908362004362565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966848383600060405162002c4a9392919062005af8565b60405180910390a1505050565b6000306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002c98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cbe9190620057d0565b6001600160a01b0316336001600160a01b03161462002d205760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dea565b5080516040516330b8415f60e01b81526001600160601b038216600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002d7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002da2919062005a5d565b801562002e4157506001600160601b038181166000818152600e60205260409081902054905163c4cade9d60e01b815292166004830152602482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__9063c4cade9d90604401602060405180830381865af415801562002e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e41919062005a5d565b62002e8f5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030363a434f4d504f4e454e545f554e4b4e4f574e00604482015260640162000dea565b6000306001600160a01b0316635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ef69190620057d0565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562002f46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f70919081019062005b71565b6040908101516011546001600160601b0385166000818152600e6020908152908590205490880151945163a7f3669b60e01b8152600481019290925260ff8085166024840152600160601b9091048116604483015290931660648401529092506001600160a01b03169063a7f3669b906084016020604051808303816000875af115801562003003573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030299190620057f0565b50506001600160601b038082166000908152600e6020908152604091829020855181549287015160ff16600160601b026001600160681b031990931694169390931717825590920151600190920180546001600160a01b039093166001600160a01b03199093169290921790915590565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526001600160601b0382811660009081526014602090815260409182902082516101e08101845281548086168252600160601b9081900486169382019390935260018201549485169381019390935292046001600160a01b03166060820152600282015460ff166080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015260078201805491929161012084019190620031c19062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620031ef9062005830565b8015620032405780601f10620032145761010080835404028352916020019162003240565b820191906000526020600020905b8154815290600101906020018083116200322257829003601f168201915b50505091835250506008919091015464ffffffffff8082166020840152600160281b820481166040840152600160501b820481166060840152600160781b8204166080830152600160a01b900463ffffffff1660a09091015292915050565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b1614620032e35760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033489190620057d0565b6001600160a01b0316336001600160a01b0316146200337b5760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b0319831660009081526006602052604090206002015460ff16620033e95760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000dea565b6001600160c01b0319831660008181526008602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600990522062003435908362004379565b506001600160c01b0319831660009081526008602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966849162002c4a918691869160ff9091169062005af8565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260068252918590208551938401909552845460c01b90911682526001840180549394929391840191620034fe9062005830565b80601f01602080910402602001604051908101604052809291908181526020018280546200352c9062005830565b80156200357d5780601f1062003551576101008083540402835291602001916200357d565b820191906000526020600020905b8154815290600101906020018083116200355f57829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b6040805180820190915260008082526020820152620011df8383604080518082018252600080825260209182015281518083019092529281529182015290565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b1614620036215760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036869190620057d0565b6001600160a01b0316336001600160a01b031614620036b95760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b03198084166000908152600660209081526040808320815160608101909252805460c01b9094168152600184018054939491939192840191620037039062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620037319062005830565b8015620037825780601f10620037565761010080835404028352916020019162003782565b820191906000526020600020905b8154815290600101906020018083116200376457829003601f168201915b50505091835250506002919091015460ff16151560209091015283151560408201529050620037b18162004390565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260176020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af41580156200386c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df9190620059a5565b6001600160601b0383811660009081526016602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015620038fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003924919062005a5d565b620039725760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a504c2d3031303a414c52454144595f4352454154454400000000604482015260640162000dea565b604080516060810182526001600160601b039485168082529315156020808301918252828401948552600095865260169052919093209251835491511515600160601b026001600160681b03199092169416939093179290921781559051600190910155565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a3f9190620057d0565b6001600160a01b0316336001600160a01b03161462003a725760405162461bcd60e51b815260040162000dea9062005a1c565b6001600160601b038381166000818152600c60209081526040808320948716808452948252808320869055928252600b90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562003b00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b26919062005a5d565b50505050565b6001600160c01b031982166000908152600960205260408120620011df90836200446e565b60ff8084166000908152601360209081526040808320868516845282528083208585168452909152902054165b9392505050565b6001600160c01b0319818116600081815260066020526040812054909260c09190911b1614620011e2565b600080600062003c3f73__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__6345ebb61e876040518263ffffffff1660e01b815260040162003bf391815260200190565b602060405180830381865af415801562003c11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3791906200598b565b85516200447c565b6020850151604051632255341b60e11b8152600481018390529192509073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906344aa683690602401602060405180830381865af415801562003c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cbf91906200598b565b62003ccb919062005c60565b925062003cd9838662005c76565b9150509250929050565b604051632b10f60d60e21b815260ff84166004820152600090819073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d6191906200598b565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003dba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003de091906200598b565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003e39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5f91906200598b565b90508062003e76600884901b601086901b62005c60565b62003e82919062005c60565b979650505050505050565b6000620011e2825490565b604051636939560f60e11b815230600482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d272ac1e90602401602060405180830381865afa15801562003f02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f289190620059a5565b90506001600160601b03811662003f60577f000000000000000000000000000000000000000000000000000000000000000091505090565b60405163df33330b60e01b81526001600160601b03821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063df33330b90602401602060405180830381865afa15801562003fce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ff49190620057d0565b91505090565b600062004006620011e8565b90506200401381620010b9565b15620040725760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b606482015260840162000dea565b60015415620041395760018054600091906200409090829062005c76565b81548110620040a357620040a3620059c5565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050620040dd828262ffffff90811691161190565b620041375760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b606482015260840162000dea565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b03808616602084015284169082015260608101620041c24390565b63ffffffff1681526020014264ffffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c01b0264ffffffffff60c01b1963ffffffff909716600160a01b026001600160c01b031990961692909416919091179390931793909316179055517f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d44199062002c4a9083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b600081604051602001620042e0919062004c1d565b604051602081830303815290604052805190602001209050919050565b604080516060810182526001600160c01b031984168152602081018390526001918101919091526200432f8162004390565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c6485838360405162002c4a92919062005c8c565b6000620011df836001600160a01b03841662004493565b6000620011df836001600160a01b03841662004597565b80516001600160c01b0319811660009081526006602090815260409091208351815467ffffffffffffffff191660c09190911c178155908301518391906001820190620043de9082620058bf565b50604091909101516002909101805460ff1916911515919091179055620044058162003b85565b620023c257600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b6000620011df8383620045e9565b6000620011df8383670de0b6b3a764000062004616565b600081815260018301602052604081205480156200458c576000620044ba60018362005c76565b8554909150600090620044d09060019062005c76565b90508181146200453c576000866000018281548110620044f457620044f4620059c5565b90600052602060002001549050808760000184815481106200451a576200451a620059c5565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004550576200455062005cb3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620011e2565b6000915050620011e2565b6000818152600183016020526040812054620045e057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620011e2565b506000620011e2565b6000826000018281548110620046035762004603620059c5565b9060005260206000200154905092915050565b600080806000198587098587029250828110838203039150508060000362004655578382816200464a576200464a62005cc9565b049250505062003b7e565b8084116200469e5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640162000dea565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6102aa8062005ce083390190565b604051806080016040528060006001600160601b0316815260200160006001600160a01b031681526020016200475e604051806040016040528060008152602001600081525090565b815260200162004781604051806040016040528060008152602001600081525090565b905290565b604080516101008101825260008082526020808301829052828401829052606083018290526080830182905260a0830182905283518085019094528184528301529060c08201906200475e565b600060208284031215620047e657600080fd5b81356001600160e01b03198116811462003b7e57600080fd5b6001600160601b03811681146200481557600080fd5b50565b803562002a4481620047ff565b60008060008060008060a087890312156200483f57600080fd5b86356200484c81620047ff565b955060208701356200485e81620047ff565b9450604087013593506060870135925060808701356001600160401b03808211156200488957600080fd5b818901915089601f8301126200489e57600080fd5b813581811115620048ae57600080fd5b8a6020828501011115620048c157600080fd5b6020830194508093505050509295509295509295565b600060208284031215620048ea57600080fd5b813562ffffff8116811462003b7e57600080fd5b600080604083850312156200491257600080fd5b8235915060208301358060000b81146200492b57600080fd5b809150509250929050565b60ff811681146200481557600080fd5b803562002a448162004936565b6000602082840312156200496657600080fd5b813562003b7e8162004936565b6001600160a01b03811681146200481557600080fd5b803562002a448162004973565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715620049d257620049d262004996565b60405290565b6040516101e081016001600160401b0381118282101715620049d257620049d262004996565b60405160c081016001600160401b0381118282101715620049d257620049d262004996565b604051601f8201601f191681016001600160401b038111828210171562004a4e5762004a4e62004996565b604052919050565b60006040828403121562004a6957600080fd5b604051604081018181106001600160401b038211171562004a8e5762004a8e62004996565b604052823581526020928301359281019290925250919050565b6000806000806000806000610120888a03121562004ac557600080fd5b873562004ad281620047ff565b9650602088013562004ae481620047ff565b9550604088013562004af681620047ff565b9450606088013562004b088162004973565b9350608088013562004b1a8162004973565b925062004b2b8960a08a0162004a56565b915062004b3c8960e08a0162004a56565b905092959891949750929550565b60006020828403121562004b5d57600080fd5b813562003b7e81620047ff565b81516001600160601b031681526020808301516001600160a01b03169082015260408083015160c083019162004bac9084018280518252602090810151910152565b50606083015180516080840152602081015160a084015262002529565b60005b8381101562004be657818101518382015260200162004bcc565b50506000910152565b6000815180845262004c0981602086016020860162004bc9565b601f01601f19169290920160200192915050565b602081526000620011df602083018462004bef565b60006001600160401b0382111562004c4e5762004c4e62004996565b50601f01601f191660200190565b600062004c7362004c6d8462004c32565b62004a23565b905082815283838301111562004c8857600080fd5b828260208301376000602084830101529392505050565b600082601f83011262004cb157600080fd5b620011df8383356020850162004c5c565b64ffffffffff811681146200481557600080fd5b803562002a448162004cc2565b803563ffffffff8116811462002a4457600080fd5b60006020828403121562004d0b57600080fd5b81356001600160401b038082111562004d2357600080fd5b90830190610160828603121562004d3957600080fd5b62004d43620049ac565b62004d4e8362004818565b815262004d5e6020840162004818565b602082015262004d716040840162004946565b604082015260608301358281111562004d8957600080fd5b62004d978782860162004c9f565b6060830152506080830135608082015260a083013560a082015260c083013560c082015262004dc960e0840162004cd6565b60e0820152610100915062004de082840162004cd6565b82820152610120915062004df682840162004cd6565b82820152610140915062004e0c82840162004ce3565b91810191909152949350505050565b6020815262004e366020820183516001600160601b03169052565b6000602083015162004e5360408401826001600160601b03169052565b50604083015160ff8116606084015250606083015161016080608085015262004e8161018085018362004bef565b9150608085015160a085015260a085015160c085015260c085015160e085015260e085015161010062004ebc8187018364ffffffffff169052565b860151905061012062004ed78682018364ffffffffff169052565b860151905061014062004ef28682018364ffffffffff169052565b9095015163ffffffff1693019290925250919050565b81516001600160601b039081168252602080840151821690830152604080840151909116908201526060808301516001600160a01b03169082015260808083015161014083019162004f64908401826001600160a01b03169052565b5060a083015162004f8060a08401826001600160a01b03169052565b5060c083015162004f9e60c084018280518252602090810151910152565b5060e08301518051610100840152602081015161012084015262002529565b60006020828403121562004fd057600080fd5b5035919050565b60006020828403121562004fea57600080fd5b81356001600160401b03808211156200500257600080fd5b908301906101e082860312156200501857600080fd5b62005022620049d8565b6200502d8362004818565b81526200503d6020840162004818565b6020820152620050506040840162004818565b6040820152620050636060840162004989565b6060820152620050766080840162004946565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013583811115620050ba57600080fd5b620050c88882870162004c9f565b8284015250506101409150620050e082840162004cd6565b828201526101609150620050f682840162004cd6565b8282015261018091506200510c82840162004cd6565b828201526101a091506200512282840162004cd6565b828201526101c0915062004e0c82840162004ce3565b80356001600160c01b03198116811462002a4457600080fd5b6000602082840312156200516457600080fd5b620011df8262005138565b60008060008060008060c087890312156200518957600080fd5b86356200519681620047ff565b95506020870135620051a881620047ff565b945060408701359350606087013592506080870135915060a0870135620051cf81620047ff565b809150509295509295509295565b815181526020808301519082015260408101620011e2565b6000806000606084860312156200520b57600080fd5b83356200521881620047ff565b925060208401356200522a8162004936565b915060408401356200523c8162004973565b809150509250925092565b600080600060a084860312156200525d57600080fd5b83356200526a81620047ff565b92506200527b856020860162004a56565b91506200528c856060860162004a56565b90509250925092565b60008060408385031215620052a957600080fd5b8235620052b68162004973565b915060208301356200492b8162004973565b60008060408385031215620052dc57600080fd5b8235620052e981620047ff565b915060208301356200492b81620047ff565b6000806000606084860312156200531157600080fd5b83356200531e81620047ff565b925060208401356200533081620047ff565b929592945050506040919091013590565b600080604083850312156200535557600080fd5b620052b68362005138565b600080600080608085870312156200537757600080fd5b84356200538481620047ff565b93506020850135620053968162004936565b92506040850135620053a88162004936565b91506060850135620053ba8162004936565b939692955090935050565b600060208284031215620053d857600080fd5b81356001600160401b03811115620053ef57600080fd5b8201601f810184136200540157600080fd5b620054128482356020840162004c5c565b949350505050565b6000606082840312156200542d57600080fd5b604051606081018181106001600160401b038211171562005452576200545262004996565b60405282356200546281620047ff565b81526020830135620054748162004936565b60208201526040830135620054898162004973565b60408201529392505050565b60208152620054b06020820183516001600160601b03169052565b60006020830151620054cd60408401826001600160601b03169052565b5060408301516001600160601b03811660608401525060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200555961020086018462004bef565b90860151909250610160620055768682018364ffffffffff169052565b8601519050610180620055918682018364ffffffffff169052565b86015190506101a0620055ac8682018364ffffffffff169052565b86015190506101c062004ef28682018364ffffffffff169052565b602080825282516001600160c01b0319168282015282015160606040830152600090620055f8608084018262004bef565b90506040840151151560608401528091505092915050565b60008060008060c085870312156200562757600080fd5b84356200563481620047ff565b93506020850135620056468162004973565b925062005657866040870162004a56565b915062005668866080870162004a56565b905092959194509250565b600080604083850312156200568757600080fd5b50508035926020909101359150565b80151581146200481557600080fd5b60008060408385031215620056b957600080fd5b620056c48362005138565b915060208301356200492b8162005696565b60008060408385031215620056ea57600080fd5b8235620056f781620047ff565b946020939093013593505050565b6000806000606084860312156200571b57600080fd5b83356200572881620047ff565b92506020840135620053308162005696565b600080604083850312156200574e57600080fd5b620056f78362005138565b6000806000606084860312156200576f57600080fd5b83356200577c8162004936565b925060208401356200578e8162004936565b915060408401356200523c8162004936565b60008060608385031215620057b457600080fd5b82359150620057c7846020850162004a56565b90509250929050565b600060208284031215620057e357600080fd5b815162003b7e8162004973565b6000602082840312156200580357600080fd5b815162003b7e8162004936565b6000602082840312156200582357600080fd5b815162003b7e8162004cc2565b600181811c908216806200584557607f821691505b6020821081036200586657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620058ba57600081815260208120601f850160051c81016020861015620058955750805b601f850160051c820191505b81811015620058b657828155600101620058a1565b5050505b505050565b81516001600160401b03811115620058db57620058db62004996565b620058f381620058ec845462005830565b846200586c565b602080601f8311600181146200592b5760008415620059125750858301515b600019600386901b1c1916600185901b178555620058b6565b600085815260208120601f198616915b828110156200595c578886015182559484019460019091019084016200593b565b50858210156200597b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200599e57600080fd5b5051919050565b600060208284031215620059b857600080fd5b815162003b7e81620047ff565b634e487b7160e01b600052603260045260246000fd5b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b60006020828403121562005a7057600080fd5b815162003b7e8162005696565b805162002a448162004973565b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b600082601f83011262005b3757600080fd5b815162005b4862004c6d8262004c32565b81815284602083860101111562005b5e57600080fd5b6200541282602083016020870162004bc9565b60006020828403121562005b8457600080fd5b81516001600160401b038082111562005b9c57600080fd5b9083019060c0828603121562005bb157600080fd5b62005bbb620049fe565b825162005bc881620047ff565b8152602083015162005bda81620047ff565b6020820152604083015162005bef8162004936565b604082015262005c026060840162005a7d565b606082015262005c156080840162005a7d565b608082015260a08301518281111562005c2d57600080fd5b62005c3b8782860162005b25565b60a08301525095945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620011e257620011e262005c4a565b81810381811115620011e257620011e262005c4a565b6001600160401b0360c01b8316815260406020820152600062005412604083018462004bef565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601260045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea2646970667358221220de87685d485f45728fb2b557cd6d2622e4a09f86c8a90bedde65101a59e1a77864736f6c63430008140033a2646970667358221220c19be969115f54b7deb05559272fd77b633fdf09fa54c9c8b121ea4a5939e82664736f6c63430008140033",
2069
+ "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620004095760003560e01c8063893d20e8116200021d578063bd62faf71162000131578063dc261c3a11620000bb578063e9e96c701162000086578063e9e96c701462000c1a578063ee0fdf711462000c31578063f0ea17c31462000c48578063f274e87d1462000cf957600080fd5b8063dc261c3a1462000b84578063e03eeb851462000bd5578063e1f64d771462000bec578063e79597401462000c0357600080fd5b8063d0bb064c11620000fc578063d0bb064c1462000aaf578063d250185c1462000b3f578063dad73bed1462000b56578063db70354c1462000b6d57600080fd5b8063bd62faf71462000a35578063bd7d9d851462000a4c578063c2bf7d261462000a72578063cf5ccedb1462000a8957600080fd5b806399fd467711620001b3578063af17d38a116200017e578063af17d38a14620009d9578063b88da75914620009f0578063b8c510671462000a07578063b9f36dde1462000a1e57600080fd5b806399fd4677146200095c578063a310e2a31462000973578063a7f3669b14620009ab578063a90be90714620009c257600080fd5b8063946dfcfe11620001f4578063946dfcfe146200090e5780639555c4db14620009175780639675513d146200092e57806398457437146200094557600080fd5b8063893d20e8146200089c5780638b59fe2a14620008a657806393865aec14620008bd57600080fd5b80634793b4ab1162000321578063674d0ccf11620002ab57806375a07ed2116200027657806375a07ed214620008215780637fec8b31146200083857806383d33319146200084f57806387c56586146200085857600080fd5b8063674d0ccf14620007cf57806369a44a1b14620007e65780636b9bf08b14620007fd5780636fa29853146200080f57600080fd5b806357f80bbf11620002ec57806357f80bbf14620006e75780635ab1bd5314620007875780635fe9f2a514620007ae578063644c45e014620007c557600080fd5b80634793b4ab14620005f55780634d459c90146200061b5780634fd077f514620006905780635312fdc214620006b657600080fd5b80631aa3a00811620003a3578063349195f9116200036e578063349195f914620005935780633bc5de30146200059c5780634288121d14620005b857806345c5a27d14620005de57600080fd5b80631aa3a008146200050c57806331b62a3b146200052f57806331e48e3214620005565780633300a8a8146200056d57600080fd5b80630d0ccc5b11620003e45780630d0ccc5b14620004835780630d35818114620004a95780630d8e6e2c14620004e557806315dae03e146200050457600080fd5b806301ffc9a7146200040e5780630591087414620004535780630abd8434146200046c575b600080fd5b6200043e6200041f366004620047d3565b6001600160e01b03191660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200046a6200046436600462004825565b62000d26565b005b6200043e6200047d366004620048d7565b620010b9565b6200049a62000494366004620048fe565b6200115d565b6040519081526020016200044a565b620004d2620004ba36600462004953565b60ff9081166000908152601260205260409020541690565b60405160ff90911681526020016200044a565b620004ef620011e8565b60405162ffffff90911681526020016200044a565b6032620004d2565b62000516620011fe565b6040516001600160601b0390911681526020016200044a565b7f000000000000000000000000000000000000000000000000000000000000000062000516565b6200046a6200056736600462004aa8565b620012f9565b620005846200057e36600462004b4a565b62001444565b6040516200044a919062004b6a565b600f546200049a565b604080516020810182526000815290516200044a919062004c1d565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016200044a565b6200046a620005ef36600462004cf8565b620014ca565b6200060c6200060636600462004b4a565b62001746565b6040516200044a919062004e1b565b620006326200062c366004620048d7565b620018f5565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015163ffffffff169082015260809182015164ffffffffff169181019190915260a0016200044a565b620006a7620006a136600462004b4a565b620019f0565b6040516200044a919062004f08565b620006cd620006c736600462004fbd565b62001aa8565b6040516001600160c01b031990911681526020016200044a565b62000759620006f836600462004b4a565b6040805160608082018352600080835260208084018290529284018190526001600160601b039485168152601683528390208351918201845280549485168252600160601b90940460ff161515918101919091526001909201549082015290565b6040805182516001600160601b0316815260208084015115159082015291810151908201526060016200044a565b7f0000000000000000000000000000000000000000000000000000000000000000620005c5565b6200046a620007bf36600462004fd7565b62001aea565b6200051662001cf3565b6200049a620007e036600462005151565b62001d5b565b6200049a620007f736600462004b4a565b62001d7f565b6005546001600160a01b0316620005c5565b6003546001600160a01b0316620005c5565b6200046a620008323660046200516f565b62001e10565b620005166200084936600462004fbd565b62002143565b6007546200049a565b604080518082018252600080825260209182018190528251808401845281815282018190528251808401909352808352908201525b6040516200044a9190620051dd565b620005c56200218b565b6200046a620008b7366004620051f5565b62002197565b6200046a620008ce36600462005247565b6001600160601b039092166000908152601a6020908152604090912082516001820155918101516002830155825160038301559190910151600490910155565b6001546200049a565b6200046a6200092836600462005295565b620023b6565b6200049a6200093f366004620052c8565b620023c6565b6200046a62000956366004620052fb565b62002530565b6200043e6200096d36600462005341565b620026b0565b620005c56200098436600462004b4a565b6001600160601b03166000908152601860205260409020600201546001600160a01b031690565b620004d2620009bc36600462005360565b620026e7565b6200049a620009d336600462004fbd565b620028f1565b620006cd620009ea366004620053c5565b6200292d565b620004ef62000a0136600462004fbd565b62002a49565b620006cd62000a18366004620053c5565b62002ae1565b6200046a62000a2f36600462005341565b62002aee565b6200051662000a463660046200541a565b62002c57565b62000a6362000a5d36600462004b4a565b6200309a565b6040516200044a919062005495565b6200046a62000a8336600462005341565b6200329f565b62000aa062000a9a36600462005151565b6200349f565b6040516200044a9190620055c7565b6200046a62000ac036600462005610565b604080516080810182526001600160601b039586168082526001600160a01b039586166020808401918252838501968752606084019586526000928352601a81529390912091519051909516600160601b0294909516939093178455905180516001850155820151600284015551805160038401550151600490910155565b6200088d62000b5036600462005673565b6200359d565b6200046a62000b67366004620056a5565b620035dd565b6200051662000b7e366004620056d6565b620037fb565b6200046a62000b9536600462005247565b6001600160601b03909216600090815260186020908152604090912082516004820155918101516005830155825160068301559190910151600790910155565b6200046a62000be636600462005705565b62003892565b6200046a62000bfd366004620052fb565b620039d8565b620005c562000c143660046200573a565b62003b2c565b6200043e62000c2b36600462005759565b62003b51565b6200043e62000c4236600462005151565b62003b85565b62000cc162000c5936600462004b4a565b6040805160608082018352600080835260208084018290529284018190526001600160601b039485168152600e83528390208351918201845280549485168252600160601b90940460ff16918101919091526001909201546001600160a01b03169082015290565b6040805182516001600160601b0316815260208084015160ff1690820152918101516001600160a01b0316908201526060016200044a565b62000d1062000d0a366004620057a0565b62003bb0565b604080519283526020830191909152016200044a565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d8d9190620057d0565b6001600160a01b0316336001600160a01b03161462000df35760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f53455256494345000060448201526064015b60405180910390fd5b60408051610160810182526001600160601b03888116825287166020820152600d5490918201906001600160a01b0316630d35818160d26040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865afa15801562000e69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8f9190620057f0565b60ff16815260200183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602082018790526040820152606081018690526080014264ffffffffff16815260200142604051631ded81af60e31b815264ffffffffff90911660048201526024810186905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562000f52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f78919062005810565b64ffffffffff168152602001600064ffffffffff1681526020014363ffffffff1690526001600160601b038088166000908152600a602090815260409182902084518154928601519386015160ff16600160c01b0260ff60c01b19948616600160601b026001600160c01b03199094169190951617919091179190911691909117815560608201516001820190620010119082620058bf565b506080820151600282015560a0820151600382015560c0820151600482015560e0820151600590910180546101008401516101208501516101409095015163ffffffff16600160781b0263ffffffff60781b1964ffffffffff968716600160501b021668ffffffffffffffffff60501b19928716600160281b0269ffffffffffffffffffff199094169690951695909517919091171691909117919091179055505050505050565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160a01b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801562001130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200115691906200598b565b1192915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af4158015620011b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df91906200598b565b90505b92915050565b6000620011f9600360008062003ce3565b905090565b60006200120a6200218b565b6001600160a01b0316336001600160a01b0316146200126c5760405162461bcd60e51b815260206004820152601760248201527f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000604482015260640162000dea565b604051632210724360e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634420e486906024016020604051808303816000875af1158015620012d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011f99190620059a5565b600087856040516200130b9062004707565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562001346573d6000803e3d6000fd5b5060408051610100810182526001600160601b039a8b16808252998b166020808301918252998c168284019081526001600160a01b03998a1660608401908152948a1660808401908152988a1660a0840190815260c0840198895260e0840197885260009c8d5260188c5293909b20915182549151908d166001600160c01b031990921691909117600160601b918d1682021782559951925192909a169187169098021760018901555091516002870180546001600160a01b03199081169286169290921790559451600387018054909616931692909217909355518051600485015581015160058401559051805160068401550151600790910155565b6200144e62004715565b506001600160601b039081166000908152601a6020908152604091829020825160808101845281549485168152600160601b9094046001600160a01b0316848301528251808401845260018201548152600282015481840152848401528251808401909352600381015483526004015490820152606082015290565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200150b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015319190620057d0565b6001600160a01b0316336001600160a01b03161480620015c85750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200158d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b39190620057d0565b6001600160a01b0316336001600160a01b0316145b620016285760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000dea565b80516001600160601b039081166000908152600a602090815260409182902084518154928601519386015160ff16600160c01b0260ff60c01b19948616600160601b026001600160c01b03199094169190951617919091179190911691909117815560608201518291906001820190620016a39082620058bf565b506080820151600282015560a0820151600382015560c0820151600482015560e0820151600590910180546101008401516101208501516101409095015163ffffffff16600160781b0263ffffffff60781b1964ffffffffff968716600160501b021668ffffffffffffffffff60501b19928716600160281b0269ffffffffffffffffffff19909416969095169590951791909117169190911791909117905550565b60408051610160810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526001600160601b038281166000908152600a602090815260409182902082516101608101845281548086168252600160601b810490951692810192909252600160c01b90930460ff1691810191909152600182018054919291606084019190620018089062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620018369062005830565b8015620018875780601f106200185b5761010080835404028352916020019162001887565b820191906000526020600020905b8154815290600101906020018083116200186957829003601f168201915b505050918352505060028201546020820152600382015460408201526004820154606082015260059091015464ffffffffff8082166080840152600160281b8204811660a0840152600160501b82041660c0830152600160781b900463ffffffff1660e09091015292915050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526200192b82620010b9565b620019795760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3032303a56455253494f4e5f554e4b4e4f574e000000604482015260640162000dea565b5062ffffff90811660009081526020818152604091829020825160a0810184528154948516815263010000009094046001600160a01b03908116928501929092526001015490811691830191909152600160a01b810463ffffffff166060830152600160c01b900464ffffffffff16608082015290565b620019fa62004786565b506001600160601b0390811660009081526018602090815260409182902082516101008101845281548086168252600160601b908190048616828501526001830154958616828601526001600160a01b03950485166060820152600282015485166080820152600382015490941660a0850152825180840184526004820154815260058201548184015260c0850152825180840190935260068101548352600701549082015260e082015290565b60006007828154811062001ac05762001ac0620059c5565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001b2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b519190620057d0565b6001600160a01b0316336001600160a01b03161462001b845760405162461bcd60e51b815260040162000dea90620059db565b80516001600160601b0390811660009081526014602090815260409182902084518154928601519085166001600160c01b031990931692909217600160601b928516830217815591840151606085015193166001600160a01b0390931602919091176001820155608082015160028201805460ff191660ff90921691909117905560a0820151600382015560c0820151600482015560e082015160058201556101008201516006820155610120820151829190600782019062001c489082620058bf565b50610140820151600890910180546101608401516101808501516101a08601516101c09096015163ffffffff16600160a01b0263ffffffff60a01b1964ffffffffff978816600160781b0264ffffffffff60781b19938916600160501b029390931669ffffffffffffffffffff60501b19948916600160281b0269ffffffffffffffffffff199096169890971697909717939093179190911693909317929092179290921617905550565b604051636939560f60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d272ac1e90602401602060405180830381865afa158015620012d3573d6000803e3d6000fd5b6001600160c01b031981166000908152600960205260408120620011e29062003e8d565b6001600160601b038116600090815260176020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011e291906200598b565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e779190620057d0565b6001600160a01b0316336001600160a01b03161462001eaa5760405162461bcd60e51b815260040162000dea90620059db565b604080516101e0810182526001600160601b03878116825288811660208301528316918101919091526000606082015260155460808201906001600160a01b0316630d35818160c86040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865afa15801562001f31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f579190620057f0565b60ff1681526020018581526020018481526020016000815260200183815260200160405180602001604052806000815250815260200162001f954290565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff1681526020014363ffffffff1690526001600160601b0386811660009081526014602090815260409182902084518154928601519085166001600160c01b031990931692909217600160601b928516830217815591840151606085015193166001600160a01b0390931602919091176001820155608082015160028201805460ff191660ff90921691909117905560a0820151600382015560c0820151600482015560e0820151600582015561010082015160068201556101208201516007820190620020939082620058bf565b50610140820151600890910180546101608401516101808501516101a08601516101c09096015163ffffffff16600160a01b0263ffffffff60a01b1964ffffffffff978816600160781b0264ffffffffff60781b19938916600160501b029390931669ffffffffffffffffffff60501b19948916600160281b0269ffffffffffffffffffff1990961698909716979097179390931791909116939093179290921792909216179055505050505050565b6000600f82815481106200215b576200215b620059c5565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b6000620011f962003e98565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa158015620021d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021fc9190620057d0565b6001600160a01b0316336001600160a01b0316146200225e5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dea565b604080516060810182526001600160601b03851681526011549151630d35818160e01b815260ff85166004820152909160208301916001600160a01b0390911690630d35818190602401602060405180830381865afa158015620022c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ec9190620057f0565b60ff90811682526001600160a01b039384166020928301526001600160601b039586166000818152600e845260408082208651815496880151909516600160601b026001600160681b0319909616948a1694909417949094178355939092015160019182018054919095166001600160a01b031990911617909355600f805480850182559252600282047f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805492909316600c026101000a908102940219169290921790915550565b620023c2828262003ffa565b5050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200242f9190620057d0565b6001600160a01b0316336001600160a01b031614620024625760405162461bcd60e51b815260040162000dea9062005a1c565b506001600160601b038083166000818152600c602090815260408083209486168352938152838220805490839055928252600b9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d575691620024e59186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562002503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002529919062005a5d565b5092915050565b6001600160601b03828116600090815260176020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620025a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ca919062005a5d565b15620026235760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000dea565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562002683573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026a9919062005a5d565b5050505050565b6001600160c01b0319821660009081526008602090815260408083206001600160a01b038516845290915281205460ff16620011df565b60ff80841660009081526013602090815260408083208685168452825280832085851684529091528120549091166200275857604051630cdd837760e21b81526001600160601b038616600482015260ff808616602483015280851660448301528316606482015260840162000dea565b6200276b8460c85b60ff90811691161490565b15620027c857604080516001600160601b038716815260ff80861660208301528416918101919091527f3453c320908f5844705a0f2acbb230412df911a60544eca9236d16f5f9f1f6f6906060015b60405180910390a1620028e9565b620027d58460d262002760565b156200282957604080516001600160601b038716815260ff80861660208301528416918101919091527f92e25bf636cb4bfa6edf8b4fa57c0d64b6d959e3c6376d17c9bcc168fe36be1990606001620027ba565b6200283684606462002760565b806200284a57506200284a84607862002760565b806200285e57506200285e84608262002760565b15620028bb57604080516001600160601b038716815260ff80871660208301528086169282019290925290831660608201527fcc75054af33cdb7ef0c6dd9d4cb6f22e1dc2d22204db49d769d5da19579fb84e90608001620027ba565b60405163024acc7560e21b81526001600160601b038616600482015260ff8516602482015260440162000dea565b509392505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001dcc565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200296e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029949190620057d0565b6001600160a01b0316336001600160a01b031614620029c75760405162461bcd60e51b815260040162000dea9062005a8a565b620029d282620042cb565b9050620029df8162003b85565b1562002a385760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000dea565b62002a448183620042fd565b919050565b600154600090821062002a9f5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3031303a494e4445585f544f4f5f4c41524745000000604482015260640162000dea565b6001828154811062002ab55762002ab5620059c5565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000620011e282620042cb565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b161462002b325760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b979190620057d0565b6001600160a01b0316336001600160a01b03161462002bca5760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b0319831660008181526008602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600990522062002c13908362004362565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966848383600060405162002c4a9392919062005af8565b60405180910390a1505050565b6000306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002c98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cbe9190620057d0565b6001600160a01b0316336001600160a01b03161462002d205760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dea565b5080516040516330b8415f60e01b81526001600160601b038216600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002d7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002da2919062005a5d565b801562002e4157506001600160601b038181166000818152600e60205260409081902054905163c4cade9d60e01b815292166004830152602482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__9063c4cade9d90604401602060405180830381865af415801562002e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e41919062005a5d565b62002e8f5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030363a434f4d504f4e454e545f554e4b4e4f574e00604482015260640162000dea565b6000306001600160a01b0316635ab1bd536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ef69190620057d0565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562002f46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f70919081019062005b71565b6040908101516011546001600160601b0385166000818152600e6020908152908590205490880151945163a7f3669b60e01b8152600481019290925260ff8085166024840152600160601b9091048116604483015290931660648401529092506001600160a01b03169063a7f3669b906084016020604051808303816000875af115801562003003573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030299190620057f0565b50506001600160601b038082166000908152600e6020908152604091829020855181549287015160ff16600160601b026001600160681b031990931694169390931717825590920151600190920180546001600160a01b039093166001600160a01b03199093169290921790915590565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526001600160601b0382811660009081526014602090815260409182902082516101e08101845281548086168252600160601b9081900486169382019390935260018201549485169381019390935292046001600160a01b03166060820152600282015460ff166080820152600382015460a0820152600482015460c0820152600582015460e0820152600682015461010082015260078201805491929161012084019190620031c19062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620031ef9062005830565b8015620032405780601f10620032145761010080835404028352916020019162003240565b820191906000526020600020905b8154815290600101906020018083116200322257829003601f168201915b50505091835250506008919091015464ffffffffff8082166020840152600160281b820481166040840152600160501b820481166060840152600160781b8204166080830152600160a01b900463ffffffff1660a09091015292915050565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b1614620032e35760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033489190620057d0565b6001600160a01b0316336001600160a01b0316146200337b5760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b0319831660009081526006602052604090206002015460ff16620033e95760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000dea565b6001600160c01b0319831660008181526008602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600990522062003435908362004379565b506001600160c01b0319831660009081526008602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966849162002c4a918691869160ff9091169062005af8565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260068252918590208551938401909552845460c01b90911682526001840180549394929391840191620034fe9062005830565b80601f01602080910402602001604051908101604052809291908181526020018280546200352c9062005830565b80156200357d5780601f1062003551576101008083540402835291602001916200357d565b820191906000526020600020905b8154815290600101906020018083116200355f57829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b6040805180820190915260008082526020820152620011df8383604080518082018252600080825260209182015281518083019092529281529182015290565b6001600160c01b0319828116600081815260066020526040902054849260c09190911b1614620036215760405162461bcd60e51b815260040162000dea9062005ac1565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036869190620057d0565b6001600160a01b0316336001600160a01b031614620036b95760405162461bcd60e51b815260040162000dea9062005a8a565b6001600160c01b03198084166000908152600660209081526040808320815160608101909252805460c01b9094168152600184018054939491939192840191620037039062005830565b80601f0160208091040260200160405190810160405280929190818152602001828054620037319062005830565b8015620037825780601f10620037565761010080835404028352916020019162003782565b820191906000526020600020905b8154815290600101906020018083116200376457829003601f168201915b50505091835250506002919091015460ff16151560209091015283151560408201529050620037b18162004390565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260176020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af41580156200386c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011df9190620059a5565b6001600160601b0383811660009081526016602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015620038fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003924919062005a5d565b620039725760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a504c2d3031303a414c52454144595f4352454154454400000000604482015260640162000dea565b604080516060810182526001600160601b039485168082529315156020808301918252828401948552600095865260169052919093209251835491511515600160601b026001600160681b03199092169416939093179290921781559051600190910155565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a3f9190620057d0565b6001600160a01b0316336001600160a01b03161462003a725760405162461bcd60e51b815260040162000dea9062005a1c565b6001600160601b038381166000818152600c60209081526040808320948716808452948252808320869055928252600b90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562003b00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b26919062005a5d565b50505050565b6001600160c01b031982166000908152600960205260408120620011df90836200446e565b60ff8084166000908152601360209081526040808320868516845282528083208585168452909152902054165b9392505050565b6001600160c01b0319818116600081815260066020526040812054909260c09190911b1614620011e2565b600080600062003c3f73__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__6345ebb61e876040518263ffffffff1660e01b815260040162003bf391815260200190565b602060405180830381865af415801562003c11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3791906200598b565b85516200447c565b6020850151604051632255341b60e11b8152600481018390529192509073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906344aa683690602401602060405180830381865af415801562003c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cbf91906200598b565b62003ccb919062005c60565b925062003cd9838662005c76565b9150509250929050565b604051632b10f60d60e21b815260ff84166004820152600090819073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d6191906200598b565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003dba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003de091906200598b565b604051632b10f60d60e21b815260ff8616600482015290915060009073__$9dab98ad7ae1a426029e5739f922230a41$__9063ac43d83490602401602060405180830381865af415801562003e39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e5f91906200598b565b90508062003e76600884901b601086901b62005c60565b62003e82919062005c60565b979650505050505050565b6000620011e2825490565b604051636939560f60e11b815230600482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d272ac1e90602401602060405180830381865afa15801562003f02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f289190620059a5565b90506001600160601b03811662003f60577f000000000000000000000000000000000000000000000000000000000000000091505090565b60405163df33330b60e01b81526001600160601b03821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063df33330b90602401602060405180830381865afa15801562003fce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ff49190620057d0565b91505090565b600062004006620011e8565b90506200401381620010b9565b15620040725760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b606482015260840162000dea565b60015415620041395760018054600091906200409090829062005c76565b81548110620040a357620040a3620059c5565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050620040dd828262ffffff90811691161190565b620041375760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b606482015260840162000dea565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b03808616602084015284169082015260608101620041c24390565b63ffffffff1681526020014264ffffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c01b0264ffffffffff60c01b1963ffffffff909716600160a01b026001600160c01b031990961692909416919091179390931793909316179055517f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d44199062002c4a9083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b600081604051602001620042e0919062004c1d565b604051602081830303815290604052805190602001209050919050565b604080516060810182526001600160c01b031984168152602081018390526001918101919091526200432f8162004390565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c6485838360405162002c4a92919062005c8c565b6000620011df836001600160a01b03841662004493565b6000620011df836001600160a01b03841662004597565b80516001600160c01b0319811660009081526006602090815260409091208351815467ffffffffffffffff191660c09190911c178155908301518391906001820190620043de9082620058bf565b50604091909101516002909101805460ff1916911515919091179055620044058162003b85565b620023c257600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b6000620011df8383620045e9565b6000620011df8383670de0b6b3a764000062004616565b600081815260018301602052604081205480156200458c576000620044ba60018362005c76565b8554909150600090620044d09060019062005c76565b90508181146200453c576000866000018281548110620044f457620044f4620059c5565b90600052602060002001549050808760000184815481106200451a576200451a620059c5565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004550576200455062005cb3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620011e2565b6000915050620011e2565b6000818152600183016020526040812054620045e057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620011e2565b506000620011e2565b6000826000018281548110620046035762004603620059c5565b9060005260206000200154905092915050565b600080806000198587098587029250828110838203039150508060000362004655578382816200464a576200464a62005cc9565b049250505062003b7e565b8084116200469e5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640162000dea565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6102aa8062005ce083390190565b604051806080016040528060006001600160601b0316815260200160006001600160a01b031681526020016200475e604051806040016040528060008152602001600081525090565b815260200162004781604051806040016040528060008152602001600081525090565b905290565b604080516101008101825260008082526020808301829052828401829052606083018290526080830182905260a0830182905283518085019094528184528301529060c08201906200475e565b600060208284031215620047e657600080fd5b81356001600160e01b03198116811462003b7e57600080fd5b6001600160601b03811681146200481557600080fd5b50565b803562002a4481620047ff565b60008060008060008060a087890312156200483f57600080fd5b86356200484c81620047ff565b955060208701356200485e81620047ff565b9450604087013593506060870135925060808701356001600160401b03808211156200488957600080fd5b818901915089601f8301126200489e57600080fd5b813581811115620048ae57600080fd5b8a6020828501011115620048c157600080fd5b6020830194508093505050509295509295509295565b600060208284031215620048ea57600080fd5b813562ffffff8116811462003b7e57600080fd5b600080604083850312156200491257600080fd5b8235915060208301358060000b81146200492b57600080fd5b809150509250929050565b60ff811681146200481557600080fd5b803562002a448162004936565b6000602082840312156200496657600080fd5b813562003b7e8162004936565b6001600160a01b03811681146200481557600080fd5b803562002a448162004973565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715620049d257620049d262004996565b60405290565b6040516101e081016001600160401b0381118282101715620049d257620049d262004996565b60405160c081016001600160401b0381118282101715620049d257620049d262004996565b604051601f8201601f191681016001600160401b038111828210171562004a4e5762004a4e62004996565b604052919050565b60006040828403121562004a6957600080fd5b604051604081018181106001600160401b038211171562004a8e5762004a8e62004996565b604052823581526020928301359281019290925250919050565b6000806000806000806000610120888a03121562004ac557600080fd5b873562004ad281620047ff565b9650602088013562004ae481620047ff565b9550604088013562004af681620047ff565b9450606088013562004b088162004973565b9350608088013562004b1a8162004973565b925062004b2b8960a08a0162004a56565b915062004b3c8960e08a0162004a56565b905092959891949750929550565b60006020828403121562004b5d57600080fd5b813562003b7e81620047ff565b81516001600160601b031681526020808301516001600160a01b03169082015260408083015160c083019162004bac9084018280518252602090810151910152565b50606083015180516080840152602081015160a084015262002529565b60005b8381101562004be657818101518382015260200162004bcc565b50506000910152565b6000815180845262004c0981602086016020860162004bc9565b601f01601f19169290920160200192915050565b602081526000620011df602083018462004bef565b60006001600160401b0382111562004c4e5762004c4e62004996565b50601f01601f191660200190565b600062004c7362004c6d8462004c32565b62004a23565b905082815283838301111562004c8857600080fd5b828260208301376000602084830101529392505050565b600082601f83011262004cb157600080fd5b620011df8383356020850162004c5c565b64ffffffffff811681146200481557600080fd5b803562002a448162004cc2565b803563ffffffff8116811462002a4457600080fd5b60006020828403121562004d0b57600080fd5b81356001600160401b038082111562004d2357600080fd5b90830190610160828603121562004d3957600080fd5b62004d43620049ac565b62004d4e8362004818565b815262004d5e6020840162004818565b602082015262004d716040840162004946565b604082015260608301358281111562004d8957600080fd5b62004d978782860162004c9f565b6060830152506080830135608082015260a083013560a082015260c083013560c082015262004dc960e0840162004cd6565b60e0820152610100915062004de082840162004cd6565b82820152610120915062004df682840162004cd6565b82820152610140915062004e0c82840162004ce3565b91810191909152949350505050565b6020815262004e366020820183516001600160601b03169052565b6000602083015162004e5360408401826001600160601b03169052565b50604083015160ff8116606084015250606083015161016080608085015262004e8161018085018362004bef565b9150608085015160a085015260a085015160c085015260c085015160e085015260e085015161010062004ebc8187018364ffffffffff169052565b860151905061012062004ed78682018364ffffffffff169052565b860151905061014062004ef28682018364ffffffffff169052565b9095015163ffffffff1693019290925250919050565b81516001600160601b039081168252602080840151821690830152604080840151909116908201526060808301516001600160a01b03169082015260808083015161014083019162004f64908401826001600160a01b03169052565b5060a083015162004f8060a08401826001600160a01b03169052565b5060c083015162004f9e60c084018280518252602090810151910152565b5060e08301518051610100840152602081015161012084015262002529565b60006020828403121562004fd057600080fd5b5035919050565b60006020828403121562004fea57600080fd5b81356001600160401b03808211156200500257600080fd5b908301906101e082860312156200501857600080fd5b62005022620049d8565b6200502d8362004818565b81526200503d6020840162004818565b6020820152620050506040840162004818565b6040820152620050636060840162004989565b6060820152620050766080840162004946565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013583811115620050ba57600080fd5b620050c88882870162004c9f565b8284015250506101409150620050e082840162004cd6565b828201526101609150620050f682840162004cd6565b8282015261018091506200510c82840162004cd6565b828201526101a091506200512282840162004cd6565b828201526101c0915062004e0c82840162004ce3565b80356001600160c01b03198116811462002a4457600080fd5b6000602082840312156200516457600080fd5b620011df8262005138565b60008060008060008060c087890312156200518957600080fd5b86356200519681620047ff565b95506020870135620051a881620047ff565b945060408701359350606087013592506080870135915060a0870135620051cf81620047ff565b809150509295509295509295565b815181526020808301519082015260408101620011e2565b6000806000606084860312156200520b57600080fd5b83356200521881620047ff565b925060208401356200522a8162004936565b915060408401356200523c8162004973565b809150509250925092565b600080600060a084860312156200525d57600080fd5b83356200526a81620047ff565b92506200527b856020860162004a56565b91506200528c856060860162004a56565b90509250925092565b60008060408385031215620052a957600080fd5b8235620052b68162004973565b915060208301356200492b8162004973565b60008060408385031215620052dc57600080fd5b8235620052e981620047ff565b915060208301356200492b81620047ff565b6000806000606084860312156200531157600080fd5b83356200531e81620047ff565b925060208401356200533081620047ff565b929592945050506040919091013590565b600080604083850312156200535557600080fd5b620052b68362005138565b600080600080608085870312156200537757600080fd5b84356200538481620047ff565b93506020850135620053968162004936565b92506040850135620053a88162004936565b91506060850135620053ba8162004936565b939692955090935050565b600060208284031215620053d857600080fd5b81356001600160401b03811115620053ef57600080fd5b8201601f810184136200540157600080fd5b620054128482356020840162004c5c565b949350505050565b6000606082840312156200542d57600080fd5b604051606081018181106001600160401b038211171562005452576200545262004996565b60405282356200546281620047ff565b81526020830135620054748162004936565b60208201526040830135620054898162004973565b60408201529392505050565b60208152620054b06020820183516001600160601b03169052565b60006020830151620054cd60408401826001600160601b03169052565b5060408301516001600160601b03811660608401525060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200555961020086018462004bef565b90860151909250610160620055768682018364ffffffffff169052565b8601519050610180620055918682018364ffffffffff169052565b86015190506101a0620055ac8682018364ffffffffff169052565b86015190506101c062004ef28682018364ffffffffff169052565b602080825282516001600160c01b0319168282015282015160606040830152600090620055f8608084018262004bef565b90506040840151151560608401528091505092915050565b60008060008060c085870312156200562757600080fd5b84356200563481620047ff565b93506020850135620056468162004973565b925062005657866040870162004a56565b915062005668866080870162004a56565b905092959194509250565b600080604083850312156200568757600080fd5b50508035926020909101359150565b80151581146200481557600080fd5b60008060408385031215620056b957600080fd5b620056c48362005138565b915060208301356200492b8162005696565b60008060408385031215620056ea57600080fd5b8235620056f781620047ff565b946020939093013593505050565b6000806000606084860312156200571b57600080fd5b83356200572881620047ff565b92506020840135620053308162005696565b600080604083850312156200574e57600080fd5b620056f78362005138565b6000806000606084860312156200576f57600080fd5b83356200577c8162004936565b925060208401356200578e8162004936565b915060408401356200523c8162004936565b60008060608385031215620057b457600080fd5b82359150620057c7846020850162004a56565b90509250929050565b600060208284031215620057e357600080fd5b815162003b7e8162004973565b6000602082840312156200580357600080fd5b815162003b7e8162004936565b6000602082840312156200582357600080fd5b815162003b7e8162004cc2565b600181811c908216806200584557607f821691505b6020821081036200586657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620058ba57600081815260208120601f850160051c81016020861015620058955750805b601f850160051c820191505b81811015620058b657828155600101620058a1565b5050505b505050565b81516001600160401b03811115620058db57620058db62004996565b620058f381620058ec845462005830565b846200586c565b602080601f8311600181146200592b5760008415620059125750858301515b600019600386901b1c1916600185901b178555620058b6565b600085815260208120601f198616915b828110156200595c578886015182559484019460019091019084016200593b565b50858210156200597b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200599e57600080fd5b5051919050565b600060208284031215620059b857600080fd5b815162003b7e81620047ff565b634e487b7160e01b600052603260045260246000fd5b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b60006020828403121562005a7057600080fd5b815162003b7e8162005696565b805162002a448162004973565b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b600082601f83011262005b3757600080fd5b815162005b4862004c6d8262004c32565b81815284602083860101111562005b5e57600080fd5b6200541282602083016020870162004bc9565b60006020828403121562005b8457600080fd5b81516001600160401b038082111562005b9c57600080fd5b9083019060c0828603121562005bb157600080fd5b62005bbb620049fe565b825162005bc881620047ff565b8152602083015162005bda81620047ff565b6020820152604083015162005bef8162004936565b604082015262005c026060840162005a7d565b606082015262005c156080840162005a7d565b608082015260a08301518281111562005c2d57600080fd5b62005c3b8782860162005b25565b60a08301525095945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620011e257620011e262005c4a565b81810381811115620011e257620011e262005c4a565b6001600160401b0360c01b8316815260406020820152600062005412604083018462004bef565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601260045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea2646970667358221220de87685d485f45728fb2b557cd6d2622e4a09f86c8a90bedde65101a59e1a77864736f6c63430008140033a2646970667358221220c19be969115f54b7deb05559272fd77b633fdf09fa54c9c8b121ea4a5939e82664736f6c63430008140033",
1641
2070
  "linkReferences": {
2071
+ "contracts/types/Blocknumber.sol": {
2072
+ "BlocknumberLib": [
2073
+ {
2074
+ "length": 20,
2075
+ "start": 4068
2076
+ },
2077
+ {
2078
+ "length": 20,
2079
+ "start": 10467
2080
+ }
2081
+ ]
2082
+ },
1642
2083
  "contracts/types/NftId.sol": {
1643
2084
  "NftIdLib": [
1644
2085
  {
1645
2086
  "length": 20,
1646
- "start": 9130
2087
+ "start": 17711
2088
+ },
2089
+ {
2090
+ "length": 20,
2091
+ "start": 17870
1647
2092
  },
1648
2093
  {
1649
2094
  "length": 20,
1650
- "start": 10298
2095
+ "start": 20657
2096
+ }
2097
+ ]
2098
+ },
2099
+ "contracts/types/NftIdSet.sol": {
2100
+ "LibNftIdSet": [
2101
+ {
2102
+ "length": 20,
2103
+ "start": 13724
2104
+ },
2105
+ {
2106
+ "length": 20,
2107
+ "start": 15512
1651
2108
  },
1652
2109
  {
1653
2110
  "length": 20,
1654
- "start": 15086
2111
+ "start": 15703
1655
2112
  },
1656
2113
  {
1657
2114
  "length": 20,
1658
- "start": 22389
2115
+ "start": 15926
1659
2116
  },
1660
2117
  {
1661
2118
  "length": 20,
1662
- "start": 22612
2119
+ "start": 20511
1663
2120
  },
1664
2121
  {
1665
2122
  "length": 20,
1666
- "start": 24130
2123
+ "start": 21171
2124
+ }
2125
+ ]
2126
+ },
2127
+ "contracts/types/Timestamp.sol": {
2128
+ "TimestampLib": [
2129
+ {
2130
+ "length": 20,
2131
+ "start": 9989
1667
2132
  }
1668
2133
  ]
1669
2134
  },
@@ -1671,41 +2136,115 @@
1671
2136
  "UFixedMathLib": [
1672
2137
  {
1673
2138
  "length": 20,
1674
- "start": 26417
2139
+ "start": 10604
2140
+ },
2141
+ {
2142
+ "length": 20,
2143
+ "start": 16632
2144
+ },
2145
+ {
2146
+ "length": 20,
2147
+ "start": 21417
2148
+ },
2149
+ {
2150
+ "length": 20,
2151
+ "start": 21580
2152
+ }
2153
+ ]
2154
+ },
2155
+ "contracts/types/Version.sol": {
2156
+ "VersionLib": [
2157
+ {
2158
+ "length": 20,
2159
+ "start": 1906
2160
+ }
2161
+ ],
2162
+ "VersionPartLib": [
2163
+ {
2164
+ "length": 20,
2165
+ "start": 4737
2166
+ },
2167
+ {
2168
+ "length": 20,
2169
+ "start": 4864
1675
2170
  },
1676
2171
  {
1677
2172
  "length": 20,
1678
- "start": 26560
2173
+ "start": 4991
2174
+ },
2175
+ {
2176
+ "length": 20,
2177
+ "start": 21742
2178
+ },
2179
+ {
2180
+ "length": 20,
2181
+ "start": 21869
2182
+ },
2183
+ {
2184
+ "length": 20,
2185
+ "start": 21996
1679
2186
  }
1680
2187
  ]
1681
2188
  }
1682
2189
  },
1683
2190
  "deployedLinkReferences": {
2191
+ "contracts/types/Blocknumber.sol": {
2192
+ "BlocknumberLib": [
2193
+ {
2194
+ "length": 20,
2195
+ "start": 4341
2196
+ }
2197
+ ]
2198
+ },
1684
2199
  "contracts/types/NftId.sol": {
1685
2200
  "NftIdLib": [
1686
2201
  {
1687
2202
  "length": 20,
1688
- "start": 4336
2203
+ "start": 11585
2204
+ },
2205
+ {
2206
+ "length": 20,
2207
+ "start": 11744
2208
+ },
2209
+ {
2210
+ "length": 20,
2211
+ "start": 14531
2212
+ }
2213
+ ]
2214
+ },
2215
+ "contracts/types/NftIdSet.sol": {
2216
+ "LibNftIdSet": [
2217
+ {
2218
+ "length": 20,
2219
+ "start": 7598
1689
2220
  },
1690
2221
  {
1691
2222
  "length": 20,
1692
- "start": 5504
2223
+ "start": 9386
1693
2224
  },
1694
2225
  {
1695
2226
  "length": 20,
1696
- "start": 10292
2227
+ "start": 9577
1697
2228
  },
1698
2229
  {
1699
2230
  "length": 20,
1700
- "start": 17595
2231
+ "start": 9800
1701
2232
  },
1702
2233
  {
1703
2234
  "length": 20,
1704
- "start": 17818
2235
+ "start": 14385
1705
2236
  },
1706
2237
  {
1707
2238
  "length": 20,
1708
- "start": 19336
2239
+ "start": 15045
2240
+ }
2241
+ ]
2242
+ },
2243
+ "contracts/types/Timestamp.sol": {
2244
+ "TimestampLib": [
2245
+ {
2246
+ "length": 20,
2247
+ "start": 3863
1709
2248
  }
1710
2249
  ]
1711
2250
  },
@@ -1713,11 +2252,35 @@
1713
2252
  "UFixedMathLib": [
1714
2253
  {
1715
2254
  "length": 20,
1716
- "start": 21623
2255
+ "start": 4478
2256
+ },
2257
+ {
2258
+ "length": 20,
2259
+ "start": 10506
2260
+ },
2261
+ {
2262
+ "length": 20,
2263
+ "start": 15291
2264
+ },
2265
+ {
2266
+ "length": 20,
2267
+ "start": 15454
2268
+ }
2269
+ ]
2270
+ },
2271
+ "contracts/types/Version.sol": {
2272
+ "VersionPartLib": [
2273
+ {
2274
+ "length": 20,
2275
+ "start": 15616
2276
+ },
2277
+ {
2278
+ "length": 20,
2279
+ "start": 15743
1717
2280
  },
1718
2281
  {
1719
2282
  "length": 20,
1720
- "start": 21766
2283
+ "start": 15870
1721
2284
  }
1722
2285
  ]
1723
2286
  }