@enclave-e3/contracts 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +3 -3
  2. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +3 -3
  3. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +4 -4
  6. package/artifacts/build-info/{solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.json → solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.json} +27 -12
  7. package/artifacts/build-info/solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.output.json +1 -0
  8. package/artifacts/contracts/E3RefundManager.sol/E3RefundManager.json +684 -0
  9. package/artifacts/contracts/E3RefundManager.sol/artifacts.d.ts +27 -0
  10. package/artifacts/contracts/Enclave.sol/Enclave.json +530 -182
  11. package/artifacts/contracts/Enclave.sol/artifacts.d.ts +4 -4
  12. package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +14 -1
  13. package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +2 -2
  14. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +55 -5
  15. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
  16. package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
  17. package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
  18. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
  19. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
  20. package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +19 -24
  21. package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
  22. package/artifacts/contracts/interfaces/IE3RefundManager.sol/IE3RefundManager.json +470 -0
  23. package/artifacts/contracts/interfaces/IE3RefundManager.sol/artifacts.d.ts +27 -0
  24. package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +383 -128
  25. package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
  26. package/artifacts/contracts/interfaces/ISlashVerifier.sol/ISlashVerifier.json +1 -1
  27. package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +1 -1
  28. package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +1 -1
  29. package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +1 -1
  30. package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +1 -1
  31. package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +1 -1
  32. package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +16 -3
  33. package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +4 -4
  34. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +91 -25
  35. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
  36. package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +3 -3
  37. package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +3 -3
  38. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +57 -7
  39. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +57 -7
  40. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
  41. package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +3 -3
  42. package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +3 -3
  43. package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +1 -1
  44. package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +1 -1
  45. package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +21 -26
  46. package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
  47. package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +1 -1
  48. package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +1 -1
  49. package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +3 -3
  50. package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +3 -3
  51. package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +14 -22
  52. package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +4 -4
  53. package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +10 -10
  54. package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +4 -4
  55. package/artifacts/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.json +89 -0
  56. package/artifacts/contracts/verifier/DkgPkVerifier.sol/CommitmentSchemeLib.json +13 -0
  57. package/artifacts/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.json +186 -0
  58. package/artifacts/contracts/verifier/DkgPkVerifier.sol/FrLib.json +13 -0
  59. package/artifacts/contracts/verifier/DkgPkVerifier.sol/Honk.json +13 -0
  60. package/artifacts/contracts/verifier/DkgPkVerifier.sol/HonkVerificationKey.json +13 -0
  61. package/artifacts/contracts/verifier/DkgPkVerifier.sol/IVerifier.json +38 -0
  62. package/artifacts/contracts/verifier/DkgPkVerifier.sol/RelationsLib.json +13 -0
  63. package/artifacts/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.json +400 -0
  64. package/artifacts/contracts/verifier/DkgPkVerifier.sol/artifacts.d.ts +155 -0
  65. package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +1 -1
  66. package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +1 -1
  67. package/contracts/E3RefundManager.sol +365 -0
  68. package/contracts/Enclave.sol +426 -119
  69. package/contracts/interfaces/IBondingRegistry.sol +6 -0
  70. package/contracts/interfaces/ICiphernodeRegistry.sol +29 -7
  71. package/contracts/interfaces/IE3.sol +2 -6
  72. package/contracts/interfaces/IE3Program.sol +3 -7
  73. package/contracts/interfaces/IE3RefundManager.sol +150 -0
  74. package/contracts/interfaces/IEnclave.sol +186 -64
  75. package/contracts/registry/BondingRegistry.sol +9 -0
  76. package/contracts/registry/CiphernodeRegistryOwnable.sol +89 -42
  77. package/contracts/test/MockCiphernodeRegistry.sol +20 -6
  78. package/contracts/test/MockE3Program.sol +3 -8
  79. package/contracts/verifier/DkgPkVerifier.sol +3140 -0
  80. package/dist/hardhat.config.d.ts.map +1 -1
  81. package/dist/hardhat.config.js +4 -4
  82. package/dist/ignition/modules/dkgPkVerifier.d.ts +3 -0
  83. package/dist/ignition/modules/dkgPkVerifier.d.ts.map +1 -0
  84. package/dist/ignition/modules/dkgPkVerifier.js +10 -0
  85. package/dist/ignition/modules/e3RefundManager.d.ts +3 -0
  86. package/dist/ignition/modules/e3RefundManager.d.ts.map +1 -0
  87. package/dist/ignition/modules/e3RefundManager.js +23 -0
  88. package/dist/ignition/modules/enclave.d.ts.map +1 -1
  89. package/dist/ignition/modules/enclave.js +10 -0
  90. package/dist/scripts/deployAndSave/e3RefundManager.d.ts +20 -0
  91. package/dist/scripts/deployAndSave/e3RefundManager.d.ts.map +1 -0
  92. package/dist/scripts/deployAndSave/e3RefundManager.js +55 -0
  93. package/dist/scripts/deployAndSave/enclave.d.ts +13 -1
  94. package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
  95. package/dist/scripts/deployAndSave/enclave.js +8 -1
  96. package/dist/scripts/deployAndSave/verifiers.d.ts +29 -0
  97. package/dist/scripts/deployAndSave/verifiers.d.ts.map +1 -0
  98. package/dist/scripts/deployAndSave/verifiers.js +109 -0
  99. package/dist/scripts/deployEnclave.d.ts.map +1 -1
  100. package/dist/scripts/deployEnclave.js +36 -0
  101. package/dist/scripts/deployVerifiers.d.ts +2 -0
  102. package/dist/scripts/deployVerifiers.d.ts.map +1 -0
  103. package/dist/scripts/deployVerifiers.js +33 -0
  104. package/dist/scripts/index.d.ts +1 -0
  105. package/dist/scripts/index.d.ts.map +1 -1
  106. package/dist/scripts/index.js +1 -0
  107. package/dist/tasks/enclave.d.ts +0 -2
  108. package/dist/tasks/enclave.d.ts.map +1 -1
  109. package/dist/tasks/enclave.js +8 -72
  110. package/dist/tasks/program.d.ts +2 -0
  111. package/dist/tasks/program.d.ts.map +1 -0
  112. package/dist/tasks/program.js +55 -0
  113. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts +2 -0
  114. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts.map +1 -0
  115. package/dist/test/E3Lifecycle/E3Integration.spec.js +757 -0
  116. package/dist/test/Enclave.spec.js +83 -406
  117. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +133 -59
  118. package/dist/types/contracts/E3RefundManager.d.ts +379 -0
  119. package/dist/types/contracts/E3RefundManager.d.ts.map +1 -0
  120. package/dist/types/contracts/E3RefundManager.js +24 -0
  121. package/dist/types/contracts/Enclave.d.ts +325 -73
  122. package/dist/types/contracts/Enclave.d.ts.map +1 -1
  123. package/dist/types/contracts/Enclave.js +27 -3
  124. package/dist/types/contracts/index.d.ts +3 -0
  125. package/dist/types/contracts/index.d.ts.map +1 -1
  126. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +11 -1
  127. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -1
  128. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +35 -7
  129. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
  130. package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +4 -0
  131. package/dist/types/contracts/interfaces/IE3Program.d.ts +16 -18
  132. package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
  133. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts +238 -0
  134. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts.map +1 -0
  135. package/dist/types/contracts/interfaces/IE3RefundManager.js +16 -0
  136. package/dist/types/contracts/interfaces/IEnclave.d.ts +290 -62
  137. package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
  138. package/dist/types/contracts/interfaces/IEnclave.js +27 -3
  139. package/dist/types/contracts/interfaces/index.d.ts +1 -0
  140. package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
  141. package/dist/types/contracts/registry/BondingRegistry.d.ts +11 -1
  142. package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -1
  143. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +35 -7
  144. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
  145. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +4 -0
  146. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +35 -7
  147. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
  148. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +4 -0
  149. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +35 -7
  150. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  151. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +4 -0
  152. package/dist/types/contracts/test/MockE3Program.d.ts +16 -18
  153. package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
  154. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts +36 -0
  155. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts.map +1 -0
  156. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.js +1 -0
  157. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts +36 -0
  158. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts.map +1 -0
  159. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.js +1 -0
  160. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts +36 -0
  161. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts.map +1 -0
  162. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.js +1 -0
  163. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts +138 -0
  164. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts.map +1 -0
  165. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.js +1 -0
  166. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  167. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  168. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.js +1 -0
  169. package/dist/types/contracts/verifier/index.d.ts +3 -0
  170. package/dist/types/contracts/verifier/index.d.ts.map +1 -0
  171. package/dist/types/contracts/verifier/index.js +1 -0
  172. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  173. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
  174. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
  175. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +1 -1
  176. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
  177. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +1 -1
  178. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts +540 -0
  179. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts.map +1 -0
  180. package/dist/types/factories/contracts/E3RefundManager__factory.js +706 -0
  181. package/dist/types/factories/contracts/Enclave__factory.d.ts +412 -143
  182. package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
  183. package/dist/types/factories/contracts/Enclave__factory.js +528 -180
  184. package/dist/types/factories/contracts/index.d.ts +2 -0
  185. package/dist/types/factories/contracts/index.d.ts.map +1 -1
  186. package/dist/types/factories/contracts/index.js +2 -0
  187. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +10 -0
  188. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -1
  189. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +13 -0
  190. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +42 -4
  191. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
  192. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +54 -4
  193. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +14 -18
  194. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
  195. package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +18 -23
  196. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts +358 -0
  197. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts.map +1 -0
  198. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.js +471 -0
  199. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +303 -103
  200. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
  201. package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +382 -127
  202. package/dist/types/factories/contracts/interfaces/index.d.ts +1 -0
  203. package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
  204. package/dist/types/factories/contracts/interfaces/index.js +1 -0
  205. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +11 -1
  206. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -1
  207. package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +14 -1
  208. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +62 -12
  209. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
  210. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +79 -13
  211. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +1 -1
  212. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -1
  213. package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1 -1
  214. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +43 -5
  215. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
  216. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +55 -5
  217. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +43 -5
  218. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
  219. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +55 -5
  220. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +1 -1
  221. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
  222. package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +1 -1
  223. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +15 -19
  224. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
  225. package/dist/types/factories/contracts/test/MockE3Program__factory.js +19 -24
  226. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +1 -1
  227. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -1
  228. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +1 -1
  229. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +1 -1
  230. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -1
  231. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1 -1
  232. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1 -1
  233. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -1
  234. package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1 -1
  235. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts +66 -0
  236. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts.map +1 -0
  237. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.js +90 -0
  238. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts +87 -0
  239. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts.map +1 -0
  240. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.js +122 -0
  241. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts +26 -0
  242. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts.map +1 -0
  243. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.js +39 -0
  244. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts +323 -0
  245. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts.map +1 -0
  246. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.js +422 -0
  247. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  248. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  249. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.js +7 -0
  250. package/dist/types/factories/contracts/verifier/index.d.ts +2 -0
  251. package/dist/types/factories/contracts/verifier/index.d.ts.map +1 -0
  252. package/dist/types/factories/contracts/verifier/index.js +4 -0
  253. package/dist/types/index.d.ts +12 -0
  254. package/dist/types/index.d.ts.map +1 -1
  255. package/dist/types/index.js +6 -0
  256. package/package.json +17 -3
  257. package/artifacts/build-info/solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.output.json +0 -1
@@ -8,14 +8,14 @@ export interface Enclave$Type {
8
8
  readonly _format: "hh3-artifact-1";
9
9
  readonly contractName: "Enclave";
10
10
  readonly sourceName: "contracts/Enclave.sol";
11
- readonly abi: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputAlreadyPublished","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputNotPublished","type":"error"},{"inputs":[],"name":"CommitteeSelectionFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3AlreadyActivated","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3DoesNotExist","type":"error"},{"inputs":[],"name":"E3Expired","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3NotActivated","type":"error"},{"inputs":[],"name":"E3NotReady","type":"error"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramNotAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"InputDeadlineNotPassed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"InputDeadlinePassed","type":"error"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"bondingRegistry","type":"address"}],"name":"InvalidBondingRegistry","type":"error"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"ciphernodeRegistry","type":"address"}],"name":"InvalidCiphernodeRegistry","type":"error"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"InvalidDuration","type":"error"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"InvalidEncryptionScheme","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"feeToken","type":"address"}],"name":"InvalidFeeToken","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"}],"name":"InvalidOutput","type":"error"},{"inputs":[],"name":"InvalidStartWindow","type":"error"},{"inputs":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"}],"name":"InvalidThreshold","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleAlreadyEnabled","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleNotEnabled","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"PaymentRequired","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"PlaintextOutputAlreadyPublished","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes[]","name":"e3ProgramParams","type":"bytes[]"}],"name":"AllowedE3ProgramsParamsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bondingRegistry","type":"address"}],"name":"BondingRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ciphernodeRegistry","type":"address"}],"name":"CiphernodeRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"ciphertextOutput","type":"bytes"}],"name":"CiphertextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expiration","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"}],"name":"E3Activated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"startWindow","type":"uint256[2]"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"indexed":false,"internalType":"struct E3","name":"e3","type":"tuple"},{"indexed":true,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"inputHash","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"InputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxDuration","type":"uint256"}],"name":"MaxDurationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"plaintextOutput","type":"bytes"}],"name":"PlaintextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"nodes","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"RewardsDistributed","type":"event"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"activate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondingRegistry","outputs":[{"internalType":"contract IBondingRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ciphernodeRegistry","outputs":[{"internalType":"contract ICiphernodeRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"decryptionVerifiers","outputs":[{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"disableE3Program","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"disableEncryptionScheme","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3Payments","outputs":[{"internalType":"uint256","name":"e3Payment","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"e3Programs","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"}],"name":"e3ProgramsParams","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3s","outputs":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"enableE3Program","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"getDecryptionVerifier","outputs":[{"internalType":"contract IDecryptionVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getE3","outputs":[{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"startWindow","type":"uint256[2]"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256[2]","name":"startWindow","type":"uint256[2]"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct IEnclave.E3RequestParams","name":"","type":"tuple"}],"name":"getE3Quote","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"},{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"},{"internalType":"contract IERC20","name":"_feeToken","type":"address"},{"internalType":"uint256","name":"_maxDuration","type":"uint256"},{"internalType":"bytes[]","name":"_e3ProgramsParams","type":"bytes[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nexte3Id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"ciphertextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishCiphertextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"publishInput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishPlaintextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256[2]","name":"startWindow","type":"uint256[2]"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct IEnclave.E3RequestParams","name":"requestParams","type":"tuple"}],"name":"request","outputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"startWindow","type":"uint256[2]"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"}],"name":"setBondingRegistry","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"}],"name":"setCiphernodeRegistry","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"name":"setDecryptionVerifier","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_e3ProgramsParams","type":"bytes[]"}],"name":"setE3ProgramsParams","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_feeToken","type":"address"}],"name":"setFeeToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDuration","type":"uint256"}],"name":"setMaxDuration","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}];
12
- readonly bytecode: "0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6130b8806100d65f395ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80638da5cb5b11610109578063cbd168721161009e578063efe0308b1161006e578063efe0308b146104af578063f2fde38b146104c2578063fad8e111146104d5578063fd2f3d01146104e8575f5ffd5b8063cbd1687214610463578063cf0f34c414610476578063d016b08d14610489578063e59e46951461049c575f5ffd5b8063b260c42a116100d9578063b260c42a14610412578063b68fd1be14610425578063c4ccafa214610438578063cb6496171461045a575f5ffd5b80638da5cb5b146103aa5780638dcdd86b146103da5780639c8570c8146103ec578063ac4e410c146103ff575f5ffd5b8063459d92941161017f5780636db5c8fd1161014f5780636db5c8fd14610371578063715018a61461037a5780637edcd7ab146103845780638581424314610397575f5ffd5b8063459d92941461030a5780634e92ec63146103385780634fc772641461034b578063647846a51461035e575f5ffd5b806315cce224116101ba57806315cce2241461026e5780634017daf014610291578063406ed35c146102bd5780634147a360146102dd575f5ffd5b80630ef81b2f146101e057806310bc6281146102255780631408d1221461024d575b5f5ffd5b6102086101ee3660046123f1565b5f908152600760205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6102086102333660046123f1565b60076020525f90815260409020546001600160a01b031681565b61026061025b366004612408565b6104fb565b60405161021c9291906125df565b61028161027c366004612613565b610b2e565b604051901515815260200161021c565b6102a461029f3660046123f1565b610be4565b60405161021c9d9c9b9a9998979695949392919061262e565b6102d06102cb3660046123f1565b610dfd565b60405161021c91906126df565b6102fc6102eb3660046123f1565b60096020525f908152604090205481565b60405190815260200161021c565b6102816103183660046127a2565b805160208183018101805160088252928201919093012091525460ff1681565b6102816103463660046123f1565b61111d565b610281610359366004612613565b6111b1565b600254610208906001600160a01b031681565b6102fc60035481565b610382611255565b005b610281610392366004612819565b611268565b600154610208906001600160a01b031681565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610208565b5f54610208906001600160a01b031681565b6102816103fa366004612819565b611429565b6102fc61040d366004612408565b6115cc565b6102816104203660046123f1565b6115d6565b610281610433366004612943565b611745565b610281610446366004612613565b60056020525f908152604090205460ff1681565b6102fc60045481565b610281610471366004612975565b6117ef565b6102816104843660046123f1565b6118b0565b6102816104973660046129a3565b6118f2565b6102816104aa366004612613565b6119c9565b6103826104bd3660046129eb565b611a72565b6103826104d0366004612613565b611bf3565b6102816104e3366004612613565b611c30565b6102816104f6366004612613565b611cdb565b5f610504612263565b5f61050e846115cc565b905061051d6020850185612aa2565b63ffffffff166105336040860160208701612aa2565b63ffffffff161015801561055857505f6105506020860186612aa2565b63ffffffff16115b849061058157604051633744092160e21b81526004016105789190612aeb565b60405180910390fd5b50604084013560608501351080159061059e575042606085013510155b6105bb576040516308594fb760e01b815260040160405180910390fd5b5f84608001351180156105d45750600354846080013511155b8460800135906105fa576040516313b783af60e21b815260040161057891815260200190565b5060055f61060e60c0870160a08801612613565b6001600160a01b0316815260208101919091526040015f205460ff1661063a60c0860160a08701612613565b906106645760405163295a6a6f60e11b81526001600160a01b039091166004820152602401610578565b5060048054935083905f61067783612b0d565b90915550506040805144602080830191909152818301869052825180830384018152606090920183528151910120808452815180830183529091869060029083908390808284375f92019190915250505060208401524360408085019190915280518082018252908681019060029083908390808284375f920182905250606087019390935250506080808701359085015260a0808501919091526107229060c08701908701612613565b6001600160a01b031660e084015261073d60c0860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050506101008085019190915261078690860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506101208801949094525050506101608401819052610180840181905260408051602081019091528181526101a0850152336101c08501526107fc60c0870160a08801612613565b6001600160a01b031663fefd9a8b868461081960c08b018b612b25565b61082660e08d018d612b25565b6108346101008f018f612b25565b6040518963ffffffff1660e01b8152600401610857989796959493929190612b90565b6020604051808303815f875af1158015610873573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190612be6565b5f818152600760205260409020549091506001600160a01b031681816108d3576040516381c4951960e01b815260040161057891815260200190565b5060c085018290526001600160a01b0381166101408601525f868152600660209081526040909120865181559086015186919061091690600183019060026122f6565b5060408201518160020155606082015181600301906002610938929190612391565b506080820151600582015560a0820151600682015560c0820151600782015560e08201516008820180546001600160a01b0319166001600160a01b0390921691909117905561010082015160098201906109929082612c7b565b50610120820151600a8201906109a89082612c7b565b50610140820151600b820180546001600160a01b0319166001600160a01b03909216919091179055610160820151600c820155610180820151600d8201556101a0820151600e8201906109fb9082612c7b565b506101c09190910151600f90910180546001600160a01b0319166001600160a01b039283161790555f878152600960205260409020859055600254610a439116333087611d85565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b90610a7690899087908c90600401612d36565b6020604051808303815f875af1158015610a92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d51565b610ad357604051630d8dbe2560e01b815260040160405180910390fd5b610ae360c0880160a08901612613565b6001600160a01b03167f4ecb0221c454f0d5b8f84e30e1140e22464fe24db107d56ce81dadfaa1549a838787604051610b1d9291906125df565b60405180910390a250505050915091565b5f610b37611dfa565b6001600160a01b03821615801590610b5d57506002546001600160a01b03838116911614155b8290610b885760405163eddf07f560e01b81526001600160a01b039091166004820152602401610578565b5050600280546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f3906020015b60405180910390a1919050565b600660208190525f91825260409091208054600282015460058301549383015460078401546008850154600986018054959794969495939492936001600160a01b039092169291610c3490612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090612bfd565b8015610cab5780601f10610c8257610100808354040283529160200191610cab565b820191905f5260205f20905b815481529060010190602001808311610c8e57829003601f168201915b50505050509080600a018054610cc090612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90612bfd565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b505050600b840154600c850154600d860154600e8701805496976001600160a01b039094169692955090935090610d6d90612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612bfd565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b505050600f90930154919250506001600160a01b03168d565b610e05612263565b5f82815260066020908152604080832081516101e0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610e4057505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ea657505050918352505060058201546020820152600682015460408201526007820154606082015260088201546001600160a01b0316608082015260098201805460a090920191610f0790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3390612bfd565b8015610f7e5780601f10610f5557610100808354040283529160200191610f7e565b820191905f5260205f20905b815481529060010190602001808311610f6157829003601f168201915b50505050508152602001600a82018054610f9790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc390612bfd565b801561100e5780601f10610fe55761010080835404028352916020019161100e565b820191905f5260205f20905b815481529060010190602001808311610ff157829003601f168201915b5050509183525050600b8201546001600160a01b03166020820152600c8201546040820152600d8201546060820152600e8201805460809092019161105290612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461107e90612bfd565b80156110c95780601f106110a0576101008083540402835291602001916110c9565b820191905f5260205f20905b8154815290600101906020018083116110ac57829003601f168201915b5050509183525050600f91909101546001600160a01b0390811660209092019190915260e08201519192508391166111175760405163cd6f4a4f60e01b815260040161057891815260200190565b50919050565b5f611126611dfa565b5f8281526007602052604090205482906001600160a01b031661115f576040516381c4951960e01b815260040161057891815260200190565b50505f818152600760205260409081902080546001600160a01b0319169055516001907f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610bd79084815260200190565b5f6111ba611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff16611200576040516321ac7c5f60e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff1916905590519182526001917f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79101610bd7565b61125d611dfa565b6112665f611e55565b565b5f5f61127387610dfd565b90505f8160a0015111879061129e5760405163166b4d0360e01b815260040161057891815260200190565b5061018081015187906112c75760405163032c20ef60e21b815260040161057891815260200190565b506101a0810151518790156112f2576040516360ec327960e01b815260040161057891815260200190565b505f878152600660205260409020600e0161130e868883612d70565b508061014001516001600160a01b0316632f0e1bbf888888604051611334929190612e2a565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168252611377929189908990600401612e39565b602060405180830381865afa158015611392573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190612d51565b91508585836113da57604051632f9f8ab960e01b8152600401610578929190612e62565b50506113e587611ec5565b867f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca1698787604051611417929190612e62565b60405180910390a25095945050505050565b5f5f61143487610dfd565b90505f8160a0015111879061145f5760405163166b4d0360e01b815260040161057891815260200190565b5060a0810151879042811115611491576040516370c05fb960e11b815260048101929092526024820152604401610578565b50506101808101518790156114bc57604051637eb9cea960e11b815260040161057891815260200190565b505f86866040516114ce929190612e2a565b604080519182900382205f8b8152600660205291909120600d0181905560e0840151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf90611521908b9085908a908a90600401612e39565b6020604051808303815f875af115801561153d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115619190612d51565b925086868461158557604051632f9f8ab960e01b8152600401610578929190612e62565b5050877f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade07188886040516115b9929190612e62565b60405180910390a2505095945050505050565b620f424080611117565b5f5f6115e183610dfd565b90508060a001515f14839061160c57604051633e26347b60e21b815260040161057891815260200190565b506060810151514210156116335760405163a0750b5160e01b815260040160405180910390fd5b60608101516020015142111561165c57604051633d82a7cd60e11b815260040160405180910390fd5b5f8054604051630e82f3b760e41b8152600481018690526001600160a01b039091169063e82f3b7090602401602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612be6565b90505f8260800151426116da9190612e75565b5f86815260066020818152604092839020918201849055600c90910185905581518881529081018390529081018490529091507f38d3b0e32ac79e8b5ba6e95ad66f2ff3ef525893ba853ac583cd0a7c14d09e8c9060600160405180910390a1506001949350505050565b5f61174e611dfa565b81515f5b818110156117ad576001600885838151811061177057611770612a76565b60200260200101516040516117859190612e88565b908152604051908190036020019020805491151560ff19909216919091179055600101611752565b50600191507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81836040516117e19190612e9e565b60405180910390a150919050565b5f6117f8611dfa565b6001600160a01b0382161580159061182957505f838152600760205260409020546001600160a01b03838116911614155b839061184b576040516381c4951960e01b815260040161057891815260200190565b50505f8281526007602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381526001917ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a192915050565b5f6118b9611dfa565b5060038190556040518181526001907fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610bd7565b5f5f6118fd85610dfd565b90505f8160a001511185906119285760405163166b4d0360e01b815260040161057891815260200190565b5060a081015185904281116119595760405163142c294360e31b815260048101929092526024820152604401610578565b50508060e001516001600160a01b031663d927910e863387876040518563ffffffff1660e01b81526004016119919493929190612f01565b5f604051808303815f87803b1580156119a8575f5ffd5b505af11580156119ba573d5f5f3e3d5ffd5b50600198975050505050505050565b5f6119d2611dfa565b6001600160a01b038216158015906119f857506001546001600160a01b03838116911614155b8290611a23576040516320252f0b60e01b81526001600160a01b039091166004820152602401610578565b5050600180546001600160a01b0319166001600160a01b03831690811782556040519081527fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790602001610bd7565b5f611a7b612171565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015611aa75750825b90505f8267ffffffffffffffff166001148015611ac35750303b155b905081158015611ad1575080155b15611aef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b2357845468ff00000000000000001916680100000000000000001785555b611b2c3361219b565b611b35876118b0565b50611b3f8a611c30565b50611b49896119c9565b50611b5388610b2e565b50611b5d86611745565b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b038c8116911614611b9b57611b9b8b611bf3565b8315611be657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611bfb611dfa565b6001600160a01b038116611c2457604051631e4fbdf760e01b81525f6004820152602401610578565b611c2d81611e55565b50565b5f611c39611dfa565b6001600160a01b03821615801590611c5e57505f546001600160a01b03838116911614155b8290611c89576040516375ac4eb760e11b81526001600160a01b039091166004820152602401610578565b50505f80546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690602001610bd7565b5f611ce4611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff1615611d2b5760405163b29d459560e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff19166001908117909155915192835290917fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679101610bd7565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611df49085906121ac565b50505050565b33611e2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112665760405163118cdaa760e01b8152336004820152602401610578565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa158015611f0b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f329190810190612f29565b80519091505f8167ffffffffffffffff811115611f5157611f516126f1565b604051908082528060200260200182016040528015611f7a578160200160208202803683370190505b505f8581526009602052604081205491925090611f98908490612fb9565b90505f5b83811015611fca5781838281518110611fb757611fb7612a76565b6020908102919091010152600101611f9c565b505f858152600960205260408082208054929055600254600154915163095ea7b360e01b81526001600160a01b0392831660048201526024810184905291169063095ea7b3906044016020604051808303815f875af115801561202f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120539190612d51565b50600154600254604051636ec640c760e11b81526001600160a01b039283169263dd8c818e9261208c929116908990889060040161304b565b5f604051808303815f87803b1580156120a3575f5ffd5b505af11580156120b5573d5f5f3e3d5ffd5b505060025460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529116925063095ea7b391506044016020604051808303815f875af115801561210a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212e9190612d51565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a868560405161216192919061307e565b60405180910390a2505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b6121a3612218565b611c2d8161223d565b5f5f60205f8451602086015f885af1806121cb576040513d5f823e3d81fd5b50505f513d915081156121e25780600114156121ef565b6001600160a01b0384163b155b15611df457604051635274afe760e01b81526001600160a01b0385166004820152602401610578565b612220612245565b61126657604051631afcd79f60e31b815260040160405180910390fd5b611bfb612218565b5f61224e612171565b5468010000000000000000900460ff16919050565b604051806101e001604052805f815260200161227d6123bf565b81526020015f81526020016122906123bf565b81526020015f81526020015f81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215612381579160200282015f5b8382111561234f57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261230b565b801561237f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261234f565b505b5061238d9291506123dd565b5090565b8260028101928215612381579160200282015b828111156123815782518255916020019190600101906123a4565b60405180604001604052806002906020820280368337509192915050565b5b8082111561238d575f81556001016123de565b5f60208284031215612401575f5ffd5b5035919050565b5f60208284031215612418575f5ffd5b813567ffffffffffffffff81111561242e575f5ffd5b82016101208185031215612440575f5ffd5b9392505050565b805f5b6002811015611df457815163ffffffff1684526020938401939091019060010161244a565b805f5b6002811015611df4578151845260209384019390910190600101612472565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b805182525f60208201516124d66020850182612447565b506040820151606084015260608201516124f3608085018261246f565b50608082015160c084015260a082015160e084015260c082015161010084015260e082015161252e6101208501826001600160a01b03169052565b5061010082015161022061014085015261254c610220850182612491565b90506101208301518482036101608601526125678282612491565b9150506101408301516125866101808601826001600160a01b03169052565b506101608301516101a08501526101808301516101c08501526101a08301518482036101e08601526125b88282612491565b9150506101c08301516125d76102008601826001600160a01b03169052565b509392505050565b828152604060208201525f6125f760408301846124bf565b949350505050565b6001600160a01b0381168114611c2d575f5ffd5b5f60208284031215612623575f5ffd5b8135612440816125ff565b8d81528c60208201528b60408201528a60608201528960808201526001600160a01b03891660a08201526101a060c08201525f61266f6101a083018a612491565b82810360e0840152612681818a612491565b6001600160a01b038916610100850152905086610120840152856101408401528281036101608401526126b48186612491565b9150506126cd6101808301846001600160a01b03169052565b9e9d5050505050505050505050505050565b602081525f61244060208301846124bf565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561272e5761272e6126f1565b604052919050565b5f82601f830112612745575f5ffd5b813567ffffffffffffffff81111561275f5761275f6126f1565b612772601f8201601f1916602001612705565b818152846020838601011115612786575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156127b2575f5ffd5b813567ffffffffffffffff8111156127c8575f5ffd5b6125f784828501612736565b5f5f83601f8401126127e4575f5ffd5b50813567ffffffffffffffff8111156127fb575f5ffd5b602083019150836020828501011115612812575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561282d575f5ffd5b85359450602086013567ffffffffffffffff81111561284a575f5ffd5b612856888289016127d4565b909550935050604086013567ffffffffffffffff811115612875575f5ffd5b612881888289016127d4565b969995985093965092949392505050565b5f67ffffffffffffffff8211156128ab576128ab6126f1565b5060051b60200190565b5f82601f8301126128c4575f5ffd5b81356128d76128d282612892565b612705565b8082825260208201915060208360051b8601019250858311156128f8575f5ffd5b602085015b8381101561293957803567ffffffffffffffff81111561291b575f5ffd5b61292a886020838a0101612736565b845250602092830192016128fd565b5095945050505050565b5f60208284031215612953575f5ffd5b813567ffffffffffffffff811115612969575f5ffd5b6125f7848285016128b5565b5f5f60408385031215612986575f5ffd5b823591506020830135612998816125ff565b809150509250929050565b5f5f5f604084860312156129b5575f5ffd5b83359250602084013567ffffffffffffffff8111156129d2575f5ffd5b6129de868287016127d4565b9497909650939450505050565b5f5f5f5f5f5f60c08789031215612a00575f5ffd5b8635612a0b816125ff565b95506020870135612a1b816125ff565b94506040870135612a2b816125ff565b93506060870135612a3b816125ff565b92506080870135915060a087013567ffffffffffffffff811115612a5d575f5ffd5b612a6989828a016128b5565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b803563ffffffff81168114612a9d575f5ffd5b919050565b5f60208284031215612ab2575f5ffd5b61244082612a8a565b805f5b6002811015611df45763ffffffff612ad583612a8a565b1684526020938401939190910190600101612abe565b604081016121958284612abb565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612b1e57612b1e612af9565b5060010190565b5f5f8335601e19843603018112612b3a575f5ffd5b83018035915067ffffffffffffffff821115612b54575f5ffd5b602001915036819003821315612812575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b88815287602082015260a060408201525f612baf60a08301888a612b68565b8281036060840152612bc2818789612b68565b90508281036080840152612bd7818587612b68565b9b9a5050505050505050505050565b5f60208284031215612bf6575f5ffd5b5051919050565b600181811c90821680612c1157607f821691505b60208210810361111757634e487b7160e01b5f52602260045260245ffd5b601f821115612c7657805f5260205f20601f840160051c81016020851015612c545750805b601f840160051c820191505b81811015612c73575f8155600101612c60565b50505b505050565b815167ffffffffffffffff811115612c9557612c956126f1565b612ca981612ca38454612bfd565b84612c2f565b6020601f821160018114612cdb575f8315612cc45750848201515b5f19600385901b1c1916600184901b178455612c73565b5f84815260208120601f198516915b82811015612d0a5787850151825560209485019460019092019101612cea565b5084821015612d2757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016125f76040830184612abb565b5f60208284031215612d61575f5ffd5b81518015158114612440575f5ffd5b67ffffffffffffffff831115612d8857612d886126f1565b612d9c83612d968354612bfd565b83612c2f565b5f601f841160018114612dcd575f8515612db65750838201355b5f19600387901b1c1916600186901b178355612c73565b5f83815260208120601f198716915b82811015612dfc5786850135825560209485019460019092019101612ddc565b5086821015612e18575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b848152836020820152606060408201525f612e58606083018486612b68565b9695505050505050565b602081525f6125f7602083018486612b68565b8082018082111561219557612195612af9565b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612ef557603f19878603018452612ee0858351612491565b94506020938401939190910190600101612ec4565b50929695505050505050565b8481526001600160a01b0384166020820152606060408201525f612e58606083018486612b68565b5f60208284031215612f39575f5ffd5b815167ffffffffffffffff811115612f4f575f5ffd5b8201601f81018413612f5f575f5ffd5b8051612f6d6128d282612892565b8082825260208201915060208360051b850101925086831115612f8e575f5ffd5b6020840193505b82841015612e58578351612fa8816125ff565b825260209384019390910190612f95565b5f82612fd357634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b828110156130115781516001600160a01b0316865260209586019590910190600101612fea565b5093949350505050565b5f8151808452602084019350602083015f5b8281101561301157815186526020958601959091019060010161302d565b6001600160a01b0384168152606060208201525f61306c6060830185612fd8565b8281036040840152612e58818561301b565b604081525f6130906040830185612fd8565b82810360208401526130a2818561301b565b9594505050505056fea164736f6c634300081c000a";
13
- readonly deployedBytecode: "0x608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80638da5cb5b11610109578063cbd168721161009e578063efe0308b1161006e578063efe0308b146104af578063f2fde38b146104c2578063fad8e111146104d5578063fd2f3d01146104e8575f5ffd5b8063cbd1687214610463578063cf0f34c414610476578063d016b08d14610489578063e59e46951461049c575f5ffd5b8063b260c42a116100d9578063b260c42a14610412578063b68fd1be14610425578063c4ccafa214610438578063cb6496171461045a575f5ffd5b80638da5cb5b146103aa5780638dcdd86b146103da5780639c8570c8146103ec578063ac4e410c146103ff575f5ffd5b8063459d92941161017f5780636db5c8fd1161014f5780636db5c8fd14610371578063715018a61461037a5780637edcd7ab146103845780638581424314610397575f5ffd5b8063459d92941461030a5780634e92ec63146103385780634fc772641461034b578063647846a51461035e575f5ffd5b806315cce224116101ba57806315cce2241461026e5780634017daf014610291578063406ed35c146102bd5780634147a360146102dd575f5ffd5b80630ef81b2f146101e057806310bc6281146102255780631408d1221461024d575b5f5ffd5b6102086101ee3660046123f1565b5f908152600760205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6102086102333660046123f1565b60076020525f90815260409020546001600160a01b031681565b61026061025b366004612408565b6104fb565b60405161021c9291906125df565b61028161027c366004612613565b610b2e565b604051901515815260200161021c565b6102a461029f3660046123f1565b610be4565b60405161021c9d9c9b9a9998979695949392919061262e565b6102d06102cb3660046123f1565b610dfd565b60405161021c91906126df565b6102fc6102eb3660046123f1565b60096020525f908152604090205481565b60405190815260200161021c565b6102816103183660046127a2565b805160208183018101805160088252928201919093012091525460ff1681565b6102816103463660046123f1565b61111d565b610281610359366004612613565b6111b1565b600254610208906001600160a01b031681565b6102fc60035481565b610382611255565b005b610281610392366004612819565b611268565b600154610208906001600160a01b031681565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610208565b5f54610208906001600160a01b031681565b6102816103fa366004612819565b611429565b6102fc61040d366004612408565b6115cc565b6102816104203660046123f1565b6115d6565b610281610433366004612943565b611745565b610281610446366004612613565b60056020525f908152604090205460ff1681565b6102fc60045481565b610281610471366004612975565b6117ef565b6102816104843660046123f1565b6118b0565b6102816104973660046129a3565b6118f2565b6102816104aa366004612613565b6119c9565b6103826104bd3660046129eb565b611a72565b6103826104d0366004612613565b611bf3565b6102816104e3366004612613565b611c30565b6102816104f6366004612613565b611cdb565b5f610504612263565b5f61050e846115cc565b905061051d6020850185612aa2565b63ffffffff166105336040860160208701612aa2565b63ffffffff161015801561055857505f6105506020860186612aa2565b63ffffffff16115b849061058157604051633744092160e21b81526004016105789190612aeb565b60405180910390fd5b50604084013560608501351080159061059e575042606085013510155b6105bb576040516308594fb760e01b815260040160405180910390fd5b5f84608001351180156105d45750600354846080013511155b8460800135906105fa576040516313b783af60e21b815260040161057891815260200190565b5060055f61060e60c0870160a08801612613565b6001600160a01b0316815260208101919091526040015f205460ff1661063a60c0860160a08701612613565b906106645760405163295a6a6f60e11b81526001600160a01b039091166004820152602401610578565b5060048054935083905f61067783612b0d565b90915550506040805144602080830191909152818301869052825180830384018152606090920183528151910120808452815180830183529091869060029083908390808284375f92019190915250505060208401524360408085019190915280518082018252908681019060029083908390808284375f920182905250606087019390935250506080808701359085015260a0808501919091526107229060c08701908701612613565b6001600160a01b031660e084015261073d60c0860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050506101008085019190915261078690860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506101208801949094525050506101608401819052610180840181905260408051602081019091528181526101a0850152336101c08501526107fc60c0870160a08801612613565b6001600160a01b031663fefd9a8b868461081960c08b018b612b25565b61082660e08d018d612b25565b6108346101008f018f612b25565b6040518963ffffffff1660e01b8152600401610857989796959493929190612b90565b6020604051808303815f875af1158015610873573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190612be6565b5f818152600760205260409020549091506001600160a01b031681816108d3576040516381c4951960e01b815260040161057891815260200190565b5060c085018290526001600160a01b0381166101408601525f868152600660209081526040909120865181559086015186919061091690600183019060026122f6565b5060408201518160020155606082015181600301906002610938929190612391565b506080820151600582015560a0820151600682015560c0820151600782015560e08201516008820180546001600160a01b0319166001600160a01b0390921691909117905561010082015160098201906109929082612c7b565b50610120820151600a8201906109a89082612c7b565b50610140820151600b820180546001600160a01b0319166001600160a01b03909216919091179055610160820151600c820155610180820151600d8201556101a0820151600e8201906109fb9082612c7b565b506101c09190910151600f90910180546001600160a01b0319166001600160a01b039283161790555f878152600960205260409020859055600254610a439116333087611d85565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b90610a7690899087908c90600401612d36565b6020604051808303815f875af1158015610a92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d51565b610ad357604051630d8dbe2560e01b815260040160405180910390fd5b610ae360c0880160a08901612613565b6001600160a01b03167f4ecb0221c454f0d5b8f84e30e1140e22464fe24db107d56ce81dadfaa1549a838787604051610b1d9291906125df565b60405180910390a250505050915091565b5f610b37611dfa565b6001600160a01b03821615801590610b5d57506002546001600160a01b03838116911614155b8290610b885760405163eddf07f560e01b81526001600160a01b039091166004820152602401610578565b5050600280546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f3906020015b60405180910390a1919050565b600660208190525f91825260409091208054600282015460058301549383015460078401546008850154600986018054959794969495939492936001600160a01b039092169291610c3490612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090612bfd565b8015610cab5780601f10610c8257610100808354040283529160200191610cab565b820191905f5260205f20905b815481529060010190602001808311610c8e57829003601f168201915b50505050509080600a018054610cc090612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90612bfd565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b505050600b840154600c850154600d860154600e8701805496976001600160a01b039094169692955090935090610d6d90612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612bfd565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b505050600f90930154919250506001600160a01b03168d565b610e05612263565b5f82815260066020908152604080832081516101e0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610e4057505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ea657505050918352505060058201546020820152600682015460408201526007820154606082015260088201546001600160a01b0316608082015260098201805460a090920191610f0790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3390612bfd565b8015610f7e5780601f10610f5557610100808354040283529160200191610f7e565b820191905f5260205f20905b815481529060010190602001808311610f6157829003601f168201915b50505050508152602001600a82018054610f9790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc390612bfd565b801561100e5780601f10610fe55761010080835404028352916020019161100e565b820191905f5260205f20905b815481529060010190602001808311610ff157829003601f168201915b5050509183525050600b8201546001600160a01b03166020820152600c8201546040820152600d8201546060820152600e8201805460809092019161105290612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461107e90612bfd565b80156110c95780601f106110a0576101008083540402835291602001916110c9565b820191905f5260205f20905b8154815290600101906020018083116110ac57829003601f168201915b5050509183525050600f91909101546001600160a01b0390811660209092019190915260e08201519192508391166111175760405163cd6f4a4f60e01b815260040161057891815260200190565b50919050565b5f611126611dfa565b5f8281526007602052604090205482906001600160a01b031661115f576040516381c4951960e01b815260040161057891815260200190565b50505f818152600760205260409081902080546001600160a01b0319169055516001907f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610bd79084815260200190565b5f6111ba611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff16611200576040516321ac7c5f60e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff1916905590519182526001917f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79101610bd7565b61125d611dfa565b6112665f611e55565b565b5f5f61127387610dfd565b90505f8160a0015111879061129e5760405163166b4d0360e01b815260040161057891815260200190565b5061018081015187906112c75760405163032c20ef60e21b815260040161057891815260200190565b506101a0810151518790156112f2576040516360ec327960e01b815260040161057891815260200190565b505f878152600660205260409020600e0161130e868883612d70565b508061014001516001600160a01b0316632f0e1bbf888888604051611334929190612e2a565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168252611377929189908990600401612e39565b602060405180830381865afa158015611392573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190612d51565b91508585836113da57604051632f9f8ab960e01b8152600401610578929190612e62565b50506113e587611ec5565b867f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca1698787604051611417929190612e62565b60405180910390a25095945050505050565b5f5f61143487610dfd565b90505f8160a0015111879061145f5760405163166b4d0360e01b815260040161057891815260200190565b5060a0810151879042811115611491576040516370c05fb960e11b815260048101929092526024820152604401610578565b50506101808101518790156114bc57604051637eb9cea960e11b815260040161057891815260200190565b505f86866040516114ce929190612e2a565b604080519182900382205f8b8152600660205291909120600d0181905560e0840151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf90611521908b9085908a908a90600401612e39565b6020604051808303815f875af115801561153d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115619190612d51565b925086868461158557604051632f9f8ab960e01b8152600401610578929190612e62565b5050877f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade07188886040516115b9929190612e62565b60405180910390a2505095945050505050565b620f424080611117565b5f5f6115e183610dfd565b90508060a001515f14839061160c57604051633e26347b60e21b815260040161057891815260200190565b506060810151514210156116335760405163a0750b5160e01b815260040160405180910390fd5b60608101516020015142111561165c57604051633d82a7cd60e11b815260040160405180910390fd5b5f8054604051630e82f3b760e41b8152600481018690526001600160a01b039091169063e82f3b7090602401602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612be6565b90505f8260800151426116da9190612e75565b5f86815260066020818152604092839020918201849055600c90910185905581518881529081018390529081018490529091507f38d3b0e32ac79e8b5ba6e95ad66f2ff3ef525893ba853ac583cd0a7c14d09e8c9060600160405180910390a1506001949350505050565b5f61174e611dfa565b81515f5b818110156117ad576001600885838151811061177057611770612a76565b60200260200101516040516117859190612e88565b908152604051908190036020019020805491151560ff19909216919091179055600101611752565b50600191507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81836040516117e19190612e9e565b60405180910390a150919050565b5f6117f8611dfa565b6001600160a01b0382161580159061182957505f838152600760205260409020546001600160a01b03838116911614155b839061184b576040516381c4951960e01b815260040161057891815260200190565b50505f8281526007602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381526001917ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a192915050565b5f6118b9611dfa565b5060038190556040518181526001907fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610bd7565b5f5f6118fd85610dfd565b90505f8160a001511185906119285760405163166b4d0360e01b815260040161057891815260200190565b5060a081015185904281116119595760405163142c294360e31b815260048101929092526024820152604401610578565b50508060e001516001600160a01b031663d927910e863387876040518563ffffffff1660e01b81526004016119919493929190612f01565b5f604051808303815f87803b1580156119a8575f5ffd5b505af11580156119ba573d5f5f3e3d5ffd5b50600198975050505050505050565b5f6119d2611dfa565b6001600160a01b038216158015906119f857506001546001600160a01b03838116911614155b8290611a23576040516320252f0b60e01b81526001600160a01b039091166004820152602401610578565b5050600180546001600160a01b0319166001600160a01b03831690811782556040519081527fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790602001610bd7565b5f611a7b612171565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015611aa75750825b90505f8267ffffffffffffffff166001148015611ac35750303b155b905081158015611ad1575080155b15611aef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b2357845468ff00000000000000001916680100000000000000001785555b611b2c3361219b565b611b35876118b0565b50611b3f8a611c30565b50611b49896119c9565b50611b5388610b2e565b50611b5d86611745565b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b038c8116911614611b9b57611b9b8b611bf3565b8315611be657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611bfb611dfa565b6001600160a01b038116611c2457604051631e4fbdf760e01b81525f6004820152602401610578565b611c2d81611e55565b50565b5f611c39611dfa565b6001600160a01b03821615801590611c5e57505f546001600160a01b03838116911614155b8290611c89576040516375ac4eb760e11b81526001600160a01b039091166004820152602401610578565b50505f80546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690602001610bd7565b5f611ce4611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff1615611d2b5760405163b29d459560e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff19166001908117909155915192835290917fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679101610bd7565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611df49085906121ac565b50505050565b33611e2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112665760405163118cdaa760e01b8152336004820152602401610578565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa158015611f0b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f329190810190612f29565b80519091505f8167ffffffffffffffff811115611f5157611f516126f1565b604051908082528060200260200182016040528015611f7a578160200160208202803683370190505b505f8581526009602052604081205491925090611f98908490612fb9565b90505f5b83811015611fca5781838281518110611fb757611fb7612a76565b6020908102919091010152600101611f9c565b505f858152600960205260408082208054929055600254600154915163095ea7b360e01b81526001600160a01b0392831660048201526024810184905291169063095ea7b3906044016020604051808303815f875af115801561202f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120539190612d51565b50600154600254604051636ec640c760e11b81526001600160a01b039283169263dd8c818e9261208c929116908990889060040161304b565b5f604051808303815f87803b1580156120a3575f5ffd5b505af11580156120b5573d5f5f3e3d5ffd5b505060025460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529116925063095ea7b391506044016020604051808303815f875af115801561210a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212e9190612d51565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a868560405161216192919061307e565b60405180910390a2505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b6121a3612218565b611c2d8161223d565b5f5f60205f8451602086015f885af1806121cb576040513d5f823e3d81fd5b50505f513d915081156121e25780600114156121ef565b6001600160a01b0384163b155b15611df457604051635274afe760e01b81526001600160a01b0385166004820152602401610578565b612220612245565b61126657604051631afcd79f60e31b815260040160405180910390fd5b611bfb612218565b5f61224e612171565b5468010000000000000000900460ff16919050565b604051806101e001604052805f815260200161227d6123bf565b81526020015f81526020016122906123bf565b81526020015f81526020015f81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215612381579160200282015f5b8382111561234f57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261230b565b801561237f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261234f565b505b5061238d9291506123dd565b5090565b8260028101928215612381579160200282015b828111156123815782518255916020019190600101906123a4565b60405180604001604052806002906020820280368337509192915050565b5b8082111561238d575f81556001016123de565b5f60208284031215612401575f5ffd5b5035919050565b5f60208284031215612418575f5ffd5b813567ffffffffffffffff81111561242e575f5ffd5b82016101208185031215612440575f5ffd5b9392505050565b805f5b6002811015611df457815163ffffffff1684526020938401939091019060010161244a565b805f5b6002811015611df4578151845260209384019390910190600101612472565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b805182525f60208201516124d66020850182612447565b506040820151606084015260608201516124f3608085018261246f565b50608082015160c084015260a082015160e084015260c082015161010084015260e082015161252e6101208501826001600160a01b03169052565b5061010082015161022061014085015261254c610220850182612491565b90506101208301518482036101608601526125678282612491565b9150506101408301516125866101808601826001600160a01b03169052565b506101608301516101a08501526101808301516101c08501526101a08301518482036101e08601526125b88282612491565b9150506101c08301516125d76102008601826001600160a01b03169052565b509392505050565b828152604060208201525f6125f760408301846124bf565b949350505050565b6001600160a01b0381168114611c2d575f5ffd5b5f60208284031215612623575f5ffd5b8135612440816125ff565b8d81528c60208201528b60408201528a60608201528960808201526001600160a01b03891660a08201526101a060c08201525f61266f6101a083018a612491565b82810360e0840152612681818a612491565b6001600160a01b038916610100850152905086610120840152856101408401528281036101608401526126b48186612491565b9150506126cd6101808301846001600160a01b03169052565b9e9d5050505050505050505050505050565b602081525f61244060208301846124bf565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561272e5761272e6126f1565b604052919050565b5f82601f830112612745575f5ffd5b813567ffffffffffffffff81111561275f5761275f6126f1565b612772601f8201601f1916602001612705565b818152846020838601011115612786575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156127b2575f5ffd5b813567ffffffffffffffff8111156127c8575f5ffd5b6125f784828501612736565b5f5f83601f8401126127e4575f5ffd5b50813567ffffffffffffffff8111156127fb575f5ffd5b602083019150836020828501011115612812575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561282d575f5ffd5b85359450602086013567ffffffffffffffff81111561284a575f5ffd5b612856888289016127d4565b909550935050604086013567ffffffffffffffff811115612875575f5ffd5b612881888289016127d4565b969995985093965092949392505050565b5f67ffffffffffffffff8211156128ab576128ab6126f1565b5060051b60200190565b5f82601f8301126128c4575f5ffd5b81356128d76128d282612892565b612705565b8082825260208201915060208360051b8601019250858311156128f8575f5ffd5b602085015b8381101561293957803567ffffffffffffffff81111561291b575f5ffd5b61292a886020838a0101612736565b845250602092830192016128fd565b5095945050505050565b5f60208284031215612953575f5ffd5b813567ffffffffffffffff811115612969575f5ffd5b6125f7848285016128b5565b5f5f60408385031215612986575f5ffd5b823591506020830135612998816125ff565b809150509250929050565b5f5f5f604084860312156129b5575f5ffd5b83359250602084013567ffffffffffffffff8111156129d2575f5ffd5b6129de868287016127d4565b9497909650939450505050565b5f5f5f5f5f5f60c08789031215612a00575f5ffd5b8635612a0b816125ff565b95506020870135612a1b816125ff565b94506040870135612a2b816125ff565b93506060870135612a3b816125ff565b92506080870135915060a087013567ffffffffffffffff811115612a5d575f5ffd5b612a6989828a016128b5565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b803563ffffffff81168114612a9d575f5ffd5b919050565b5f60208284031215612ab2575f5ffd5b61244082612a8a565b805f5b6002811015611df45763ffffffff612ad583612a8a565b1684526020938401939190910190600101612abe565b604081016121958284612abb565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612b1e57612b1e612af9565b5060010190565b5f5f8335601e19843603018112612b3a575f5ffd5b83018035915067ffffffffffffffff821115612b54575f5ffd5b602001915036819003821315612812575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b88815287602082015260a060408201525f612baf60a08301888a612b68565b8281036060840152612bc2818789612b68565b90508281036080840152612bd7818587612b68565b9b9a5050505050505050505050565b5f60208284031215612bf6575f5ffd5b5051919050565b600181811c90821680612c1157607f821691505b60208210810361111757634e487b7160e01b5f52602260045260245ffd5b601f821115612c7657805f5260205f20601f840160051c81016020851015612c545750805b601f840160051c820191505b81811015612c73575f8155600101612c60565b50505b505050565b815167ffffffffffffffff811115612c9557612c956126f1565b612ca981612ca38454612bfd565b84612c2f565b6020601f821160018114612cdb575f8315612cc45750848201515b5f19600385901b1c1916600184901b178455612c73565b5f84815260208120601f198516915b82811015612d0a5787850151825560209485019460019092019101612cea565b5084821015612d2757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016125f76040830184612abb565b5f60208284031215612d61575f5ffd5b81518015158114612440575f5ffd5b67ffffffffffffffff831115612d8857612d886126f1565b612d9c83612d968354612bfd565b83612c2f565b5f601f841160018114612dcd575f8515612db65750838201355b5f19600387901b1c1916600186901b178355612c73565b5f83815260208120601f198716915b82811015612dfc5786850135825560209485019460019092019101612ddc565b5086821015612e18575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b848152836020820152606060408201525f612e58606083018486612b68565b9695505050505050565b602081525f6125f7602083018486612b68565b8082018082111561219557612195612af9565b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612ef557603f19878603018452612ee0858351612491565b94506020938401939190910190600101612ec4565b50929695505050505050565b8481526001600160a01b0384166020820152606060408201525f612e58606083018486612b68565b5f60208284031215612f39575f5ffd5b815167ffffffffffffffff811115612f4f575f5ffd5b8201601f81018413612f5f575f5ffd5b8051612f6d6128d282612892565b8082825260208201915060208360051b850101925086831115612f8e575f5ffd5b6020840193505b82841015612e58578351612fa8816125ff565b825260209384019390910190612f95565b5f82612fd357634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b828110156130115781516001600160a01b0316865260209586019590910190600101612fea565b5093949350505050565b5f8151808452602084019350602083015f5b8281101561301157815186526020958601959091019060010161302d565b6001600160a01b0384168152606060208201525f61306c6060830185612fd8565b8281036040840152612e58818561301b565b604081525f6130906040830185612fd8565b82810360208401526130a2818561301b565b9594505050505056fea164736f6c634300081c000a";
11
+ readonly abi: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputAlreadyPublished","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputNotPublished","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"CommitteeDutiesCompleted","type":"error"},{"inputs":[],"name":"CommitteeSelectionFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3AlreadyComplete","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3AlreadyFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3DoesNotExist","type":"error"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramNotAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"FailureConditionNotMet","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"inputDeadline","type":"uint256"}],"name":"InputDeadlineNotReached","type":"error"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"bondingRegistry","type":"address"}],"name":"InvalidBondingRegistry","type":"error"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"ciphernodeRegistry","type":"address"}],"name":"InvalidCiphernodeRegistry","type":"error"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"InvalidDuration","type":"error"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"InvalidEncryptionScheme","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"feeToken","type":"address"}],"name":"InvalidFeeToken","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"InvalidInputDeadline","type":"error"},{"inputs":[{"internalType":"uint256","name":"end","type":"uint256"}],"name":"InvalidInputDeadlineEnd","type":"error"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"}],"name":"InvalidInputDeadlineStart","type":"error"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"}],"name":"InvalidOutput","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"enum IEnclave.E3Stage","name":"expected","type":"uint8"},{"internalType":"enum IEnclave.E3Stage","name":"actual","type":"uint8"}],"name":"InvalidStage","type":"error"},{"inputs":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"}],"name":"InvalidThreshold","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleAlreadyEnabled","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleNotEnabled","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"PaymentRequired","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"PlaintextOutputAlreadyPublished","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes[]","name":"e3ProgramParams","type":"bytes[]"}],"name":"AllowedE3ProgramsParamsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bondingRegistry","type":"address"}],"name":"BondingRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ciphernodeRegistry","type":"address"}],"name":"CiphernodeRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"ciphertextOutput","type":"bytes"}],"name":"CiphertextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CommitteeFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CommitteeFormed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"failedAtStage","type":"uint8"},{"indexed":false,"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"name":"E3Failed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"honestNodeCount","type":"uint256"}],"name":"E3FailureProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"e3RefundManager","type":"address"}],"name":"E3RefundManagerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"indexed":false,"internalType":"struct E3","name":"e3","type":"tuple"},{"indexed":true,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"previousStage","type":"uint8"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"newStage","type":"uint8"}],"name":"E3StageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"inputHash","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"InputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxDuration","type":"uint256"}],"name":"MaxDurationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"plaintextOutput","type":"bytes"}],"name":"PlaintextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"nodes","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"RewardsDistributed","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"indexed":false,"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"name":"TimeoutConfigUpdated","type":"event"},{"inputs":[],"name":"bondingRegistry","outputs":[{"internalType":"contract IBondingRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"checkFailureCondition","outputs":[{"internalType":"bool","name":"canFail","type":"bool"},{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ciphernodeRegistry","outputs":[{"internalType":"contract ICiphernodeRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"decryptionVerifiers","outputs":[{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"disableE3Program","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"disableEncryptionScheme","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3Payments","outputs":[{"internalType":"uint256","name":"e3Payment","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"e3Programs","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"}],"name":"e3ProgramsParams","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"e3RefundManager","outputs":[{"internalType":"contract IE3RefundManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3s","outputs":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"enableE3Program","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getDeadlines","outputs":[{"components":[{"internalType":"uint256","name":"dkgDeadline","type":"uint256"},{"internalType":"uint256","name":"computeDeadline","type":"uint256"},{"internalType":"uint256","name":"decryptionDeadline","type":"uint256"}],"internalType":"struct IEnclave.E3Deadlines","name":"deadlines","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"getDecryptionVerifier","outputs":[{"internalType":"contract IDecryptionVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getE3","outputs":[{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct IEnclave.E3RequestParams","name":"","type":"tuple"}],"name":"getE3Quote","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getE3Stage","outputs":[{"internalType":"enum IEnclave.E3Stage","name":"stage","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getFailureReason","outputs":[{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getRequester","outputs":[{"internalType":"address","name":"requester","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeoutConfig","outputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"},{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"},{"internalType":"contract IE3RefundManager","name":"_e3RefundManager","type":"address"},{"internalType":"contract IERC20","name":"_feeToken","type":"address"},{"internalType":"uint256","name":"_maxDuration","type":"uint256"},{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"},{"internalType":"bytes[]","name":"_e3ProgramsParams","type":"bytes[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"markE3Failed","outputs":[{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nexte3Id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"onCommitteeFinalized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes32","name":"committeePublicKeyHash","type":"bytes32"}],"name":"onCommitteePublished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint8","name":"reason","type":"uint8"}],"name":"onE3Failed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"processE3Failure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"ciphertextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishCiphertextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishPlaintextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct IEnclave.E3RequestParams","name":"requestParams","type":"tuple"}],"name":"request","outputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"bytes","name":"e3ProgramParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"}],"name":"setBondingRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"}],"name":"setCiphernodeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"name":"setDecryptionVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_e3ProgramsParams","type":"bytes[]"}],"name":"setE3ProgramsParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IE3RefundManager","name":"_e3RefundManager","type":"address"}],"name":"setE3RefundManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_feeToken","type":"address"}],"name":"setFeeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDuration","type":"uint256"}],"name":"setMaxDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"name":"setTimeoutConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}];
12
+ readonly bytecode: "0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613f05806100d65f395ff3fe608060405234801561000f575f5ffd5b5060043610610260575f3560e01c80638da5cb5b1161014b578063cb649617116100bf578063f0691cba11610084578063f0691cba14610657578063f2fde38b1461066a578063f81b8ef61461067d578063fad8e11114610690578063fd2f3d01146106a3578063ff72aa51146106b6575f5ffd5b8063cb649617146105e6578063cbd16872146105ef578063cf0f34c414610602578063cfbdc98d14610615578063e59e469514610644575f5ffd5b8063929a8faf11610110578063929a8faf1461054257806399c6679d146105635780639c8570c81461058b578063b68fd1be1461059e578063bb2d1b82146105b1578063c4ccafa2146105c4575f5ffd5b80638da5cb5b146104a55780638dcdd86b146104ad57806390173a41146104bf5780639117173c146104fa578063923123861461050d575f5ffd5b8063459d9294116101e25780636db5c8fd116101a75780636db5c8fd14610448578063715018a6146104515780637cfa9d74146104595780637edcd7ab1461046c57806381476ec21461047f5780638581424314610492575f5ffd5b8063459d9294146103be5780634e92ec63146103fc5780634fc772641461040f578063647846a51461042257806369c5b34714610435575f5ffd5b806336c5d38a1161022857806336c5d38a146103135780634017daf014610342578063406ed35c1461036c5780634147a3601461038c57806341739f12146103ab575f5ffd5b806302a3a9c9146102645780630ef81b2f1461027957806310bc6281146102b757806315cce224146102df578063205cd34c146102f2575b5f5ffd5b610277610272366004613108565b6106d7565b005b6102a1610287366004613123565b5f908152600860205260409020546001600160a01b031690565b6040516102ae919061313a565b60405180910390f35b6102a16102c5366004613123565b60086020525f90815260409020546001600160a01b031681565b6102776102ed366004613108565b610783565b61030561030036600461314e565b610828565b6040519081526020016102ae565b610335610321366004613123565b5f908152600d602052604090205460ff1690565b6040516102ae91906131ad565b610355610350366004613123565b610834565b6040516102ae9b9a999897969594939291906131e9565b61037f61037a366004613123565b610a3e565b6040516102ae91906133c8565b61030561039a366004613123565b600a6020525f908152604090205481565b6102776103b93660046133ea565b610d44565b6103ec6103cc3660046134b3565b805160208183018101805160098252928201919093012091525460ff1681565b60405190151581526020016102ae565b61027761040a366004613123565b610d58565b61027761041d366004613108565b610de7565b6003546102a1906001600160a01b031681565b61027761044336600461359b565b610e7a565b61030560045481565b610277610fe0565b610277610467366004613123565b610ff3565b6103ec61047a366004613688565b6110f1565b61027761048d3660046136ff565b611312565b6001546102a1906001600160a01b031681565b6102a1611402565b5f546102a1906001600160a01b031681565b6104c7611430565b6040516102ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b610277610508366004613123565b611484565b61052061051b366004613123565b61161c565b60408051825181526020808401519082015291810151908201526060016102ae565b610555610550366004613123565b611675565b6040516102ae92919061371f565b6102a1610571366004613123565b5f908152600e60205260409020546001600160a01b031690565b6103ec610599366004613688565b61169c565b6102776105ac366004613735565b6118cf565b6102776105bf366004613766565b611972565b6103ec6105d2366004613108565b60066020525f908152604090205460ff1681565b61030560055481565b6102776105fd366004613799565b611a18565b610277610610366004613123565b611acb565b610637610623366004613123565b5f908152600b602052604090205460ff1690565b6040516102ae91906137cc565b610277610652366004613108565b611b08565b6002546102a1906001600160a01b031681565b610277610678366004613108565b611ba2565b61033561068b366004613123565b611bdc565b61027761069e366004613108565b611d6c565b6102776106b1366004613108565b611e04565b6106c96106c436600461314e565b611e9b565b6040516102ae9291906137da565b6106df612548565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964204533526566756e644d616e6167657220616464726573730060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed905f90a250565b61078b612548565b6001600160a01b038116158015906107b157506003546001600160a01b03828116911614155b81906107d15760405163eddf07f560e01b8152600401610731919061313a565b50600380546001600160a01b0319166001600160a01b0383161790556040517f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f39061081d90839061313a565b60405180910390a150565b620f4240805b50919050565b600760208190525f9182526040909120805460028201546005830154600684015494840180549395929491936001600160a01b0390931692610875906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a1906137f2565b80156108ec5780601f106108c3576101008083540402835291602001916108ec565b820191905f5260205f20905b8154815290600101906020018083116108cf57829003601f168201915b505050505090806008018054610901906137f2565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906137f2565b80156109785780601f1061094f57610100808354040283529160200191610978565b820191905f5260205f20905b81548152906001019060200180831161095b57829003601f168201915b5050506009840154600a850154600b860154600c8701805496976001600160a01b0390941696929550909350906109ae906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546109da906137f2565b8015610a255780601f106109fc57610100808354040283529160200191610a25565b820191905f5260205f20905b815481529060010190602001808311610a0857829003601f168201915b505050600d90930154919250506001600160a01b03168b565b610a46612f72565b5f82815260076020908152604080832081516101a0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610a8157505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ae75750505091835250506005820154602082015260068201546001600160a01b03166040820152600782018054606090920191610b34906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b60906137f2565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050508152602001600882018054610bc4906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf0906137f2565b8015610c3b5780601f10610c1257610100808354040283529160200191610c3b565b820191905f5260205f20905b815481529060010190602001808311610c1e57829003601f168201915b505050918352505060098201546001600160a01b03166020820152600a8201546040820152600b8201546060820152600c82018054608090920191610c7f906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610cab906137f2565b8015610cf65780601f10610ccd57610100808354040283529160200191610cf6565b820191905f5260205f20905b815481529060010190602001808311610cd957829003601f168201915b5050509183525050600d91909101546001600160a01b0390811660209092019190915260a082015191925083911661082e5760405163cd6f4a4f60e01b815260040161073191815260200190565b610d4c612548565b610d558161257a565b50565b610d60612548565b5f8181526008602052604090205481906001600160a01b0316610d99576040516381c4951960e01b815260040161073191815260200190565b505f818152600860205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc9061081d9083815260200190565b610def612548565b6001600160a01b0381165f90815260066020526040902054819060ff16610e2a576040516321ac7c5f60e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79061081d90839061313a565b5f610e83612707565b805490915060ff600160401b82041615906001600160401b03165f81158015610ea95750825b90505f826001600160401b03166001148015610ec45750303b155b905081158015610ed2575080155b15610ef05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f1a57845460ff60401b1916600160401b1785555b610f2333612731565b610f2c88611acb565b610f358c611d6c565b610f3e8b611b08565b610f478a6106d7565b610f5089610783565b610f598761257a565b610f62866118cf565b610f6a611402565b6001600160a01b03168d6001600160a01b031614610f8b57610f8b8d611ba2565b8315610fd157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b610fe8612548565b610ff15f612742565b565b5f546001600160a01b0316331461101c5760405162461bcd60e51b815260040161073190613824565b5f818152600b602052604090205460ff16600181600681111561104157611041613185565b1461106657816001826040516337e1404160e01b815260040161073193929190613855565b5f828152600b60205260409020805460ff19166002179055600f5461108b904261388a565b5f838152600c602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a2815f516020613ed95f395f51905f52600160026040516110e592919061389d565b60405180910390a25050565b5f5f6110fc87610a3e565b5f888152600b602052604090205490915060ff16600481600681111561112457611124613185565b148860048390919261114c576040516337e1404160e01b815260040161073193929190613855565b5050505f888152600c602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052908990428110156111af576040516308f3034360e31b815260048101929092526024820152604401610731565b50505f898152600760205260409020600c016111cc888a83613917565b508261010001516001600160a01b0316632f0e1bbf8a8a8a6040516111f29291906139cb565b6040519081900381206001600160e01b031960e085901b16825261121d92918b908b90600401613a02565b602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c9190613a2b565b935087878561128057604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff191660051790556112a3896127b2565b887f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca16989896040516112d5929190613a4a565b60405180910390a2885f516020613ed95f395f51905f52600460056040516112fe92919061389d565b60405180910390a250505095945050505050565b5f546001600160a01b0316331461133b5760405162461bcd60e51b815260040161073190613824565b5f828152600b602052604090205460ff16600281600681111561136057611360613185565b1461138557826002826040516337e1404160e01b815260040161073193929190613855565b5f838152600b60209081526040808320805460ff191660031790556007909152808220600a018490555184917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a2825f516020613ed95f395f51905f52600260036040516113f592919061389d565b60405180910390a2505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b61145760405180608001604052805f81526020015f81526020015f81526020015f81525090565b5060408051608081018252600f548152601054602082015260115491810191909152601254606082015290565b5f818152600b602052604090205460ff1660068160068111156114a9576114a9613185565b146114e65760405162461bcd60e51b815260206004820152600d60248201526c114cc81b9bdd0819985a5b1959609a1b6044820152606401610731565b5f828152600a6020526040902054806115385760405162461bcd60e51b8152602060048201526014602482015273139bc81c185e5b595b9d081d1bc81c99599d5b9960621b6044820152606401610731565b5f838152600a6020526040812081905561155184612a5f565b600254600354919250611571916001600160a01b03908116911684612b54565b6002546040516345ac612360e11b81526001600160a01b0390911690638b58c246906115a590879086908690600401613aa0565b5f604051808303815f87803b1580156115bc575f5ffd5b505af11580156115ce573d5f5f3e3d5ffd5b50505050837f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a0731783835160405161160e929190918252602082015260400190565b60405180910390a250505050565b61163d60405180606001604052805f81526020015f81526020015f81525090565b505f908152600c6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b5f818152600b6020526040812054819060ff166116928482612bb1565b9250925050915091565b5f5f6116a787610a3e565b5f888152600c60209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509088904281101561170c576040516308f3034360e31b815260048101929092526024820152604401610731565b50506060820151602001518890428111156117435760405163017e35e560e71b815260048101929092526024820152604401610731565b505061014082015188901561176e57604051637eb9cea960e11b815260040161073191815260200190565b505f87876040516117809291906139cb565b604080519182900382205f8c8152600760205291909120600b0181905560a0850151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf906117d3908c9085908b908b90600401613a02565b6020604051808303815f875af11580156117ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118139190613a2b565b935087878561183757604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff1916600417905560115461185e904261388a565b5f8a8152600c602052604090819020600201919091555189907f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade071906118a6908b908b90613a4a565b60405180910390a2885f516020613ed95f395f51905f52600360046040516112fe92919061389d565b6118d7612548565b80515f5b8181101561193657600160098483815181106118f9576118f9613ac7565b602002602001015160405161190e9190613adb565b908152604051908190036020019020805491151560ff199092169190911790556001016118db565b507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81826040516119669190613af1565b60405180910390a15050565b5f546001600160a01b0316331461199b5760405162461bcd60e51b815260040161073190613824565b5f8160ff161180156119b15750600c8160ff1611155b6119f65760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103330b4b63ab932903932b0b9b7b760511b6044820152606401610731565b611a14828260ff16600c811115611a0f57611a0f613185565b612d39565b5050565b611a20612548565b6001600160a01b03811615801590611a5157505f828152600860205260409020546001600160a01b03828116911614155b8290611a73576040516381c4951960e01b815260040161073191815260200190565b505f8281526008602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb699101611966565b611ad3612548565b60048190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b5235529060200161081d565b611b10612548565b6001600160a01b03811615801590611b3657506001546001600160a01b03828116911614155b8190611b56576040516320252f0b60e01b8152600401610731919061313a565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a79061081d90839061313a565b611baa612548565b6001600160a01b038116611bd3575f604051631e4fbdf760e01b8152600401610731919061313a565b610d5581612742565b5f818152600b602052604081205460ff1681816006811115611c0057611c00613185565b03611c2557826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115611c3957611c39613185565b03611c5a5760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115611c6e57611c6e613185565b03611c8f57604051633de16e3560e11b815260048101849052602401610731565b5f611c9a8483612bb1565b9350905080611cbf57604051639f65d93560e01b815260048101859052602401610731565b5f848152600b60209081526040808320805460ff19908116600617909155600d9092529091208054859216600183600c811115611cfe57611cfe613185565b0217905550835f516020613ed95f395f51905f52836006604051611d2392919061389d565b60405180910390a2837fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8385604051611d5d929190613b54565b60405180910390a25050919050565b611d74612548565b6001600160a01b03811615801590611d9957505f546001600160a01b03828116911614155b8190611db9576040516375ac4eb760e11b8152600401610731919061313a565b505f80546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b69061081d90839061313a565b611e0c612548565b6001600160a01b0381165f90815260066020526040902054819060ff1615611e485760405163b29d459560e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679061081d90839061313a565b5f611ea4612f72565b611eb16020840184613b87565b63ffffffff16611ec76040850160208601613b87565b63ffffffff1610158015611eec57505f611ee46020850185613b87565b63ffffffff16115b8390611f0c57604051633744092160e21b81526004016107319190613bd0565b50604083013542811015611f3657604051630b99e87960e01b815260040161073191815260200190565b5060608301356040840135811015611f645760405163174b5a0760e21b815260040161073191815260200190565b506011546010545f9190611f7c426060880135613bde565b611f86919061388a565b611f90919061388a565b905060045481108190611fb9576040516313b783af60e21b815260040161073191815260200190565b5060065f611fcd60a0870160808801613108565b6001600160a01b0316815260208101919091526040015f205460ff16611ff960a0860160808701613108565b906120185760405163295a6a6f60e11b8152600401610731919061313a565b505f61202385610828565b60058054955090915084905f61203883613bf1565b90915550506040805144602080830191909152818301879052825180830384018152606090920183528151910120808552815180830183529091879060029083908390808284375f92019190915250505060208501524360408086019190915280518082018252908781019060029083908390808284375f92019190915250505060608501526120ce60a0870160808801613108565b6001600160a01b031660a0808601919091526120ec90870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c085015261213160e0870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525060e0890194909452505050610120850181905261014085018190526040805160208101909152818152610160860152336101808601526121a660a0880160808901613108565b6001600160a01b031663fefd9a8b87846121c360a08c018c613c09565b6121d060c08e018e613c09565b8e8060e001906121e09190613c09565b6040518963ffffffff1660e01b8152600401612203989796959493929190613c4b565b6020604051808303815f875af115801561221f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122439190613ca1565b5f818152600860205260409020549091506001600160a01b0316818161227f576040516381c4951960e01b815260040161073191815260200190565b50608086018290526001600160a01b0381166101008701525f87815260076020908152604090912087518155908701518791906122c29060018301906002612ff9565b50604082015181600201556060820151816003019060026122e4929190613094565b506080820151600582015560a08201516006820180546001600160a01b0319166001600160a01b0390921691909117905560c082015160078201906123299082613cb8565b5060e0820151600882019061233e9082613cb8565b506101008201516009820180546001600160a01b0319166001600160a01b03909216919091179055610120820151600a820155610140820151600b820155610160820151600c8201906123919082613cb8565b506101809190910151600d90910180546001600160a01b0319166001600160a01b039283161790555f888152600a602052604090208590556003546123d99116333087612e8a565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b9061240c908a9087908d90600401613d6d565b6020604051808303815f875af1158015612428573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613a2b565b61246957604051630d8dbe2560e01b815260040160405180910390fd5b5f878152600b60209081526040808320805460ff19166001179055600e82529091208054336001600160a01b03199091161790556010546060880151909101516124b3919061388a565b5f888152600c60205260409020600101556124d460a0890160808a01613108565b6001600160a01b03167fe009e1827a616eb52d6aa3823303e01f235985c9da7b43cbcc95f54b0338785d888860405161250e9291906137da565b60405180910390a2865f516020613ed95f395f51905f525f600160405161253692919061389d565b60405180910390a25050505050915091565b33612551611402565b6001600160a01b031614610ff1573360405163118cdaa760e01b8152600401610731919061313a565b80356125bd5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420444b472077696e646f7760701b6044820152606401610731565b5f8160200135116126095760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6d707574652077696e646f7760501b6044820152606401610731565b5f8160400135116126585760405162461bcd60e51b8152602060048201526019602482015278496e76616c69642064656372797074696f6e2077696e646f7760381b6044820152606401610731565b5f8160600135116126a25760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b6044820152606401610731565b8035600f819055602080830135601081905560408085013560118190556060808701356012819055835196875294860193909352908401528201527f78e25a99f479f23adb3b0ac527204b39c8f57afa01a2595ad3b9b605bf0be22e9060800161081d565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b612739612ec9565b610d5581612eee565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa1580156127f8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281f9190810190613d88565b80519091505f816001600160401b0381111561283d5761283d613404565b604051908082528060200260200182016040528015612866578160200160208202803683370190505b505f858152600a602052604081205491925090612884908490613e17565b90505f5b838110156128b657818382815181106128a3576128a3613ac7565b6020908102919091010152600101612888565b505f858152600a60205260408082208054929055600354600154915163095ea7b360e01b81526001600160a01b039182169263095ea7b3926128ff929116908590600401613e36565b6020604051808303815f875af115801561291b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613a2b565b50600154600354604051636ec640c760e11b81526001600160a01b039283169263dd8c818e926129789291169089908890600401613e7f565b5f604051808303815f87803b15801561298f575f5ffd5b505af11580156129a1573d5f5f3e3d5ffd5b505060035460015460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506129dc92909116905f90600401613e36565b6020604051808303815f875af11580156129f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1c9190613a2b565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8685604051612a4f929190613eb4565b60405180910390a2505050505050565b5f818152600d602052604090205460609060ff16600181600c811115612a8757612a87613185565b1480612aa45750600281600c811115612aa257612aa2613185565b145b15612adc575f5b604051908082528060200260200182016040528015612ad4578160200160208202803683370190505b509392505050565b5f54604051630a01649360e41b8152600481018590526001600160a01b039091169063a0164930906024015f60405180830381865afa925050508015612b4357506040513d5f823e601f3d908101601f19168201604052612b409190810190613d88565b60015b612b4d575f612aab565b9392505050565b612bac83846001600160a01b031663a9059cbb8585604051602401612b7a929190613e36565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612ef6565b505050565b5f828152600c60209081526040808320815160608101835281548152600182015493810193909352600201548282015282549051632800d82960e01b81526004810186905283929183916001600160a01b0390911690632800d82990602401602060405180830381865afa158015612c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4f9190613ca1565b90506001856006811115612c6557612c65613185565b148015612c7157508042115b15612c8457600180935093505050612d32565b6002856006811115612c9857612c98613185565b148015612ca55750815142115b15612cb95760016003935093505050612d32565b6003856006811115612ccd57612ccd613185565b148015612cdd5750816020015142115b15612cf15760016006935093505050612d32565b6004856006811115612d0557612d05613185565b148015612d155750816040015142115b15612d29576001600a935093505050612d32565b5f5f9350935050505b9250929050565b5f828152600b602052604081205460ff1690816006811115612d5d57612d5d613185565b03612d8257826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115612d9657612d96613185565b03612db75760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115612dcb57612dcb613185565b03612dec57604051633de16e3560e11b815260048101849052602401610731565b5f838152600b60209081526040808320805460ff19908116600617909155600d9092529091208054849216600183600c811115612e2b57612e2b613185565b0217905550825f516020613ed95f395f51905f52826006604051612e5092919061389d565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb82846040516113f5929190613b54565b6040516001600160a01b038481166024830152838116604483015260648201839052612ec39186918216906323b872dd90608401612b7a565b50505050565b612ed1612f59565b610ff157604051631afcd79f60e31b815260040160405180910390fd5b611baa612ec9565b5f5f60205f8451602086015f885af180612f15576040513d5f823e3d81fd5b50505f513d91508115612f2c578060011415612f39565b6001600160a01b0384163b155b15612ec35783604051635274afe760e01b8152600401610731919061313a565b5f612f62612707565b54600160401b900460ff16919050565b604051806101a001604052805f8152602001612f8c6130c2565b81526020015f8152602001612f9f6130c2565b81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215613084579160200282015f5b8382111561305257835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261300e565b80156130825782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613052565b505b506130909291506130e0565b5090565b8260028101928215613084579160200282015b828111156130845782518255916020019190600101906130a7565b60405180604001604052806002906020820280368337509192915050565b5b80821115613090575f81556001016130e1565b6001600160a01b0381168114610d55575f5ffd5b5f60208284031215613118575f5ffd5b8135612b4d816130f4565b5f60208284031215613133575f5ffd5b5035919050565b6001600160a01b0391909116815260200190565b5f6020828403121561315e575f5ffd5b81356001600160401b03811115613173575f5ffd5b82016101008185031215612b4d575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b600d81106131a9576131a9613185565b9052565b6020810161272b8284613199565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8b81528a602082015289604082015260018060a01b038916606082015261016060808201525f61321d61016083018a6131bb565b82810360a084015261322f818a6131bb565b6001600160a01b03891660c085015260e084018890526101008401879052838103610120850152905061326281866131bb565b91505060018060a01b0383166101408301529c9b505050505050505050505050565b805f5b6002811015612ec357815163ffffffff16845260209384019390910190600101613287565b805f5b6002811015612ec35781518452602093840193909101906001016132af565b805182525f60208201516132e56020850182613284565b5060408201516060840152606082015161330260808501826132ac565b50608082015160c084015260a08201516001600160a01b03811660e08501525060c08201516101e061010085015261333e6101e08501826131bb565b905060e083015184820361012086015261335882826131bb565b9150506101008301516133776101408601826001600160a01b03169052565b506101208301516101608501526101408301516101808501526101608301518482036101a08601526133a982826131bb565b915050610180830151612ad46101c08601826001600160a01b03169052565b602081525f612b4d60208301846132ce565b5f6080828403121561082e575f5ffd5b5f608082840312156133fa575f5ffd5b612b4d83836133da565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561344057613440613404565b604052919050565b5f82601f830112613457575f5ffd5b81356001600160401b0381111561347057613470613404565b613483601f8201601f1916602001613418565b818152846020838601011115613497575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156134c3575f5ffd5b81356001600160401b038111156134d8575f5ffd5b6134e484828501613448565b949350505050565b5f6001600160401b0382111561350457613504613404565b5060051b60200190565b5f82601f83011261351d575f5ffd5b813561353061352b826134ec565b613418565b8082825260208201915060208360051b860101925085831115613551575f5ffd5b602085015b838110156135915780356001600160401b03811115613573575f5ffd5b613582886020838a0101613448565b84525060209283019201613556565b5095945050505050565b5f5f5f5f5f5f5f5f610160898b0312156135b3575f5ffd5b88356135be816130f4565b975060208901356135ce816130f4565b965060408901356135de816130f4565b955060608901356135ee816130f4565b945060808901356135fe816130f4565b935060a089013592506136148a60c08b016133da565b91506101408901356001600160401b0381111561362f575f5ffd5b61363b8b828c0161350e565b9150509295985092959890939650565b5f5f83601f84011261365b575f5ffd5b5081356001600160401b03811115613671575f5ffd5b602083019150836020828501011115612d32575f5ffd5b5f5f5f5f5f6060868803121561369c575f5ffd5b8535945060208601356001600160401b038111156136b8575f5ffd5b6136c48882890161364b565b90955093505060408601356001600160401b038111156136e2575f5ffd5b6136ee8882890161364b565b969995985093965092949392505050565b5f5f60408385031215613710575f5ffd5b50508035926020909101359150565b821515815260408101612b4d6020830184613199565b5f60208284031215613745575f5ffd5b81356001600160401b0381111561375a575f5ffd5b6134e48482850161350e565b5f5f60408385031215613777575f5ffd5b82359150602083013560ff8116811461378e575f5ffd5b809150509250929050565b5f5f604083850312156137aa575f5ffd5b82359150602083013561378e816130f4565b600781106131a9576131a9613185565b6020810161272b82846137bc565b828152604060208201525f6134e460408301846132ce565b600181811c9082168061380657607f821691505b60208210810361082e57634e487b7160e01b5f52602260045260245ffd5b6020808252601790820152764f6e6c79204369706865726e6f6465526567697374727960481b604082015260600190565b8381526060810161386960208301856137bc565b6134e460408301846137bc565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561272b5761272b613876565b604081016138ab82856137bc565b612b4d60208301846137bc565b601f821115612bac57805f5260205f20601f840160051c810160208510156138dd5750805b601f840160051c820191505b818110156138fc575f81556001016138e9565b5050505050565b5f19600383901b1c191660019190911b1790565b6001600160401b0383111561392e5761392e613404565b6139428361393c83546137f2565b836138b8565b5f601f84116001811461396e575f851561395c5750838201355b6139668682613903565b8455506138fc565b5f83815260208120601f198716915b8281101561399d578685013582556020948501946001909201910161397d565b50868210156139b9575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201525f613a216060830184866139da565b9695505050505050565b5f60208284031215613a3b575f5ffd5b81518015158114612b4d575f5ffd5b602081525f6134e46020830184866139da565b5f8151808452602084019350602083015f5b82811015613a965781516001600160a01b0316865260209586019590910190600101613a6f565b5093949350505050565b838152826020820152606060408201525f613abe6060830184613a5d565b95945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613b4857603f19878603018452613b338583516131bb565b94506020938401939190910190600101613b17565b50929695505050505050565b60408101613b6282856137bc565b612b4d6020830184613199565b803563ffffffff81168114613b82575f5ffd5b919050565b5f60208284031215613b97575f5ffd5b612b4d82613b6f565b805f5b6002811015612ec35763ffffffff613bba83613b6f565b1684526020938401939190910190600101613ba3565b6040810161272b8284613ba0565b8181038181111561272b5761272b613876565b5f60018201613c0257613c02613876565b5060010190565b5f5f8335601e19843603018112613c1e575f5ffd5b8301803591506001600160401b03821115613c37575f5ffd5b602001915036819003821315612d32575f5ffd5b88815287602082015260a060408201525f613c6a60a08301888a6139da565b8281036060840152613c7d8187896139da565b90508281036080840152613c928185876139da565b9b9a5050505050505050505050565b5f60208284031215613cb1575f5ffd5b5051919050565b81516001600160401b03811115613cd157613cd1613404565b613ce581613cdf84546137f2565b846138b8565b6020601f821160018114613d12575f8315613d005750848201515b613d0a8482613903565b8555506138fc565b5f84815260208120601f198516915b82811015613d415787850151825560209485019460019092019101613d21565b5084821015613d5e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016134e46040830184613ba0565b5f60208284031215613d98575f5ffd5b81516001600160401b03811115613dad575f5ffd5b8201601f81018413613dbd575f5ffd5b8051613dcb61352b826134ec565b8082825260208201915060208360051b850101925086831115613dec575f5ffd5b6020840193505b82841015613a21578351613e06816130f4565b825260209384019390910190613df3565b5f82613e3157634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03929092168252602082015260400190565b5f8151808452602084019350602083015f5b82811015613a96578151865260209586019590910190600101613e61565b6001600160a01b03841681526060602082018190525f90613ea290830185613a5d565b8281036040840152613a218185613e4f565b604081525f613ec66040830185613a5d565b8281036020840152613abe8185613e4f56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967a164736f6c634300081c000a";
13
+ readonly deployedBytecode: "0x608060405234801561000f575f5ffd5b5060043610610260575f3560e01c80638da5cb5b1161014b578063cb649617116100bf578063f0691cba11610084578063f0691cba14610657578063f2fde38b1461066a578063f81b8ef61461067d578063fad8e11114610690578063fd2f3d01146106a3578063ff72aa51146106b6575f5ffd5b8063cb649617146105e6578063cbd16872146105ef578063cf0f34c414610602578063cfbdc98d14610615578063e59e469514610644575f5ffd5b8063929a8faf11610110578063929a8faf1461054257806399c6679d146105635780639c8570c81461058b578063b68fd1be1461059e578063bb2d1b82146105b1578063c4ccafa2146105c4575f5ffd5b80638da5cb5b146104a55780638dcdd86b146104ad57806390173a41146104bf5780639117173c146104fa578063923123861461050d575f5ffd5b8063459d9294116101e25780636db5c8fd116101a75780636db5c8fd14610448578063715018a6146104515780637cfa9d74146104595780637edcd7ab1461046c57806381476ec21461047f5780638581424314610492575f5ffd5b8063459d9294146103be5780634e92ec63146103fc5780634fc772641461040f578063647846a51461042257806369c5b34714610435575f5ffd5b806336c5d38a1161022857806336c5d38a146103135780634017daf014610342578063406ed35c1461036c5780634147a3601461038c57806341739f12146103ab575f5ffd5b806302a3a9c9146102645780630ef81b2f1461027957806310bc6281146102b757806315cce224146102df578063205cd34c146102f2575b5f5ffd5b610277610272366004613108565b6106d7565b005b6102a1610287366004613123565b5f908152600860205260409020546001600160a01b031690565b6040516102ae919061313a565b60405180910390f35b6102a16102c5366004613123565b60086020525f90815260409020546001600160a01b031681565b6102776102ed366004613108565b610783565b61030561030036600461314e565b610828565b6040519081526020016102ae565b610335610321366004613123565b5f908152600d602052604090205460ff1690565b6040516102ae91906131ad565b610355610350366004613123565b610834565b6040516102ae9b9a999897969594939291906131e9565b61037f61037a366004613123565b610a3e565b6040516102ae91906133c8565b61030561039a366004613123565b600a6020525f908152604090205481565b6102776103b93660046133ea565b610d44565b6103ec6103cc3660046134b3565b805160208183018101805160098252928201919093012091525460ff1681565b60405190151581526020016102ae565b61027761040a366004613123565b610d58565b61027761041d366004613108565b610de7565b6003546102a1906001600160a01b031681565b61027761044336600461359b565b610e7a565b61030560045481565b610277610fe0565b610277610467366004613123565b610ff3565b6103ec61047a366004613688565b6110f1565b61027761048d3660046136ff565b611312565b6001546102a1906001600160a01b031681565b6102a1611402565b5f546102a1906001600160a01b031681565b6104c7611430565b6040516102ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b610277610508366004613123565b611484565b61052061051b366004613123565b61161c565b60408051825181526020808401519082015291810151908201526060016102ae565b610555610550366004613123565b611675565b6040516102ae92919061371f565b6102a1610571366004613123565b5f908152600e60205260409020546001600160a01b031690565b6103ec610599366004613688565b61169c565b6102776105ac366004613735565b6118cf565b6102776105bf366004613766565b611972565b6103ec6105d2366004613108565b60066020525f908152604090205460ff1681565b61030560055481565b6102776105fd366004613799565b611a18565b610277610610366004613123565b611acb565b610637610623366004613123565b5f908152600b602052604090205460ff1690565b6040516102ae91906137cc565b610277610652366004613108565b611b08565b6002546102a1906001600160a01b031681565b610277610678366004613108565b611ba2565b61033561068b366004613123565b611bdc565b61027761069e366004613108565b611d6c565b6102776106b1366004613108565b611e04565b6106c96106c436600461314e565b611e9b565b6040516102ae9291906137da565b6106df612548565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964204533526566756e644d616e6167657220616464726573730060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed905f90a250565b61078b612548565b6001600160a01b038116158015906107b157506003546001600160a01b03828116911614155b81906107d15760405163eddf07f560e01b8152600401610731919061313a565b50600380546001600160a01b0319166001600160a01b0383161790556040517f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f39061081d90839061313a565b60405180910390a150565b620f4240805b50919050565b600760208190525f9182526040909120805460028201546005830154600684015494840180549395929491936001600160a01b0390931692610875906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a1906137f2565b80156108ec5780601f106108c3576101008083540402835291602001916108ec565b820191905f5260205f20905b8154815290600101906020018083116108cf57829003601f168201915b505050505090806008018054610901906137f2565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906137f2565b80156109785780601f1061094f57610100808354040283529160200191610978565b820191905f5260205f20905b81548152906001019060200180831161095b57829003601f168201915b5050506009840154600a850154600b860154600c8701805496976001600160a01b0390941696929550909350906109ae906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546109da906137f2565b8015610a255780601f106109fc57610100808354040283529160200191610a25565b820191905f5260205f20905b815481529060010190602001808311610a0857829003601f168201915b505050600d90930154919250506001600160a01b03168b565b610a46612f72565b5f82815260076020908152604080832081516101a0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610a8157505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ae75750505091835250506005820154602082015260068201546001600160a01b03166040820152600782018054606090920191610b34906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b60906137f2565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050508152602001600882018054610bc4906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf0906137f2565b8015610c3b5780601f10610c1257610100808354040283529160200191610c3b565b820191905f5260205f20905b815481529060010190602001808311610c1e57829003601f168201915b505050918352505060098201546001600160a01b03166020820152600a8201546040820152600b8201546060820152600c82018054608090920191610c7f906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610cab906137f2565b8015610cf65780601f10610ccd57610100808354040283529160200191610cf6565b820191905f5260205f20905b815481529060010190602001808311610cd957829003601f168201915b5050509183525050600d91909101546001600160a01b0390811660209092019190915260a082015191925083911661082e5760405163cd6f4a4f60e01b815260040161073191815260200190565b610d4c612548565b610d558161257a565b50565b610d60612548565b5f8181526008602052604090205481906001600160a01b0316610d99576040516381c4951960e01b815260040161073191815260200190565b505f818152600860205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc9061081d9083815260200190565b610def612548565b6001600160a01b0381165f90815260066020526040902054819060ff16610e2a576040516321ac7c5f60e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79061081d90839061313a565b5f610e83612707565b805490915060ff600160401b82041615906001600160401b03165f81158015610ea95750825b90505f826001600160401b03166001148015610ec45750303b155b905081158015610ed2575080155b15610ef05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f1a57845460ff60401b1916600160401b1785555b610f2333612731565b610f2c88611acb565b610f358c611d6c565b610f3e8b611b08565b610f478a6106d7565b610f5089610783565b610f598761257a565b610f62866118cf565b610f6a611402565b6001600160a01b03168d6001600160a01b031614610f8b57610f8b8d611ba2565b8315610fd157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b610fe8612548565b610ff15f612742565b565b5f546001600160a01b0316331461101c5760405162461bcd60e51b815260040161073190613824565b5f818152600b602052604090205460ff16600181600681111561104157611041613185565b1461106657816001826040516337e1404160e01b815260040161073193929190613855565b5f828152600b60205260409020805460ff19166002179055600f5461108b904261388a565b5f838152600c602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a2815f516020613ed95f395f51905f52600160026040516110e592919061389d565b60405180910390a25050565b5f5f6110fc87610a3e565b5f888152600b602052604090205490915060ff16600481600681111561112457611124613185565b148860048390919261114c576040516337e1404160e01b815260040161073193929190613855565b5050505f888152600c602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052908990428110156111af576040516308f3034360e31b815260048101929092526024820152604401610731565b50505f898152600760205260409020600c016111cc888a83613917565b508261010001516001600160a01b0316632f0e1bbf8a8a8a6040516111f29291906139cb565b6040519081900381206001600160e01b031960e085901b16825261121d92918b908b90600401613a02565b602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c9190613a2b565b935087878561128057604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff191660051790556112a3896127b2565b887f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca16989896040516112d5929190613a4a565b60405180910390a2885f516020613ed95f395f51905f52600460056040516112fe92919061389d565b60405180910390a250505095945050505050565b5f546001600160a01b0316331461133b5760405162461bcd60e51b815260040161073190613824565b5f828152600b602052604090205460ff16600281600681111561136057611360613185565b1461138557826002826040516337e1404160e01b815260040161073193929190613855565b5f838152600b60209081526040808320805460ff191660031790556007909152808220600a018490555184917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a2825f516020613ed95f395f51905f52600260036040516113f592919061389d565b60405180910390a2505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b61145760405180608001604052805f81526020015f81526020015f81526020015f81525090565b5060408051608081018252600f548152601054602082015260115491810191909152601254606082015290565b5f818152600b602052604090205460ff1660068160068111156114a9576114a9613185565b146114e65760405162461bcd60e51b815260206004820152600d60248201526c114cc81b9bdd0819985a5b1959609a1b6044820152606401610731565b5f828152600a6020526040902054806115385760405162461bcd60e51b8152602060048201526014602482015273139bc81c185e5b595b9d081d1bc81c99599d5b9960621b6044820152606401610731565b5f838152600a6020526040812081905561155184612a5f565b600254600354919250611571916001600160a01b03908116911684612b54565b6002546040516345ac612360e11b81526001600160a01b0390911690638b58c246906115a590879086908690600401613aa0565b5f604051808303815f87803b1580156115bc575f5ffd5b505af11580156115ce573d5f5f3e3d5ffd5b50505050837f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a0731783835160405161160e929190918252602082015260400190565b60405180910390a250505050565b61163d60405180606001604052805f81526020015f81526020015f81525090565b505f908152600c6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b5f818152600b6020526040812054819060ff166116928482612bb1565b9250925050915091565b5f5f6116a787610a3e565b5f888152600c60209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509088904281101561170c576040516308f3034360e31b815260048101929092526024820152604401610731565b50506060820151602001518890428111156117435760405163017e35e560e71b815260048101929092526024820152604401610731565b505061014082015188901561176e57604051637eb9cea960e11b815260040161073191815260200190565b505f87876040516117809291906139cb565b604080519182900382205f8c8152600760205291909120600b0181905560a0850151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf906117d3908c9085908b908b90600401613a02565b6020604051808303815f875af11580156117ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118139190613a2b565b935087878561183757604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff1916600417905560115461185e904261388a565b5f8a8152600c602052604090819020600201919091555189907f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade071906118a6908b908b90613a4a565b60405180910390a2885f516020613ed95f395f51905f52600360046040516112fe92919061389d565b6118d7612548565b80515f5b8181101561193657600160098483815181106118f9576118f9613ac7565b602002602001015160405161190e9190613adb565b908152604051908190036020019020805491151560ff199092169190911790556001016118db565b507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81826040516119669190613af1565b60405180910390a15050565b5f546001600160a01b0316331461199b5760405162461bcd60e51b815260040161073190613824565b5f8160ff161180156119b15750600c8160ff1611155b6119f65760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103330b4b63ab932903932b0b9b7b760511b6044820152606401610731565b611a14828260ff16600c811115611a0f57611a0f613185565b612d39565b5050565b611a20612548565b6001600160a01b03811615801590611a5157505f828152600860205260409020546001600160a01b03828116911614155b8290611a73576040516381c4951960e01b815260040161073191815260200190565b505f8281526008602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb699101611966565b611ad3612548565b60048190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b5235529060200161081d565b611b10612548565b6001600160a01b03811615801590611b3657506001546001600160a01b03828116911614155b8190611b56576040516320252f0b60e01b8152600401610731919061313a565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a79061081d90839061313a565b611baa612548565b6001600160a01b038116611bd3575f604051631e4fbdf760e01b8152600401610731919061313a565b610d5581612742565b5f818152600b602052604081205460ff1681816006811115611c0057611c00613185565b03611c2557826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115611c3957611c39613185565b03611c5a5760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115611c6e57611c6e613185565b03611c8f57604051633de16e3560e11b815260048101849052602401610731565b5f611c9a8483612bb1565b9350905080611cbf57604051639f65d93560e01b815260048101859052602401610731565b5f848152600b60209081526040808320805460ff19908116600617909155600d9092529091208054859216600183600c811115611cfe57611cfe613185565b0217905550835f516020613ed95f395f51905f52836006604051611d2392919061389d565b60405180910390a2837fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8385604051611d5d929190613b54565b60405180910390a25050919050565b611d74612548565b6001600160a01b03811615801590611d9957505f546001600160a01b03828116911614155b8190611db9576040516375ac4eb760e11b8152600401610731919061313a565b505f80546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b69061081d90839061313a565b611e0c612548565b6001600160a01b0381165f90815260066020526040902054819060ff1615611e485760405163b29d459560e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679061081d90839061313a565b5f611ea4612f72565b611eb16020840184613b87565b63ffffffff16611ec76040850160208601613b87565b63ffffffff1610158015611eec57505f611ee46020850185613b87565b63ffffffff16115b8390611f0c57604051633744092160e21b81526004016107319190613bd0565b50604083013542811015611f3657604051630b99e87960e01b815260040161073191815260200190565b5060608301356040840135811015611f645760405163174b5a0760e21b815260040161073191815260200190565b506011546010545f9190611f7c426060880135613bde565b611f86919061388a565b611f90919061388a565b905060045481108190611fb9576040516313b783af60e21b815260040161073191815260200190565b5060065f611fcd60a0870160808801613108565b6001600160a01b0316815260208101919091526040015f205460ff16611ff960a0860160808701613108565b906120185760405163295a6a6f60e11b8152600401610731919061313a565b505f61202385610828565b60058054955090915084905f61203883613bf1565b90915550506040805144602080830191909152818301879052825180830384018152606090920183528151910120808552815180830183529091879060029083908390808284375f92019190915250505060208501524360408086019190915280518082018252908781019060029083908390808284375f92019190915250505060608501526120ce60a0870160808801613108565b6001600160a01b031660a0808601919091526120ec90870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c085015261213160e0870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525060e0890194909452505050610120850181905261014085018190526040805160208101909152818152610160860152336101808601526121a660a0880160808901613108565b6001600160a01b031663fefd9a8b87846121c360a08c018c613c09565b6121d060c08e018e613c09565b8e8060e001906121e09190613c09565b6040518963ffffffff1660e01b8152600401612203989796959493929190613c4b565b6020604051808303815f875af115801561221f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122439190613ca1565b5f818152600860205260409020549091506001600160a01b0316818161227f576040516381c4951960e01b815260040161073191815260200190565b50608086018290526001600160a01b0381166101008701525f87815260076020908152604090912087518155908701518791906122c29060018301906002612ff9565b50604082015181600201556060820151816003019060026122e4929190613094565b506080820151600582015560a08201516006820180546001600160a01b0319166001600160a01b0390921691909117905560c082015160078201906123299082613cb8565b5060e0820151600882019061233e9082613cb8565b506101008201516009820180546001600160a01b0319166001600160a01b03909216919091179055610120820151600a820155610140820151600b820155610160820151600c8201906123919082613cb8565b506101809190910151600d90910180546001600160a01b0319166001600160a01b039283161790555f888152600a602052604090208590556003546123d99116333087612e8a565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b9061240c908a9087908d90600401613d6d565b6020604051808303815f875af1158015612428573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613a2b565b61246957604051630d8dbe2560e01b815260040160405180910390fd5b5f878152600b60209081526040808320805460ff19166001179055600e82529091208054336001600160a01b03199091161790556010546060880151909101516124b3919061388a565b5f888152600c60205260409020600101556124d460a0890160808a01613108565b6001600160a01b03167fe009e1827a616eb52d6aa3823303e01f235985c9da7b43cbcc95f54b0338785d888860405161250e9291906137da565b60405180910390a2865f516020613ed95f395f51905f525f600160405161253692919061389d565b60405180910390a25050505050915091565b33612551611402565b6001600160a01b031614610ff1573360405163118cdaa760e01b8152600401610731919061313a565b80356125bd5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420444b472077696e646f7760701b6044820152606401610731565b5f8160200135116126095760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6d707574652077696e646f7760501b6044820152606401610731565b5f8160400135116126585760405162461bcd60e51b8152602060048201526019602482015278496e76616c69642064656372797074696f6e2077696e646f7760381b6044820152606401610731565b5f8160600135116126a25760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b6044820152606401610731565b8035600f819055602080830135601081905560408085013560118190556060808701356012819055835196875294860193909352908401528201527f78e25a99f479f23adb3b0ac527204b39c8f57afa01a2595ad3b9b605bf0be22e9060800161081d565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b612739612ec9565b610d5581612eee565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa1580156127f8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281f9190810190613d88565b80519091505f816001600160401b0381111561283d5761283d613404565b604051908082528060200260200182016040528015612866578160200160208202803683370190505b505f858152600a602052604081205491925090612884908490613e17565b90505f5b838110156128b657818382815181106128a3576128a3613ac7565b6020908102919091010152600101612888565b505f858152600a60205260408082208054929055600354600154915163095ea7b360e01b81526001600160a01b039182169263095ea7b3926128ff929116908590600401613e36565b6020604051808303815f875af115801561291b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613a2b565b50600154600354604051636ec640c760e11b81526001600160a01b039283169263dd8c818e926129789291169089908890600401613e7f565b5f604051808303815f87803b15801561298f575f5ffd5b505af11580156129a1573d5f5f3e3d5ffd5b505060035460015460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506129dc92909116905f90600401613e36565b6020604051808303815f875af11580156129f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1c9190613a2b565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8685604051612a4f929190613eb4565b60405180910390a2505050505050565b5f818152600d602052604090205460609060ff16600181600c811115612a8757612a87613185565b1480612aa45750600281600c811115612aa257612aa2613185565b145b15612adc575f5b604051908082528060200260200182016040528015612ad4578160200160208202803683370190505b509392505050565b5f54604051630a01649360e41b8152600481018590526001600160a01b039091169063a0164930906024015f60405180830381865afa925050508015612b4357506040513d5f823e601f3d908101601f19168201604052612b409190810190613d88565b60015b612b4d575f612aab565b9392505050565b612bac83846001600160a01b031663a9059cbb8585604051602401612b7a929190613e36565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612ef6565b505050565b5f828152600c60209081526040808320815160608101835281548152600182015493810193909352600201548282015282549051632800d82960e01b81526004810186905283929183916001600160a01b0390911690632800d82990602401602060405180830381865afa158015612c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4f9190613ca1565b90506001856006811115612c6557612c65613185565b148015612c7157508042115b15612c8457600180935093505050612d32565b6002856006811115612c9857612c98613185565b148015612ca55750815142115b15612cb95760016003935093505050612d32565b6003856006811115612ccd57612ccd613185565b148015612cdd5750816020015142115b15612cf15760016006935093505050612d32565b6004856006811115612d0557612d05613185565b148015612d155750816040015142115b15612d29576001600a935093505050612d32565b5f5f9350935050505b9250929050565b5f828152600b602052604081205460ff1690816006811115612d5d57612d5d613185565b03612d8257826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115612d9657612d96613185565b03612db75760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115612dcb57612dcb613185565b03612dec57604051633de16e3560e11b815260048101849052602401610731565b5f838152600b60209081526040808320805460ff19908116600617909155600d9092529091208054849216600183600c811115612e2b57612e2b613185565b0217905550825f516020613ed95f395f51905f52826006604051612e5092919061389d565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb82846040516113f5929190613b54565b6040516001600160a01b038481166024830152838116604483015260648201839052612ec39186918216906323b872dd90608401612b7a565b50505050565b612ed1612f59565b610ff157604051631afcd79f60e31b815260040160405180910390fd5b611baa612ec9565b5f5f60205f8451602086015f885af180612f15576040513d5f823e3d81fd5b50505f513d91508115612f2c578060011415612f39565b6001600160a01b0384163b155b15612ec35783604051635274afe760e01b8152600401610731919061313a565b5f612f62612707565b54600160401b900460ff16919050565b604051806101a001604052805f8152602001612f8c6130c2565b81526020015f8152602001612f9f6130c2565b81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215613084579160200282015f5b8382111561305257835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261300e565b80156130825782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613052565b505b506130909291506130e0565b5090565b8260028101928215613084579160200282015b828111156130845782518255916020019190600101906130a7565b60405180604001604052806002906020820280368337509192915050565b5b80821115613090575f81556001016130e1565b6001600160a01b0381168114610d55575f5ffd5b5f60208284031215613118575f5ffd5b8135612b4d816130f4565b5f60208284031215613133575f5ffd5b5035919050565b6001600160a01b0391909116815260200190565b5f6020828403121561315e575f5ffd5b81356001600160401b03811115613173575f5ffd5b82016101008185031215612b4d575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b600d81106131a9576131a9613185565b9052565b6020810161272b8284613199565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8b81528a602082015289604082015260018060a01b038916606082015261016060808201525f61321d61016083018a6131bb565b82810360a084015261322f818a6131bb565b6001600160a01b03891660c085015260e084018890526101008401879052838103610120850152905061326281866131bb565b91505060018060a01b0383166101408301529c9b505050505050505050505050565b805f5b6002811015612ec357815163ffffffff16845260209384019390910190600101613287565b805f5b6002811015612ec35781518452602093840193909101906001016132af565b805182525f60208201516132e56020850182613284565b5060408201516060840152606082015161330260808501826132ac565b50608082015160c084015260a08201516001600160a01b03811660e08501525060c08201516101e061010085015261333e6101e08501826131bb565b905060e083015184820361012086015261335882826131bb565b9150506101008301516133776101408601826001600160a01b03169052565b506101208301516101608501526101408301516101808501526101608301518482036101a08601526133a982826131bb565b915050610180830151612ad46101c08601826001600160a01b03169052565b602081525f612b4d60208301846132ce565b5f6080828403121561082e575f5ffd5b5f608082840312156133fa575f5ffd5b612b4d83836133da565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561344057613440613404565b604052919050565b5f82601f830112613457575f5ffd5b81356001600160401b0381111561347057613470613404565b613483601f8201601f1916602001613418565b818152846020838601011115613497575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156134c3575f5ffd5b81356001600160401b038111156134d8575f5ffd5b6134e484828501613448565b949350505050565b5f6001600160401b0382111561350457613504613404565b5060051b60200190565b5f82601f83011261351d575f5ffd5b813561353061352b826134ec565b613418565b8082825260208201915060208360051b860101925085831115613551575f5ffd5b602085015b838110156135915780356001600160401b03811115613573575f5ffd5b613582886020838a0101613448565b84525060209283019201613556565b5095945050505050565b5f5f5f5f5f5f5f5f610160898b0312156135b3575f5ffd5b88356135be816130f4565b975060208901356135ce816130f4565b965060408901356135de816130f4565b955060608901356135ee816130f4565b945060808901356135fe816130f4565b935060a089013592506136148a60c08b016133da565b91506101408901356001600160401b0381111561362f575f5ffd5b61363b8b828c0161350e565b9150509295985092959890939650565b5f5f83601f84011261365b575f5ffd5b5081356001600160401b03811115613671575f5ffd5b602083019150836020828501011115612d32575f5ffd5b5f5f5f5f5f6060868803121561369c575f5ffd5b8535945060208601356001600160401b038111156136b8575f5ffd5b6136c48882890161364b565b90955093505060408601356001600160401b038111156136e2575f5ffd5b6136ee8882890161364b565b969995985093965092949392505050565b5f5f60408385031215613710575f5ffd5b50508035926020909101359150565b821515815260408101612b4d6020830184613199565b5f60208284031215613745575f5ffd5b81356001600160401b0381111561375a575f5ffd5b6134e48482850161350e565b5f5f60408385031215613777575f5ffd5b82359150602083013560ff8116811461378e575f5ffd5b809150509250929050565b5f5f604083850312156137aa575f5ffd5b82359150602083013561378e816130f4565b600781106131a9576131a9613185565b6020810161272b82846137bc565b828152604060208201525f6134e460408301846132ce565b600181811c9082168061380657607f821691505b60208210810361082e57634e487b7160e01b5f52602260045260245ffd5b6020808252601790820152764f6e6c79204369706865726e6f6465526567697374727960481b604082015260600190565b8381526060810161386960208301856137bc565b6134e460408301846137bc565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561272b5761272b613876565b604081016138ab82856137bc565b612b4d60208301846137bc565b601f821115612bac57805f5260205f20601f840160051c810160208510156138dd5750805b601f840160051c820191505b818110156138fc575f81556001016138e9565b5050505050565b5f19600383901b1c191660019190911b1790565b6001600160401b0383111561392e5761392e613404565b6139428361393c83546137f2565b836138b8565b5f601f84116001811461396e575f851561395c5750838201355b6139668682613903565b8455506138fc565b5f83815260208120601f198716915b8281101561399d578685013582556020948501946001909201910161397d565b50868210156139b9575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201525f613a216060830184866139da565b9695505050505050565b5f60208284031215613a3b575f5ffd5b81518015158114612b4d575f5ffd5b602081525f6134e46020830184866139da565b5f8151808452602084019350602083015f5b82811015613a965781516001600160a01b0316865260209586019590910190600101613a6f565b5093949350505050565b838152826020820152606060408201525f613abe6060830184613a5d565b95945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613b4857603f19878603018452613b338583516131bb565b94506020938401939190910190600101613b17565b50929695505050505050565b60408101613b6282856137bc565b612b4d6020830184613199565b803563ffffffff81168114613b82575f5ffd5b919050565b5f60208284031215613b97575f5ffd5b612b4d82613b6f565b805f5b6002811015612ec35763ffffffff613bba83613b6f565b1684526020938401939190910190600101613ba3565b6040810161272b8284613ba0565b8181038181111561272b5761272b613876565b5f60018201613c0257613c02613876565b5060010190565b5f5f8335601e19843603018112613c1e575f5ffd5b8301803591506001600160401b03821115613c37575f5ffd5b602001915036819003821315612d32575f5ffd5b88815287602082015260a060408201525f613c6a60a08301888a6139da565b8281036060840152613c7d8187896139da565b90508281036080840152613c928185876139da565b9b9a5050505050505050505050565b5f60208284031215613cb1575f5ffd5b5051919050565b81516001600160401b03811115613cd157613cd1613404565b613ce581613cdf84546137f2565b846138b8565b6020601f821160018114613d12575f8315613d005750848201515b613d0a8482613903565b8555506138fc565b5f84815260208120601f198516915b82811015613d415787850151825560209485019460019092019101613d21565b5084821015613d5e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016134e46040830184613ba0565b5f60208284031215613d98575f5ffd5b81516001600160401b03811115613dad575f5ffd5b8201601f81018413613dbd575f5ffd5b8051613dcb61352b826134ec565b8082825260208201915060208360051b850101925086831115613dec575f5ffd5b6020840193505b82841015613a21578351613e06816130f4565b825260209384019390910190613df3565b5f82613e3157634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03929092168252602082015260400190565b5f8151808452602084019350602083015f5b82811015613a96578151865260209586019590910190600101613e61565b6001600160a01b03841681526060602082018190525f90613ea290830185613a5d565b8281036040840152613a218185613e4f565b604081525f613ec66040830185613a5d565b8281036020840152613abe8185613e4f56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967a164736f6c634300081c000a";
14
14
  readonly linkReferences: {};
15
15
  readonly deployedLinkReferences: {};
16
16
  readonly immutableReferences: {};
17
17
  readonly inputSourceName: "project/contracts/Enclave.sol";
18
- readonly buildInfoId: "solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799";
18
+ readonly buildInfoId: "solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e";
19
19
  };
20
20
 
21
21
  import "hardhat/types/artifacts";
@@ -530,6 +530,19 @@
530
530
  "stateMutability": "view",
531
531
  "type": "function"
532
532
  },
533
+ {
534
+ "inputs": [],
535
+ "name": "numActiveOperators",
536
+ "outputs": [
537
+ {
538
+ "internalType": "uint256",
539
+ "name": "",
540
+ "type": "uint256"
541
+ }
542
+ ],
543
+ "stateMutability": "view",
544
+ "type": "function"
545
+ },
533
546
  {
534
547
  "inputs": [
535
548
  {
@@ -877,5 +890,5 @@
877
890
  "deployedLinkReferences": {},
878
891
  "immutableReferences": {},
879
892
  "inputSourceName": "project/contracts/interfaces/IBondingRegistry.sol",
880
- "buildInfoId": "solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799"
893
+ "buildInfoId": "solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e"
881
894
  }
@@ -8,14 +8,14 @@ export interface IBondingRegistry$Type {
8
8
  readonly _format: "hh3-artifact-1";
9
9
  readonly contractName: "IBondingRegistry";
10
10
  readonly sourceName: "contracts/interfaces/IBondingRegistry.sol";
11
- readonly abi: [{"inputs":[],"name":"AlreadyRegistered","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"CiphernodeBanned","type":"error"},{"inputs":[],"name":"ExitInProgress","type":"error"},{"inputs":[],"name":"ExitNotReady","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidConfiguration","type":"error"},{"inputs":[],"name":"NoPendingDeregistration","type":"error"},{"inputs":[],"name":"NotLicensed","type":"error"},{"inputs":[],"name":"NotRegistered","type":"error"},{"inputs":[],"name":"OnlyRewardDistributor","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"uint64","name":"unlockAt","type":"uint64"}],"name":"CiphernodeDeregistrationRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"ConfigurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"},{"indexed":false,"internalType":"uint256","name":"newBond","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"LicenseBondUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"OperatorActivationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"licenseAmount","type":"uint256"}],"name":"SlashedFundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"TicketBalanceUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"availableTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bondLicense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTicketAmount","type":"uint256"},{"internalType":"uint256","name":"maxLicenseAmount","type":"uint256"}],"name":"claimExits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"siblingNodes","type":"uint256[]"}],"name":"deregisterOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"getLicenseBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"getTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getTicketBalanceAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTicketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"hasExitInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isLicensed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseRequiredBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"pendingExits","outputs":[{"internalType":"uint256","name":"ticket","type":"uint256"},{"internalType":"uint256","name":"license","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"previewClaimable","outputs":[{"internalType":"uint256","name":"ticket","type":"uint256"},{"internalType":"uint256","name":"license","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registerOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newExitDelay","type":"uint64"}],"name":"setExitDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBps","type":"uint256"}],"name":"setLicenseActiveBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLicenseRequiredBond","type":"uint256"}],"name":"setLicenseRequiredBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"newLicenseToken","type":"address"}],"name":"setLicenseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTicketBalance","type":"uint256"}],"name":"setMinTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"newRegistry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardDistributor","type":"address"}],"name":"setRewardDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlashedFundsTreasury","type":"address"}],"name":"setSlashedFundsTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlashingManager","type":"address"}],"name":"setSlashingManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTicketPrice","type":"uint256"}],"name":"setTicketPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract EnclaveTicketToken","name":"newTicketToken","type":"address"}],"name":"setTicketToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"slashLicenseBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"slashTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slashedFundsTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slashedLicenseBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slashedTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unbondLicense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketAmount","type":"uint256"},{"internalType":"uint256","name":"licenseAmount","type":"uint256"}],"name":"withdrawSlashedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}];
11
+ readonly abi: [{"inputs":[],"name":"AlreadyRegistered","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"CiphernodeBanned","type":"error"},{"inputs":[],"name":"ExitInProgress","type":"error"},{"inputs":[],"name":"ExitNotReady","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidConfiguration","type":"error"},{"inputs":[],"name":"NoPendingDeregistration","type":"error"},{"inputs":[],"name":"NotLicensed","type":"error"},{"inputs":[],"name":"NotRegistered","type":"error"},{"inputs":[],"name":"OnlyRewardDistributor","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"uint64","name":"unlockAt","type":"uint64"}],"name":"CiphernodeDeregistrationRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"parameter","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"ConfigurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"},{"indexed":false,"internalType":"uint256","name":"newBond","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"LicenseBondUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"OperatorActivationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"licenseAmount","type":"uint256"}],"name":"SlashedFundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"TicketBalanceUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"availableTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"bondLicense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTicketAmount","type":"uint256"},{"internalType":"uint256","name":"maxLicenseAmount","type":"uint256"}],"name":"claimExits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"siblingNodes","type":"uint256[]"}],"name":"deregisterOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"getLicenseBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"getTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getTicketBalanceAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTicketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"hasExitInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isLicensed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseRequiredBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numActiveOperators","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"pendingExits","outputs":[{"internalType":"uint256","name":"ticket","type":"uint256"},{"internalType":"uint256","name":"license","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"previewClaimable","outputs":[{"internalType":"uint256","name":"ticket","type":"uint256"},{"internalType":"uint256","name":"license","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registerOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newExitDelay","type":"uint64"}],"name":"setExitDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBps","type":"uint256"}],"name":"setLicenseActiveBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLicenseRequiredBond","type":"uint256"}],"name":"setLicenseRequiredBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"newLicenseToken","type":"address"}],"name":"setLicenseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTicketBalance","type":"uint256"}],"name":"setMinTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"newRegistry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardDistributor","type":"address"}],"name":"setRewardDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlashedFundsTreasury","type":"address"}],"name":"setSlashedFundsTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlashingManager","type":"address"}],"name":"setSlashingManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTicketPrice","type":"uint256"}],"name":"setTicketPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract EnclaveTicketToken","name":"newTicketToken","type":"address"}],"name":"setTicketToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"slashLicenseBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"reason","type":"bytes32"}],"name":"slashTicketBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slashedFundsTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slashedLicenseBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slashedTicketBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unbondLicense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketAmount","type":"uint256"},{"internalType":"uint256","name":"licenseAmount","type":"uint256"}],"name":"withdrawSlashedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}];
12
12
  readonly bytecode: "0x";
13
13
  readonly deployedBytecode: "0x";
14
14
  readonly linkReferences: {};
15
15
  readonly deployedLinkReferences: {};
16
16
  readonly immutableReferences: {};
17
17
  readonly inputSourceName: "project/contracts/interfaces/IBondingRegistry.sol";
18
- readonly buildInfoId: "solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799";
18
+ readonly buildInfoId: "solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e";
19
19
  };
20
20
 
21
21
  import "hardhat/types/artifacts";