@aztec-foundation/l1-artifacts 6.0.0-rc.2 → 6.0.0-rc.4

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 (374) hide show
  1. package/dest/AttesterExitExtLibAbi.d.ts +12 -48
  2. package/dest/AttesterExitExtLibAbi.d.ts.map +1 -1
  3. package/dest/AttesterExitExtLibAbi.js +16 -64
  4. package/dest/AttesterExitExtLibAbi.js.map +1 -1
  5. package/dest/AttesterExitExtLibBytecode.d.ts +1 -1
  6. package/dest/AttesterExitExtLibBytecode.js +1 -1
  7. package/dest/CoinIssuerAbi.d.ts +12 -48
  8. package/dest/CoinIssuerAbi.d.ts.map +1 -1
  9. package/dest/CoinIssuerAbi.js +16 -64
  10. package/dest/CoinIssuerAbi.js.map +1 -1
  11. package/dest/DateGatedRelayerAbi.d.ts +12 -48
  12. package/dest/DateGatedRelayerAbi.d.ts.map +1 -1
  13. package/dest/DateGatedRelayerAbi.js +16 -64
  14. package/dest/DateGatedRelayerAbi.js.map +1 -1
  15. package/dest/EmpireBaseAbi.d.ts +12 -48
  16. package/dest/EmpireBaseAbi.d.ts.map +1 -1
  17. package/dest/EmpireBaseAbi.js +16 -64
  18. package/dest/EmpireBaseAbi.js.map +1 -1
  19. package/dest/EpochProofExtLibAbi.d.ts +12 -48
  20. package/dest/EpochProofExtLibAbi.d.ts.map +1 -1
  21. package/dest/EpochProofExtLibAbi.js +16 -64
  22. package/dest/EpochProofExtLibAbi.js.map +1 -1
  23. package/dest/EpochProofExtLibBytecode.d.ts +1 -1
  24. package/dest/EpochProofExtLibBytecode.d.ts.map +1 -1
  25. package/dest/EpochProofExtLibBytecode.js +1 -1
  26. package/dest/EpochProofExtLibBytecode.js.map +1 -1
  27. package/dest/ErrorsAbi.d.ts +12 -48
  28. package/dest/ErrorsAbi.d.ts.map +1 -1
  29. package/dest/ErrorsAbi.js +16 -64
  30. package/dest/ErrorsAbi.js.map +1 -1
  31. package/dest/EscapeHatchAbi.d.ts +12 -48
  32. package/dest/EscapeHatchAbi.d.ts.map +1 -1
  33. package/dest/EscapeHatchAbi.js +16 -64
  34. package/dest/EscapeHatchAbi.js.map +1 -1
  35. package/dest/EscapeHatchBytecode.d.ts +1 -1
  36. package/dest/EscapeHatchBytecode.js +1 -1
  37. package/dest/EscapeHatchStorage.d.ts +2 -2
  38. package/dest/EscapeHatchStorage.js +2 -2
  39. package/dest/FeeAssetHandlerAbi.d.ts +12 -48
  40. package/dest/FeeAssetHandlerAbi.d.ts.map +1 -1
  41. package/dest/FeeAssetHandlerAbi.js +16 -64
  42. package/dest/FeeAssetHandlerAbi.js.map +1 -1
  43. package/dest/FeeJuicePortalAbi.d.ts +12 -48
  44. package/dest/FeeJuicePortalAbi.d.ts.map +1 -1
  45. package/dest/FeeJuicePortalAbi.js +16 -64
  46. package/dest/FeeJuicePortalAbi.js.map +1 -1
  47. package/dest/FeeJuicePortalBytecode.d.ts +1 -1
  48. package/dest/FeeJuicePortalBytecode.js +1 -1
  49. package/dest/GSEAbi.d.ts +12 -48
  50. package/dest/GSEAbi.d.ts.map +1 -1
  51. package/dest/GSEAbi.js +16 -64
  52. package/dest/GSEAbi.js.map +1 -1
  53. package/dest/GovernanceAbi.d.ts +12 -48
  54. package/dest/GovernanceAbi.d.ts.map +1 -1
  55. package/dest/GovernanceAbi.js +16 -64
  56. package/dest/GovernanceAbi.js.map +1 -1
  57. package/dest/GovernanceProposerAbi.d.ts +12 -48
  58. package/dest/GovernanceProposerAbi.d.ts.map +1 -1
  59. package/dest/GovernanceProposerAbi.js +16 -64
  60. package/dest/GovernanceProposerAbi.js.map +1 -1
  61. package/dest/HonkVerifierAbi.d.ts +12 -48
  62. package/dest/HonkVerifierAbi.d.ts.map +1 -1
  63. package/dest/HonkVerifierAbi.js +16 -64
  64. package/dest/HonkVerifierAbi.js.map +1 -1
  65. package/dest/IERC20Abi.d.ts +12 -48
  66. package/dest/IERC20Abi.d.ts.map +1 -1
  67. package/dest/IERC20Abi.js +16 -64
  68. package/dest/IERC20Abi.js.map +1 -1
  69. package/dest/ISequencerRewardCalculatorAbi.d.ts +2607 -0
  70. package/dest/ISequencerRewardCalculatorAbi.d.ts.map +1 -0
  71. package/dest/ISequencerRewardCalculatorAbi.js +3473 -0
  72. package/dest/ISequencerRewardCalculatorAbi.js.map +1 -0
  73. package/dest/ISequencerRewardCalculatorBytecode.d.ts +9 -0
  74. package/dest/ISequencerRewardCalculatorBytecode.d.ts.map +1 -0
  75. package/dest/ISequencerRewardCalculatorBytecode.js +9 -0
  76. package/dest/ISequencerRewardCalculatorBytecode.js.map +1 -0
  77. package/dest/IVerifierAbi.d.ts +12 -48
  78. package/dest/IVerifierAbi.d.ts.map +1 -1
  79. package/dest/IVerifierAbi.js +16 -64
  80. package/dest/IVerifierAbi.js.map +1 -1
  81. package/dest/InboxAbi.d.ts +12 -48
  82. package/dest/InboxAbi.d.ts.map +1 -1
  83. package/dest/InboxAbi.js +16 -64
  84. package/dest/InboxAbi.js.map +1 -1
  85. package/dest/InboxBytecode.d.ts +1 -1
  86. package/dest/InboxBytecode.js +1 -1
  87. package/dest/MockVerifierAbi.d.ts +12 -48
  88. package/dest/MockVerifierAbi.d.ts.map +1 -1
  89. package/dest/MockVerifierAbi.js +16 -64
  90. package/dest/MockVerifierAbi.js.map +1 -1
  91. package/dest/MockZKPassportVerifierAbi.d.ts +12 -48
  92. package/dest/MockZKPassportVerifierAbi.d.ts.map +1 -1
  93. package/dest/MockZKPassportVerifierAbi.js +16 -64
  94. package/dest/MockZKPassportVerifierAbi.js.map +1 -1
  95. package/dest/MultiAdderAbi.d.ts +12 -48
  96. package/dest/MultiAdderAbi.d.ts.map +1 -1
  97. package/dest/MultiAdderAbi.js +16 -64
  98. package/dest/MultiAdderAbi.js.map +1 -1
  99. package/dest/MultiAdderBytecode.d.ts +1 -1
  100. package/dest/MultiAdderBytecode.js +1 -1
  101. package/dest/NewGovernanceProposerPayloadAbi.d.ts +12 -48
  102. package/dest/NewGovernanceProposerPayloadAbi.d.ts.map +1 -1
  103. package/dest/NewGovernanceProposerPayloadAbi.js +16 -64
  104. package/dest/NewGovernanceProposerPayloadAbi.js.map +1 -1
  105. package/dest/OutboxAbi.d.ts +12 -48
  106. package/dest/OutboxAbi.d.ts.map +1 -1
  107. package/dest/OutboxAbi.js +16 -64
  108. package/dest/OutboxAbi.js.map +1 -1
  109. package/dest/OutboxBytecode.d.ts +1 -1
  110. package/dest/OutboxBytecode.js +1 -1
  111. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts +12 -48
  112. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts.map +1 -1
  113. package/dest/RegisterNewRollupVersionPayloadAbi.js +16 -64
  114. package/dest/RegisterNewRollupVersionPayloadAbi.js.map +1 -1
  115. package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts +1 -1
  116. package/dest/RegisterNewRollupVersionPayloadBytecode.js +1 -1
  117. package/dest/RegistryAbi.d.ts +12 -48
  118. package/dest/RegistryAbi.d.ts.map +1 -1
  119. package/dest/RegistryAbi.js +16 -64
  120. package/dest/RegistryAbi.js.map +1 -1
  121. package/dest/RewardDistributorAbi.d.ts +12 -48
  122. package/dest/RewardDistributorAbi.d.ts.map +1 -1
  123. package/dest/RewardDistributorAbi.js +16 -64
  124. package/dest/RewardDistributorAbi.js.map +1 -1
  125. package/dest/RewardExtLibAbi.d.ts +59 -48
  126. package/dest/RewardExtLibAbi.d.ts.map +1 -1
  127. package/dest/RewardExtLibAbi.js +77 -64
  128. package/dest/RewardExtLibAbi.js.map +1 -1
  129. package/dest/RewardExtLibBytecode.d.ts +1 -1
  130. package/dest/RewardExtLibBytecode.d.ts.map +1 -1
  131. package/dest/RewardExtLibBytecode.js +1 -1
  132. package/dest/RewardExtLibBytecode.js.map +1 -1
  133. package/dest/RollupAbi.d.ts +72 -79
  134. package/dest/RollupAbi.d.ts.map +1 -1
  135. package/dest/RollupAbi.js +93 -104
  136. package/dest/RollupAbi.js.map +1 -1
  137. package/dest/RollupBytecode.d.ts +91 -82
  138. package/dest/RollupBytecode.d.ts.map +1 -1
  139. package/dest/RollupBytecode.js +94 -82
  140. package/dest/RollupBytecode.js.map +1 -1
  141. package/dest/RollupOperationsExtLibAbi.d.ts +12 -48
  142. package/dest/RollupOperationsExtLibAbi.d.ts.map +1 -1
  143. package/dest/RollupOperationsExtLibAbi.js +16 -64
  144. package/dest/RollupOperationsExtLibAbi.js.map +1 -1
  145. package/dest/RollupOperationsExtLibBytecode.d.ts +1 -1
  146. package/dest/RollupOperationsExtLibBytecode.d.ts.map +1 -1
  147. package/dest/RollupOperationsExtLibBytecode.js +1 -1
  148. package/dest/RollupOperationsExtLibBytecode.js.map +1 -1
  149. package/dest/RollupStorage.d.ts +2 -2
  150. package/dest/RollupStorage.js +2 -2
  151. package/dest/SlasherAbi.d.ts +12 -48
  152. package/dest/SlasherAbi.d.ts.map +1 -1
  153. package/dest/SlasherAbi.js +16 -64
  154. package/dest/SlasherAbi.js.map +1 -1
  155. package/dest/SlasherDeploymentExtLibAbi.d.ts +12 -48
  156. package/dest/SlasherDeploymentExtLibAbi.d.ts.map +1 -1
  157. package/dest/SlasherDeploymentExtLibAbi.js +16 -64
  158. package/dest/SlasherDeploymentExtLibAbi.js.map +1 -1
  159. package/dest/SlasherDeploymentExtLibBytecode.d.ts +1 -1
  160. package/dest/SlasherDeploymentExtLibBytecode.d.ts.map +1 -1
  161. package/dest/SlasherDeploymentExtLibBytecode.js +1 -1
  162. package/dest/SlasherDeploymentExtLibBytecode.js.map +1 -1
  163. package/dest/SlashingProposerAbi.d.ts +12 -48
  164. package/dest/SlashingProposerAbi.d.ts.map +1 -1
  165. package/dest/SlashingProposerAbi.js +16 -64
  166. package/dest/SlashingProposerAbi.js.map +1 -1
  167. package/dest/SlashingProposerBytecode.d.ts +1 -1
  168. package/dest/SlashingProposerBytecode.js +1 -1
  169. package/dest/StakingAssetHandlerAbi.d.ts +12 -48
  170. package/dest/StakingAssetHandlerAbi.d.ts.map +1 -1
  171. package/dest/StakingAssetHandlerAbi.js +16 -64
  172. package/dest/StakingAssetHandlerAbi.js.map +1 -1
  173. package/dest/TestERC20Abi.d.ts +12 -48
  174. package/dest/TestERC20Abi.d.ts.map +1 -1
  175. package/dest/TestERC20Abi.js +16 -64
  176. package/dest/TestERC20Abi.js.map +1 -1
  177. package/dest/TokenPortalAbi.d.ts +12 -48
  178. package/dest/TokenPortalAbi.d.ts.map +1 -1
  179. package/dest/TokenPortalAbi.js +16 -64
  180. package/dest/TokenPortalAbi.js.map +1 -1
  181. package/dest/TokenPortalBytecode.d.ts +1 -1
  182. package/dest/TokenPortalBytecode.js +1 -1
  183. package/dest/UniswapPortalAbi.d.ts +12 -48
  184. package/dest/UniswapPortalAbi.d.ts.map +1 -1
  185. package/dest/UniswapPortalAbi.js +16 -64
  186. package/dest/UniswapPortalAbi.js.map +1 -1
  187. package/dest/UniswapPortalBytecode.d.ts +1 -1
  188. package/dest/UniswapPortalBytecode.js +1 -1
  189. package/dest/ValidatorOperationsExtLibAbi.d.ts +12 -48
  190. package/dest/ValidatorOperationsExtLibAbi.d.ts.map +1 -1
  191. package/dest/ValidatorOperationsExtLibAbi.js +16 -64
  192. package/dest/ValidatorOperationsExtLibAbi.js.map +1 -1
  193. package/dest/ValidatorOperationsExtLibBytecode.d.ts +1 -1
  194. package/dest/ValidatorOperationsExtLibBytecode.d.ts.map +1 -1
  195. package/dest/ValidatorOperationsExtLibBytecode.js +1 -1
  196. package/dest/ValidatorOperationsExtLibBytecode.js.map +1 -1
  197. package/dest/ValidatorSelectionLibAbi.d.ts +12 -48
  198. package/dest/ValidatorSelectionLibAbi.d.ts.map +1 -1
  199. package/dest/ValidatorSelectionLibAbi.js +16 -64
  200. package/dest/ValidatorSelectionLibAbi.js.map +1 -1
  201. package/dest/ValidatorSelectionLibBytecode.d.ts +1 -1
  202. package/dest/ValidatorSelectionLibBytecode.js +1 -1
  203. package/dest/checksum.d.ts +1 -1
  204. package/dest/checksum.js +1 -1
  205. package/dest/index.d.ts +2 -0
  206. package/dest/index.d.ts.map +1 -1
  207. package/dest/index.js +2 -0
  208. package/dest/index.js.map +1 -1
  209. package/l1-contracts/cache/solidity-files-cache.json +1 -1
  210. package/l1-contracts/foundry.toml +1 -1
  211. package/l1-contracts/out/AddressSnapshotLib.sol/AddressSnapshotLib.json +1 -1
  212. package/l1-contracts/out/AttestationLib.sol/AttestationLib.json +1 -1
  213. package/l1-contracts/out/AttesterExitExtLib.sol/AttesterExitExtLib.json +1 -1
  214. package/l1-contracts/out/BN254Lib.sol/BN254Lib.json +1 -1
  215. package/l1-contracts/out/Ballot.sol/BallotLib.json +1 -1
  216. package/l1-contracts/out/BlobLib.sol/BlobLib.json +1 -1
  217. package/l1-contracts/out/Bn254LibWrapper.sol/Bn254LibWrapper.json +1 -1
  218. package/l1-contracts/out/CheckpointLog.sol/CompressedTempCheckpointLogLib.json +1 -1
  219. package/l1-contracts/out/CheckpointedUintLib.sol/CheckpointedUintLib.json +1 -1
  220. package/l1-contracts/out/CoinIssuer.sol/CoinIssuer.json +1 -1
  221. package/l1-contracts/out/CompressedTimeMath.sol/CompressedTimeMath.json +1 -1
  222. package/l1-contracts/out/Configuration.sol/CompressedConfigurationLib.json +1 -1
  223. package/l1-contracts/out/ConfigurationLib.sol/ConfigurationLib.json +1 -1
  224. package/l1-contracts/out/ConstantsGen.sol/Constants.json +1 -1
  225. package/l1-contracts/out/CoordinationSignatureLib.sol/CoordinationSignatureLib.json +1 -1
  226. package/l1-contracts/out/DataStructures.sol/DataStructures.json +1 -1
  227. package/l1-contracts/out/DateGatedRelayer.sol/DateGatedRelayer.json +1 -1
  228. package/l1-contracts/out/DeployAztecL1Contracts.s.sol/DeployAztecL1Contracts.json +1 -1
  229. package/l1-contracts/out/DeployRollupForUpgrade.s.sol/DeployRollupForUpgrade.json +1 -1
  230. package/l1-contracts/out/DeployRollupLib.sol/DeployRollupLib.json +1 -1
  231. package/l1-contracts/out/DeploymentConfiguration.sol/DeploymentConfiguration.json +1 -1
  232. package/l1-contracts/out/DeploymentConfiguration.sol/IDeploymentConfiguration.json +1 -1
  233. package/l1-contracts/out/DepositDelegationLib.sol/DepositDelegationLib.json +1 -1
  234. package/l1-contracts/out/EmpireBase.sol/EmpireBase.json +1 -1
  235. package/l1-contracts/out/EpochProofExtLib.sol/EpochProofExtLib.json +1 -1
  236. package/l1-contracts/out/EpochProofLib.sol/EpochProofLib.json +1 -1
  237. package/l1-contracts/out/Errors.sol/Errors.json +1 -1
  238. package/l1-contracts/out/EscapeHatch.sol/EscapeHatch.json +1 -1
  239. package/l1-contracts/out/FeeAssetHandler.sol/FeeAssetHandler.json +1 -1
  240. package/l1-contracts/out/FeeAssetHandler.sol/IFeeAssetHandler.json +1 -1
  241. package/l1-contracts/out/FeeConfig.sol/FeeConfigLib.json +1 -1
  242. package/l1-contracts/out/FeeConfig.sol/PriceLib.json +1 -1
  243. package/l1-contracts/out/FeeJuicePortal.sol/FeeJuicePortal.json +1 -1
  244. package/l1-contracts/out/FeeLib.sol/FeeLib.json +1 -1
  245. package/l1-contracts/out/FeeStructs.sol/FeeHeaderLib.json +1 -1
  246. package/l1-contracts/out/FeeStructs.sol/FeeStructsLib.json +1 -1
  247. package/l1-contracts/out/FieldLib.sol/FieldLib.json +1 -1
  248. package/l1-contracts/out/FlushRewarder.sol/FlushRewarder.json +1 -1
  249. package/l1-contracts/out/GSE.sol/GSE.json +1 -1
  250. package/l1-contracts/out/GSE.sol/GSECore.json +1 -1
  251. package/l1-contracts/out/GSE.sol/IGSE.json +1 -1
  252. package/l1-contracts/out/GSE.sol/IGSECore.json +1 -1
  253. package/l1-contracts/out/GSEPayload.sol/GSEPayload.json +1 -1
  254. package/l1-contracts/out/Governance.sol/Governance.json +1 -1
  255. package/l1-contracts/out/GovernanceProposer.sol/GovernanceProposer.json +1 -1
  256. package/l1-contracts/out/Hash.sol/Hash.json +1 -1
  257. package/l1-contracts/out/HonkVerifier.sol/HonkVerifier.json +1 -1
  258. package/l1-contracts/out/IBn254LibWrapper.sol/IBn254LibWrapper.json +1 -1
  259. package/l1-contracts/out/ICoinIssuer.sol/ICoinIssuer.json +1 -1
  260. package/l1-contracts/out/IDateGatedRelayer.sol/IDateGatedRelayer.json +1 -1
  261. package/l1-contracts/out/IEmpire.sol/IEmperor.json +1 -1
  262. package/l1-contracts/out/IEmpire.sol/IEmpire.json +1 -1
  263. package/l1-contracts/out/IFeeJuicePortal.sol/IFeeJuicePortal.json +1 -1
  264. package/l1-contracts/out/IFlushRewarder.sol/IFlushRewarder.json +1 -1
  265. package/l1-contracts/out/IGovernance.sol/IGovernance.json +1 -1
  266. package/l1-contracts/out/IGovernanceProposer.sol/IGovernanceProposer.json +1 -1
  267. package/l1-contracts/out/IInbox.sol/IInbox.json +1 -1
  268. package/l1-contracts/out/IInstance.sol/IInstance.json +1 -1
  269. package/l1-contracts/out/IMintableERC20.sol/IMintableERC20.json +1 -1
  270. package/l1-contracts/out/IOutbox.sol/IOutbox.json +1 -1
  271. package/l1-contracts/out/IPayload.sol/IPayload.json +1 -1
  272. package/l1-contracts/out/IProposerPayload.sol/IProposerPayload.json +1 -1
  273. package/l1-contracts/out/IRegistry.sol/IHaveVersion.json +1 -1
  274. package/l1-contracts/out/IRegistry.sol/IRegistry.json +1 -1
  275. package/l1-contracts/out/IRewardDistributor.sol/IRewardDistributor.json +1 -1
  276. package/l1-contracts/out/IRollup.sol/IRollup.json +1 -1
  277. package/l1-contracts/out/IRollup.sol/IRollupCore.json +1 -1
  278. package/l1-contracts/out/IRootRegistry.sol/IRootRegistry.json +1 -1
  279. package/l1-contracts/out/ISequencerRewardCalculator.sol/ISequencerRewardCalculator.json +1 -0
  280. package/l1-contracts/out/ISlasher.sol/ISlasher.json +1 -1
  281. package/l1-contracts/out/IStaking.sol/IStaking.json +1 -1
  282. package/l1-contracts/out/IStaking.sol/IStakingCore.json +1 -1
  283. package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelection.json +1 -1
  284. package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelectionCore.json +1 -1
  285. package/l1-contracts/out/IVerifier.sol/IVerifier.json +1 -1
  286. package/l1-contracts/out/Inbox.sol/Inbox.json +1 -1
  287. package/l1-contracts/out/InputsExtractor.sol/InputsExtractor.json +1 -1
  288. package/l1-contracts/out/InvalidateLib.sol/InvalidateLib.json +1 -1
  289. package/l1-contracts/out/MerkleLib.sol/MerkleLib.json +1 -1
  290. package/l1-contracts/out/MockERC20.sol/MockERC20.json +1 -1
  291. package/l1-contracts/out/MockERC721.sol/MockERC721.json +1 -1
  292. package/l1-contracts/out/MockFeeJuicePortal.sol/MockFeeJuicePortal.json +1 -1
  293. package/l1-contracts/out/MockVerifier.sol/MockVerifier.json +1 -1
  294. package/l1-contracts/out/MockZKPassportVerifier.sol/IZKPassportVerifier.json +1 -1
  295. package/l1-contracts/out/MockZKPassportVerifier.sol/MockZKPassportVerifier.json +1 -1
  296. package/l1-contracts/out/MultiAdder.sol/IMultiAdder.json +1 -1
  297. package/l1-contracts/out/MultiAdder.sol/MultiAdder.json +1 -1
  298. package/l1-contracts/out/Outbox.sol/Outbox.json +1 -1
  299. package/l1-contracts/out/OuterCount8.sol/HonkVerifier.json +1 -1
  300. package/l1-contracts/out/Proposal.sol/CompressedProposalLib.json +1 -1
  301. package/l1-contracts/out/ProposalLib.sol/ProposalLib.json +1 -1
  302. package/l1-contracts/out/ProposeLib.sol/ProposeLib.json +1 -1
  303. package/l1-contracts/out/ProposedHeaderLib.sol/ProposedHeaderLib.json +1 -1
  304. package/l1-contracts/out/RegisterNewRollupVersionPayload.sol/RegisterNewRollupVersionPayload.json +1 -1
  305. package/l1-contracts/out/Registry.sol/Registry.json +1 -1
  306. package/l1-contracts/out/RewardBooster.sol/IBooster.json +1 -1
  307. package/l1-contracts/out/RewardBooster.sol/IBoosterCore.json +1 -1
  308. package/l1-contracts/out/RewardBooster.sol/RewardBooster.json +1 -1
  309. package/l1-contracts/out/RewardDistributor.sol/RewardDistributor.json +1 -1
  310. package/l1-contracts/out/RewardExtLib.sol/RewardExtLib.json +1 -1
  311. package/l1-contracts/out/RewardLib.sol/BpsLib.json +1 -1
  312. package/l1-contracts/out/RewardLib.sol/RewardLib.json +1 -1
  313. package/l1-contracts/out/Rollup.sol/Rollup.json +1 -1
  314. package/l1-contracts/out/RollupConfiguration.sol/IRollupConfiguration.json +1 -1
  315. package/l1-contracts/out/RollupConfiguration.sol/RollupConfiguration.json +1 -1
  316. package/l1-contracts/out/RollupCore.sol/RollupCore.json +1 -1
  317. package/l1-contracts/out/RollupOperationsExtLib.sol/RollupOperationsExtLib.json +1 -1
  318. package/l1-contracts/out/STFLib.sol/STFLib.json +1 -1
  319. package/l1-contracts/out/SampleLib.sol/SampleLib.json +1 -1
  320. package/l1-contracts/out/SequencerRewardCalculatorLib.sol/SequencerRewardCalculatorLib.json +1 -0
  321. package/l1-contracts/out/SignatureLib.sol/SignatureLib.json +1 -1
  322. package/l1-contracts/out/SlashPayload.sol/SlashPayload.json +1 -1
  323. package/l1-contracts/out/SlashPayloadCloneable.sol/SlashPayloadCloneable.json +1 -1
  324. package/l1-contracts/out/SlashPayloadLib.sol/SlashPayloadLib.json +1 -1
  325. package/l1-contracts/out/SlashRoundLib.sol/CompressedSlashRoundMath.json +1 -1
  326. package/l1-contracts/out/Slasher.sol/Slasher.json +1 -1
  327. package/l1-contracts/out/SlasherDeploymentExtLib.sol/SlasherDeploymentExtLib.json +1 -1
  328. package/l1-contracts/out/SlashingProposer.sol/SlashingProposer.json +1 -1
  329. package/l1-contracts/out/StakingAssetHandler.sol/IStakingAssetHandler.json +1 -1
  330. package/l1-contracts/out/StakingAssetHandler.sol/StakingAssetHandler.json +1 -1
  331. package/l1-contracts/out/StakingLib.sol/StakingLib.json +1 -1
  332. package/l1-contracts/out/StakingQueue.sol/StakingQueueLib.json +1 -1
  333. package/l1-contracts/out/StakingQueueConfig.sol/StakingQueueConfigLib.json +1 -1
  334. package/l1-contracts/out/StdError.sol/stdError.json +1 -1
  335. package/l1-contracts/out/TestERC20.sol/TestERC20.json +1 -1
  336. package/l1-contracts/out/TestPayloads.sol/CallAssetPayload.json +1 -1
  337. package/l1-contracts/out/TestPayloads.sol/CallRevertingPayload.json +1 -1
  338. package/l1-contracts/out/TestPayloads.sol/EmptyPayload.json +1 -1
  339. package/l1-contracts/out/TestPayloads.sol/FakeRollup.json +1 -1
  340. package/l1-contracts/out/TestPayloads.sol/RevertingCall.json +1 -1
  341. package/l1-contracts/out/TestPayloads.sol/UpgradePayload.json +1 -1
  342. package/l1-contracts/out/TimeLib.sol/TimeLib.json +1 -1
  343. package/l1-contracts/out/Tips.sol/ChainTipsLib.json +1 -1
  344. package/l1-contracts/out/ValidatorOperationsExtLib.sol/ValidatorOperationsExtLib.json +1 -1
  345. package/l1-contracts/out/ValidatorSelectionLib.sol/ValidatorSelectionLib.json +1 -1
  346. package/l1-contracts/out/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
  347. package/l1-contracts/out/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
  348. package/l1-contracts/out/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
  349. package/l1-contracts/out/build-info/4cb7b5442b848dcc.json +1 -0
  350. package/l1-contracts/out/generated/HonkVerifier.sol/HonkVerifier.json +1 -1
  351. package/l1-contracts/out/libraries/Errors.sol/Errors.json +1 -1
  352. package/l1-contracts/out/rollup/BlobLib.sol/BlobLib.json +1 -1
  353. package/l1-contracts/out/src/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
  354. package/l1-contracts/out/src/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
  355. package/l1-contracts/out/src/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
  356. package/l1-contracts/script/deploy/RollupConfiguration.sol +5 -19
  357. package/l1-contracts/scripts/network-defaults.json +1 -2
  358. package/l1-contracts/src/core/Rollup.sol +18 -12
  359. package/l1-contracts/src/core/RollupCore.sol +14 -27
  360. package/l1-contracts/src/core/interfaces/IRollup.sol +7 -11
  361. package/l1-contracts/src/core/interfaces/ISequencerRewardCalculator.sol +39 -0
  362. package/l1-contracts/src/core/interfaces/IValidatorSelection.sol +0 -2
  363. package/l1-contracts/src/core/libraries/Errors.sol +3 -6
  364. package/l1-contracts/src/core/libraries/rollup/BlobLib.sol +16 -6
  365. package/l1-contracts/src/core/libraries/rollup/EpochProofExtLib.sol +2 -7
  366. package/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +4 -12
  367. package/l1-contracts/src/core/libraries/rollup/RewardExtLib.sol +30 -12
  368. package/l1-contracts/src/core/libraries/rollup/RewardLib.sol +187 -250
  369. package/l1-contracts/src/core/libraries/rollup/SequencerRewardCalculatorLib.sol +110 -0
  370. package/l1-contracts/src/core/libraries/rollup/ValidatorSelectionLib.sol +2 -4
  371. package/package.json +1 -1
  372. package/l1-contracts/out/RewardLib.sol/IATP.json +0 -1
  373. package/l1-contracts/out/RewardLib.sol/IATPStaker.json +0 -1
  374. package/l1-contracts/out/build-info/f88e638ee47a1ead.json +0 -1
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[{"name":"_admin","type":"address","internalType":"address"},{"name":"_rootVerifier","type":"address","internalType":"contract ZKPassportRootVerifier"}],"stateMutability":"nonpayable"},{"type":"function","name":"addProofVerifiers","inputs":[{"name":"_proofVerifiers","type":"tuple[]","internalType":"struct ProofVerifier[]","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"verifier","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proofVerifiers","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeProofVerifiers","inputs":[{"name":"vkeyHashes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rootVerifier","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ZKPassportRootVerifier"}],"stateMutability":"view"},{"type":"function","name":"setPaused","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verify","inputs":[{"name":"rootRegistry","type":"address","internalType":"contract IRootRegistry"},{"name":"params","type":"tuple","internalType":"struct ProofVerificationParams","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"proofVerificationData","type":"tuple","internalType":"struct ProofVerificationData","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"},{"name":"publicInputs","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"committedInputs","type":"bytes","internalType":"bytes"},{"name":"serviceConfig","type":"tuple","internalType":"struct ServiceConfig","components":[{"name":"validityPeriodInSeconds","type":"uint256","internalType":"uint256"},{"name":"domain","type":"string","internalType":"string"},{"name":"scope","type":"string","internalType":"string"},{"name":"devMode","type":"bool","internalType":"bool"}]}]}],"outputs":[{"name":"isValid","type":"bool","internalType":"bool"},{"name":"uniqueIdentifier","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"AdminUpdated","inputs":[{"name":"oldAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PausedStatusChanged","inputs":[{"name":"paused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ProofVerifierAdded","inputs":[{"name":"proofVerifier","type":"address","indexed":true,"internalType":"address"},{"name":"vkeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ProofVerifierRemoved","inputs":[{"name":"proofVerifier","type":"address","indexed":true,"internalType":"address"},{"name":"vkeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ZKPassportSubVerifierDeployed","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"rootVerifier","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b5060405161178438038061178483398101604081905261002e9161016d565b6001600160a01b0382166100895760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064015b60405180910390fd5b5f80546001600160a01b0319166001600160a01b038481169190911790915581166101025760405162461bcd60e51b8152602060048201526024808201527f526f6f742076657269666965722063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610080565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917f2074ff6f26d7905cc1807b94a6a9a002ce0c7a92e95e5ab8edf6b28b56e9f8d89190a350506101a5565b6001600160a01b038116811461016a575f5ffd5b50565b5f5f6040838503121561017e575f5ffd5b825161018981610156565b602084015190925061019a81610156565b809150509250929050565b6115d2806101b25f395ff3fe608060405234801561000f575f5ffd5b5060043610610081575f3560e01c806316c38b3c146100855780631e8e0f8e1461009a5780632576b26f146100df57806326700c04146100f25780635c975abb1461010557806375829def14610128578063e4c0b80b1461013b578063e88d4ee61461014e578063f851a44014610178575b5f5ffd5b610098610093366004611154565b61018a565b005b6100c26100a836600461116f565b60026020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ed366004611186565b610213565b6100986101003660046111f5565b61031f565b5f5461011890600160a01b900460ff1681565b60405190151581526020016100d6565b610098610136366004611268565b61044c565b6001546100c2906001600160a01b031681565b61016161015c366004611283565b61051a565b6040805192151583526020830191909152016100d6565b5f546100c2906001600160a01b031681565b5f546001600160a01b031633146101bc5760405162461bcd60e51b81526004016101b3906112d5565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061020890831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461023c5760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a575f60025f85858581811061025c5761025c61130c565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080156103115760025f85858581811061029b5761029b61130c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558383838181106102d3576102d361130c565b90506020020135816001600160a01b03167fcbc6363fd394dcb0ae12ee150a5f2a71305110addee38f87682d670b632f5b4060405160405180910390a35b5060010161023e565b505050565b5f546001600160a01b031633146103485760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a578282828181106103645761036461130c565b905060400201602001602081019061037c9190611268565b60025f8585858181106103915761039161130c565b9050604002015f013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106103dc576103dc61130c565b9050604002015f01358383838181106103f7576103f761130c565b905060400201602001602081019061040f9190611268565b6001600160a01b03167f220dc8943553a5812167948533c5a3a0c0674c926e0aea0f6b0a8cf5701044b460405160405180910390a360010161034a565b5f546001600160a01b031633146104755760405162461bcd60e51b81526004016101b3906112d5565b6001600160a01b0381166104cb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016101b3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f80548190600160a01b900460ff161561056b5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016101b3565b6001546001600160a01b031633146105e55760405162461bcd60e51b815260206004820152603760248201527f546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c656460448201527610333937b6903a3432903937b7ba103b32b934b334b2b960491b60648201526084016101b3565b5f6105fc6105f66020860186611320565b35610b35565b90505f61060c6020860186611320565b61061a90604081019061133e565b600281811061062b5761062b61130c565b905060200201355f1c90506106758686806020019061064a9190611320565b61065890604081019061133e565b5f8181106106685761066861130c565b9050602002013583610b94565b6106b2866106866020880188611320565b61069490604081019061133e565b60018181106106a5576106a561130c565b9050602002013583610c5f565b6106c9816106c36060880188611383565b35610d20565b6107315760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016101b3565b61078a6107416020870187611320565b61074f90604081019061133e565b61075c6060890189611383565b61076a906020810190611397565b61077760608b018b611383565b610785906040810190611397565b610d32565b6107d05760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420646f6d61696e206f722073636f706560481b60448201526064016101b3565b6108696107e06020870187611320565b6107ee90604081019061133e565b600590600261080060208b018b611320565b61080e90604081019061133e565b6108199291506113ed565b9261082693929190611400565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610864925050506040880188611397565b610efa565b5f6108776020870187611320565b61088590604081019061133e565b600261089460208a018a611320565b6108a290604081019061133e565b6108ad9291506113ed565b8181106108bc576108bc61130c565b905060200201355f1c60038111156108d6576108d661142b565b905060028160038111156108ec576108ec61142b565b1415801561090c575060038160038111156109095761090961142b565b14155b80610930575061091f6060870187611383565b610930906080810190606001611154565b61098d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016101b3565b5f8160038111156109a0576109a061142b565b14806109c557506109b46060870187611383565b6109c5906080810190606001611154565b610a255760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016101b3565b6001600160a01b03831663ea50d0e4610a416020890189611320565b610a4f906020810190611397565b610a5c60208b018b611320565b610a6a90604081019061133e565b6040518563ffffffff1660e01b8152600401610a89949392919061143f565b602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac891906114a1565b94505f6001610ada6020890189611320565b610ae890604081019061133e565b610af39291506113ed565b9050610b026020880188611320565b610b1090604081019061133e565b82818110610b2057610b2061130c565b905060200201359450505050505b9250929050565b5f818152600260205260408120546001600160a01b031680610b8e5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016101b3565b92915050565b604051631557214b60e11b81526001600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610be5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906114a1565b61031a5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016101b3565b604051631557214b60e11b81526002600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd491906114a1565b61031a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016101b3565b5f610d2b838361110f565b9392505050565b5f5f610d7286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610dec57600860028787604051602001610d8d9291906114bc565b60408051601f1981840301815290829052610da7916114cb565b602060405180830381855afa158015610dc2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610de591906114e1565b901c610dee565b5f5b90505f610e2f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610ea957600860028686604051602001610e4a9291906114bc565b60408051601f1981840301815290829052610e64916114cb565b602060405180830381855afa158015610e7f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ea291906114e1565b901c610eab565b5f5b90508189896003818110610ec157610ec161130c565b90506020020135148015610eed57508089896004818110610ee457610ee461130c565b90506020020135145b9998505050505050505050565b5f805b8282108015610f0c5750845181105b15611069575f8484610f1f8560016114f8565b90610f2b8660036114f8565b92610f389392919061150b565b610f4191611532565b60f01c90505f60086002878688610f5887836114f8565b610f639060036114f8565b92610f709392919061150b565b604051602001610f819291906114bc565b60408051601f1981840301815290829052610f9b916114cb565b602060405180830381855afa158015610fb6573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fd991906114e1565b901c9050868381518110610fef57610fef61130c565b6020026020010151811461103a5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016101b3565b61104582600361156a565b6110539061ffff16856114f8565b93508261105f81611584565b9350505050610efd565b8183146110b85760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016101b3565b845181146111085760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e747300000060448201526064016101b3565b5050505050565b5f8061111b83856114f8565b905083421015801561112c57508381115b801561113757504281115b949350505050565b511590565b8015158114611151575f5ffd5b50565b5f60208284031215611164575f5ffd5b8135610d2b81611144565b5f6020828403121561117f575f5ffd5b5035919050565b5f5f60208385031215611197575f5ffd5b82356001600160401b038111156111ac575f5ffd5b8301601f810185136111bc575f5ffd5b80356001600160401b038111156111d1575f5ffd5b8560208260051b84010111156111e5575f5ffd5b6020919091019590945092505050565b5f5f60208385031215611206575f5ffd5b82356001600160401b0381111561121b575f5ffd5b8301601f8101851361122b575f5ffd5b80356001600160401b03811115611240575f5ffd5b8560208260061b84010111156111e5575f5ffd5b6001600160a01b0381168114611151575f5ffd5b5f60208284031215611278575f5ffd5b8135610d2b81611254565b5f5f60408385031215611294575f5ffd5b823561129f81611254565b915060208301356001600160401b038111156112b9575f5ffd5b8301608081860312156112ca575f5ffd5b809150509250929050565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611334575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611353575f5ffd5b8301803591506001600160401b0382111561136c575f5ffd5b6020019150600581901b3603821315610b2e575f5ffd5b5f8235607e19833603018112611334575f5ffd5b5f5f8335601e198436030181126113ac575f5ffd5b8301803591506001600160401b038211156113c5575f5ffd5b602001915036819003821315610b2e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b8e57610b8e6113d9565b5f5f8585111561140e575f5ffd5b8386111561141a575f5ffd5b5050600583901b0193919092039150565b634e487b7160e01b5f52602160045260245ffd5b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115611488575f5ffd5b8360051b80866080840137016080019695505050505050565b5f602082840312156114b1575f5ffd5b8151610d2b81611144565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f1575f5ffd5b5051919050565b80820180821115610b8e57610b8e6113d9565b5f5f85851115611519575f5ffd5b83861115611525575f5ffd5b5050820193919092039150565b80356001600160f01b03198116906002841015611563576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff8181168382160190811115610b8e57610b8e6113d9565b5f60018201611595576115956113d9565b506001019056fea264697066735822122003cfd3eddc3b7ea817cfc09410685fffcdd3f65a763541dd2750990cd6c9a4b664736f6c634300081e0033","sourceMap":"518:9887:10:-:0;;;1364:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1434:20:10;;1426:61;;;;-1:-1:-1;;;1426:61:10;;773:2:182;1426:61:10;;;755:21:182;812:2;792:18;;;785:30;851;831:18;;;824:58;899:18;;1426:61:10;;;;;;;;;1493:5;:14;;-1:-1:-1;;;;;;1493:14:10;-1:-1:-1;;;;;1493:14:10;;;;;;;;;;1521:36;;1513:85;;;;-1:-1:-1;;;1513:85:10;;1130:2:182;1513:85:10;;;1112:21:182;1169:2;1149:18;;;1142:30;1208:34;1188:18;;;1181:62;-1:-1:-1;;;1259:18:182;;;1252:34;1303:19;;1513:85:10;928:400:182;1513:85:10;1604:12;:28;;-1:-1:-1;;;;;;1604:28:10;-1:-1:-1;;;;;1604:28:10;;;;;;;;;-1:-1:-1;1673:5:10;;1643:60;;1604:28;;1673:5;;1643:60;;-1:-1:-1;1643:60:10;1364:344;;518:9887;;14:131:182;-1:-1:-1;;;;;89:31:182;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:416::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;369:9;363:16;388:31;413:5;388:31;:::i;:::-;488:2;473:18;;467:25;438:5;;-1:-1:-1;501:33:182;467:25;501:33;:::i;:::-;553:7;543:17;;;150:416;;;;;:::o;928:400::-;518:9887:10;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610081575f3560e01c806316c38b3c146100855780631e8e0f8e1461009a5780632576b26f146100df57806326700c04146100f25780635c975abb1461010557806375829def14610128578063e4c0b80b1461013b578063e88d4ee61461014e578063f851a44014610178575b5f5ffd5b610098610093366004611154565b61018a565b005b6100c26100a836600461116f565b60026020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ed366004611186565b610213565b6100986101003660046111f5565b61031f565b5f5461011890600160a01b900460ff1681565b60405190151581526020016100d6565b610098610136366004611268565b61044c565b6001546100c2906001600160a01b031681565b61016161015c366004611283565b61051a565b6040805192151583526020830191909152016100d6565b5f546100c2906001600160a01b031681565b5f546001600160a01b031633146101bc5760405162461bcd60e51b81526004016101b3906112d5565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061020890831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461023c5760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a575f60025f85858581811061025c5761025c61130c565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080156103115760025f85858581811061029b5761029b61130c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558383838181106102d3576102d361130c565b90506020020135816001600160a01b03167fcbc6363fd394dcb0ae12ee150a5f2a71305110addee38f87682d670b632f5b4060405160405180910390a35b5060010161023e565b505050565b5f546001600160a01b031633146103485760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a578282828181106103645761036461130c565b905060400201602001602081019061037c9190611268565b60025f8585858181106103915761039161130c565b9050604002015f013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106103dc576103dc61130c565b9050604002015f01358383838181106103f7576103f761130c565b905060400201602001602081019061040f9190611268565b6001600160a01b03167f220dc8943553a5812167948533c5a3a0c0674c926e0aea0f6b0a8cf5701044b460405160405180910390a360010161034a565b5f546001600160a01b031633146104755760405162461bcd60e51b81526004016101b3906112d5565b6001600160a01b0381166104cb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016101b3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f80548190600160a01b900460ff161561056b5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016101b3565b6001546001600160a01b031633146105e55760405162461bcd60e51b815260206004820152603760248201527f546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c656460448201527610333937b6903a3432903937b7ba103b32b934b334b2b960491b60648201526084016101b3565b5f6105fc6105f66020860186611320565b35610b35565b90505f61060c6020860186611320565b61061a90604081019061133e565b600281811061062b5761062b61130c565b905060200201355f1c90506106758686806020019061064a9190611320565b61065890604081019061133e565b5f8181106106685761066861130c565b9050602002013583610b94565b6106b2866106866020880188611320565b61069490604081019061133e565b60018181106106a5576106a561130c565b9050602002013583610c5f565b6106c9816106c36060880188611383565b35610d20565b6107315760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016101b3565b61078a6107416020870187611320565b61074f90604081019061133e565b61075c6060890189611383565b61076a906020810190611397565b61077760608b018b611383565b610785906040810190611397565b610d32565b6107d05760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420646f6d61696e206f722073636f706560481b60448201526064016101b3565b6108696107e06020870187611320565b6107ee90604081019061133e565b600590600261080060208b018b611320565b61080e90604081019061133e565b6108199291506113ed565b9261082693929190611400565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610864925050506040880188611397565b610efa565b5f6108776020870187611320565b61088590604081019061133e565b600261089460208a018a611320565b6108a290604081019061133e565b6108ad9291506113ed565b8181106108bc576108bc61130c565b905060200201355f1c60038111156108d6576108d661142b565b905060028160038111156108ec576108ec61142b565b1415801561090c575060038160038111156109095761090961142b565b14155b80610930575061091f6060870187611383565b610930906080810190606001611154565b61098d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016101b3565b5f8160038111156109a0576109a061142b565b14806109c557506109b46060870187611383565b6109c5906080810190606001611154565b610a255760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016101b3565b6001600160a01b03831663ea50d0e4610a416020890189611320565b610a4f906020810190611397565b610a5c60208b018b611320565b610a6a90604081019061133e565b6040518563ffffffff1660e01b8152600401610a89949392919061143f565b602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac891906114a1565b94505f6001610ada6020890189611320565b610ae890604081019061133e565b610af39291506113ed565b9050610b026020880188611320565b610b1090604081019061133e565b82818110610b2057610b2061130c565b905060200201359450505050505b9250929050565b5f818152600260205260408120546001600160a01b031680610b8e5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016101b3565b92915050565b604051631557214b60e11b81526001600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610be5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906114a1565b61031a5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016101b3565b604051631557214b60e11b81526002600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd491906114a1565b61031a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016101b3565b5f610d2b838361110f565b9392505050565b5f5f610d7286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610dec57600860028787604051602001610d8d9291906114bc565b60408051601f1981840301815290829052610da7916114cb565b602060405180830381855afa158015610dc2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610de591906114e1565b901c610dee565b5f5b90505f610e2f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610ea957600860028686604051602001610e4a9291906114bc565b60408051601f1981840301815290829052610e64916114cb565b602060405180830381855afa158015610e7f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ea291906114e1565b901c610eab565b5f5b90508189896003818110610ec157610ec161130c565b90506020020135148015610eed57508089896004818110610ee457610ee461130c565b90506020020135145b9998505050505050505050565b5f805b8282108015610f0c5750845181105b15611069575f8484610f1f8560016114f8565b90610f2b8660036114f8565b92610f389392919061150b565b610f4191611532565b60f01c90505f60086002878688610f5887836114f8565b610f639060036114f8565b92610f709392919061150b565b604051602001610f819291906114bc565b60408051601f1981840301815290829052610f9b916114cb565b602060405180830381855afa158015610fb6573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fd991906114e1565b901c9050868381518110610fef57610fef61130c565b6020026020010151811461103a5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016101b3565b61104582600361156a565b6110539061ffff16856114f8565b93508261105f81611584565b9350505050610efd565b8183146110b85760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016101b3565b845181146111085760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e747300000060448201526064016101b3565b5050505050565b5f8061111b83856114f8565b905083421015801561112c57508381115b801561113757504281115b949350505050565b511590565b8015158114611151575f5ffd5b50565b5f60208284031215611164575f5ffd5b8135610d2b81611144565b5f6020828403121561117f575f5ffd5b5035919050565b5f5f60208385031215611197575f5ffd5b82356001600160401b038111156111ac575f5ffd5b8301601f810185136111bc575f5ffd5b80356001600160401b038111156111d1575f5ffd5b8560208260051b84010111156111e5575f5ffd5b6020919091019590945092505050565b5f5f60208385031215611206575f5ffd5b82356001600160401b0381111561121b575f5ffd5b8301601f8101851361122b575f5ffd5b80356001600160401b03811115611240575f5ffd5b8560208260061b84010111156111e5575f5ffd5b6001600160a01b0381168114611151575f5ffd5b5f60208284031215611278575f5ffd5b8135610d2b81611254565b5f5f60408385031215611294575f5ffd5b823561129f81611254565b915060208301356001600160401b038111156112b9575f5ffd5b8301608081860312156112ca575f5ffd5b809150509250929050565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611334575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611353575f5ffd5b8301803591506001600160401b0382111561136c575f5ffd5b6020019150600581901b3603821315610b2e575f5ffd5b5f8235607e19833603018112611334575f5ffd5b5f5f8335601e198436030181126113ac575f5ffd5b8301803591506001600160401b038211156113c5575f5ffd5b602001915036819003821315610b2e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b8e57610b8e6113d9565b5f5f8585111561140e575f5ffd5b8386111561141a575f5ffd5b5050600583901b0193919092039150565b634e487b7160e01b5f52602160045260245ffd5b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115611488575f5ffd5b8360051b80866080840137016080019695505050505050565b5f602082840312156114b1575f5ffd5b8151610d2b81611144565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f1575f5ffd5b5051919050565b80820180821115610b8e57610b8e6113d9565b5f5f85851115611519575f5ffd5b83861115611525575f5ffd5b5050820193919092039150565b80356001600160f01b03198116906002841015611563576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff8181168382160190811115610b8e57610b8e6113d9565b5f60018201611595576115956113d9565b506001019056fea264697066735822122003cfd3eddc3b7ea817cfc09410685fffcdd3f65a763541dd2750990cd6c9a4b664736f6c634300081e0033","sourceMap":"518:9887:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:118;;;;;;:::i;:::-;;:::i;:::-;;776:49;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;776:49:10;;;;;;-1:-1:-1;;;;;732:32:182;;;714:51;;702:2;687:18;776:49:10;;;;;;;;2738:366;;;;;;:::i;:::-;;:::i;2406:328::-;;;;;;:::i;:::-;;:::i;577:18::-;;;;;-1:-1:-1;;;577:18:10;;;;;;;;;2204:14:182;;2197:22;2179:41;;2167:2;2152:18;577::10;2039:187:182;2051:229:10;;;;;;:::i;:::-;;:::i;638:32::-;;;;;-1:-1:-1;;;;;638:32:10;;;6715:3688;;;;;;:::i;:::-;;:::i;:::-;;;;3616:14:182;;3609:22;3591:41;;3663:2;3648:18;;3641:34;;;;3564:18;6715:3688:10;3423:258:182;553:20:10;;;;;-1:-1:-1;;;;;553:20:10;;;2284:118;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;;;;;;;;;2342:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2342:16:10::1;-1:-1:-1::0;;;;2342:16:10;;::::1;;::::0;;2369:28:::1;::::0;::::1;::::0;::::1;::::0;2351:7;2204:14:182;2197:22;2179:41;;2167:2;2152:18;;2039:187;2369:28:10::1;;;;;;;;2284:118:::0;:::o;2738:366::-;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;2829:9:::1;2824:276;2844:21:::0;;::::1;2824:276;;;2880:21;2904:14;:29;2919:10;;2930:1;2919:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;2904:29:::0;;-1:-1:-1;2904:29:10;::::1;::::0;;;;;;-1:-1:-1;2904:29:10;;-1:-1:-1;;;;;2904:29:10::1;::::0;-1:-1:-1;2945:27:10;;2941:153:::1;;2991:14;:29;3006:10;;3017:1;3006:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;2991:29:::0;;-1:-1:-1;2991:29:10;::::1;::::0;;;;;;-1:-1:-1;2991:29:10;2984:36;;-1:-1:-1;;;;;;2984:36:10::1;::::0;;3071:10;;3082:1;3071:13;;::::1;;;;;:::i;:::-;;;;;;;3056;-1:-1:-1::0;;;;;3035:50:10::1;;;;;;;;;;;2941:153;-1:-1:-1::0;2867:3:10::1;;2824:276;;;;2738:366:::0;;:::o;2406:328::-;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;2505:9:::1;2500:230;2520:26:::0;;::::1;2500:230;;;2607:15;;2623:1;2607:18;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;:::i;:::-;2561:14;:43;2576:15;;2592:1;2576:18;;;;;;;:::i;:::-;;;;;;:27;;;2561:43;;;;;;;;;;;;:73;;;;;-1:-1:-1::0;;;;;2561:73:10::1;;;;;-1:-1:-1::0;;;;;2561:73:10::1;;;;;;2695:15;;2711:1;2695:18;;;;;;;:::i;:::-;;;;;;:27;;;2666:15;;2682:1;2666:18;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2647:76:10::1;;;;;;;;;;;2548:3;;2500:230;;2051:229:::0;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;-1:-1:-1;;;;;2125:22:10;::::1;2117:63;;;::::0;-1:-1:-1;;;2117:63:10;;4375:2:182;2117:63:10::1;::::0;::::1;4357:21:182::0;4414:2;4394:18;;;4387:30;4453;4433:18;;;4426:58;4501:18;;2117:63:10::1;4173:352:182::0;2117:63:10::1;2186:16;2205:5:::0;;-1:-1:-1;;;;;2216:16:10;;::::1;-1:-1:-1::0;;;;;;2216:16:10;::::1;::::0;::::1;::::0;;2243:32:::1;::::0;2205:5;;;::::1;::::0;;;2243:32:::1;::::0;2186:16;2243:32:::1;2111:169;2051:229:::0;:::o;6715:3688::-;6874:12;2006:6;;6874:12;;-1:-1:-1;;;2006:6:10;;;;2005:7;1997:38;;;;-1:-1:-1;;;1997:38:10;;4732:2:182;1997:38:10;;;4714:21:182;4771:2;4751:18;;;4744:30;-1:-1:-1;;;4790:18:182;;;4783:48;4848:18;;1997:38:10;4530:342:182;1997:38:10;1877:12:::1;::::0;-1:-1:-1;;;;;1877:12:10::1;1855:10;:35;1847:103;;;::::0;-1:-1:-1;;;1847:103:10;;5079:2:182;1847:103:10::1;::::0;::::1;5061:21:182::0;5118:2;5098:18;;;5091:30;5157:34;5137:18;;;5130:62;-1:-1:-1;;;5208:18:182;;;5201:53;5271:19;;1847:103:10::1;4877:419:182::0;1847:103:10::1;6999:16:::2;7018:56;7036:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:37;7018:17;:56::i;:::-;6999:75:::0;-1:-1:-1;7081:24:10::2;7116:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1748:1:1;7116:73:10;;;;;;;:::i;:::-;;;;;;;7108:82;;7081:109;;7239:168;7271:12;7291:6;:28;;;;;;;;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1653:1:1;7291:86:10;;;;;;;:::i;:::-;;;;;;;7385:16;7239:24;:168::i;:::-;7452:148;7480:12:::0;7494:28:::2;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1705:1:1;7494:82:10;;;;;;;:::i;:::-;;;;;;;7578:16;7452:20;:148::i;:::-;7832:82;7851:16:::0;7869:20:::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:44;7832:18;:82::i;:::-;7817:164;;;::::0;-1:-1:-1;;;7817:164:10;;6732:2:182;7817:164:10::2;::::0;::::2;6714:21:182::0;6771:2;6751:18;;;6744:30;6810:34;6790:18;;;6783:62;-1:-1:-1;;;6861:18:182;;;6854:49;6920:19;;7817:164:10::2;6530:415:182::0;7817:164:10::2;8354:113;8368:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8411:20;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:27;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8440:20;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:26;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8354:13;:113::i;:::-;8339:167;;;::::0;-1:-1:-1;;;8339:167:10;;7679:2:182;8339:167:10::2;::::0;::::2;7661:21:182::0;7718:2;7698:18;;;7691:30;-1:-1:-1;;;7737:18:182;;;7730:53;7800:18;;8339:167:10::2;7477:347:182::0;8339:167:10::2;8574:261;8661:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:48;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1871:1:1;::::0;8797::10::2;8746:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;8746:52:10::2;:::i;:::-;8661:138;;;;;;;:::i;:::-;8574:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;8807:22:10::2;::::0;-1:-1:-1;;;8807:22:10::2;::::0;::::2;::::0;::::2;:::i;:::-;8574;:261::i;:::-;8842:27;8901:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8994:1;8943:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;8943:52:10::2;:::i;:::-;8901:95;;;;;;;:::i;:::-;;;;;;;8893:104;;8872:131;;;;;;;;:::i;:::-;8842:161:::0;-1:-1:-1;9267:39:10::2;9250:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;9327:35:10::2;9310:13;:52;;;;;;;;:::i;:::-;;;9250:112;9249:154;;;-1:-1:-1::0;9375:20:10::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:28;::::0;;;;;::::2;;;:::i;:::-;9234:225;;;::::0;-1:-1:-1;;;9234:225:10;;9314:2:182;9234:225:10::2;::::0;::::2;9296:21:182::0;9353:2;9333:18;;;9326:30;9392:34;9372:18;;;9365:62;-1:-1:-1;;;9443:18:182;;;9436:38;9491:19;;9234:225:10::2;9112:404:182::0;9234:225:10::2;9686:34;9669:13;:51;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1::0;9724:20:10::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:28;::::0;;;;;::::2;;;:::i;:::-;9654:157;;;::::0;-1:-1:-1;;;9654:157:10;;9723:2:182;9654:157:10::2;::::0;::::2;9705:21:182::0;9762:2;9742:18;;;9735:30;9801:34;9781:18;;;9774:62;-1:-1:-1;;;9852:18:182;;;9845:41;9903:19;;9654:157:10::2;9521:407:182::0;9654:157:10::2;-1:-1:-1::0;;;;;9932:31:10;::::2;;9964:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:34;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;10000:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;9932:110;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9916:126:::0;-1:-1:-1;10105:29:10::2;10188:1;10137:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;10137:52:10::2;:::i;:::-;10105:84:::0;-1:-1:-1;10214:28:10::2;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;10256:21;10214:64;;;;;;;:::i;:::-;;;;;;;10195:83;;10364:34;;;;1956:1;6715:3688:::0;;;;;:::o;5551:211::-;5619:7;5653:24;;;:14;:24;;;;;;-1:-1:-1;;;;;5653:24:10;;5683:53;;;;-1:-1:-1;;;5683:53:10;;11161:2:182;5683:53:10;;;11143:21:182;11200:2;11180:18;;;11173:30;-1:-1:-1;;;11219:18:182;;;11212:48;11277:18;;5683:53:10;10959:342:182;5683:53:10;5749:8;5551:211;-1:-1:-1;;5551:211:10:o;5766:283::-;5918:77;;-1:-1:-1;;;5918:77:10;;604:66:1;5918:77:10;;;11508:25:182;11549:18;;;11542:34;;;11592:18;;;11585:34;;;-1:-1:-1;;;;;5918:25:10;;;;;11481:18:182;;5918:77:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5903:141;;;;-1:-1:-1;;;5903:141:10;;11832:2:182;5903:141:10;;;11814:21:182;11871:2;11851:18;;;11844:30;11910:34;11890:18;;;11883:62;-1:-1:-1;;;11961:18:182;;;11954:31;12002:19;;5903:141:10;11630:397:182;6053:235:10;6180:69;;-1:-1:-1;;;6180:69:10;;710:66:1;6180:69:10;;;11508:25:182;11549:18;;;11542:34;;;11592:18;;;11585:34;;;-1:-1:-1;;;;;6180:25:10;;;;;11481:18:182;;6180:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6172:111;;;;-1:-1:-1;;;6172:111:10;;12234:2:182;6172:111:10;;;12216:21:182;12273:2;12253:18;;;12246:30;12312:31;12292:18;;;12285:59;12361:18;;6172:111:10;12032:353:182;3108:220:10;3234:4;3255:68;3277:20;3299:23;3255:21;:68::i;:::-;3248:75;3108:220;-1:-1:-1;;;3108:220:10:o;3674:696::-;3814:4;3930:17;3950:26;3970:5;;3950:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3950:19:10;;-1:-1:-1;;;3950:26:10:i;:::-;:78;;4027:1;3992:31;4016:5;;3999:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3999:23:10;;;;;;;;;;3992:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;3950:78;;;3987:1;3950:78;3930:98;;4129:20;4152:29;4172:8;;4152:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4152:19:10;;-1:-1:-1;;;4152:29:10:i;:::-;:84;;4235:1;4197:34;4221:8;;4204:26;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:26:10;;;;;;;;;;4197:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;4152:84;;;4192:1;4152:84;4129:107;;4296:9;4255:12;;1784:1:1;4255:37:10;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;4353:12;4309;;1823:1:1;4309:40:10;;;;;;;:::i;:::-;;;;;;;:56;4255:110;4242:123;3674:696;-1:-1:-1;;;;;;;;;3674:696:10:o;4374:1173::-;4493:14;;4540:750;4547:31;;;:66;;;;;4590:16;:23;4582:5;:31;4547:66;4540:750;;;4815:13;4845:15;;4861:10;:6;4870:1;4861:10;:::i;:::-;4845:38;4872:10;:6;4881:1;4872:10;:::i;:::-;4845:38;;;;;;;:::i;:::-;4838:46;;;:::i;:::-;4831:54;;;-1:-1:-1;5049:28:10;5153:1;5080:69;5104:15;5120:6;5104:15;5127;4831:54;5120:6;5127:15;:::i;:::-;:19;;5145:1;5127:19;:::i;:::-;5104:43;;;;;;;:::i;:::-;5087:61;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5087:61:10;;;;;;;;;;5080:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;5049:105;;5194:16;5211:5;5194:23;;;;;;;;:::i;:::-;;;;;;;5170:20;:47;5162:78;;;;-1:-1:-1;;;5162:78:10;;14441:2:182;5162:78:10;;;14423:21:182;14480:2;14460:18;;;14453:30;-1:-1:-1;;;14499:18:182;;;14492:48;14557:18;;5162:78:10;14239:342:182;5162:78:10;5258:10;:6;5267:1;5258:10;:::i;:::-;5248:20;;;;;;:::i;:::-;;-1:-1:-1;5276:7:10;;;;:::i;:::-;;;;4615:675;;4540:750;;;5394:32;;;5386:76;;;;-1:-1:-1;;;5386:76:10;;15088:2:182;5386:76:10;;;15070:21:182;15127:2;15107:18;;;15100:30;15166:33;15146:18;;;15139:61;15217:18;;5386:76:10;14886:355:182;5386:76:10;5485:16;:23;5476:5;:32;5468:74;;;;-1:-1:-1;;;5468:74:10;;15448:2:182;5468:74:10;;;15430:21:182;15487:2;15467:18;;;15460:30;15526:31;15506:18;;;15499:59;15575:18;;5468:74:10;15246:353:182;5468:74:10;4487:1060;;4374:1173;;;:::o;710:313:2:-;806:4;;852:35;864:23;852:9;:35;:::i;:::-;818:69;;925:9;906:15;:28;;:67;;;;;964:9;938:23;:35;906:67;:112;;;;;1003:15;977:23;:41;906:112;893:125;710:313;-1:-1:-1;;;;710:313:2:o;506:101:6:-;582:15;:20;;506:101::o;14:118:182:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:241::-;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;383:180::-;442:6;495:2;483:9;474:7;470:23;466:32;463:52;;;511:1;508;501:12;463:52;-1:-1:-1;534:23:182;;383:180;-1:-1:-1;383:180:182:o;776:610::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;979:9;966:23;-1:-1:-1;;;;;1004:6:182;1001:30;998:50;;;1044:1;1041;1034:12;998:50;1067:22;;1120:4;1112:13;;1108:27;-1:-1:-1;1098:55:182;;1149:1;1146;1139:12;1098:55;1189:2;1176:16;-1:-1:-1;;;;;1207:6:182;1204:30;1201:50;;;1247:1;1244;1237:12;1201:50;1300:7;1295:2;1285:6;1282:1;1278:14;1274:2;1270:23;1266:32;1263:45;1260:65;;;1321:1;1318;1311:12;1260:65;1352:2;1344:11;;;;;1374:6;;-1:-1:-1;776:610:182;-1:-1:-1;;;776:610:182:o;1391:643::-;1510:6;1518;1571:2;1559:9;1550:7;1546:23;1542:32;1539:52;;;1587:1;1584;1577:12;1539:52;1627:9;1614:23;-1:-1:-1;;;;;1652:6:182;1649:30;1646:50;;;1692:1;1689;1682:12;1646:50;1715:22;;1768:4;1760:13;;1756:27;-1:-1:-1;1746:55:182;;1797:1;1794;1787:12;1746:55;1837:2;1824:16;-1:-1:-1;;;;;1855:6:182;1852:30;1849:50;;;1895:1;1892;1885:12;1849:50;1948:7;1943:2;1933:6;1930:1;1926:14;1922:2;1918:23;1914:32;1911:45;1908:65;;;1969:1;1966;1959:12;2231:131;-1:-1:-1;;;;;2306:31:182;;2296:42;;2286:70;;2352:1;2349;2342:12;2367:247;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2858:560::-;2991:6;2999;3052:2;3040:9;3031:7;3027:23;3023:32;3020:52;;;3068:1;3065;3058:12;3020:52;3107:9;3094:23;3126:31;3151:5;3126:31;:::i;:::-;3176:5;-1:-1:-1;3232:2:182;3217:18;;3204:32;-1:-1:-1;;;;;3248:30:182;;3245:50;;;3291:1;3288;3281:12;3245:50;3314:22;;3370:3;3352:16;;;3348:26;3345:46;;;3387:1;3384;3377:12;3345:46;3410:2;3400:12;;;2858:560;;;;;:::o;3686:350::-;3888:2;3870:21;;;3927:2;3907:18;;;3900:30;3966:28;3961:2;3946:18;;3939:56;4027:2;4012:18;;3686:350::o;4041:127::-;4102:10;4097:3;4093:20;4090:1;4083:31;4133:4;4130:1;4123:15;4157:4;4154:1;4147:15;5301:338;5408:4;5466:11;5453:25;5560:2;5556:7;5545:8;5529:14;5525:29;5521:43;5501:18;5497:68;5487:96;;5579:1;5576;5569:12;5487:96;5600:33;;;;;5301:338;-1:-1:-1;;5301:338:182:o;5644:545::-;5737:4;5743:6;5803:11;5790:25;5897:2;5893:7;5882:8;5866:14;5862:29;5858:43;5838:18;5834:68;5824:96;;5916:1;5913;5906:12;5824:96;5943:33;;5995:20;;;-1:-1:-1;;;;;;6027:30:182;;6024:50;;;6070:1;6067;6060:12;6024:50;6103:4;6091:17;;-1:-1:-1;6154:1:182;6150:14;;;6134;6130:35;6120:46;;6117:66;;;6179:1;6176;6169:12;6194:331;6293:4;6351:11;6338:25;6445:3;6441:8;6430;6414:14;6410:29;6406:44;6386:18;6382:69;6372:97;;6465:1;6462;6455:12;6950:522;7028:4;7034:6;7094:11;7081:25;7188:2;7184:7;7173:8;7157:14;7153:29;7149:43;7129:18;7125:68;7115:96;;7207:1;7204;7197:12;7115:96;7234:33;;7286:20;;;-1:-1:-1;;;;;;7318:30:182;;7315:50;;;7361:1;7358;7351:12;7315:50;7394:4;7382:17;;-1:-1:-1;7425:14:182;7421:27;;;7411:38;;7408:58;;;7462:1;7459;7452:12;7829:127;7890:10;7885:3;7881:20;7878:1;7871:31;7921:4;7918:1;7911:15;7945:4;7942:1;7935:15;7961:128;8028:9;;;8049:11;;;8046:37;;;8063:18;;:::i;8094:355::-;8215:9;8226;8268:8;8256:10;8253:24;8250:44;;;8290:1;8287;8280:12;8250:44;8319:6;8309:8;8306:20;8303:40;;;8339:1;8336;8329:12;8303:40;-1:-1:-1;;8381:1:182;8377:18;;;8365:31;;8418:25;;;;;-1:-1:-1;8094:355:182:o;8980:127::-;9041:10;9036:3;9032:20;9029:1;9022:31;9072:4;9069:1;9062:15;9096:4;9093:1;9086:15;9933:771;10178:2;10167:9;10160:21;10217:6;10212:2;10201:9;10197:18;10190:34;10274:6;10266;10261:2;10250:9;10246:18;10233:48;10330:1;10325:2;10301:22;;;10297:31;;10290:42;;;-1:-1:-1;;10391:2:182;10370:15;;10366:29;10351:45;;10438:18;;;10434:27;;10427:4;10412:20;;10405:57;10478:11;;;10471:27;;;-1:-1:-1;;;;;10510:31:182;;10507:51;;;10554:1;10551;10544:12;10507:51;10588:6;10585:1;10581:14;10639:6;10631;10625:3;10621:2;10617:12;10604:42;10671:15;10663:35;;;;-1:-1:-1;;;;;;9933:771:182:o;10709:245::-;10776:6;10829:2;10817:9;10808:7;10804:23;10800:32;10797:52;;;10845:1;10842;10835:12;10797:52;10877:9;10871:16;10896:28;10918:5;10896:28;:::i;12390:273::-;12575:6;12567;12562:3;12549:33;12531:3;12601:16;;12626:13;;;12601:16;12390:273;-1:-1:-1;12390:273:182:o;12668:301::-;12797:3;12835:6;12829:13;12881:6;12874:4;12866:6;12862:17;12857:3;12851:37;12943:1;12907:16;;12932:13;;;-1:-1:-1;12907:16:182;12668:301;-1:-1:-1;12668:301:182:o;12974:184::-;13044:6;13097:2;13085:9;13076:7;13072:23;13068:32;13065:52;;;13113:1;13110;13103:12;13065:52;-1:-1:-1;13136:16:182;;12974:184;-1:-1:-1;12974:184:182:o;13163:125::-;13228:9;;;13249:10;;;13246:36;;;13262:18;;:::i;13293:331::-;13398:9;13409;13451:8;13439:10;13436:24;13433:44;;;13473:1;13470;13463:12;13433:44;13502:6;13492:8;13489:20;13486:40;;;13522:1;13519;13512:12;13486:40;-1:-1:-1;;13548:23:182;;;13593:25;;;;;-1:-1:-1;13293:331:182:o;13629:323::-;13749:19;;-1:-1:-1;;;;;;13786:24:182;;;13830:1;13822:10;;13819:127;;;-1:-1:-1;;;;;;13891:1:182;13887:11;;;13884:1;13880:19;13876:41;;;13868:50;;13864:72;;-1:-1:-1;13819:127:182;;13629:323;;;;:::o;14586:155::-;14677:6;14654:14;;;14670;;;14650:35;;14697:15;;14694:41;;;14715:18;;:::i;14746:135::-;14785:3;14806:17;;;14803:43;;14826:18;;:::i;:::-;-1:-1:-1;14873:1:182;14862:13;;14746:135::o","linkReferences":{}},"methodIdentifiers":{"addProofVerifiers((bytes32,address)[])":"26700c04","admin()":"f851a440","paused()":"5c975abb","proofVerifiers(bytes32)":"1e8e0f8e","removeProofVerifiers(bytes32[])":"2576b26f","rootVerifier()":"e4c0b80b","setPaused(bool)":"16c38b3c","transferAdmin(address)":"75829def","verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":"e88d4ee6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"contract ZKPassportRootVerifier\",\"name\":\"_rootVerifier\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proofVerifier\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"}],\"name\":\"ProofVerifierAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proofVerifier\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"}],\"name\":\"ProofVerifierRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rootVerifier\",\"type\":\"address\"}],\"name\":\"ZKPassportSubVerifierDeployed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"internalType\":\"struct ProofVerifier[]\",\"name\":\"_proofVerifiers\",\"type\":\"tuple[]\"}],\"name\":\"addProofVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proofVerifiers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"vkeyHashes\",\"type\":\"bytes32[]\"}],\"name\":\"removeProofVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootVerifier\",\"outputs\":[{\"internalType\":\"contract ZKPassportRootVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRootRegistry\",\"name\":\"rootRegistry\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ProofVerificationData\",\"name\":\"proofVerificationData\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"validityPeriodInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"devMode\",\"type\":\"bool\"}],\"internalType\":\"struct ServiceConfig\",\"name\":\"serviceConfig\",\"type\":\"tuple\"}],\"internalType\":\"struct ProofVerificationParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"uniqueIdentifier\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor\",\"params\":{\"_admin\":\"The admin address\",\"_rootVerifier\":\"The address of the ZKPassport root verifier\"}},\"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))\":{\"details\":\"This function is called by the root verifier to verify a proof for a specific version\",\"params\":{\"params\":\"The proof verification parameters\",\"rootRegistry\":\"The root registry\"},\"returns\":{\"isValid\":\"True if the proof is valid, false otherwise\",\"uniqueIdentifier\":\"The unique identifier associated to the identity document that generated the proof\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))\":{\"notice\":\"Verifies a ZKPassport proof\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol\":\"ZKPassportSubVerifier\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/circuits/src/solidity/src/Constants.sol\":{\"keccak256\":\"0x29a25ab24727bb03f356fe124eda7970f1769130855ebf584e4225e2718927a7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3dff3096a211bcd97a4dad4e459bd3c684275e3271c493191d3819bbf4326702\",\"dweb:/ipfs/QmfLyG5f3JWRoY5sF9kkDLBDrxymQsuk9uncw65JdRa7Sp\"]},\"lib/circuits/src/solidity/src/DateUtils.sol\":{\"keccak256\":\"0x4176feda967f91ccf0a1cdecc75bbf7e5aaad7b46f95e133887e3ac6ae9126f6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6774599f7320a37f2e5cc22e0d8e59a1f46841a6ac94d7d45b072a809237e1ab\",\"dweb:/ipfs/QmdrX9uQKsvN9gTgCD1zd1kigvJGsgHbvabvdWaWHuSeY4\"]},\"lib/circuits/src/solidity/src/IProofVerifier.sol\":{\"keccak256\":\"0xf8acc6ee390c406eaa8415863f156e251935f8de51bcd3c876871fbe5b5b4f14\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://64016d156d15fd43d407e832fd7b333e07e80b42f0ed9d845a8cc114d3857aa6\",\"dweb:/ipfs/QmP7zSvchyDqov13cyuWxLJDYBBpYZxrPEdGQcheyoJkUm\"]},\"lib/circuits/src/solidity/src/IRootRegistry.sol\":{\"keccak256\":\"0xc994fab81ea1202a93620e7e7a01ba1e61f055498ed5b09503f4b384d0554b2a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://12a19bab224c63ee4a0e3b4048c24e80b3ef5a3459070816c20f2c32b2ad5f72\",\"dweb:/ipfs/QmW1DF8mAwBfacrG2r2R3uyY92i6q1h1hZvHPuwMdXTANg\"]},\"lib/circuits/src/solidity/src/InputsExtractor.sol\":{\"keccak256\":\"0xd8d08cc68a571c9efdddd90ea274c18694284d40a9f1d0a1112a4999fd6a58da\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://000752a284d1df5c0687d32554c83e99afedab49e23d7213679ed93424760450\",\"dweb:/ipfs/QmWrFS4ChUv4okqnEgSLiuSsxohDnTnYLWeyYviVbPTgcH\"]},\"lib/circuits/src/solidity/src/StringUtils.sol\":{\"keccak256\":\"0xd52eb407eef932c9a343f1225fc997b7194ff0f05c488661a7adb4a37f980306\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://60bfaf52ebd50633d6eff5ea346d25283962495c630b37f4c0cd6008e8d8fd11\",\"dweb:/ipfs/QmWVtJnjcaowsFUBRRQ7eNTntghZ4FekXXgeQNAV4PkDWe\"]},\"lib/circuits/src/solidity/src/Types.sol\":{\"keccak256\":\"0x66d73b090401a5f424e1feacf1b503dcd906163f4c749189db3dc108d6dfd668\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d90eff17b597915e95c01a171c4378e7e4e287d35ca25dbd3f684373e93cda0c\",\"dweb:/ipfs/QmYe1wixU4zZAogteHT5eubcB4qzScCYzLtYFpFBitpZeR\"]},\"lib/circuits/src/solidity/src/ZKPassportHelper.sol\":{\"keccak256\":\"0xebc7d0a4b7dae4a78d38381a36cc19e04933f302cf1f0516c8f5d68128afbd16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7504f8711789c76e7294dd12bf172e5226034a5a2202057180ee047939eefa34\",\"dweb:/ipfs/QmTGuSBmYmDBWutpyTrxPxWQ7DA6kpV6kLQSwB3wMaLCN5\"]},\"lib/circuits/src/solidity/src/ZKPassportRootVerifier.sol\":{\"keccak256\":\"0x5fb7a856f66496a36e4de2ff2dca8fcce5a2c3db3adbf20910b1b20f24e6a009\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c2693f7a086c3ff60441a12a5d72c6a2fbd811123c03d73b0887474cbefe6355\",\"dweb:/ipfs/QmbTgqop8Fb9nxcUveDSDgyMXzVBY1xw2u8eMxaFfVVp1s\"]},\"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol\":{\"keccak256\":\"0x093e93f34571a7afe3c5a42192a366397b91e9fdb6167075b9250bcfd26fe8dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://981fec528fb1f8a3032b99905801658305139d82679598579b7fe8afb1b7f6a1\",\"dweb:/ipfs/QmfZ1n1KrxcijmToULMgMccLLyLH5DVVQWJ9SrWPMTRrfw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"contract ZKPassportRootVerifier","name":"_rootVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"oldAdmin","type":"address","indexed":true},{"internalType":"address","name":"newAdmin","type":"address","indexed":true}],"type":"event","name":"AdminUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"paused","type":"bool","indexed":false}],"type":"event","name":"PausedStatusChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"proofVerifier","type":"address","indexed":true},{"internalType":"bytes32","name":"vkeyHash","type":"bytes32","indexed":true}],"type":"event","name":"ProofVerifierAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"proofVerifier","type":"address","indexed":true},{"internalType":"bytes32","name":"vkeyHash","type":"bytes32","indexed":true}],"type":"event","name":"ProofVerifierRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"address","name":"rootVerifier","type":"address","indexed":true}],"type":"event","name":"ZKPassportSubVerifierDeployed","anonymous":false},{"inputs":[{"internalType":"struct ProofVerifier[]","name":"_proofVerifiers","type":"tuple[]","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"address","name":"verifier","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"addProofVerifiers"},{"inputs":[],"stateMutability":"view","type":"function","name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"proofVerifiers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"removeProofVerifiers"},{"inputs":[],"stateMutability":"view","type":"function","name":"rootVerifier","outputs":[{"internalType":"contract ZKPassportRootVerifier","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPaused"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferAdmin"},{"inputs":[{"internalType":"contract IRootRegistry","name":"rootRegistry","type":"address"},{"internalType":"struct ProofVerificationParams","name":"params","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}]},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple","components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}]}]}],"stateMutability":"view","type":"function","name":"verify","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor","params":{"_admin":"The admin address","_rootVerifier":"The address of the ZKPassport root verifier"}},"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":{"details":"This function is called by the root verifier to verify a proof for a specific version","params":{"params":"The proof verification parameters","rootRegistry":"The root registry"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}}},"version":1},"userdoc":{"kind":"user","methods":{"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":{"notice":"Verifies a ZKPassport proof"}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol":"ZKPassportSubVerifier"},"evmVersion":"prague","libraries":{}},"sources":{"lib/circuits/src/solidity/src/Constants.sol":{"keccak256":"0x29a25ab24727bb03f356fe124eda7970f1769130855ebf584e4225e2718927a7","urls":["bzz-raw://3dff3096a211bcd97a4dad4e459bd3c684275e3271c493191d3819bbf4326702","dweb:/ipfs/QmfLyG5f3JWRoY5sF9kkDLBDrxymQsuk9uncw65JdRa7Sp"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/DateUtils.sol":{"keccak256":"0x4176feda967f91ccf0a1cdecc75bbf7e5aaad7b46f95e133887e3ac6ae9126f6","urls":["bzz-raw://6774599f7320a37f2e5cc22e0d8e59a1f46841a6ac94d7d45b072a809237e1ab","dweb:/ipfs/QmdrX9uQKsvN9gTgCD1zd1kigvJGsgHbvabvdWaWHuSeY4"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/IProofVerifier.sol":{"keccak256":"0xf8acc6ee390c406eaa8415863f156e251935f8de51bcd3c876871fbe5b5b4f14","urls":["bzz-raw://64016d156d15fd43d407e832fd7b333e07e80b42f0ed9d845a8cc114d3857aa6","dweb:/ipfs/QmP7zSvchyDqov13cyuWxLJDYBBpYZxrPEdGQcheyoJkUm"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/IRootRegistry.sol":{"keccak256":"0xc994fab81ea1202a93620e7e7a01ba1e61f055498ed5b09503f4b384d0554b2a","urls":["bzz-raw://12a19bab224c63ee4a0e3b4048c24e80b3ef5a3459070816c20f2c32b2ad5f72","dweb:/ipfs/QmW1DF8mAwBfacrG2r2R3uyY92i6q1h1hZvHPuwMdXTANg"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/InputsExtractor.sol":{"keccak256":"0xd8d08cc68a571c9efdddd90ea274c18694284d40a9f1d0a1112a4999fd6a58da","urls":["bzz-raw://000752a284d1df5c0687d32554c83e99afedab49e23d7213679ed93424760450","dweb:/ipfs/QmWrFS4ChUv4okqnEgSLiuSsxohDnTnYLWeyYviVbPTgcH"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/StringUtils.sol":{"keccak256":"0xd52eb407eef932c9a343f1225fc997b7194ff0f05c488661a7adb4a37f980306","urls":["bzz-raw://60bfaf52ebd50633d6eff5ea346d25283962495c630b37f4c0cd6008e8d8fd11","dweb:/ipfs/QmWVtJnjcaowsFUBRRQ7eNTntghZ4FekXXgeQNAV4PkDWe"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/Types.sol":{"keccak256":"0x66d73b090401a5f424e1feacf1b503dcd906163f4c749189db3dc108d6dfd668","urls":["bzz-raw://d90eff17b597915e95c01a171c4378e7e4e287d35ca25dbd3f684373e93cda0c","dweb:/ipfs/QmYe1wixU4zZAogteHT5eubcB4qzScCYzLtYFpFBitpZeR"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportHelper.sol":{"keccak256":"0xebc7d0a4b7dae4a78d38381a36cc19e04933f302cf1f0516c8f5d68128afbd16","urls":["bzz-raw://7504f8711789c76e7294dd12bf172e5226034a5a2202057180ee047939eefa34","dweb:/ipfs/QmTGuSBmYmDBWutpyTrxPxWQ7DA6kpV6kLQSwB3wMaLCN5"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportRootVerifier.sol":{"keccak256":"0x5fb7a856f66496a36e4de2ff2dca8fcce5a2c3db3adbf20910b1b20f24e6a009","urls":["bzz-raw://c2693f7a086c3ff60441a12a5d72c6a2fbd811123c03d73b0887474cbefe6355","dweb:/ipfs/QmbTgqop8Fb9nxcUveDSDgyMXzVBY1xw2u8eMxaFfVVp1s"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol":{"keccak256":"0x093e93f34571a7afe3c5a42192a366397b91e9fdb6167075b9250bcfd26fe8dd","urls":["bzz-raw://981fec528fb1f8a3032b99905801658305139d82679598579b7fe8afb1b7f6a1","dweb:/ipfs/QmfZ1n1KrxcijmToULMgMccLLyLH5DVVQWJ9SrWPMTRrfw"],"license":"Apache-2.0"}},"version":1},"id":10}
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"_admin","type":"address","internalType":"address"},{"name":"_rootVerifier","type":"address","internalType":"contract ZKPassportRootVerifier"}],"stateMutability":"nonpayable"},{"type":"function","name":"addProofVerifiers","inputs":[{"name":"_proofVerifiers","type":"tuple[]","internalType":"struct ProofVerifier[]","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"verifier","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proofVerifiers","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeProofVerifiers","inputs":[{"name":"vkeyHashes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rootVerifier","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ZKPassportRootVerifier"}],"stateMutability":"view"},{"type":"function","name":"setPaused","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verify","inputs":[{"name":"rootRegistry","type":"address","internalType":"contract IRootRegistry"},{"name":"params","type":"tuple","internalType":"struct ProofVerificationParams","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"proofVerificationData","type":"tuple","internalType":"struct ProofVerificationData","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"},{"name":"publicInputs","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"committedInputs","type":"bytes","internalType":"bytes"},{"name":"serviceConfig","type":"tuple","internalType":"struct ServiceConfig","components":[{"name":"validityPeriodInSeconds","type":"uint256","internalType":"uint256"},{"name":"domain","type":"string","internalType":"string"},{"name":"scope","type":"string","internalType":"string"},{"name":"devMode","type":"bool","internalType":"bool"}]}]}],"outputs":[{"name":"isValid","type":"bool","internalType":"bool"},{"name":"uniqueIdentifier","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"AdminUpdated","inputs":[{"name":"oldAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PausedStatusChanged","inputs":[{"name":"paused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ProofVerifierAdded","inputs":[{"name":"proofVerifier","type":"address","indexed":true,"internalType":"address"},{"name":"vkeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ProofVerifierRemoved","inputs":[{"name":"proofVerifier","type":"address","indexed":true,"internalType":"address"},{"name":"vkeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ZKPassportSubVerifierDeployed","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"rootVerifier","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b5060405161178438038061178483398101604081905261002e9161016d565b6001600160a01b0382166100895760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064015b60405180910390fd5b5f80546001600160a01b0319166001600160a01b038481169190911790915581166101025760405162461bcd60e51b8152602060048201526024808201527f526f6f742076657269666965722063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610080565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917f2074ff6f26d7905cc1807b94a6a9a002ce0c7a92e95e5ab8edf6b28b56e9f8d89190a350506101a5565b6001600160a01b038116811461016a575f5ffd5b50565b5f5f6040838503121561017e575f5ffd5b825161018981610156565b602084015190925061019a81610156565b809150509250929050565b6115d2806101b25f395ff3fe608060405234801561000f575f5ffd5b5060043610610081575f3560e01c806316c38b3c146100855780631e8e0f8e1461009a5780632576b26f146100df57806326700c04146100f25780635c975abb1461010557806375829def14610128578063e4c0b80b1461013b578063e88d4ee61461014e578063f851a44014610178575b5f5ffd5b610098610093366004611154565b61018a565b005b6100c26100a836600461116f565b60026020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ed366004611186565b610213565b6100986101003660046111f5565b61031f565b5f5461011890600160a01b900460ff1681565b60405190151581526020016100d6565b610098610136366004611268565b61044c565b6001546100c2906001600160a01b031681565b61016161015c366004611283565b61051a565b6040805192151583526020830191909152016100d6565b5f546100c2906001600160a01b031681565b5f546001600160a01b031633146101bc5760405162461bcd60e51b81526004016101b3906112d5565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061020890831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461023c5760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a575f60025f85858581811061025c5761025c61130c565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080156103115760025f85858581811061029b5761029b61130c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558383838181106102d3576102d361130c565b90506020020135816001600160a01b03167fcbc6363fd394dcb0ae12ee150a5f2a71305110addee38f87682d670b632f5b4060405160405180910390a35b5060010161023e565b505050565b5f546001600160a01b031633146103485760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a578282828181106103645761036461130c565b905060400201602001602081019061037c9190611268565b60025f8585858181106103915761039161130c565b9050604002015f013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106103dc576103dc61130c565b9050604002015f01358383838181106103f7576103f761130c565b905060400201602001602081019061040f9190611268565b6001600160a01b03167f220dc8943553a5812167948533c5a3a0c0674c926e0aea0f6b0a8cf5701044b460405160405180910390a360010161034a565b5f546001600160a01b031633146104755760405162461bcd60e51b81526004016101b3906112d5565b6001600160a01b0381166104cb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016101b3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f80548190600160a01b900460ff161561056b5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016101b3565b6001546001600160a01b031633146105e55760405162461bcd60e51b815260206004820152603760248201527f546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c656460448201527610333937b6903a3432903937b7ba103b32b934b334b2b960491b60648201526084016101b3565b5f6105fc6105f66020860186611320565b35610b35565b90505f61060c6020860186611320565b61061a90604081019061133e565b600281811061062b5761062b61130c565b905060200201355f1c90506106758686806020019061064a9190611320565b61065890604081019061133e565b5f8181106106685761066861130c565b9050602002013583610b94565b6106b2866106866020880188611320565b61069490604081019061133e565b60018181106106a5576106a561130c565b9050602002013583610c5f565b6106c9816106c36060880188611383565b35610d20565b6107315760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016101b3565b61078a6107416020870187611320565b61074f90604081019061133e565b61075c6060890189611383565b61076a906020810190611397565b61077760608b018b611383565b610785906040810190611397565b610d32565b6107d05760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420646f6d61696e206f722073636f706560481b60448201526064016101b3565b6108696107e06020870187611320565b6107ee90604081019061133e565b600590600261080060208b018b611320565b61080e90604081019061133e565b6108199291506113ed565b9261082693929190611400565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610864925050506040880188611397565b610efa565b5f6108776020870187611320565b61088590604081019061133e565b600261089460208a018a611320565b6108a290604081019061133e565b6108ad9291506113ed565b8181106108bc576108bc61130c565b905060200201355f1c60038111156108d6576108d661142b565b905060028160038111156108ec576108ec61142b565b1415801561090c575060038160038111156109095761090961142b565b14155b80610930575061091f6060870187611383565b610930906080810190606001611154565b61098d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016101b3565b5f8160038111156109a0576109a061142b565b14806109c557506109b46060870187611383565b6109c5906080810190606001611154565b610a255760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016101b3565b6001600160a01b03831663ea50d0e4610a416020890189611320565b610a4f906020810190611397565b610a5c60208b018b611320565b610a6a90604081019061133e565b6040518563ffffffff1660e01b8152600401610a89949392919061143f565b602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac891906114a1565b94505f6001610ada6020890189611320565b610ae890604081019061133e565b610af39291506113ed565b9050610b026020880188611320565b610b1090604081019061133e565b82818110610b2057610b2061130c565b905060200201359450505050505b9250929050565b5f818152600260205260408120546001600160a01b031680610b8e5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016101b3565b92915050565b604051631557214b60e11b81526001600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610be5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906114a1565b61031a5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016101b3565b604051631557214b60e11b81526002600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd491906114a1565b61031a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016101b3565b5f610d2b838361110f565b9392505050565b5f5f610d7286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610dec57600860028787604051602001610d8d9291906114bc565b60408051601f1981840301815290829052610da7916114cb565b602060405180830381855afa158015610dc2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610de591906114e1565b901c610dee565b5f5b90505f610e2f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610ea957600860028686604051602001610e4a9291906114bc565b60408051601f1981840301815290829052610e64916114cb565b602060405180830381855afa158015610e7f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ea291906114e1565b901c610eab565b5f5b90508189896003818110610ec157610ec161130c565b90506020020135148015610eed57508089896004818110610ee457610ee461130c565b90506020020135145b9998505050505050505050565b5f805b8282108015610f0c5750845181105b15611069575f8484610f1f8560016114f8565b90610f2b8660036114f8565b92610f389392919061150b565b610f4191611532565b60f01c90505f60086002878688610f5887836114f8565b610f639060036114f8565b92610f709392919061150b565b604051602001610f819291906114bc565b60408051601f1981840301815290829052610f9b916114cb565b602060405180830381855afa158015610fb6573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fd991906114e1565b901c9050868381518110610fef57610fef61130c565b6020026020010151811461103a5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016101b3565b61104582600361156a565b6110539061ffff16856114f8565b93508261105f81611584565b9350505050610efd565b8183146110b85760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016101b3565b845181146111085760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e747300000060448201526064016101b3565b5050505050565b5f8061111b83856114f8565b905083421015801561112c57508381115b801561113757504281115b949350505050565b511590565b8015158114611151575f5ffd5b50565b5f60208284031215611164575f5ffd5b8135610d2b81611144565b5f6020828403121561117f575f5ffd5b5035919050565b5f5f60208385031215611197575f5ffd5b82356001600160401b038111156111ac575f5ffd5b8301601f810185136111bc575f5ffd5b80356001600160401b038111156111d1575f5ffd5b8560208260051b84010111156111e5575f5ffd5b6020919091019590945092505050565b5f5f60208385031215611206575f5ffd5b82356001600160401b0381111561121b575f5ffd5b8301601f8101851361122b575f5ffd5b80356001600160401b03811115611240575f5ffd5b8560208260061b84010111156111e5575f5ffd5b6001600160a01b0381168114611151575f5ffd5b5f60208284031215611278575f5ffd5b8135610d2b81611254565b5f5f60408385031215611294575f5ffd5b823561129f81611254565b915060208301356001600160401b038111156112b9575f5ffd5b8301608081860312156112ca575f5ffd5b809150509250929050565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611334575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611353575f5ffd5b8301803591506001600160401b0382111561136c575f5ffd5b6020019150600581901b3603821315610b2e575f5ffd5b5f8235607e19833603018112611334575f5ffd5b5f5f8335601e198436030181126113ac575f5ffd5b8301803591506001600160401b038211156113c5575f5ffd5b602001915036819003821315610b2e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b8e57610b8e6113d9565b5f5f8585111561140e575f5ffd5b8386111561141a575f5ffd5b5050600583901b0193919092039150565b634e487b7160e01b5f52602160045260245ffd5b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115611488575f5ffd5b8360051b80866080840137016080019695505050505050565b5f602082840312156114b1575f5ffd5b8151610d2b81611144565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f1575f5ffd5b5051919050565b80820180821115610b8e57610b8e6113d9565b5f5f85851115611519575f5ffd5b83861115611525575f5ffd5b5050820193919092039150565b80356001600160f01b03198116906002841015611563576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff8181168382160190811115610b8e57610b8e6113d9565b5f60018201611595576115956113d9565b506001019056fea264697066735822122003cfd3eddc3b7ea817cfc09410685fffcdd3f65a763541dd2750990cd6c9a4b664736f6c634300081e0033","sourceMap":"518:9887:10:-:0;;;1364:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1434:20:10;;1426:61;;;;-1:-1:-1;;;1426:61:10;;773:2:184;1426:61:10;;;755:21:184;812:2;792:18;;;785:30;851;831:18;;;824:58;899:18;;1426:61:10;;;;;;;;;1493:5;:14;;-1:-1:-1;;;;;;1493:14:10;-1:-1:-1;;;;;1493:14:10;;;;;;;;;;1521:36;;1513:85;;;;-1:-1:-1;;;1513:85:10;;1130:2:184;1513:85:10;;;1112:21:184;1169:2;1149:18;;;1142:30;1208:34;1188:18;;;1181:62;-1:-1:-1;;;1259:18:184;;;1252:34;1303:19;;1513:85:10;928:400:184;1513:85:10;1604:12;:28;;-1:-1:-1;;;;;;1604:28:10;-1:-1:-1;;;;;1604:28:10;;;;;;;;;-1:-1:-1;1673:5:10;;1643:60;;1604:28;;1673:5;;1643:60;;-1:-1:-1;1643:60:10;1364:344;;518:9887;;14:131:184;-1:-1:-1;;;;;89:31:184;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:416::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;369:9;363:16;388:31;413:5;388:31;:::i;:::-;488:2;473:18;;467:25;438:5;;-1:-1:-1;501:33:184;467:25;501:33;:::i;:::-;553:7;543:17;;;150:416;;;;;:::o;928:400::-;518:9887:10;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610081575f3560e01c806316c38b3c146100855780631e8e0f8e1461009a5780632576b26f146100df57806326700c04146100f25780635c975abb1461010557806375829def14610128578063e4c0b80b1461013b578063e88d4ee61461014e578063f851a44014610178575b5f5ffd5b610098610093366004611154565b61018a565b005b6100c26100a836600461116f565b60026020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ed366004611186565b610213565b6100986101003660046111f5565b61031f565b5f5461011890600160a01b900460ff1681565b60405190151581526020016100d6565b610098610136366004611268565b61044c565b6001546100c2906001600160a01b031681565b61016161015c366004611283565b61051a565b6040805192151583526020830191909152016100d6565b5f546100c2906001600160a01b031681565b5f546001600160a01b031633146101bc5760405162461bcd60e51b81526004016101b3906112d5565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061020890831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461023c5760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a575f60025f85858581811061025c5761025c61130c565b602090810292909201358352508101919091526040015f20546001600160a01b0316905080156103115760025f85858581811061029b5761029b61130c565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558383838181106102d3576102d361130c565b90506020020135816001600160a01b03167fcbc6363fd394dcb0ae12ee150a5f2a71305110addee38f87682d670b632f5b4060405160405180910390a35b5060010161023e565b505050565b5f546001600160a01b031633146103485760405162461bcd60e51b81526004016101b3906112d5565b5f5b8181101561031a578282828181106103645761036461130c565b905060400201602001602081019061037c9190611268565b60025f8585858181106103915761039161130c565b9050604002015f013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106103dc576103dc61130c565b9050604002015f01358383838181106103f7576103f761130c565b905060400201602001602081019061040f9190611268565b6001600160a01b03167f220dc8943553a5812167948533c5a3a0c0674c926e0aea0f6b0a8cf5701044b460405160405180910390a360010161034a565b5f546001600160a01b031633146104755760405162461bcd60e51b81526004016101b3906112d5565b6001600160a01b0381166104cb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016101b3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f80548190600160a01b900460ff161561056b5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016101b3565b6001546001600160a01b031633146105e55760405162461bcd60e51b815260206004820152603760248201527f546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c656460448201527610333937b6903a3432903937b7ba103b32b934b334b2b960491b60648201526084016101b3565b5f6105fc6105f66020860186611320565b35610b35565b90505f61060c6020860186611320565b61061a90604081019061133e565b600281811061062b5761062b61130c565b905060200201355f1c90506106758686806020019061064a9190611320565b61065890604081019061133e565b5f8181106106685761066861130c565b9050602002013583610b94565b6106b2866106866020880188611320565b61069490604081019061133e565b60018181106106a5576106a561130c565b9050602002013583610c5f565b6106c9816106c36060880188611383565b35610d20565b6107315760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016101b3565b61078a6107416020870187611320565b61074f90604081019061133e565b61075c6060890189611383565b61076a906020810190611397565b61077760608b018b611383565b610785906040810190611397565b610d32565b6107d05760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420646f6d61696e206f722073636f706560481b60448201526064016101b3565b6108696107e06020870187611320565b6107ee90604081019061133e565b600590600261080060208b018b611320565b61080e90604081019061133e565b6108199291506113ed565b9261082693929190611400565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610864925050506040880188611397565b610efa565b5f6108776020870187611320565b61088590604081019061133e565b600261089460208a018a611320565b6108a290604081019061133e565b6108ad9291506113ed565b8181106108bc576108bc61130c565b905060200201355f1c60038111156108d6576108d661142b565b905060028160038111156108ec576108ec61142b565b1415801561090c575060038160038111156109095761090961142b565b14155b80610930575061091f6060870187611383565b610930906080810190606001611154565b61098d5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016101b3565b5f8160038111156109a0576109a061142b565b14806109c557506109b46060870187611383565b6109c5906080810190606001611154565b610a255760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016101b3565b6001600160a01b03831663ea50d0e4610a416020890189611320565b610a4f906020810190611397565b610a5c60208b018b611320565b610a6a90604081019061133e565b6040518563ffffffff1660e01b8152600401610a89949392919061143f565b602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac891906114a1565b94505f6001610ada6020890189611320565b610ae890604081019061133e565b610af39291506113ed565b9050610b026020880188611320565b610b1090604081019061133e565b82818110610b2057610b2061130c565b905060200201359450505050505b9250929050565b5f818152600260205260408120546001600160a01b031680610b8e5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016101b3565b92915050565b604051631557214b60e11b81526001600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610be5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906114a1565b61031a5760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016101b3565b604051631557214b60e11b81526002600482015260248101839052604481018290526001600160a01b03841690632aae429690606401602060405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd491906114a1565b61031a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016101b3565b5f610d2b838361110f565b9392505050565b5f5f610d7286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610dec57600860028787604051602001610d8d9291906114bc565b60408051601f1981840301815290829052610da7916114cb565b602060405180830381855afa158015610dc2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610de591906114e1565b901c610dee565b5f5b90505f610e2f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061113f92505050565b610ea957600860028686604051602001610e4a9291906114bc565b60408051601f1981840301815290829052610e64916114cb565b602060405180830381855afa158015610e7f573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ea291906114e1565b901c610eab565b5f5b90508189896003818110610ec157610ec161130c565b90506020020135148015610eed57508089896004818110610ee457610ee461130c565b90506020020135145b9998505050505050505050565b5f805b8282108015610f0c5750845181105b15611069575f8484610f1f8560016114f8565b90610f2b8660036114f8565b92610f389392919061150b565b610f4191611532565b60f01c90505f60086002878688610f5887836114f8565b610f639060036114f8565b92610f709392919061150b565b604051602001610f819291906114bc565b60408051601f1981840301815290829052610f9b916114cb565b602060405180830381855afa158015610fb6573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fd991906114e1565b901c9050868381518110610fef57610fef61130c565b6020026020010151811461103a5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016101b3565b61104582600361156a565b6110539061ffff16856114f8565b93508261105f81611584565b9350505050610efd565b8183146110b85760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016101b3565b845181146111085760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e747300000060448201526064016101b3565b5050505050565b5f8061111b83856114f8565b905083421015801561112c57508381115b801561113757504281115b949350505050565b511590565b8015158114611151575f5ffd5b50565b5f60208284031215611164575f5ffd5b8135610d2b81611144565b5f6020828403121561117f575f5ffd5b5035919050565b5f5f60208385031215611197575f5ffd5b82356001600160401b038111156111ac575f5ffd5b8301601f810185136111bc575f5ffd5b80356001600160401b038111156111d1575f5ffd5b8560208260051b84010111156111e5575f5ffd5b6020919091019590945092505050565b5f5f60208385031215611206575f5ffd5b82356001600160401b0381111561121b575f5ffd5b8301601f8101851361122b575f5ffd5b80356001600160401b03811115611240575f5ffd5b8560208260061b84010111156111e5575f5ffd5b6001600160a01b0381168114611151575f5ffd5b5f60208284031215611278575f5ffd5b8135610d2b81611254565b5f5f60408385031215611294575f5ffd5b823561129f81611254565b915060208301356001600160401b038111156112b9575f5ffd5b8301608081860312156112ca575f5ffd5b809150509250929050565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611334575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611353575f5ffd5b8301803591506001600160401b0382111561136c575f5ffd5b6020019150600581901b3603821315610b2e575f5ffd5b5f8235607e19833603018112611334575f5ffd5b5f5f8335601e198436030181126113ac575f5ffd5b8301803591506001600160401b038211156113c5575f5ffd5b602001915036819003821315610b2e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b8e57610b8e6113d9565b5f5f8585111561140e575f5ffd5b8386111561141a575f5ffd5b5050600583901b0193919092039150565b634e487b7160e01b5f52602160045260245ffd5b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115611488575f5ffd5b8360051b80866080840137016080019695505050505050565b5f602082840312156114b1575f5ffd5b8151610d2b81611144565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f602082840312156114f1575f5ffd5b5051919050565b80820180821115610b8e57610b8e6113d9565b5f5f85851115611519575f5ffd5b83861115611525575f5ffd5b5050820193919092039150565b80356001600160f01b03198116906002841015611563576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff8181168382160190811115610b8e57610b8e6113d9565b5f60018201611595576115956113d9565b506001019056fea264697066735822122003cfd3eddc3b7ea817cfc09410685fffcdd3f65a763541dd2750990cd6c9a4b664736f6c634300081e0033","sourceMap":"518:9887:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:118;;;;;;:::i;:::-;;:::i;:::-;;776:49;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;776:49:10;;;;;;-1:-1:-1;;;;;732:32:184;;;714:51;;702:2;687:18;776:49:10;;;;;;;;2738:366;;;;;;:::i;:::-;;:::i;2406:328::-;;;;;;:::i;:::-;;:::i;577:18::-;;;;;-1:-1:-1;;;577:18:10;;;;;;;;;2204:14:184;;2197:22;2179:41;;2167:2;2152:18;577::10;2039:187:184;2051:229:10;;;;;;:::i;:::-;;:::i;638:32::-;;;;;-1:-1:-1;;;;;638:32:10;;;6715:3688;;;;;;:::i;:::-;;:::i;:::-;;;;3616:14:184;;3609:22;3591:41;;3663:2;3648:18;;3641:34;;;;3564:18;6715:3688:10;3423:258:184;553:20:10;;;;;-1:-1:-1;;;;;553:20:10;;;2284:118;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;;;;;;;;;2342:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2342:16:10::1;-1:-1:-1::0;;;;2342:16:10;;::::1;;::::0;;2369:28:::1;::::0;::::1;::::0;::::1;::::0;2351:7;2204:14:184;2197:22;2179:41;;2167:2;2152:18;;2039:187;2369:28:10::1;;;;;;;;2284:118:::0;:::o;2738:366::-;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;2829:9:::1;2824:276;2844:21:::0;;::::1;2824:276;;;2880:21;2904:14;:29;2919:10;;2930:1;2919:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;2904:29:::0;;-1:-1:-1;2904:29:10;::::1;::::0;;;;;;-1:-1:-1;2904:29:10;;-1:-1:-1;;;;;2904:29:10::1;::::0;-1:-1:-1;2945:27:10;;2941:153:::1;;2991:14;:29;3006:10;;3017:1;3006:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;2991:29:::0;;-1:-1:-1;2991:29:10;::::1;::::0;;;;;;-1:-1:-1;2991:29:10;2984:36;;-1:-1:-1;;;;;;2984:36:10::1;::::0;;3071:10;;3082:1;3071:13;;::::1;;;;;:::i;:::-;;;;;;;3056;-1:-1:-1::0;;;;;3035:50:10::1;;;;;;;;;;;2941:153;-1:-1:-1::0;2867:3:10::1;;2824:276;;;;2738:366:::0;;:::o;2406:328::-;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;2505:9:::1;2500:230;2520:26:::0;;::::1;2500:230;;;2607:15;;2623:1;2607:18;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;:::i;:::-;2561:14;:43;2576:15;;2592:1;2576:18;;;;;;;:::i;:::-;;;;;;:27;;;2561:43;;;;;;;;;;;;:73;;;;;-1:-1:-1::0;;;;;2561:73:10::1;;;;;-1:-1:-1::0;;;;;2561:73:10::1;;;;;;2695:15;;2711:1;2695:18;;;;;;;:::i;:::-;;;;;;:27;;;2666:15;;2682:1;2666:18;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2647:76:10::1;;;;;;;;;;;2548:3;;2500:230;;2051:229:::0;1761:5;;-1:-1:-1;;;;;1761:5:10;1747:10;:19;1739:58;;;;-1:-1:-1;;;1739:58:10;;;;;;;:::i;:::-;-1:-1:-1;;;;;2125:22:10;::::1;2117:63;;;::::0;-1:-1:-1;;;2117:63:10;;4375:2:184;2117:63:10::1;::::0;::::1;4357:21:184::0;4414:2;4394:18;;;4387:30;4453;4433:18;;;4426:58;4501:18;;2117:63:10::1;4173:352:184::0;2117:63:10::1;2186:16;2205:5:::0;;-1:-1:-1;;;;;2216:16:10;;::::1;-1:-1:-1::0;;;;;;2216:16:10;::::1;::::0;::::1;::::0;;2243:32:::1;::::0;2205:5;;;::::1;::::0;;;2243:32:::1;::::0;2186:16;2243:32:::1;2111:169;2051:229:::0;:::o;6715:3688::-;6874:12;2006:6;;6874:12;;-1:-1:-1;;;2006:6:10;;;;2005:7;1997:38;;;;-1:-1:-1;;;1997:38:10;;4732:2:184;1997:38:10;;;4714:21:184;4771:2;4751:18;;;4744:30;-1:-1:-1;;;4790:18:184;;;4783:48;4848:18;;1997:38:10;4530:342:184;1997:38:10;1877:12:::1;::::0;-1:-1:-1;;;;;1877:12:10::1;1855:10;:35;1847:103;;;::::0;-1:-1:-1;;;1847:103:10;;5079:2:184;1847:103:10::1;::::0;::::1;5061:21:184::0;5118:2;5098:18;;;5091:30;5157:34;5137:18;;;5130:62;-1:-1:-1;;;5208:18:184;;;5201:53;5271:19;;1847:103:10::1;4877:419:184::0;1847:103:10::1;6999:16:::2;7018:56;7036:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:37;7018:17;:56::i;:::-;6999:75:::0;-1:-1:-1;7081:24:10::2;7116:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1748:1:1;7116:73:10;;;;;;;:::i;:::-;;;;;;;7108:82;;7081:109;;7239:168;7271:12;7291:6;:28;;;;;;;;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1653:1:1;7291:86:10;;;;;;;:::i;:::-;;;;;;;7385:16;7239:24;:168::i;:::-;7452:148;7480:12:::0;7494:28:::2;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1705:1:1;7494:82:10;;;;;;;:::i;:::-;;;;;;;7578:16;7452:20;:148::i;:::-;7832:82;7851:16:::0;7869:20:::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:44;7832:18;:82::i;:::-;7817:164;;;::::0;-1:-1:-1;;;7817:164:10;;6732:2:184;7817:164:10::2;::::0;::::2;6714:21:184::0;6771:2;6751:18;;;6744:30;6810:34;6790:18;;;6783:62;-1:-1:-1;;;6861:18:184;;;6854:49;6920:19;;7817:164:10::2;6530:415:184::0;7817:164:10::2;8354:113;8368:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8411:20;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:27;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8440:20;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:26;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8354:13;:113::i;:::-;8339:167;;;::::0;-1:-1:-1;;;8339:167:10;;7679:2:184;8339:167:10::2;::::0;::::2;7661:21:184::0;7718:2;7698:18;;;7691:30;-1:-1:-1;;;7737:18:184;;;7730:53;7800:18;;8339:167:10::2;7477:347:184::0;8339:167:10::2;8574:261;8661:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:48;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;1871:1:1;::::0;8797::10::2;8746:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;8746:52:10::2;:::i;:::-;8661:138;;;;;;;:::i;:::-;8574:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;8807:22:10::2;::::0;-1:-1:-1;;;8807:22:10::2;::::0;::::2;::::0;::::2;:::i;:::-;8574;:261::i;:::-;8842:27;8901:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;8994:1;8943:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;8943:52:10::2;:::i;:::-;8901:95;;;;;;;:::i;:::-;;;;;;;8893:104;;8872:131;;;;;;;;:::i;:::-;8842:161:::0;-1:-1:-1;9267:39:10::2;9250:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;9327:35:10::2;9310:13;:52;;;;;;;;:::i;:::-;;;9250:112;9249:154;;;-1:-1:-1::0;9375:20:10::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:28;::::0;;;;;::::2;;;:::i;:::-;9234:225;;;::::0;-1:-1:-1;;;9234:225:10;;9314:2:184;9234:225:10::2;::::0;::::2;9296:21:184::0;9353:2;9333:18;;;9326:30;9392:34;9372:18;;;9365:62;-1:-1:-1;;;9443:18:184;;;9436:38;9491:19;;9234:225:10::2;9112:404:184::0;9234:225:10::2;9686:34;9669:13;:51;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1::0;9724:20:10::2;;::::0;::::2;:6:::0;:20:::2;:::i;:::-;:28;::::0;;;;;::::2;;;:::i;:::-;9654:157;;;::::0;-1:-1:-1;;;9654:157:10;;9723:2:184;9654:157:10::2;::::0;::::2;9705:21:184::0;9762:2;9742:18;;;9735:30;9801:34;9781:18;;;9774:62;-1:-1:-1;;;9852:18:184;;;9845:41;9903:19;;9654:157:10::2;9521:407:184::0;9654:157:10::2;-1:-1:-1::0;;;;;9932:31:10;::::2;;9964:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:34;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;10000:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;9932:110;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9916:126:::0;-1:-1:-1;10105:29:10::2;10188:1;10137:28;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:52;::::0;;-1:-1:-1;10137:52:10::2;:::i;:::-;10105:84:::0;-1:-1:-1;10214:28:10::2;;::::0;::::2;:6:::0;:28:::2;:::i;:::-;:41;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;10256:21;10214:64;;;;;;;:::i;:::-;;;;;;;10195:83;;10364:34;;;;1956:1;6715:3688:::0;;;;;:::o;5551:211::-;5619:7;5653:24;;;:14;:24;;;;;;-1:-1:-1;;;;;5653:24:10;;5683:53;;;;-1:-1:-1;;;5683:53:10;;11161:2:184;5683:53:10;;;11143:21:184;11200:2;11180:18;;;11173:30;-1:-1:-1;;;11219:18:184;;;11212:48;11277:18;;5683:53:10;10959:342:184;5683:53:10;5749:8;5551:211;-1:-1:-1;;5551:211:10:o;5766:283::-;5918:77;;-1:-1:-1;;;5918:77:10;;604:66:1;5918:77:10;;;11508:25:184;11549:18;;;11542:34;;;11592:18;;;11585:34;;;-1:-1:-1;;;;;5918:25:10;;;;;11481:18:184;;5918:77:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5903:141;;;;-1:-1:-1;;;5903:141:10;;11832:2:184;5903:141:10;;;11814:21:184;11871:2;11851:18;;;11844:30;11910:34;11890:18;;;11883:62;-1:-1:-1;;;11961:18:184;;;11954:31;12002:19;;5903:141:10;11630:397:184;6053:235:10;6180:69;;-1:-1:-1;;;6180:69:10;;710:66:1;6180:69:10;;;11508:25:184;11549:18;;;11542:34;;;11592:18;;;11585:34;;;-1:-1:-1;;;;;6180:25:10;;;;;11481:18:184;;6180:69:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6172:111;;;;-1:-1:-1;;;6172:111:10;;12234:2:184;6172:111:10;;;12216:21:184;12273:2;12253:18;;;12246:30;12312:31;12292:18;;;12285:59;12361:18;;6172:111:10;12032:353:184;3108:220:10;3234:4;3255:68;3277:20;3299:23;3255:21;:68::i;:::-;3248:75;3108:220;-1:-1:-1;;;3108:220:10:o;3674:696::-;3814:4;3930:17;3950:26;3970:5;;3950:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3950:19:10;;-1:-1:-1;;;3950:26:10:i;:::-;:78;;4027:1;3992:31;4016:5;;3999:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3999:23:10;;;;;;;;;;3992:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;3950:78;;;3987:1;3950:78;3930:98;;4129:20;4152:29;4172:8;;4152:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4152:19:10;;-1:-1:-1;;;4152:29:10:i;:::-;:84;;4235:1;4197:34;4221:8;;4204:26;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:26:10;;;;;;;;;;4197:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;4152:84;;;4192:1;4152:84;4129:107;;4296:9;4255:12;;1784:1:1;4255:37:10;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;4353:12;4309;;1823:1:1;4309:40:10;;;;;;;:::i;:::-;;;;;;;:56;4255:110;4242:123;3674:696;-1:-1:-1;;;;;;;;;3674:696:10:o;4374:1173::-;4493:14;;4540:750;4547:31;;;:66;;;;;4590:16;:23;4582:5;:31;4547:66;4540:750;;;4815:13;4845:15;;4861:10;:6;4870:1;4861:10;:::i;:::-;4845:38;4872:10;:6;4881:1;4872:10;:::i;:::-;4845:38;;;;;;;:::i;:::-;4838:46;;;:::i;:::-;4831:54;;;-1:-1:-1;5049:28:10;5153:1;5080:69;5104:15;5120:6;5104:15;5127;4831:54;5120:6;5127:15;:::i;:::-;:19;;5145:1;5127:19;:::i;:::-;5104:43;;;;;;;:::i;:::-;5087:61;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5087:61:10;;;;;;;;;;5080:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;5049:105;;5194:16;5211:5;5194:23;;;;;;;;:::i;:::-;;;;;;;5170:20;:47;5162:78;;;;-1:-1:-1;;;5162:78:10;;14441:2:184;5162:78:10;;;14423:21:184;14480:2;14460:18;;;14453:30;-1:-1:-1;;;14499:18:184;;;14492:48;14557:18;;5162:78:10;14239:342:184;5162:78:10;5258:10;:6;5267:1;5258:10;:::i;:::-;5248:20;;;;;;:::i;:::-;;-1:-1:-1;5276:7:10;;;;:::i;:::-;;;;4615:675;;4540:750;;;5394:32;;;5386:76;;;;-1:-1:-1;;;5386:76:10;;15088:2:184;5386:76:10;;;15070:21:184;15127:2;15107:18;;;15100:30;15166:33;15146:18;;;15139:61;15217:18;;5386:76:10;14886:355:184;5386:76:10;5485:16;:23;5476:5;:32;5468:74;;;;-1:-1:-1;;;5468:74:10;;15448:2:184;5468:74:10;;;15430:21:184;15487:2;15467:18;;;15460:30;15526:31;15506:18;;;15499:59;15575:18;;5468:74:10;15246:353:184;5468:74:10;4487:1060;;4374:1173;;;:::o;710:313:2:-;806:4;;852:35;864:23;852:9;:35;:::i;:::-;818:69;;925:9;906:15;:28;;:67;;;;;964:9;938:23;:35;906:67;:112;;;;;1003:15;977:23;:41;906:112;893:125;710:313;-1:-1:-1;;;;710:313:2:o;506:101:6:-;582:15;:20;;506:101::o;14:118:184:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:241::-;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;383:180::-;442:6;495:2;483:9;474:7;470:23;466:32;463:52;;;511:1;508;501:12;463:52;-1:-1:-1;534:23:184;;383:180;-1:-1:-1;383:180:184:o;776:610::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;979:9;966:23;-1:-1:-1;;;;;1004:6:184;1001:30;998:50;;;1044:1;1041;1034:12;998:50;1067:22;;1120:4;1112:13;;1108:27;-1:-1:-1;1098:55:184;;1149:1;1146;1139:12;1098:55;1189:2;1176:16;-1:-1:-1;;;;;1207:6:184;1204:30;1201:50;;;1247:1;1244;1237:12;1201:50;1300:7;1295:2;1285:6;1282:1;1278:14;1274:2;1270:23;1266:32;1263:45;1260:65;;;1321:1;1318;1311:12;1260:65;1352:2;1344:11;;;;;1374:6;;-1:-1:-1;776:610:184;-1:-1:-1;;;776:610:184:o;1391:643::-;1510:6;1518;1571:2;1559:9;1550:7;1546:23;1542:32;1539:52;;;1587:1;1584;1577:12;1539:52;1627:9;1614:23;-1:-1:-1;;;;;1652:6:184;1649:30;1646:50;;;1692:1;1689;1682:12;1646:50;1715:22;;1768:4;1760:13;;1756:27;-1:-1:-1;1746:55:184;;1797:1;1794;1787:12;1746:55;1837:2;1824:16;-1:-1:-1;;;;;1855:6:184;1852:30;1849:50;;;1895:1;1892;1885:12;1849:50;1948:7;1943:2;1933:6;1930:1;1926:14;1922:2;1918:23;1914:32;1911:45;1908:65;;;1969:1;1966;1959:12;2231:131;-1:-1:-1;;;;;2306:31:184;;2296:42;;2286:70;;2352:1;2349;2342:12;2367:247;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2858:560::-;2991:6;2999;3052:2;3040:9;3031:7;3027:23;3023:32;3020:52;;;3068:1;3065;3058:12;3020:52;3107:9;3094:23;3126:31;3151:5;3126:31;:::i;:::-;3176:5;-1:-1:-1;3232:2:184;3217:18;;3204:32;-1:-1:-1;;;;;3248:30:184;;3245:50;;;3291:1;3288;3281:12;3245:50;3314:22;;3370:3;3352:16;;;3348:26;3345:46;;;3387:1;3384;3377:12;3345:46;3410:2;3400:12;;;2858:560;;;;;:::o;3686:350::-;3888:2;3870:21;;;3927:2;3907:18;;;3900:30;3966:28;3961:2;3946:18;;3939:56;4027:2;4012:18;;3686:350::o;4041:127::-;4102:10;4097:3;4093:20;4090:1;4083:31;4133:4;4130:1;4123:15;4157:4;4154:1;4147:15;5301:338;5408:4;5466:11;5453:25;5560:2;5556:7;5545:8;5529:14;5525:29;5521:43;5501:18;5497:68;5487:96;;5579:1;5576;5569:12;5487:96;5600:33;;;;;5301:338;-1:-1:-1;;5301:338:184:o;5644:545::-;5737:4;5743:6;5803:11;5790:25;5897:2;5893:7;5882:8;5866:14;5862:29;5858:43;5838:18;5834:68;5824:96;;5916:1;5913;5906:12;5824:96;5943:33;;5995:20;;;-1:-1:-1;;;;;;6027:30:184;;6024:50;;;6070:1;6067;6060:12;6024:50;6103:4;6091:17;;-1:-1:-1;6154:1:184;6150:14;;;6134;6130:35;6120:46;;6117:66;;;6179:1;6176;6169:12;6194:331;6293:4;6351:11;6338:25;6445:3;6441:8;6430;6414:14;6410:29;6406:44;6386:18;6382:69;6372:97;;6465:1;6462;6455:12;6950:522;7028:4;7034:6;7094:11;7081:25;7188:2;7184:7;7173:8;7157:14;7153:29;7149:43;7129:18;7125:68;7115:96;;7207:1;7204;7197:12;7115:96;7234:33;;7286:20;;;-1:-1:-1;;;;;;7318:30:184;;7315:50;;;7361:1;7358;7351:12;7315:50;7394:4;7382:17;;-1:-1:-1;7425:14:184;7421:27;;;7411:38;;7408:58;;;7462:1;7459;7452:12;7829:127;7890:10;7885:3;7881:20;7878:1;7871:31;7921:4;7918:1;7911:15;7945:4;7942:1;7935:15;7961:128;8028:9;;;8049:11;;;8046:37;;;8063:18;;:::i;8094:355::-;8215:9;8226;8268:8;8256:10;8253:24;8250:44;;;8290:1;8287;8280:12;8250:44;8319:6;8309:8;8306:20;8303:40;;;8339:1;8336;8329:12;8303:40;-1:-1:-1;;8381:1:184;8377:18;;;8365:31;;8418:25;;;;;-1:-1:-1;8094:355:184:o;8980:127::-;9041:10;9036:3;9032:20;9029:1;9022:31;9072:4;9069:1;9062:15;9096:4;9093:1;9086:15;9933:771;10178:2;10167:9;10160:21;10217:6;10212:2;10201:9;10197:18;10190:34;10274:6;10266;10261:2;10250:9;10246:18;10233:48;10330:1;10325:2;10301:22;;;10297:31;;10290:42;;;-1:-1:-1;;10391:2:184;10370:15;;10366:29;10351:45;;10438:18;;;10434:27;;10427:4;10412:20;;10405:57;10478:11;;;10471:27;;;-1:-1:-1;;;;;10510:31:184;;10507:51;;;10554:1;10551;10544:12;10507:51;10588:6;10585:1;10581:14;10639:6;10631;10625:3;10621:2;10617:12;10604:42;10671:15;10663:35;;;;-1:-1:-1;;;;;;9933:771:184:o;10709:245::-;10776:6;10829:2;10817:9;10808:7;10804:23;10800:32;10797:52;;;10845:1;10842;10835:12;10797:52;10877:9;10871:16;10896:28;10918:5;10896:28;:::i;12390:273::-;12575:6;12567;12562:3;12549:33;12531:3;12601:16;;12626:13;;;12601:16;12390:273;-1:-1:-1;12390:273:184:o;12668:301::-;12797:3;12835:6;12829:13;12881:6;12874:4;12866:6;12862:17;12857:3;12851:37;12943:1;12907:16;;12932:13;;;-1:-1:-1;12907:16:184;12668:301;-1:-1:-1;12668:301:184:o;12974:184::-;13044:6;13097:2;13085:9;13076:7;13072:23;13068:32;13065:52;;;13113:1;13110;13103:12;13065:52;-1:-1:-1;13136:16:184;;12974:184;-1:-1:-1;12974:184:184:o;13163:125::-;13228:9;;;13249:10;;;13246:36;;;13262:18;;:::i;13293:331::-;13398:9;13409;13451:8;13439:10;13436:24;13433:44;;;13473:1;13470;13463:12;13433:44;13502:6;13492:8;13489:20;13486:40;;;13522:1;13519;13512:12;13486:40;-1:-1:-1;;13548:23:184;;;13593:25;;;;;-1:-1:-1;13293:331:184:o;13629:323::-;13749:19;;-1:-1:-1;;;;;;13786:24:184;;;13830:1;13822:10;;13819:127;;;-1:-1:-1;;;;;;13891:1:184;13887:11;;;13884:1;13880:19;13876:41;;;13868:50;;13864:72;;-1:-1:-1;13819:127:184;;13629:323;;;;:::o;14586:155::-;14677:6;14654:14;;;14670;;;14650:35;;14697:15;;14694:41;;;14715:18;;:::i;14746:135::-;14785:3;14806:17;;;14803:43;;14826:18;;:::i;:::-;-1:-1:-1;14873:1:184;14862:13;;14746:135::o","linkReferences":{}},"methodIdentifiers":{"addProofVerifiers((bytes32,address)[])":"26700c04","admin()":"f851a440","paused()":"5c975abb","proofVerifiers(bytes32)":"1e8e0f8e","removeProofVerifiers(bytes32[])":"2576b26f","rootVerifier()":"e4c0b80b","setPaused(bool)":"16c38b3c","transferAdmin(address)":"75829def","verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":"e88d4ee6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"contract ZKPassportRootVerifier\",\"name\":\"_rootVerifier\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proofVerifier\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"}],\"name\":\"ProofVerifierAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proofVerifier\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"}],\"name\":\"ProofVerifierRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rootVerifier\",\"type\":\"address\"}],\"name\":\"ZKPassportSubVerifierDeployed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"internalType\":\"struct ProofVerifier[]\",\"name\":\"_proofVerifiers\",\"type\":\"tuple[]\"}],\"name\":\"addProofVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proofVerifiers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"vkeyHashes\",\"type\":\"bytes32[]\"}],\"name\":\"removeProofVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootVerifier\",\"outputs\":[{\"internalType\":\"contract ZKPassportRootVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRootRegistry\",\"name\":\"rootRegistry\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ProofVerificationData\",\"name\":\"proofVerificationData\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"validityPeriodInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"devMode\",\"type\":\"bool\"}],\"internalType\":\"struct ServiceConfig\",\"name\":\"serviceConfig\",\"type\":\"tuple\"}],\"internalType\":\"struct ProofVerificationParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"uniqueIdentifier\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor\",\"params\":{\"_admin\":\"The admin address\",\"_rootVerifier\":\"The address of the ZKPassport root verifier\"}},\"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))\":{\"details\":\"This function is called by the root verifier to verify a proof for a specific version\",\"params\":{\"params\":\"The proof verification parameters\",\"rootRegistry\":\"The root registry\"},\"returns\":{\"isValid\":\"True if the proof is valid, false otherwise\",\"uniqueIdentifier\":\"The unique identifier associated to the identity document that generated the proof\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))\":{\"notice\":\"Verifies a ZKPassport proof\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol\":\"ZKPassportSubVerifier\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/circuits/src/solidity/src/Constants.sol\":{\"keccak256\":\"0x29a25ab24727bb03f356fe124eda7970f1769130855ebf584e4225e2718927a7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3dff3096a211bcd97a4dad4e459bd3c684275e3271c493191d3819bbf4326702\",\"dweb:/ipfs/QmfLyG5f3JWRoY5sF9kkDLBDrxymQsuk9uncw65JdRa7Sp\"]},\"lib/circuits/src/solidity/src/DateUtils.sol\":{\"keccak256\":\"0x4176feda967f91ccf0a1cdecc75bbf7e5aaad7b46f95e133887e3ac6ae9126f6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6774599f7320a37f2e5cc22e0d8e59a1f46841a6ac94d7d45b072a809237e1ab\",\"dweb:/ipfs/QmdrX9uQKsvN9gTgCD1zd1kigvJGsgHbvabvdWaWHuSeY4\"]},\"lib/circuits/src/solidity/src/IProofVerifier.sol\":{\"keccak256\":\"0xf8acc6ee390c406eaa8415863f156e251935f8de51bcd3c876871fbe5b5b4f14\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://64016d156d15fd43d407e832fd7b333e07e80b42f0ed9d845a8cc114d3857aa6\",\"dweb:/ipfs/QmP7zSvchyDqov13cyuWxLJDYBBpYZxrPEdGQcheyoJkUm\"]},\"lib/circuits/src/solidity/src/IRootRegistry.sol\":{\"keccak256\":\"0xc994fab81ea1202a93620e7e7a01ba1e61f055498ed5b09503f4b384d0554b2a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://12a19bab224c63ee4a0e3b4048c24e80b3ef5a3459070816c20f2c32b2ad5f72\",\"dweb:/ipfs/QmW1DF8mAwBfacrG2r2R3uyY92i6q1h1hZvHPuwMdXTANg\"]},\"lib/circuits/src/solidity/src/InputsExtractor.sol\":{\"keccak256\":\"0xd8d08cc68a571c9efdddd90ea274c18694284d40a9f1d0a1112a4999fd6a58da\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://000752a284d1df5c0687d32554c83e99afedab49e23d7213679ed93424760450\",\"dweb:/ipfs/QmWrFS4ChUv4okqnEgSLiuSsxohDnTnYLWeyYviVbPTgcH\"]},\"lib/circuits/src/solidity/src/StringUtils.sol\":{\"keccak256\":\"0xd52eb407eef932c9a343f1225fc997b7194ff0f05c488661a7adb4a37f980306\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://60bfaf52ebd50633d6eff5ea346d25283962495c630b37f4c0cd6008e8d8fd11\",\"dweb:/ipfs/QmWVtJnjcaowsFUBRRQ7eNTntghZ4FekXXgeQNAV4PkDWe\"]},\"lib/circuits/src/solidity/src/Types.sol\":{\"keccak256\":\"0x66d73b090401a5f424e1feacf1b503dcd906163f4c749189db3dc108d6dfd668\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d90eff17b597915e95c01a171c4378e7e4e287d35ca25dbd3f684373e93cda0c\",\"dweb:/ipfs/QmYe1wixU4zZAogteHT5eubcB4qzScCYzLtYFpFBitpZeR\"]},\"lib/circuits/src/solidity/src/ZKPassportHelper.sol\":{\"keccak256\":\"0xebc7d0a4b7dae4a78d38381a36cc19e04933f302cf1f0516c8f5d68128afbd16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7504f8711789c76e7294dd12bf172e5226034a5a2202057180ee047939eefa34\",\"dweb:/ipfs/QmTGuSBmYmDBWutpyTrxPxWQ7DA6kpV6kLQSwB3wMaLCN5\"]},\"lib/circuits/src/solidity/src/ZKPassportRootVerifier.sol\":{\"keccak256\":\"0x5fb7a856f66496a36e4de2ff2dca8fcce5a2c3db3adbf20910b1b20f24e6a009\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c2693f7a086c3ff60441a12a5d72c6a2fbd811123c03d73b0887474cbefe6355\",\"dweb:/ipfs/QmbTgqop8Fb9nxcUveDSDgyMXzVBY1xw2u8eMxaFfVVp1s\"]},\"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol\":{\"keccak256\":\"0x093e93f34571a7afe3c5a42192a366397b91e9fdb6167075b9250bcfd26fe8dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://981fec528fb1f8a3032b99905801658305139d82679598579b7fe8afb1b7f6a1\",\"dweb:/ipfs/QmfZ1n1KrxcijmToULMgMccLLyLH5DVVQWJ9SrWPMTRrfw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"contract ZKPassportRootVerifier","name":"_rootVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"oldAdmin","type":"address","indexed":true},{"internalType":"address","name":"newAdmin","type":"address","indexed":true}],"type":"event","name":"AdminUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"paused","type":"bool","indexed":false}],"type":"event","name":"PausedStatusChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"proofVerifier","type":"address","indexed":true},{"internalType":"bytes32","name":"vkeyHash","type":"bytes32","indexed":true}],"type":"event","name":"ProofVerifierAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"proofVerifier","type":"address","indexed":true},{"internalType":"bytes32","name":"vkeyHash","type":"bytes32","indexed":true}],"type":"event","name":"ProofVerifierRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"address","name":"rootVerifier","type":"address","indexed":true}],"type":"event","name":"ZKPassportSubVerifierDeployed","anonymous":false},{"inputs":[{"internalType":"struct ProofVerifier[]","name":"_proofVerifiers","type":"tuple[]","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"address","name":"verifier","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"addProofVerifiers"},{"inputs":[],"stateMutability":"view","type":"function","name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"proofVerifiers","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"removeProofVerifiers"},{"inputs":[],"stateMutability":"view","type":"function","name":"rootVerifier","outputs":[{"internalType":"contract ZKPassportRootVerifier","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPaused"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferAdmin"},{"inputs":[{"internalType":"contract IRootRegistry","name":"rootRegistry","type":"address"},{"internalType":"struct ProofVerificationParams","name":"params","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}]},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple","components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}]}]}],"stateMutability":"view","type":"function","name":"verify","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor","params":{"_admin":"The admin address","_rootVerifier":"The address of the ZKPassport root verifier"}},"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":{"details":"This function is called by the root verifier to verify a proof for a specific version","params":{"params":"The proof verification parameters","rootRegistry":"The root registry"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}}},"version":1},"userdoc":{"kind":"user","methods":{"verify(address,(bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)))":{"notice":"Verifies a ZKPassport proof"}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol":"ZKPassportSubVerifier"},"evmVersion":"prague","libraries":{}},"sources":{"lib/circuits/src/solidity/src/Constants.sol":{"keccak256":"0x29a25ab24727bb03f356fe124eda7970f1769130855ebf584e4225e2718927a7","urls":["bzz-raw://3dff3096a211bcd97a4dad4e459bd3c684275e3271c493191d3819bbf4326702","dweb:/ipfs/QmfLyG5f3JWRoY5sF9kkDLBDrxymQsuk9uncw65JdRa7Sp"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/DateUtils.sol":{"keccak256":"0x4176feda967f91ccf0a1cdecc75bbf7e5aaad7b46f95e133887e3ac6ae9126f6","urls":["bzz-raw://6774599f7320a37f2e5cc22e0d8e59a1f46841a6ac94d7d45b072a809237e1ab","dweb:/ipfs/QmdrX9uQKsvN9gTgCD1zd1kigvJGsgHbvabvdWaWHuSeY4"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/IProofVerifier.sol":{"keccak256":"0xf8acc6ee390c406eaa8415863f156e251935f8de51bcd3c876871fbe5b5b4f14","urls":["bzz-raw://64016d156d15fd43d407e832fd7b333e07e80b42f0ed9d845a8cc114d3857aa6","dweb:/ipfs/QmP7zSvchyDqov13cyuWxLJDYBBpYZxrPEdGQcheyoJkUm"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/IRootRegistry.sol":{"keccak256":"0xc994fab81ea1202a93620e7e7a01ba1e61f055498ed5b09503f4b384d0554b2a","urls":["bzz-raw://12a19bab224c63ee4a0e3b4048c24e80b3ef5a3459070816c20f2c32b2ad5f72","dweb:/ipfs/QmW1DF8mAwBfacrG2r2R3uyY92i6q1h1hZvHPuwMdXTANg"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/InputsExtractor.sol":{"keccak256":"0xd8d08cc68a571c9efdddd90ea274c18694284d40a9f1d0a1112a4999fd6a58da","urls":["bzz-raw://000752a284d1df5c0687d32554c83e99afedab49e23d7213679ed93424760450","dweb:/ipfs/QmWrFS4ChUv4okqnEgSLiuSsxohDnTnYLWeyYviVbPTgcH"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/StringUtils.sol":{"keccak256":"0xd52eb407eef932c9a343f1225fc997b7194ff0f05c488661a7adb4a37f980306","urls":["bzz-raw://60bfaf52ebd50633d6eff5ea346d25283962495c630b37f4c0cd6008e8d8fd11","dweb:/ipfs/QmWVtJnjcaowsFUBRRQ7eNTntghZ4FekXXgeQNAV4PkDWe"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/Types.sol":{"keccak256":"0x66d73b090401a5f424e1feacf1b503dcd906163f4c749189db3dc108d6dfd668","urls":["bzz-raw://d90eff17b597915e95c01a171c4378e7e4e287d35ca25dbd3f684373e93cda0c","dweb:/ipfs/QmYe1wixU4zZAogteHT5eubcB4qzScCYzLtYFpFBitpZeR"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportHelper.sol":{"keccak256":"0xebc7d0a4b7dae4a78d38381a36cc19e04933f302cf1f0516c8f5d68128afbd16","urls":["bzz-raw://7504f8711789c76e7294dd12bf172e5226034a5a2202057180ee047939eefa34","dweb:/ipfs/QmTGuSBmYmDBWutpyTrxPxWQ7DA6kpV6kLQSwB3wMaLCN5"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportRootVerifier.sol":{"keccak256":"0x5fb7a856f66496a36e4de2ff2dca8fcce5a2c3db3adbf20910b1b20f24e6a009","urls":["bzz-raw://c2693f7a086c3ff60441a12a5d72c6a2fbd811123c03d73b0887474cbefe6355","dweb:/ipfs/QmbTgqop8Fb9nxcUveDSDgyMXzVBY1xw2u8eMxaFfVVp1s"],"license":"Apache-2.0"},"lib/circuits/src/solidity/src/ZKPassportSubVerifier.sol":{"keccak256":"0x093e93f34571a7afe3c5a42192a366397b91e9fdb6167075b9250bcfd26fe8dd","urls":["bzz-raw://981fec528fb1f8a3032b99905801658305139d82679598579b7fe8afb1b7f6a1","dweb:/ipfs/QmfZ1n1KrxcijmToULMgMccLLyLH5DVVQWJ9SrWPMTRrfw"],"license":"Apache-2.0"}},"version":1},"id":10}
@@ -9,11 +9,10 @@ import {CheatDepositArgs} from "@aztec/mock/MultiAdder.sol";
9
9
  import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributor.sol";
10
10
  import {IBoosterCore} from "@aztec/core/reward-boost/RewardBooster.sol";
11
11
  import {EthValue, EthPerFeeAssetE12} from "@aztec/core/libraries/rollup/FeeLib.sol";
12
- import {GenesisState, RegistryRewardOverride, RollupConfigInput} from "@aztec/core/interfaces/IRollup.sol";
12
+ import {GenesisState, RollupConfigInput} from "@aztec/core/interfaces/IRollup.sol";
13
13
  import {RewardBoostConfig} from "@aztec/core/reward-boost/RewardBooster.sol";
14
14
  import {StakingQueueConfig} from "@aztec/core/libraries/compressed-data/StakingQueueConfig.sol";
15
15
  import {RewardConfig, Bps} from "@aztec/core/libraries/rollup/RewardLib.sol";
16
- import {SafeCast} from "@oz/utils/math/SafeCast.sol";
17
16
 
18
17
  interface IRollupConfiguration {
19
18
  function loadConfig() external;
@@ -38,7 +37,6 @@ interface IRollupConfiguration {
38
37
  /// The environment variables read below describe a test network, not mainnet.
39
38
  contract RollupConfiguration is IRollupConfiguration, Test {
40
39
  using stdJson for string;
41
- using SafeCast for uint256;
42
40
 
43
41
  // Storage for loaded config
44
42
  string public networkName;
@@ -159,24 +157,12 @@ contract RollupConfiguration is IRollupConfiguration, Test {
159
157
  config.version = 0; // Computed below
160
158
  config.provingCostPerMana = EthValue.wrap(vm.envUint("AZTEC_PROVING_COST_PER_MANA"));
161
159
  config.initialEthPerFeeAsset = EthPerFeeAssetE12.wrap(vm.envUint("AZTEC_INITIAL_ETH_PER_FEE_ASSET"));
162
- config.registryRewardOverrides[0] = _getRegistryRewardOverride("AZTEC_REGISTRY_REWARD_OVERRIDE_0");
163
- config.registryRewardOverrides[1] = _getRegistryRewardOverride("AZTEC_REGISTRY_REWARD_OVERRIDE_1");
160
+ config.sequencerRewardCalculator = _getSequencerRewardCalculator("AZTEC_SEQUENCER_REWARD_CALCULATOR");
164
161
  }
165
162
 
166
- function _getRegistryRewardOverride(string memory _envName)
167
- internal
168
- view
169
- returns (RegistryRewardOverride memory registryRewardOverride)
170
- {
171
- string memory value = vm.envOr(_envName, string(""));
172
- if (bytes(value).length == 0) {
173
- return registryRewardOverride;
174
- }
175
-
176
- string[] memory fields = vm.split(value, ",");
177
- require(fields.length == 2, "Invalid registry reward override");
178
- registryRewardOverride.registry = vm.parseAddress(fields[0]);
179
- registryRewardOverride.sequencerReward = vm.parseUint(fields[1]).toUint96();
163
+ /// @dev Optional: deployers that do not pass it get no calculator, so every checkpoint receives the default reward.
164
+ function _getSequencerRewardCalculator(string memory _envName) internal view returns (address) {
165
+ return vm.envOr(_envName, address(0));
180
166
  }
181
167
 
182
168
  /// @notice Compute rollup config version by hashing config + genesis state
@@ -18,8 +18,7 @@
18
18
  "AZTEC_MANA_TARGET": 100000000,
19
19
  "AZTEC_PROVING_COST_PER_MANA": 100,
20
20
  "AZTEC_INITIAL_ETH_PER_FEE_ASSET": 10000000,
21
- "AZTEC_REGISTRY_REWARD_OVERRIDE_0": "",
22
- "AZTEC_REGISTRY_REWARD_OVERRIDE_1": "",
21
+ "AZTEC_SEQUENCER_REWARD_CALCULATOR": "0x0000000000000000000000000000000000000000",
23
22
  "AZTEC_SLASHER_ENABLED": true,
24
23
  "AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS": 4,
25
24
  "AZTEC_SLASHING_QUORUM": 65,
@@ -15,9 +15,7 @@ import {
15
15
  CheckpointPreflightArgs,
16
16
  FeeHeader,
17
17
  RollupConfigInput,
18
- RollupStore,
19
- RegistryRewardOverride,
20
- MAX_REGISTRY_REWARD_OVERRIDES
18
+ RollupStore
21
19
  } from "@aztec/core/interfaces/IRollup.sol";
22
20
  import {
23
21
  IStaking,
@@ -571,6 +569,15 @@ contract Rollup is IStaking, IValidatorSelection, IRollup, RollupCore {
571
569
  return RewardExtLib.getHasSubmitted(_epoch, _length, _prover);
572
570
  }
573
571
 
572
+ function getHasSubmittedFullEpoch(Epoch _epoch, uint256 _length, address _prover)
573
+ external
574
+ view
575
+ override(IRollup)
576
+ returns (bool)
577
+ {
578
+ return RewardExtLib.getHasSubmittedFullEpoch(_epoch, _length, _prover);
579
+ }
580
+
574
581
  function getHasClaimed(address _prover, Epoch _epoch) external view override(IRollup) returns (bool) {
575
582
  return RewardExtLib.getHasClaimed(_prover, _epoch);
576
583
  }
@@ -634,17 +641,16 @@ contract Rollup is IStaking, IValidatorSelection, IRollup, RollupCore {
634
641
  return RewardExtLib.getRewardConfig();
635
642
  }
636
643
 
637
- function getCheckpointReward() external view override(IRollup) returns (uint256) {
638
- return RewardExtLib.getCheckpointReward();
644
+ /**
645
+ * @notice Returns the sequencer reward calculator consulted when epoch proofs pay checkpoint rewards
646
+ * @return The calculator, or zero if every checkpoint receives the default sequencer reward
647
+ */
648
+ function getSequencerRewardCalculator() external view override(IRollup) returns (address) {
649
+ return RewardExtLib.getSequencerRewardCalculator();
639
650
  }
640
651
 
641
- function getRegistryRewardOverrides()
642
- external
643
- view
644
- override(IRollup)
645
- returns (RegistryRewardOverride[MAX_REGISTRY_REWARD_OVERRIDES] memory)
646
- {
647
- return _getRegistryRewardOverrides();
652
+ function getCheckpointReward() external view override(IRollup) returns (uint256) {
653
+ return RewardExtLib.getCheckpointReward();
648
654
  }
649
655
 
650
656
  function getAvailableValidatorFlushes() external view override(IStaking) returns (uint256) {
@@ -8,9 +8,7 @@ import {
8
8
  IRollupCore,
9
9
  RollupConfig,
10
10
  SubmitEpochRootProofArgs,
11
- RollupConfigInput,
12
- MAX_REGISTRY_REWARD_OVERRIDES,
13
- RegistryRewardOverride
11
+ RollupConfigInput
14
12
  } from "@aztec/core/interfaces/IRollup.sol";
15
13
  import {IVerifier} from "@aztec/core/interfaces/IVerifier.sol";
16
14
  import {IStakingCore} from "@aztec/core/interfaces/IStaking.sol";
@@ -204,11 +202,6 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
204
202
  IInbox internal immutable INBOX;
205
203
  IOutbox internal immutable OUTBOX;
206
204
 
207
- address internal immutable REGISTRY_REWARD_OVERRIDE_0_REGISTRY;
208
- uint96 internal immutable REGISTRY_REWARD_OVERRIDE_0_SEQUENCER_REWARD;
209
- address internal immutable REGISTRY_REWARD_OVERRIDE_1_REGISTRY;
210
- uint96 internal immutable REGISTRY_REWARD_OVERRIDE_1_SEQUENCER_REWARD;
211
-
212
205
  /**
213
206
  * @dev Storage gap to ensure checkBlob is in its own storage slot
214
207
  */
@@ -283,10 +276,6 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
283
276
  );
284
277
 
285
278
  _initializeRewards(_config);
286
- REGISTRY_REWARD_OVERRIDE_0_REGISTRY = _config.registryRewardOverrides[0].registry;
287
- REGISTRY_REWARD_OVERRIDE_0_SEQUENCER_REWARD = _config.registryRewardOverrides[0].sequencerReward;
288
- REGISTRY_REWARD_OVERRIDE_1_REGISTRY = _config.registryRewardOverrides[1].registry;
289
- REGISTRY_REWARD_OVERRIDE_1_SEQUENCER_REWARD = _config.registryRewardOverrides[1].sequencerReward;
290
279
 
291
280
  L1_BLOCK_AT_GENESIS = block.number;
292
281
 
@@ -320,6 +309,17 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
320
309
  RewardExtLib.updateConfig(_config);
321
310
  }
322
311
 
312
+ /**
313
+ * @notice Replaces the sequencer reward calculator consulted when epoch proofs pay checkpoint rewards
314
+ * @dev Only callable by the contract owner. Any address is accepted: zero disables the calculator, and an address
315
+ * that does not answer like an {ISequencerRewardCalculator} makes every checkpoint receive the default
316
+ * sequencer reward. Emits {IRollupCore.SequencerRewardCalculatorUpdated} with the previous and new addresses.
317
+ * @param _calculator The new calculator, or zero for none
318
+ */
319
+ function setSequencerRewardCalculator(address _calculator) external override(IRollupCore) onlyOwner {
320
+ RewardExtLib.updateSequencerRewardCalculator(_calculator);
321
+ }
322
+
323
323
  /**
324
324
  * @notice Updates the target mana (computational units) per slot
325
325
  * @dev Only callable by owner. The new target must be greater than or equal to the current target
@@ -575,7 +575,7 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
575
575
  * @param _args Contains the epoch range, public inputs, fees, attestations, and the ZK proof
576
576
  */
577
577
  function submitEpochRootProof(SubmitEpochRootProofArgs calldata _args) external override(IRollupCore) {
578
- EpochProofExtLib.submitEpochRootProof(_args, _getRollupConfig(), _getRegistryRewardOverrides());
578
+ EpochProofExtLib.submitEpochRootProof(_args, _getRollupConfig());
579
579
  }
580
580
 
581
581
  /**
@@ -712,7 +712,7 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
712
712
  }
713
713
 
714
714
  // Constructor-only writer; post-deployment updates go through {setRewardConfig}.
715
- RewardExtLib.initializeConfig(rewardConfig, _config.registryRewardOverrides);
715
+ RewardExtLib.initializeConfig(rewardConfig, _config.sequencerRewardCalculator);
716
716
  }
717
717
 
718
718
  function _getRollupConfig() internal view virtual returns (RollupConfig memory) {
@@ -727,17 +727,4 @@ contract RollupCore is EIP712("Aztec Rollup", "1"), Ownable, IStakingCore, IVali
727
727
  outbox: OUTBOX
728
728
  });
729
729
  }
730
-
731
- function _getRegistryRewardOverrides()
732
- internal
733
- view
734
- returns (RegistryRewardOverride[MAX_REGISTRY_REWARD_OVERRIDES] memory overrides)
735
- {
736
- overrides[0] = RegistryRewardOverride({
737
- registry: REGISTRY_REWARD_OVERRIDE_0_REGISTRY, sequencerReward: REGISTRY_REWARD_OVERRIDE_0_SEQUENCER_REWARD
738
- });
739
- overrides[1] = RegistryRewardOverride({
740
- registry: REGISTRY_REWARD_OVERRIDE_1_REGISTRY, sequencerReward: REGISTRY_REWARD_OVERRIDE_1_SEQUENCER_REWARD
741
- });
742
- }
743
730
  }
@@ -15,12 +15,7 @@ import {CommitteeAttestations} from "@aztec/core/libraries/rollup/AttestationLib
15
15
  import {ManaMinFeeComponents} from "@aztec/core/libraries/rollup/FeeLib.sol";
16
16
  import {ProposedHeader} from "@aztec/core/libraries/rollup/ProposedHeaderLib.sol";
17
17
  import {ProposeArgs} from "@aztec/core/libraries/rollup/ProposeLib.sol";
18
- import {
19
- RewardConfig,
20
- MutableRewardConfig,
21
- RegistryRewardOverride,
22
- MAX_REGISTRY_REWARD_OVERRIDES
23
- } from "@aztec/core/libraries/rollup/RewardLib.sol";
18
+ import {RewardConfig, MutableRewardConfig} from "@aztec/core/libraries/rollup/RewardLib.sol";
24
19
  import {RewardBoostConfig} from "@aztec/core/reward-boost/RewardBooster.sol";
25
20
  import {IHaveVersion} from "@aztec/governance/interfaces/IRegistry.sol";
26
21
  import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributor.sol";
@@ -121,7 +116,8 @@ struct RollupConfigInput {
121
116
  StakingQueueConfig stakingQueueConfig;
122
117
  uint256 localEjectionThreshold;
123
118
  uint256 ethereumSlotDuration;
124
- RegistryRewardOverride[MAX_REGISTRY_REWARD_OVERRIDES] registryRewardOverrides;
119
+ // Initial ISequencerRewardCalculator; zero for none.
120
+ address sequencerRewardCalculator;
125
121
  }
126
122
 
127
123
  /**
@@ -166,6 +162,7 @@ interface IRollupCore {
166
162
  event PrunedPending(uint256 provenCheckpointNumber, uint256 pendingCheckpointNumber);
167
163
  event ProtocolFeeMarginUpdated(uint16 oldBps, uint16 newBps);
168
164
  event ProtocolFeeRecipientUpdated(address oldRecipient, address newRecipient);
165
+ event SequencerRewardCalculatorUpdated(address oldCalculator, address newCalculator);
169
166
 
170
167
  function claimSequencerRewards(address _recipient) external returns (uint256);
171
168
  function claimProverRewards(address _recipient, Epoch[] memory _epochs) external returns (uint256);
@@ -202,6 +199,7 @@ interface IRollupCore {
202
199
  ) external;
203
200
 
204
201
  function setRewardConfig(MutableRewardConfig memory _config) external;
202
+ function setSequencerRewardCalculator(address _calculator) external;
205
203
  function updateManaTarget(uint256 _manaTarget) external;
206
204
 
207
205
  // solhint-disable-next-line func-name-mixedcase
@@ -273,6 +271,7 @@ interface IRollup is IRollupCore, IHaveVersion {
273
271
  function getCollectiveProverRewardsForEpoch(Epoch _epoch) external view returns (uint256);
274
272
  function getSpecificProverRewardsForEpoch(Epoch _epoch, address _prover) external view returns (uint256);
275
273
  function getHasSubmitted(Epoch _epoch, uint256 _length, address _prover) external view returns (bool);
274
+ function getHasSubmittedFullEpoch(Epoch _epoch, uint256 _length, address _prover) external view returns (bool);
276
275
  function getHasClaimed(address _prover, Epoch _epoch) external view returns (bool);
277
276
 
278
277
  function getProofSubmissionEpochs() external view returns (uint256);
@@ -296,9 +295,6 @@ interface IRollup is IRollupCore, IHaveVersion {
296
295
  function getEpochProofVerifier() external view returns (IVerifier);
297
296
 
298
297
  function getRewardConfig() external view returns (RewardConfig memory);
298
+ function getSequencerRewardCalculator() external view returns (address);
299
299
  function getCheckpointReward() external view returns (uint256);
300
- function getRegistryRewardOverrides()
301
- external
302
- view
303
- returns (RegistryRewardOverride[MAX_REGISTRY_REWARD_OVERRIDES] memory);
304
300
  }