@keep-network/tbtc-v2 1.7.0 → 1.7.1

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 (235) hide show
  1. package/artifacts/.chainId +1 -1
  2. package/artifacts/BLS.json +223 -0
  3. package/artifacts/Bank.json +50 -40
  4. package/artifacts/BeaconAuthorization.json +273 -0
  5. package/artifacts/BeaconDkg.json +241 -0
  6. package/artifacts/BeaconDkgValidator.json +501 -0
  7. package/artifacts/BeaconInactivity.json +151 -0
  8. package/artifacts/BeaconSortitionPool.json +1187 -0
  9. package/artifacts/Bridge.json +449 -32
  10. package/artifacts/BridgeGovernance.json +22 -22
  11. package/artifacts/BridgeGovernanceParameters.json +10 -10
  12. package/artifacts/Deposit.json +12 -12
  13. package/artifacts/DepositSweep.json +12 -12
  14. package/artifacts/DonationVault.json +17 -17
  15. package/artifacts/EcdsaDkgValidator.json +517 -0
  16. package/artifacts/EcdsaInactivity.json +156 -0
  17. package/artifacts/EcdsaSortitionPool.json +1187 -0
  18. package/artifacts/Fraud.json +12 -12
  19. package/artifacts/LightRelay.json +38 -38
  20. package/artifacts/LightRelayMaintainerProxy.json +31 -31
  21. package/artifacts/MaintainerProxy.json +44 -44
  22. package/artifacts/MovingFunds.json +12 -12
  23. package/artifacts/NuCypherToken.json +711 -0
  24. package/artifacts/RandomBeacon.json +3271 -0
  25. package/artifacts/RandomBeaconChaosnet.json +252 -0
  26. package/artifacts/RandomBeaconGovernance.json +3499 -0
  27. package/artifacts/Redemption.json +12 -12
  28. package/artifacts/RedemptionWatchtower.json +39 -39
  29. package/artifacts/ReimbursementPool.json +509 -0
  30. package/artifacts/T.json +1148 -0
  31. package/artifacts/TBTC.json +37 -36
  32. package/artifacts/TBTCToken.json +738 -0
  33. package/artifacts/TBTCVault.json +47 -47
  34. package/artifacts/Timelock.json +148 -148
  35. package/artifacts/TokenStaking.json +2117 -0
  36. package/artifacts/TokenholderGovernor.json +1795 -0
  37. package/artifacts/TokenholderTimelock.json +1058 -0
  38. package/artifacts/VendingMachine.json +35 -34
  39. package/artifacts/VendingMachineNuCypher.json +400 -0
  40. package/artifacts/VendingMachineV2.json +21 -21
  41. package/artifacts/VendingMachineV3.json +21 -21
  42. package/artifacts/WalletProposalValidator.json +12 -12
  43. package/artifacts/WalletRegistry.json +1962 -0
  44. package/artifacts/WalletRegistryGovernance.json +2863 -0
  45. package/artifacts/Wallets.json +12 -12
  46. package/artifacts/solcInputs/{be146ce112252bdda3a03de3614fbbf1.json → 2cb3f9e60e45f0ca528d3d5260ff3139.json} +31 -7
  47. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  48. package/build/contracts/Timelock.sol/Timelock.dbg.json +1 -1
  49. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  50. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  51. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  52. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  53. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  54. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  55. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  56. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  57. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  58. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  59. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  60. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  61. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  62. package/build/contracts/bridge/Redemption.sol/IRedemptionWatchtower.dbg.json +1 -1
  63. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  64. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  65. package/build/contracts/bridge/RedemptionWatchtower.sol/RedemptionWatchtower.dbg.json +1 -1
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  67. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  68. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  69. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.dbg.json +1 -1
  70. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  71. package/build/contracts/integrator/AbstractTBTCDepositor.sol/AbstractTBTCDepositor.dbg.json +1 -1
  72. package/build/contracts/integrator/IBridge.sol/IBridge.dbg.json +1 -1
  73. package/build/contracts/integrator/IBridge.sol/IBridgeTypes.dbg.json +1 -1
  74. package/build/contracts/integrator/ITBTCVault.sol/ITBTCVault.dbg.json +1 -1
  75. package/build/contracts/l2/L1BitcoinDepositor.sol/L1BitcoinDepositor.dbg.json +1 -1
  76. package/build/contracts/l2/L1BitcoinDepositor.sol/L1BitcoinDepositor.json +41 -2
  77. package/build/contracts/l2/L2BitcoinDepositor.sol/IL2WormholeGateway.dbg.json +1 -1
  78. package/build/contracts/l2/L2BitcoinDepositor.sol/L2BitcoinDepositor.dbg.json +1 -1
  79. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  80. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  81. package/build/contracts/l2/Wormhole.sol/IWormhole.dbg.json +1 -1
  82. package/build/contracts/l2/Wormhole.sol/IWormholeReceiver.dbg.json +1 -1
  83. package/build/contracts/l2/Wormhole.sol/IWormholeRelayer.dbg.json +1 -1
  84. package/build/contracts/l2/Wormhole.sol/IWormholeTokenBridge.dbg.json +1 -1
  85. package/build/contracts/l2/Wormhole.sol/WormholeTypes.dbg.json +1 -1
  86. package/build/contracts/l2/Wormhole.sol/WormholeUtils.dbg.json +1 -1
  87. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  88. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  89. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  90. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  91. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  92. package/build/contracts/test/BankStub.sol/BankStub.dbg.json +1 -1
  93. package/build/contracts/test/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  94. package/build/contracts/test/HeartbeatStub.sol/HeartbeatStub.dbg.json +1 -1
  95. package/build/contracts/test/LightRelayStub.sol/LightRelayStub.dbg.json +1 -1
  96. package/build/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.dbg.json +1 -1
  97. package/build/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.dbg.json +1 -1
  98. package/build/contracts/test/SystemTestRelay.sol/SystemTestRelay.dbg.json +1 -1
  99. package/build/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.dbg.json +1 -1
  100. package/build/contracts/test/TestERC20.sol/TestERC20.dbg.json +1 -1
  101. package/build/contracts/test/TestERC721.sol/TestERC721.dbg.json +1 -1
  102. package/build/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.dbg.json +1 -1
  103. package/build/contracts/test/TestTBTCDepositor.sol/MockBridge.dbg.json +1 -1
  104. package/build/contracts/test/TestTBTCDepositor.sol/MockTBTCVault.dbg.json +1 -1
  105. package/build/contracts/test/TestTBTCDepositor.sol/TestTBTCDepositor.dbg.json +1 -1
  106. package/build/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.dbg.json +1 -1
  107. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  108. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  109. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  110. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  111. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  112. package/contracts/l2/L1BitcoinDepositor.sol +31 -0
  113. package/export/artifacts/@keep-network/ecdsa/contracts/EcdsaDkgValidator.sol/EcdsaDkgValidator.json +24 -24
  114. package/export/artifacts/@keep-network/ecdsa/contracts/WalletRegistry.sol/WalletRegistry.json +4999 -4814
  115. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaDkg.sol/EcdsaDkg.json +2 -2
  116. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaInactivity.sol/EcdsaInactivity.json +23 -23
  117. package/export/artifacts/@keep-network/random-beacon/contracts/ReimbursementPool.sol/ReimbursementPool.json +53 -53
  118. package/export/artifacts/@keep-network/sortition-pools/contracts/Chaosnet.sol/Chaosnet.json +21 -21
  119. package/export/artifacts/@keep-network/sortition-pools/contracts/Rewards.sol/Rewards.json +16 -16
  120. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionPool.sol/SortitionPool.json +206 -206
  121. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionTree.sol/SortitionTree.json +26 -26
  122. package/export/artifacts/@openzeppelin/contracts/governance/TimelockController.sol/TimelockController.json +107 -107
  123. package/export/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +46 -46
  124. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +36 -36
  125. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +78 -78
  126. package/export/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +68 -68
  127. package/export/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +43 -43
  128. package/export/artifacts/@thesis/solidity-contracts/contracts/token/ERC20WithPermit.sol/ERC20WithPermit.json +79 -79
  129. package/export/artifacts/@thesis/solidity-contracts/contracts/token/MisfundRecovery.sol/MisfundRecovery.json +42 -42
  130. package/export/artifacts/contracts/Timelock.sol/Timelock.json +109 -109
  131. package/export/artifacts/contracts/bank/Bank.sol/Bank.json +77 -77
  132. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +338 -338
  133. package/export/artifacts/contracts/bridge/RedemptionWatchtower.sol/RedemptionWatchtower.json +128 -128
  134. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +108 -108
  135. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +63 -63
  136. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +65 -65
  137. package/export/artifacts/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +67 -67
  138. package/export/artifacts/contracts/l2/L1BitcoinDepositor.sol/L1BitcoinDepositor.json +4431 -4171
  139. package/export/artifacts/contracts/l2/L2BitcoinDepositor.sol/L2BitcoinDepositor.json +62 -62
  140. package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +194 -194
  141. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +102 -102
  142. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +149 -149
  143. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +76 -76
  144. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +62 -62
  145. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +79 -79
  146. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +376 -376
  147. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +4 -4
  148. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +78 -78
  149. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  150. package/export/artifacts/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.json +78 -78
  151. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
  152. package/export/artifacts/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.json +132 -132
  153. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +85 -85
  154. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +78 -78
  155. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +4 -4
  156. package/export/artifacts/contracts/test/TestTBTCDepositor.sol/MockBridge.json +34 -34
  157. package/export/artifacts/contracts/test/TestTBTCDepositor.sol/MockTBTCVault.json +20 -20
  158. package/export/artifacts/contracts/test/TestTBTCDepositor.sol/TestTBTCDepositor.json +52 -52
  159. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
  160. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +104 -104
  161. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +19 -19
  162. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +184 -184
  163. package/export/typechain/factories/EcdsaAuthorization__factory.js +1 -1
  164. package/export/typechain/factories/IStaking__factory.js +24 -103
  165. package/export/typechain/factories/L1BitcoinDepositor__factory.js +40 -1
  166. package/export/typechain/factories/WalletRegistry__factory.js +1 -1
  167. package/package.json +2 -2
  168. package/artifacts/solcInputs/7c1f8f1dbded4c787d87a982d1fc8349.json +0 -410
  169. package/artifacts/solcInputs/7cc3eda3cb3ff2522d18b5e7b31ea228.json +0 -102
  170. package/artifacts/solcInputs/802132f7da69a8a4226cb9424480847b.json +0 -218
  171. package/artifacts/solcInputs/887fad6b16575ba42183543c324eeb0e.json +0 -335
  172. package/artifacts/solcInputs/98e272e2fbf178ec895387b6c503f9de.json +0 -68
  173. package/artifacts/solcInputs/b0025f1f7efe4824592ac0c9793776c3.json +0 -392
  174. package/artifacts/solcInputs/b7c5f3550cc22e16e6b6ea9582ccbee3.json +0 -341
  175. package/artifacts/solcInputs/d71d4b4434e6669852eaf643ebd2a7bc.json +0 -209
  176. package/artifacts/solcInputs/fccb130292c8c7cc958ab4fa31a3e180.json +0 -187
  177. package/export/deploy/00_resolve_relay.js +0 -83
  178. package/export/deploy/01_deploy_tbtc_v2_token.js +0 -70
  179. package/export/deploy/02_deploy_vending_machine.js +0 -84
  180. package/export/deploy/03_transfer_vending_machine_roles.js +0 -69
  181. package/export/deploy/04_deploy_bank.js +0 -73
  182. package/export/deploy/05_deploy_bridge.js +0 -178
  183. package/export/deploy/06_deploy_tbtc_vault.js +0 -80
  184. package/export/deploy/07_deploy_bridge_governance.js +0 -87
  185. package/export/deploy/08_deploy_maintainer_proxy.js +0 -80
  186. package/export/deploy/09_bank_update_bridge.js +0 -63
  187. package/export/deploy/10_authorize_spv_maintainer_in_bridge.js +0 -61
  188. package/export/deploy/11_transfer_bank_ownership.js +0 -60
  189. package/export/deploy/12_transfer_bridge_governance.js +0 -63
  190. package/export/deploy/13_transfer_bridge_governance_ownership.js +0 -60
  191. package/export/deploy/14_transfer_tbtc_vault_ownership.js +0 -60
  192. package/export/deploy/15_transfer_maintainer_proxy_ownership.js +0 -60
  193. package/export/deploy/16_initialize_wallet_owner.js +0 -63
  194. package/export/deploy/16_transfer_proxy_admin_ownership.js +0 -73
  195. package/export/deploy/17_authorize_maintainer_proxy_in_bridge.js +0 -63
  196. package/export/deploy/17_transfer_proxy_admin_ownership.js +0 -73
  197. package/export/deploy/18_authorize_maintainer_proxy_in_bridge.js +0 -63
  198. package/export/deploy/18_authorize_maintainer_proxy_in_reimbursement_pool.js +0 -63
  199. package/export/deploy/19_authorize_bridge_in_reimbursement_pool.js +0 -63
  200. package/export/deploy/19_authorize_maintainer_proxy_in_reimbursement_pool.js +0 -63
  201. package/export/deploy/20_authorize_bridge_in_reimbursement_pool.js +0 -63
  202. package/export/deploy/20_deploy_proxy_admin_with_deputy.js +0 -80
  203. package/export/deploy/21_transfer_reimbursement_pool_ownership.js +0 -60
  204. package/export/deploy/22_deploy_proxy_admin_with_deputy.js +0 -80
  205. package/export/deploy/24_transfer_maintainer_proxy_ownership.js +0 -60
  206. package/export/deploy/25_transfer_proxy_admin_ownership.js +0 -73
  207. package/export/deploy/26_authorize_maintainer_proxy_in_reimbursement_pool.js +0 -70
  208. package/export/deploy/27_authorize_bridge_in_reimbursement_pool.js +0 -70
  209. package/export/deploy/28_deploy_proxy_admin_with_deputy.js +0 -80
  210. package/export/deploy/34_deploy_wallet_coordinator.js +0 -115
  211. package/export/deploy/35_add_coordinator_address.js +0 -60
  212. package/export/deploy/35_transfer_wallet_coordinator_ownership.js +0 -60
  213. package/export/deploy/36_deploy_light_relay_maintainer_proxy.js +0 -86
  214. package/export/deploy/36_transfer_wallet_coordinator_ownership.js +0 -60
  215. package/export/deploy/37_authorize_maintainer_in_light_relay_maintainer_proxy.js +0 -65
  216. package/export/deploy/37_deploy_light_relay_maintainer_proxy.js +0 -86
  217. package/export/deploy/37_transfer_light_relay_maintainer_proxy_ownership.js +0 -60
  218. package/export/deploy/38_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js +0 -70
  219. package/export/deploy/38_authorize_maintainer_in_light_relay_maintainer_proxy.js +0 -65
  220. package/export/deploy/38_transfer_light_relay_maintainer_proxy_ownership.js +0 -60
  221. package/export/deploy/39_authorize_light_relay_maintainer_proxy_in_light_relay.js +0 -63
  222. package/export/deploy/39_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js +0 -70
  223. package/export/deploy/39_transfer_light_relay_maintainer_proxy_ownership.js +0 -60
  224. package/export/deploy/40_authorize_light_relay_maintainer_proxy_in_light_relay.js +0 -66
  225. package/export/deploy/40_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js +0 -70
  226. package/export/deploy/41_authorize_light_relay_maintainer_proxy_in_light_relay.js +0 -66
  227. package/export/typechain/GoerliLightRelay.js +0 -2
  228. package/export/typechain/RelayStub.js +0 -2
  229. package/export/typechain/TestRelay.js +0 -2
  230. package/export/typechain/WalletCoordinator.js +0 -2
  231. package/export/typechain/factories/GoerliLightRelay__factory.js +0 -535
  232. package/export/typechain/factories/RelayStub__factory.js +0 -546
  233. package/export/typechain/factories/TestRelay__factory.js +0 -168
  234. package/export/typechain/factories/WalletCoordinator__factory.js +0 -1121
  235. package/export.json +0 -16130
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/5b8f58b5ff9da776e63037f0505ca213.json"
3
+ "buildInfo": "../../../build-info/84e4e0c6f0ece69e8d7e5c223d69bc65.json"
4
4
  }
@@ -140,6 +140,12 @@ contract L1BitcoinDepositor is
140
140
  /// granted by the contract owner.
141
141
  mapping(address => bool) public reimbursementAuthorizations;
142
142
 
143
+ /// @notice **Feature Flag** controlling whether the deposit transaction max fee
144
+ /// is **reimbursed** (added to the user’s TBTC) or **deducted**.
145
+ /// - `true` => Add `txMaxFee` to the minted TBTC amount
146
+ /// - `false` => Subtract `txMaxFee` from the minted TBTC amount
147
+ bool public reimburseTxMaxFee;
148
+
143
149
  event DepositInitialized(
144
150
  uint256 indexed depositKey,
145
151
  address indexed l2DepositOwner,
@@ -166,6 +172,10 @@ contract L1BitcoinDepositor is
166
172
  bool authorization
167
173
  );
168
174
 
175
+ /// @notice Emitted whenever the owner toggles the reimbursement of the deposit
176
+ /// transaction max fee.
177
+ event ReimburseTxMaxFeeUpdated(bool reimburseTxMaxFee);
178
+
169
179
  /// @dev This modifier comes from the `Reimbursable` base contract and
170
180
  /// must be overridden to protect the `updateReimbursementPool` call.
171
181
  modifier onlyReimbursableAdmin() override {
@@ -214,6 +224,7 @@ contract L1BitcoinDepositor is
214
224
  l2FinalizeDepositGasLimit = 500_000;
215
225
  initializeDepositGasOffset = 60_000;
216
226
  finalizeDepositGasOffset = 20_000;
227
+ reimburseTxMaxFee = false;
217
228
  }
218
229
 
219
230
  /// @notice Sets the address of the `L2BitcoinDepositor` contract on the
@@ -284,6 +295,15 @@ contract L1BitcoinDepositor is
284
295
  reimbursementAuthorizations[_address] = authorization;
285
296
  }
286
297
 
298
+ /// @notice Toggles whether the deposit transaction max fee is reimbursed
299
+ /// or deducted. Only callable by the contract owner.
300
+ /// @param _reimburseTxMaxFee `true` => reimburse (add) the deposit tx max fee,
301
+ /// `false` => deduct the deposit tx max fee.
302
+ function setReimburseTxMaxFee(bool _reimburseTxMaxFee) external onlyOwner {
303
+ reimburseTxMaxFee = _reimburseTxMaxFee;
304
+ emit ReimburseTxMaxFeeUpdated(_reimburseTxMaxFee);
305
+ }
306
+
287
307
  /// @notice Initializes the deposit process on L1 by revealing the deposit
288
308
  /// data (funding transaction and components of the P2(W)SH deposit
289
309
  /// address) to the tBTC Bridge. Once tBTC minting is completed,
@@ -461,6 +481,17 @@ contract L1BitcoinDepositor is
461
481
  bytes32 l2DepositOwner
462
482
  ) = _finalizeDeposit(depositKey);
463
483
 
484
+ // ----------------------------
485
+ // Reimburse or Deduct Max Fee
486
+ // ----------------------------
487
+ if (reimburseTxMaxFee) {
488
+ // Retrieve deposit tx max fee in 1e8 sat precision -> scale it to 1e18.
489
+ (, , uint64 depositTxMaxFee, ) = bridge.depositParameters();
490
+ uint256 txMaxFee = depositTxMaxFee * SATOSHI_MULTIPLIER;
491
+ // The DAO is "refunding" it by adding it to the TBTC minted.
492
+ tbtcAmount += txMaxFee;
493
+ }
494
+
464
495
  // slither-disable-next-line reentrancy-events
465
496
  emit DepositFinalized(
466
497
  depositKey,
@@ -479,7 +479,7 @@
479
479
  "parameterSlots": 1,
480
480
  "returnSlots": 0
481
481
  },
482
- "abi_decode_tuple_t_contract$_SortitionPool_$11055_fromMemory": {
482
+ "abi_decode_tuple_t_contract$_SortitionPool_$11064_fromMemory": {
483
483
  "entryPoint": 64,
484
484
  "id": null,
485
485
  "parameterSlots": 2,
@@ -751,7 +751,7 @@
751
751
  }
752
752
  ]
753
753
  },
754
- "name": "abi_decode_tuple_t_contract$_SortitionPool_$11055_fromMemory",
754
+ "name": "abi_decode_tuple_t_contract$_SortitionPool_$11064_fromMemory",
755
755
  "nodeType": "YulFunctionDefinition",
756
756
  "parameters": [
757
757
  {
@@ -779,7 +779,7 @@
779
779
  }
780
780
  ]
781
781
  },
782
- "contents": "{\n { }\n function abi_decode_tuple_t_contract$_SortitionPool_$11055_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
782
+ "contents": "{\n { }\n function abi_decode_tuple_t_contract$_SortitionPool_$11064_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
783
783
  "id": 139,
784
784
  "language": "Yul",
785
785
  "name": "#utility.yul"
@@ -791,9 +791,9 @@
791
791
  },
792
792
  "deployedBytecode": {
793
793
  "functionDebugData": {
794
- "@_throwError_21652": {
794
+ "@_throwError_21661": {
795
795
  "entryPoint": 4084,
796
- "id": 21652,
796
+ "id": 21661,
797
797
  "parameterSlots": 1,
798
798
  "returnSlots": 0
799
799
  },
@@ -821,9 +821,9 @@
821
821
  "parameterSlots": 0,
822
822
  "returnSlots": 0
823
823
  },
824
- "@recover_21725": {
824
+ "@recover_21734": {
825
825
  "entryPoint": 3979,
826
- "id": 21725,
826
+ "id": 21734,
827
827
  "parameterSlots": 2,
828
828
  "returnSlots": 1
829
829
  },
@@ -833,9 +833,9 @@
833
833
  "parameterSlots": 0,
834
834
  "returnSlots": 0
835
835
  },
836
- "@slice_8913": {
836
+ "@slice_8922": {
837
837
  "entryPoint": 3798,
838
- "id": 8913,
838
+ "id": 8922,
839
839
  "parameterSlots": 3,
840
840
  "returnSlots": 1
841
841
  },
@@ -845,21 +845,21 @@
845
845
  "parameterSlots": 0,
846
846
  "returnSlots": 0
847
847
  },
848
- "@toEthSignedMessageHash_21916": {
848
+ "@toEthSignedMessageHash_21925": {
849
849
  "entryPoint": null,
850
- "id": 21916,
850
+ "id": 21925,
851
851
  "parameterSlots": 1,
852
852
  "returnSlots": 1
853
853
  },
854
- "@tryRecover_21698": {
854
+ "@tryRecover_21707": {
855
855
  "entryPoint": 4015,
856
- "id": 21698,
856
+ "id": 21707,
857
857
  "parameterSlots": 2,
858
858
  "returnSlots": 2
859
859
  },
860
- "@tryRecover_21866": {
860
+ "@tryRecover_21875": {
861
861
  "entryPoint": 4444,
862
- "id": 21866,
862
+ "id": 21875,
863
863
  "parameterSlots": 4,
864
864
  "returnSlots": 2
865
865
  },
@@ -911,19 +911,19 @@
911
911
  "parameterSlots": 2,
912
912
  "returnSlots": 1
913
913
  },
914
- "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptr": {
914
+ "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptr": {
915
915
  "entryPoint": 4664,
916
916
  "id": null,
917
917
  "parameterSlots": 2,
918
918
  "returnSlots": 1
919
919
  },
920
- "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256": {
920
+ "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256": {
921
921
  "entryPoint": 4813,
922
922
  "id": null,
923
923
  "parameterSlots": 2,
924
924
  "returnSlots": 2
925
925
  },
926
- "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256t_uint256": {
926
+ "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256t_uint256": {
927
927
  "entryPoint": 4882,
928
928
  "id": null,
929
929
  "parameterSlots": 2,
@@ -983,7 +983,7 @@
983
983
  "parameterSlots": 5,
984
984
  "returnSlots": 1
985
985
  },
986
- "abi_encode_tuple_t_contract$_SortitionPool_$11055__to_t_address__fromStack_reversed": {
986
+ "abi_encode_tuple_t_contract$_SortitionPool_$11064__to_t_address__fromStack_reversed": {
987
987
  "entryPoint": null,
988
988
  "id": null,
989
989
  "parameterSlots": 2,
@@ -1599,7 +1599,7 @@
1599
1599
  }
1600
1600
  ]
1601
1601
  },
1602
- "name": "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptr",
1602
+ "name": "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptr",
1603
1603
  "nodeType": "YulFunctionDefinition",
1604
1604
  "parameters": [
1605
1605
  {
@@ -2465,7 +2465,7 @@
2465
2465
  }
2466
2466
  ]
2467
2467
  },
2468
- "name": "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256",
2468
+ "name": "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256",
2469
2469
  "nodeType": "YulFunctionDefinition",
2470
2470
  "parameters": [
2471
2471
  {
@@ -2695,7 +2695,7 @@
2695
2695
  }
2696
2696
  ]
2697
2697
  },
2698
- "name": "abi_encode_tuple_t_contract$_SortitionPool_$11055__to_t_address__fromStack_reversed",
2698
+ "name": "abi_encode_tuple_t_contract$_SortitionPool_$11064__to_t_address__fromStack_reversed",
2699
2699
  "nodeType": "YulFunctionDefinition",
2700
2700
  "parameters": [
2701
2701
  {
@@ -3034,7 +3034,7 @@
3034
3034
  }
3035
3035
  ]
3036
3036
  },
3037
- "name": "abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256t_uint256",
3037
+ "name": "abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256t_uint256",
3038
3038
  "nodeType": "YulFunctionDefinition",
3039
3039
  "parameters": [
3040
3040
  {
@@ -11974,7 +11974,7 @@
11974
11974
  }
11975
11975
  ]
11976
11976
  },
11977
- "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_struct_Result_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 224) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_struct$_Result_$6858_calldata_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bool_t_string_memory_ptr__to_t_bool_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, iszero(iszero(value0)))\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let length := mload(value1)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n }\n mstore(add(add(headStart, length), 96), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n }\n function abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_contract$_SortitionPool_$11055__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_struct$_Result_$6858_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function access_calldata_tail_t_array$_t_uint8_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_uint8(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_uint8(headStart)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x12()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function access_calldata_tail_t_array$_t_uint32_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function abi_encode_tuple_t_uint256_t_bytes32__to_t_uint256_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint32_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function validator_revert_uint32(value)\n {\n if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n let dst := allocate_memory(array_allocation_size_array_uint32_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _1)\n let srcEnd := add(add(_2, shl(5, _3)), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let value := mload(src)\n validator_revert_uint32(value)\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_uint32(value)\n value0 := value\n }\n function checked_sub_t_uint8(x, y) -> diff\n {\n diff := sub(and(x, 0xff), and(y, 0xff))\n if gt(diff, 0xff) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xffffffff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_array$_t_uint32_$dyn_calldata_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n mstore(tail_1, value1)\n pos := add(headStart, 64)\n let srcPtr := value0\n let i := 0\n for { } lt(i, value1) { i := add(i, 1) }\n {\n let value := calldataload(srcPtr)\n validator_revert_uint32(value)\n mstore(pos, and(value, 0xffffffff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_uint256_t_bytes_calldata_ptr_t_array$_t_uint8_$dyn_calldata_ptr_t_uint256__to_t_uint256_t_bytes_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 128)\n mstore(add(headStart, 128), value2)\n calldatacopy(add(headStart, 160), value1, value2)\n mstore(add(add(headStart, value2), 160), 0)\n let _2 := add(headStart, and(add(value2, 31), not(31)))\n let end := add(_2, 160)\n mstore(add(headStart, 64), add(sub(_2, headStart), 160))\n let pos := end\n mstore(end, value4)\n pos := add(_2, 192)\n let srcPtr := value3\n let i := 0\n for { } lt(i, value4) { i := add(i, 1) }\n {\n mstore(pos, and(abi_decode_uint8(srcPtr), 0xff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n mstore(add(headStart, 96), value5)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n let dst := allocate_memory(array_allocation_size_array_uint32_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _1)\n let srcEnd := add(add(_2, shl(5, _3)), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let value := mload(src)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff)))\n {\n let _4 := 0\n revert(_4, _4)\n }\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n mstore(add(pos, 28), value0)\n end := add(pos, 60)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_f1c269d7eab972b2fd4d87a15c317e920493e7eea923de7e48c0ebcb7f611fa9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"Slice out of bounds\")\n tail := add(headStart, 96)\n }\n function panic_error_0x21()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}",
11977
+ "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_struct_Result_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 224) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_struct$_Result_$6867_calldata_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bool_t_string_memory_ptr__to_t_bool_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, iszero(iszero(value0)))\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let length := mload(value1)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n }\n mstore(add(add(headStart, length), 96), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n }\n function abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_contract$_SortitionPool_$11064__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_struct$_Result_$6867_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_struct_Result_calldata(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function access_calldata_tail_t_array$_t_uint8_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_uint8(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_uint8(headStart)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x12()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function access_calldata_tail_t_array$_t_uint32_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n }\n function abi_encode_tuple_t_uint256_t_bytes32__to_t_uint256_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint32_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function validator_revert_uint32(value)\n {\n if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n let dst := allocate_memory(array_allocation_size_array_uint32_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _1)\n let srcEnd := add(add(_2, shl(5, _3)), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let value := mload(src)\n validator_revert_uint32(value)\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_uint32(value)\n value0 := value\n }\n function checked_sub_t_uint8(x, y) -> diff\n {\n diff := sub(and(x, 0xff), and(y, 0xff))\n if gt(diff, 0xff) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xffffffff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_array$_t_uint32_$dyn_calldata_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n mstore(tail_1, value1)\n pos := add(headStart, 64)\n let srcPtr := value0\n let i := 0\n for { } lt(i, value1) { i := add(i, 1) }\n {\n let value := calldataload(srcPtr)\n validator_revert_uint32(value)\n mstore(pos, and(value, 0xffffffff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_uint256_t_bytes_calldata_ptr_t_array$_t_uint8_$dyn_calldata_ptr_t_uint256__to_t_uint256_t_bytes_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 128)\n mstore(add(headStart, 128), value2)\n calldatacopy(add(headStart, 160), value1, value2)\n mstore(add(add(headStart, value2), 160), 0)\n let _2 := add(headStart, and(add(value2, 31), not(31)))\n let end := add(_2, 160)\n mstore(add(headStart, 64), add(sub(_2, headStart), 160))\n let pos := end\n mstore(end, value4)\n pos := add(_2, 192)\n let srcPtr := value3\n let i := 0\n for { } lt(i, value4) { i := add(i, 1) }\n {\n mstore(pos, and(abi_decode_uint8(srcPtr), 0xff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n mstore(add(headStart, 96), value5)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n let dst := allocate_memory(array_allocation_size_array_uint32_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _1)\n let srcEnd := add(add(_2, shl(5, _3)), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let value := mload(src)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff)))\n {\n let _4 := 0\n revert(_4, _4)\n }\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n mstore(add(pos, 28), value0)\n end := add(pos, 60)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_f1c269d7eab972b2fd4d87a15c317e920493e7eea923de7e48c0ebcb7f611fa9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"Slice out of bounds\")\n tail := add(headStart, 96)\n }\n function panic_error_0x21()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n mstore(add(headStart, 96), \"ue\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}",
11978
11978
  "id": 139,
11979
11979
  "language": "Yul",
11980
11980
  "name": "#utility.yul"