@keep-network/tbtc-v2 0.1.1-dev.10 → 0.1.1-dev.100

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 (115) hide show
  1. package/README.adoc +12 -0
  2. package/artifacts/Bank.json +807 -0
  3. package/artifacts/Bridge.json +2300 -0
  4. package/artifacts/Deposit.json +117 -0
  5. package/artifacts/DepositSweep.json +77 -0
  6. package/artifacts/EcdsaDkgValidator.json +532 -0
  7. package/artifacts/EcdsaInactivity.json +156 -0
  8. package/artifacts/EcdsaSortitionPool.json +1004 -0
  9. package/artifacts/Fraud.json +164 -0
  10. package/artifacts/KeepRegistry.json +99 -0
  11. package/artifacts/KeepStake.json +286 -0
  12. package/artifacts/KeepToken.json +711 -0
  13. package/artifacts/KeepTokenStaking.json +483 -0
  14. package/artifacts/MovingFunds.json +249 -0
  15. package/artifacts/NuCypherStakingEscrow.json +256 -0
  16. package/artifacts/NuCypherToken.json +711 -0
  17. package/artifacts/RandomBeaconStub.json +141 -0
  18. package/artifacts/Redemption.json +174 -0
  19. package/artifacts/ReimbursementPool.json +509 -0
  20. package/artifacts/Relay.json +123 -0
  21. package/artifacts/T.json +1148 -0
  22. package/artifacts/TBTC.json +27 -26
  23. package/artifacts/TBTCToken.json +27 -26
  24. package/artifacts/TBTCVault.json +691 -0
  25. package/artifacts/TokenStaking.json +2288 -0
  26. package/artifacts/TokenholderGovernor.json +1795 -0
  27. package/artifacts/TokenholderTimelock.json +1058 -0
  28. package/artifacts/VendingMachine.json +31 -30
  29. package/artifacts/VendingMachineKeep.json +400 -0
  30. package/artifacts/VendingMachineNuCypher.json +400 -0
  31. package/artifacts/WalletRegistry.json +1843 -0
  32. package/artifacts/WalletRegistryGovernance.json +2754 -0
  33. package/artifacts/Wallets.json +186 -0
  34. package/artifacts/solcInputs/8b65103759482b36742c6820fa66b63b.json +314 -0
  35. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  36. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  37. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  38. package/build/contracts/bank/Bank.sol/Bank.json +10 -5
  39. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +4 -0
  40. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.json +34 -0
  41. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  42. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  43. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  44. package/build/contracts/bridge/Bridge.sol/Bridge.json +2549 -198
  45. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +4 -0
  46. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +226 -0
  47. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +4 -0
  48. package/build/contracts/bridge/Deposit.sol/Deposit.json +72 -0
  49. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +4 -0
  50. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +30 -0
  51. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +4 -0
  52. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +10 -0
  53. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +4 -0
  54. package/build/contracts/bridge/Fraud.sol/Fraud.json +86 -0
  55. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +4 -0
  56. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.json +10 -0
  57. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +4 -0
  58. package/build/contracts/bridge/IRelay.sol/IRelay.json +37 -0
  59. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +4 -0
  60. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +138 -0
  61. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +4 -0
  62. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +10 -0
  63. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +4 -0
  64. package/build/contracts/bridge/Redemption.sol/Redemption.json +92 -0
  65. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  67. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +4 -0
  68. package/build/contracts/bridge/Wallets.sol/Wallets.json +112 -0
  69. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  70. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  71. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +4 -0
  72. package/build/contracts/vault/DonationVault.sol/DonationVault.json +108 -0
  73. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  74. package/build/contracts/vault/IVault.sol/IVault.json +5 -0
  75. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  76. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +273 -5
  77. package/contracts/GovernanceUtils.sol +4 -4
  78. package/contracts/bank/Bank.sol +113 -66
  79. package/contracts/bank/IReceiveBalanceApproval.sol +45 -0
  80. package/contracts/bridge/BitcoinTx.sol +267 -10
  81. package/contracts/bridge/Bridge.sol +1698 -245
  82. package/contracts/bridge/BridgeState.sol +768 -0
  83. package/contracts/bridge/Deposit.sol +269 -0
  84. package/contracts/bridge/DepositSweep.sol +574 -0
  85. package/contracts/bridge/EcdsaLib.sol +45 -0
  86. package/contracts/bridge/Fraud.sol +579 -0
  87. package/contracts/bridge/Heartbeat.sol +112 -0
  88. package/contracts/bridge/IRelay.sol +28 -0
  89. package/contracts/bridge/MovingFunds.sol +1077 -0
  90. package/contracts/bridge/Redemption.sol +1058 -0
  91. package/contracts/bridge/VendingMachine.sol +2 -2
  92. package/contracts/bridge/Wallets.sol +719 -0
  93. package/contracts/hardhat-dependency-compiler/.hardhat-dependency-compiler +1 -0
  94. package/contracts/hardhat-dependency-compiler/@keep-network/ecdsa/contracts/WalletRegistry.sol +3 -0
  95. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol +3 -0
  96. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +3 -0
  97. package/contracts/token/TBTC.sol +1 -1
  98. package/contracts/vault/DonationVault.sol +125 -0
  99. package/contracts/vault/IVault.sol +6 -22
  100. package/contracts/vault/TBTCVault.sol +188 -29
  101. package/deploy/00_resolve_relay.ts +28 -0
  102. package/deploy/{03_transfer_roles.ts → 03_transfer_vending_machine_roles.ts} +1 -1
  103. package/deploy/04_deploy_bank.ts +27 -0
  104. package/deploy/05_deploy_bridge.ts +80 -0
  105. package/deploy/06_deploy_tbtc_vault.ts +30 -0
  106. package/deploy/07_bank_update_bridge.ts +19 -0
  107. package/deploy/08_transfer_bank_ownership.ts +15 -0
  108. package/deploy/09_transfer_tbtc_vault_ownership.ts +15 -0
  109. package/deploy/10_transfer_bridge_governance.ts +20 -0
  110. package/deploy/11_initialize_wallet_owner.ts +18 -0
  111. package/deploy/11_transfer_proxy_admin_ownership.ts +30 -0
  112. package/deploy/12_deploy_proxy_admin_with_deputy.ts +33 -0
  113. package/export.json +15771 -443
  114. package/package.json +34 -26
  115. package/artifacts/solcInputs/524094faac10a04084fcc411e06dab84.json +0 -128
@@ -38,6 +38,25 @@
38
38
  "name": "Minted",
39
39
  "type": "event"
40
40
  },
41
+ {
42
+ "anonymous": false,
43
+ "inputs": [
44
+ {
45
+ "indexed": true,
46
+ "internalType": "address",
47
+ "name": "previousOwner",
48
+ "type": "address"
49
+ },
50
+ {
51
+ "indexed": true,
52
+ "internalType": "address",
53
+ "name": "newOwner",
54
+ "type": "address"
55
+ }
56
+ ],
57
+ "name": "OwnershipTransferred",
58
+ "type": "event"
59
+ },
41
60
  {
42
61
  "anonymous": false,
43
62
  "inputs": [
@@ -54,9 +73,54 @@
54
73
  "type": "uint256"
55
74
  }
56
75
  ],
57
- "name": "Redeemed",
76
+ "name": "Unminted",
77
+ "type": "event"
78
+ },
79
+ {
80
+ "anonymous": false,
81
+ "inputs": [
82
+ {
83
+ "indexed": false,
84
+ "internalType": "address",
85
+ "name": "newVault",
86
+ "type": "address"
87
+ }
88
+ ],
89
+ "name": "UpgradeFinalized",
90
+ "type": "event"
91
+ },
92
+ {
93
+ "anonymous": false,
94
+ "inputs": [
95
+ {
96
+ "indexed": false,
97
+ "internalType": "address",
98
+ "name": "newVault",
99
+ "type": "address"
100
+ },
101
+ {
102
+ "indexed": false,
103
+ "internalType": "uint256",
104
+ "name": "timestamp",
105
+ "type": "uint256"
106
+ }
107
+ ],
108
+ "name": "UpgradeInitiated",
58
109
  "type": "event"
59
110
  },
111
+ {
112
+ "inputs": [],
113
+ "name": "UPGRADE_GOVERNANCE_DELAY",
114
+ "outputs": [
115
+ {
116
+ "internalType": "uint256",
117
+ "name": "",
118
+ "type": "uint256"
119
+ }
120
+ ],
121
+ "stateMutability": "view",
122
+ "type": "function"
123
+ },
60
124
  {
61
125
  "inputs": [],
62
126
  "name": "bank",
@@ -70,6 +134,26 @@
70
134
  "stateMutability": "view",
71
135
  "type": "function"
72
136
  },
137
+ {
138
+ "inputs": [],
139
+ "name": "finalizeUpgrade",
140
+ "outputs": [],
141
+ "stateMutability": "nonpayable",
142
+ "type": "function"
143
+ },
144
+ {
145
+ "inputs": [
146
+ {
147
+ "internalType": "address",
148
+ "name": "_newVault",
149
+ "type": "address"
150
+ }
151
+ ],
152
+ "name": "initiateUpgrade",
153
+ "outputs": [],
154
+ "stateMutability": "nonpayable",
155
+ "type": "function"
156
+ },
73
157
  {
74
158
  "inputs": [
75
159
  {
@@ -83,6 +167,32 @@
83
167
  "stateMutability": "nonpayable",
84
168
  "type": "function"
85
169
  },
170
+ {
171
+ "inputs": [],
172
+ "name": "newVault",
173
+ "outputs": [
174
+ {
175
+ "internalType": "address",
176
+ "name": "",
177
+ "type": "address"
178
+ }
179
+ ],
180
+ "stateMutability": "view",
181
+ "type": "function"
182
+ },
183
+ {
184
+ "inputs": [],
185
+ "name": "owner",
186
+ "outputs": [
187
+ {
188
+ "internalType": "address",
189
+ "name": "",
190
+ "type": "address"
191
+ }
192
+ ],
193
+ "stateMutability": "view",
194
+ "type": "function"
195
+ },
86
196
  {
87
197
  "inputs": [
88
198
  {
@@ -102,7 +212,7 @@
102
212
  },
103
213
  {
104
214
  "internalType": "bytes",
105
- "name": "",
215
+ "name": "extraData",
106
216
  "type": "bytes"
107
217
  }
108
218
  ],
@@ -122,6 +232,11 @@
122
232
  "internalType": "uint256",
123
233
  "name": "amount",
124
234
  "type": "uint256"
235
+ },
236
+ {
237
+ "internalType": "bytes",
238
+ "name": "",
239
+ "type": "bytes"
125
240
  }
126
241
  ],
127
242
  "name": "receiveBalanceApproval",
@@ -149,13 +264,109 @@
149
264
  },
150
265
  {
151
266
  "inputs": [
267
+ {
268
+ "internalType": "contract IERC20",
269
+ "name": "token",
270
+ "type": "address"
271
+ },
272
+ {
273
+ "internalType": "address",
274
+ "name": "recipient",
275
+ "type": "address"
276
+ },
152
277
  {
153
278
  "internalType": "uint256",
154
279
  "name": "amount",
155
280
  "type": "uint256"
156
281
  }
157
282
  ],
158
- "name": "redeem",
283
+ "name": "recoverERC20",
284
+ "outputs": [],
285
+ "stateMutability": "nonpayable",
286
+ "type": "function"
287
+ },
288
+ {
289
+ "inputs": [
290
+ {
291
+ "internalType": "contract IERC20",
292
+ "name": "token",
293
+ "type": "address"
294
+ },
295
+ {
296
+ "internalType": "address",
297
+ "name": "recipient",
298
+ "type": "address"
299
+ },
300
+ {
301
+ "internalType": "uint256",
302
+ "name": "amount",
303
+ "type": "uint256"
304
+ }
305
+ ],
306
+ "name": "recoverERC20FromToken",
307
+ "outputs": [],
308
+ "stateMutability": "nonpayable",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "internalType": "contract IERC721",
315
+ "name": "token",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "address",
320
+ "name": "recipient",
321
+ "type": "address"
322
+ },
323
+ {
324
+ "internalType": "uint256",
325
+ "name": "tokenId",
326
+ "type": "uint256"
327
+ },
328
+ {
329
+ "internalType": "bytes",
330
+ "name": "data",
331
+ "type": "bytes"
332
+ }
333
+ ],
334
+ "name": "recoverERC721",
335
+ "outputs": [],
336
+ "stateMutability": "nonpayable",
337
+ "type": "function"
338
+ },
339
+ {
340
+ "inputs": [
341
+ {
342
+ "internalType": "contract IERC721",
343
+ "name": "token",
344
+ "type": "address"
345
+ },
346
+ {
347
+ "internalType": "address",
348
+ "name": "recipient",
349
+ "type": "address"
350
+ },
351
+ {
352
+ "internalType": "uint256",
353
+ "name": "tokenId",
354
+ "type": "uint256"
355
+ },
356
+ {
357
+ "internalType": "bytes",
358
+ "name": "data",
359
+ "type": "bytes"
360
+ }
361
+ ],
362
+ "name": "recoverERC721FromToken",
363
+ "outputs": [],
364
+ "stateMutability": "nonpayable",
365
+ "type": "function"
366
+ },
367
+ {
368
+ "inputs": [],
369
+ "name": "renounceOwnership",
159
370
  "outputs": [],
160
371
  "stateMutability": "nonpayable",
161
372
  "type": "function"
@@ -172,10 +383,67 @@
172
383
  ],
173
384
  "stateMutability": "view",
174
385
  "type": "function"
386
+ },
387
+ {
388
+ "inputs": [
389
+ {
390
+ "internalType": "address",
391
+ "name": "newOwner",
392
+ "type": "address"
393
+ }
394
+ ],
395
+ "name": "transferOwnership",
396
+ "outputs": [],
397
+ "stateMutability": "nonpayable",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [
402
+ {
403
+ "internalType": "uint256",
404
+ "name": "amount",
405
+ "type": "uint256"
406
+ }
407
+ ],
408
+ "name": "unmint",
409
+ "outputs": [],
410
+ "stateMutability": "nonpayable",
411
+ "type": "function"
412
+ },
413
+ {
414
+ "inputs": [
415
+ {
416
+ "internalType": "uint256",
417
+ "name": "amount",
418
+ "type": "uint256"
419
+ },
420
+ {
421
+ "internalType": "bytes",
422
+ "name": "redemptionData",
423
+ "type": "bytes"
424
+ }
425
+ ],
426
+ "name": "unmintAndRedeem",
427
+ "outputs": [],
428
+ "stateMutability": "nonpayable",
429
+ "type": "function"
430
+ },
431
+ {
432
+ "inputs": [],
433
+ "name": "upgradeInitiatedTimestamp",
434
+ "outputs": [
435
+ {
436
+ "internalType": "uint256",
437
+ "name": "",
438
+ "type": "uint256"
439
+ }
440
+ ],
441
+ "stateMutability": "view",
442
+ "type": "function"
175
443
  }
176
444
  ],
177
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162001589380380620015898339818101604052810190620000379190620001d4565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620000aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a19062000285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200011d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001149062000263565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c0565b600081519050620001b7816200038c565b92915050565b600081519050620001ce81620003a6565b92915050565b60008060408385031215620001e857600080fd5b6000620001f885828601620001a6565b92505060206200020b85828601620001bd565b9150509250929050565b600062000224602683620002a7565b9150620002318262000314565b604082019050919050565b60006200024b602083620002a7565b9150620002588262000363565b602082019050919050565b600060208201905081810360008301526200027e8162000215565b9050919050565b60006020820190508181036000830152620002a0816200023c565b9050919050565b600082825260208201905092915050565b6000620002c582620002f4565b9050919050565b6000620002d982620002b8565b9050919050565b6000620002ed82620002b8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42616e6b2063616e206e6f7420626520746865207a65726f2061646472657373600082015250565b6200039781620002cc565b8114620003a357600080fd5b50565b620003b181620002e0565b8114620003bd57600080fd5b50565b6111b980620003d06000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f4ffcb11161005b5780638f4ffcb1146100d8578063a0712d68146100f4578063db006a7514610110578063e5d3d7141461012c5761007d565b8063461c637314610082578063537941371461009e57806376cdb03b146100ba575b600080fd5b61009c60048036038101906100979190610c37565b61014a565b005b6100b860048036038101906100b39190610b7b565b6102dd565b005b6100c26104f3565b6040516100cf9190610e64565b60405180910390f35b6100f260048036038101906100ed9190610bb7565b610517565b005b61010e60048036038101906101099190610cac565b610626565b005b61012a60048036038101906101259190610cac565b6107b3565b005b6101346107c0565b6040516101419190610e7f565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cf90610eda565b60405180910390fd5b600084849050141561021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021690610efa565b60405180910390fd5b60005b848490508110156102d6576102c3858583818110610269577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061027e9190610b52565b8484848181106102b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356107e6565b80806102ce90610fea565b915050610222565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461036b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036290610eda565b60405180910390fd5b8060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016103c59190610de9565b60206040518083038186803b1580156103dd57600080fd5b505afa1580156103f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104159190610cd5565b1015610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90610f1a565b60405180910390fd5b61046082826107e6565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c6db49c8330846040518463ffffffff1660e01b81526004016104bd93929190610e04565b600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e90610eba565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90610e9a565b60405180910390fd5b61061f85856108c7565b5050505050565b60003390508160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016106859190610de9565b60206040518083038186803b15801561069d57600080fd5b505afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190610cd5565b1015610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90610f1a565b60405180910390fd5b61072081836107e6565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c6db49c8230856040518463ffffffff1660e01b815260040161077d93929190610e04565b600060405180830381600087803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b505050505050565b6107bd33826108c7565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161082c9190610f3a565b60405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610891929190610e3b565b600060405180830381600087803b1580156108ab57600080fd5b505af11580156108bf573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b93698260405161090d9190610f3a565b60405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc679083836040518363ffffffff1660e01b8152600401610972929190610e3b565b600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356a6d9ef83836040518363ffffffff1660e01b81526004016109ff929190610e3b565b600060405180830381600087803b158015610a1957600080fd5b505af1158015610a2d573d6000803e3d6000fd5b505050505050565b600081359050610a4481611155565b92915050565b60008083601f840112610a5c57600080fd5b8235905067ffffffffffffffff811115610a7557600080fd5b602083019150836020820283011115610a8d57600080fd5b9250929050565b60008083601f840112610aa657600080fd5b8235905067ffffffffffffffff811115610abf57600080fd5b602083019150836020820283011115610ad757600080fd5b9250929050565b60008083601f840112610af057600080fd5b8235905067ffffffffffffffff811115610b0957600080fd5b602083019150836001820283011115610b2157600080fd5b9250929050565b600081359050610b378161116c565b92915050565b600081519050610b4c8161116c565b92915050565b600060208284031215610b6457600080fd5b6000610b7284828501610a35565b91505092915050565b60008060408385031215610b8e57600080fd5b6000610b9c85828601610a35565b9250506020610bad85828601610b28565b9150509250929050565b600080600080600060808688031215610bcf57600080fd5b6000610bdd88828901610a35565b9550506020610bee88828901610b28565b9450506040610bff88828901610a35565b935050606086013567ffffffffffffffff811115610c1c57600080fd5b610c2888828901610ade565b92509250509295509295909350565b60008060008060408587031215610c4d57600080fd5b600085013567ffffffffffffffff811115610c6757600080fd5b610c7387828801610a4a565b9450945050602085013567ffffffffffffffff811115610c9257600080fd5b610c9e87828801610a94565b925092505092959194509250565b600060208284031215610cbe57600080fd5b6000610ccc84828501610b28565b91505092915050565b600060208284031215610ce757600080fd5b6000610cf584828501610b3d565b91505092915050565b610d0781610f66565b82525050565b610d1681610fa2565b82525050565b610d2581610fc6565b82525050565b6000610d38601883610f55565b9150610d4382611062565b602082019050919050565b6000610d5b601183610f55565b9150610d668261108b565b602082019050919050565b6000610d7e601683610f55565b9150610d89826110b4565b602082019050919050565b6000610da1601783610f55565b9150610dac826110dd565b602082019050919050565b6000610dc4602283610f55565b9150610dcf82611106565b604082019050919050565b610de381610f98565b82525050565b6000602082019050610dfe6000830184610cfe565b92915050565b6000606082019050610e196000830186610cfe565b610e266020830185610cfe565b610e336040830184610dda565b949350505050565b6000604082019050610e506000830185610cfe565b610e5d6020830184610dda565b9392505050565b6000602082019050610e796000830184610d0d565b92915050565b6000602082019050610e946000830184610d1c565b92915050565b60006020820190508181036000830152610eb381610d2b565b9050919050565b60006020820190508181036000830152610ed381610d4e565b9050919050565b60006020820190508181036000830152610ef381610d71565b9050919050565b60006020820190508181036000830152610f1381610d94565b9050919050565b60006020820190508181036000830152610f3381610db7565b9050919050565b6000602082019050610f4f6000830184610dda565b92915050565b600082825260208201905092915050565b6000610f7182610f78565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610fad82610fb4565b9050919050565b6000610fbf82610f78565b9050919050565b6000610fd182610fd8565b9050919050565b6000610fe382610f78565b9050919050565b6000610ff582610f98565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561102857611027611033565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4f6e6c7920544254432063616c6c657220616c6c6f7765640000000000000000600082015250565b7f546f6b656e206973206e6f742054425443000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f74207468652042616e6b00000000000000000000600082015250565b7f4e6f206465706f7369746f727320737065636966696564000000000000000000600082015250565b7f416d6f756e7420657863656564732062616c616e636520696e2074686520626160008201527f6e6b000000000000000000000000000000000000000000000000000000000000602082015250565b61115e81610f66565b811461116957600080fd5b50565b61117581610f98565b811461118057600080fd5b5056fea264697066735822122092c1be47215fc7822adb5e6bedef65d4620ae8ae5ccb0ed2dadf2b1d89e02ec264736f6c63430008040033",
178
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f4ffcb11161005b5780638f4ffcb1146100d8578063a0712d68146100f4578063db006a7514610110578063e5d3d7141461012c5761007d565b8063461c637314610082578063537941371461009e57806376cdb03b146100ba575b600080fd5b61009c60048036038101906100979190610c37565b61014a565b005b6100b860048036038101906100b39190610b7b565b6102dd565b005b6100c26104f3565b6040516100cf9190610e64565b60405180910390f35b6100f260048036038101906100ed9190610bb7565b610517565b005b61010e60048036038101906101099190610cac565b610626565b005b61012a60048036038101906101259190610cac565b6107b3565b005b6101346107c0565b6040516101419190610e7f565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cf90610eda565b60405180910390fd5b600084849050141561021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021690610efa565b60405180910390fd5b60005b848490508110156102d6576102c3858583818110610269577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061027e9190610b52565b8484848181106102b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356107e6565b80806102ce90610fea565b915050610222565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461036b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036290610eda565b60405180910390fd5b8060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016103c59190610de9565b60206040518083038186803b1580156103dd57600080fd5b505afa1580156103f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104159190610cd5565b1015610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90610f1a565b60405180910390fd5b61046082826107e6565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c6db49c8330846040518463ffffffff1660e01b81526004016104bd93929190610e04565b600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e90610eba565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90610e9a565b60405180910390fd5b61061f85856108c7565b5050505050565b60003390508160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016106859190610de9565b60206040518083038186803b15801561069d57600080fd5b505afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190610cd5565b1015610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90610f1a565b60405180910390fd5b61072081836107e6565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637c6db49c8230856040518463ffffffff1660e01b815260040161077d93929190610e04565b600060405180830381600087803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b505050505050565b6107bd33826108c7565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161082c9190610f3a565b60405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610891929190610e3b565b600060405180830381600087803b1580156108ab57600080fd5b505af11580156108bf573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b93698260405161090d9190610f3a565b60405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc679083836040518363ffffffff1660e01b8152600401610972929190610e3b565b600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356a6d9ef83836040518363ffffffff1660e01b81526004016109ff929190610e3b565b600060405180830381600087803b158015610a1957600080fd5b505af1158015610a2d573d6000803e3d6000fd5b505050505050565b600081359050610a4481611155565b92915050565b60008083601f840112610a5c57600080fd5b8235905067ffffffffffffffff811115610a7557600080fd5b602083019150836020820283011115610a8d57600080fd5b9250929050565b60008083601f840112610aa657600080fd5b8235905067ffffffffffffffff811115610abf57600080fd5b602083019150836020820283011115610ad757600080fd5b9250929050565b60008083601f840112610af057600080fd5b8235905067ffffffffffffffff811115610b0957600080fd5b602083019150836001820283011115610b2157600080fd5b9250929050565b600081359050610b378161116c565b92915050565b600081519050610b4c8161116c565b92915050565b600060208284031215610b6457600080fd5b6000610b7284828501610a35565b91505092915050565b60008060408385031215610b8e57600080fd5b6000610b9c85828601610a35565b9250506020610bad85828601610b28565b9150509250929050565b600080600080600060808688031215610bcf57600080fd5b6000610bdd88828901610a35565b9550506020610bee88828901610b28565b9450506040610bff88828901610a35565b935050606086013567ffffffffffffffff811115610c1c57600080fd5b610c2888828901610ade565b92509250509295509295909350565b60008060008060408587031215610c4d57600080fd5b600085013567ffffffffffffffff811115610c6757600080fd5b610c7387828801610a4a565b9450945050602085013567ffffffffffffffff811115610c9257600080fd5b610c9e87828801610a94565b925092505092959194509250565b600060208284031215610cbe57600080fd5b6000610ccc84828501610b28565b91505092915050565b600060208284031215610ce757600080fd5b6000610cf584828501610b3d565b91505092915050565b610d0781610f66565b82525050565b610d1681610fa2565b82525050565b610d2581610fc6565b82525050565b6000610d38601883610f55565b9150610d4382611062565b602082019050919050565b6000610d5b601183610f55565b9150610d668261108b565b602082019050919050565b6000610d7e601683610f55565b9150610d89826110b4565b602082019050919050565b6000610da1601783610f55565b9150610dac826110dd565b602082019050919050565b6000610dc4602283610f55565b9150610dcf82611106565b604082019050919050565b610de381610f98565b82525050565b6000602082019050610dfe6000830184610cfe565b92915050565b6000606082019050610e196000830186610cfe565b610e266020830185610cfe565b610e336040830184610dda565b949350505050565b6000604082019050610e506000830185610cfe565b610e5d6020830184610dda565b9392505050565b6000602082019050610e796000830184610d0d565b92915050565b6000602082019050610e946000830184610d1c565b92915050565b60006020820190508181036000830152610eb381610d2b565b9050919050565b60006020820190508181036000830152610ed381610d4e565b9050919050565b60006020820190508181036000830152610ef381610d71565b9050919050565b60006020820190508181036000830152610f1381610d94565b9050919050565b60006020820190508181036000830152610f3381610db7565b9050919050565b6000602082019050610f4f6000830184610dda565b92915050565b600082825260208201905092915050565b6000610f7182610f78565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610fad82610fb4565b9050919050565b6000610fbf82610f78565b9050919050565b6000610fd182610fd8565b9050919050565b6000610fe382610f78565b9050919050565b6000610ff582610f98565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561102857611027611033565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4f6e6c7920544254432063616c6c657220616c6c6f7765640000000000000000600082015250565b7f546f6b656e206973206e6f742054425443000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f74207468652042616e6b00000000000000000000600082015250565b7f4e6f206465706f7369746f727320737065636966696564000000000000000000600082015250565b7f416d6f756e7420657863656564732062616c616e636520696e2074686520626160008201527f6e6b000000000000000000000000000000000000000000000000000000000000602082015250565b61115e81610f66565b811461116957600080fd5b50565b61117581610f98565b811461118057600080fd5b5056fea264697066735822122092c1be47215fc7822adb5e6bedef65d4620ae8ae5ccb0ed2dadf2b1d89e02ec264736f6c63430008040033",
445
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162001d5c38038062001d5c83398101604081905262000034916200019d565b6200003f3362000134565b6001600160a01b0382166200009b5760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f206164647265737360448201526064015b60405180910390fd5b6001600160a01b038116620001025760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b606482015260840162000092565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055620001dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200019a57600080fd5b50565b60008060408385031215620001b157600080fd5b8251620001be8162000184565b6020840151909250620001d18162000184565b809150509250929050565b611b7080620001ec6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806388aaf0c8116100cd578063a0712d6811610081578063e5d3d71411610066578063e5d3d714146102b6578063f2fde38b146102c9578063fc4e51f6146102dc57600080fd5b8063a0712d6814610299578063cfce0816146102ac57600080fd5b80638f4ffcb1116100b25780638f4ffcb114610267578063951315261461027a5780639a508c8e1461029157600080fd5b806388aaf0c8146102435780638da5cb5b1461025657600080fd5b8063479aa9271161012457806364e779b11161010957806364e779b1146101f8578063715018a61461020b57806376cdb03b1461021357600080fd5b8063479aa927146101d257806353dce4df146101e557600080fd5b8063317dfa7611610155578063317dfa7614610199578063461c6373146101ac578063475d0570146101bf57600080fd5b80631171bda9146101715780632e73e39814610186575b600080fd5b61018461017f3660046116a0565b6102ef565b005b61018461019436600461172a565b610367565b6101846101a73660046116a0565b61044b565b6101846101ba3660046117e2565b610531565b6101846101cd36600461184e565b610644565b6101846101e036600461189e565b6107f1565b6101846101f33660046118bb565b610915565b610184610206366004611907565b610921565b61018461092e565b600154610226906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600354610226906001600160a01b031681565b6000546001600160a01b0316610226565b610184610275366004611920565b610994565b61028360045481565b60405190815260200161023a565b610184610a69565b6101846102a7366004611907565b610caf565b6102836201518081565b600254610226906001600160a01b031681565b6101846102d736600461189e565b610e03565b6101846102ea36600461172a565b610ee2565b6000546001600160a01b0316331461034e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6103626001600160a01b0384168383610f89565b505050565b6000546001600160a01b031633146103c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6002546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f690610412908890889088908890889060040161199f565b600060405180830381600087803b15801561042c57600080fd5b505af1158015610440573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146104a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6002546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561051457600080fd5b505af1158015610528573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b0316331461058b5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610345565b826105d85760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610345565b60005b8381101561063d5761062b8585838181106105f8576105f86119d2565b905060200201602081019061060d919061189e565b84848481811061061f5761061f6119d2565b90506020020135611009565b80610635816119fe565b9150506105db565b5050505050565b6001546001600160a01b0316331461069e5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610345565b6001546040516370a0823160e01b81526001600160a01b038681166004830152859216906370a082319060240160206040518083038186803b1580156106e357600080fd5b505afa1580156106f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b9190611a19565b10156107745760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610345565b61077e8484611009565b600154604051631f1b6d2760e21b81526001600160a01b0386811660048301523060248301526044820186905290911690637c6db49c906064015b600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461084b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6001600160a01b0381166108a15760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610345565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a1426004556003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6103623384848461109e565b61092b3382611207565b50565b6000546001600160a01b031633146109885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6109926000611302565b565b6002546001600160a01b038481169116146109f15760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610345565b336001600160a01b03841614610a495760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610345565b80610a5d57610a588585611207565b61063d565b61063d8585848461109e565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b610ad26004546201518061135f565b6003546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a16002546003546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f2fde38b90602401600060405180830381600087803b158015610b7457600080fd5b505af1158015610b88573d6000803e3d6000fd5b50506001546003546040516370a0823160e01b81523060048201526001600160a01b0392831694506356a6d9ef935091169083906370a082319060240160206040518083038186803b158015610bdd57600080fd5b505afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611a19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610c7357600080fd5b505af1158015610c87573d6000803e3d6000fd5b50506003805473ffffffffffffffffffffffffffffffffffffffff1916905550506000600455565b6001546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190611a19565b1015610d885760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610345565b610d928183611009565b600154604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c906064015b600060405180830381600087803b158015610de757600080fd5b505af1158015610dfb573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6001600160a01b038116610ed95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610345565b61092b81611302565b6000546001600160a01b03163314610f3c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610412903090889088908890889060040161199f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261036290849061140c565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161104491815260200190565b60405180910390a26002546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610dcd565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b8846040516110d991815260200190565b60405180910390a260025460405163079cc67960e41b81526001600160a01b03868116600483015260248201869052909116906379cc679090604401600060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b5050600154604080517fe78cea9200000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169350634a38757e9250839163e78cea9291600480820192602092909190829003018186803b1580156111ad57600080fd5b505afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190611a32565b8585856040518563ffffffff1660e01b81526004016107b99493929190611a4f565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b88260405161124291815260200190565b60405180910390a260025460405163079cc67960e41b81526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b15801561129857600080fd5b505af11580156112ac573d6000803e3d6000fd5b50506001546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610dcd565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082116113af5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610345565b806113ba8342611a82565b10156114085760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610345565b5050565b6000611461826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114f19092919063ffffffff16565b805190915015610362578080602001905181019061147f9190611a99565b6103625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610345565b6060611500848460008561150a565b90505b9392505050565b6060824710156115825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610345565b6001600160a01b0385163b6115d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610345565b600080866001600160a01b031685876040516115f59190611aeb565b60006040518083038185875af1925050503d8060008114611632576040519150601f19603f3d011682016040523d82523d6000602084013e611637565b606091505b5091509150611647828286611652565b979650505050505050565b60608315611661575081611503565b8251156116715782518084602001fd5b8160405162461bcd60e51b81526004016103459190611b07565b6001600160a01b038116811461092b57600080fd5b6000806000606084860312156116b557600080fd5b83356116c08161168b565b925060208401356116d08161168b565b929592945050506040919091013590565b60008083601f8401126116f357600080fd5b50813567ffffffffffffffff81111561170b57600080fd5b60208301915083602082850101111561172357600080fd5b9250929050565b60008060008060006080868803121561174257600080fd5b853561174d8161168b565b9450602086013561175d8161168b565b935060408601359250606086013567ffffffffffffffff81111561178057600080fd5b61178c888289016116e1565b969995985093965092949392505050565b60008083601f8401126117af57600080fd5b50813567ffffffffffffffff8111156117c757600080fd5b6020830191508360208260051b850101111561172357600080fd5b600080600080604085870312156117f857600080fd5b843567ffffffffffffffff8082111561181057600080fd5b61181c8883890161179d565b9096509450602087013591508082111561183557600080fd5b506118428782880161179d565b95989497509550505050565b6000806000806060858703121561186457600080fd5b843561186f8161168b565b935060208501359250604085013567ffffffffffffffff81111561189257600080fd5b611842878288016116e1565b6000602082840312156118b057600080fd5b81356115038161168b565b6000806000604084860312156118d057600080fd5b83359250602084013567ffffffffffffffff8111156118ee57600080fd5b6118fa868287016116e1565b9497909650939450505050565b60006020828403121561191957600080fd5b5035919050565b60008060008060006080868803121561193857600080fd5b85356119438161168b565b945060208601359350604086013561195a8161168b565b9250606086013567ffffffffffffffff81111561178057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152611647608083018486611976565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a1257611a126119e8565b5060010190565b600060208284031215611a2b57600080fd5b5051919050565b600060208284031215611a4457600080fd5b81516115038161168b565b6001600160a01b0385168152836020820152606060408201526000611a78606083018486611976565b9695505050505050565b600082821015611a9457611a946119e8565b500390565b600060208284031215611aab57600080fd5b8151801515811461150357600080fd5b60005b83811015611ad6578181015183820152602001611abe565b83811115611ae5576000848401525b50505050565b60008251611afd818460208701611abb565b9190910192915050565b6020815260008251806020840152611b26816040850160208701611abb565b601f01601f1916919091016040019291505056fea26469706673582212202f0ac7db0281ac8c0004326c7e746d4b696bcf247bcd9c4847c3d196e8ecc35464736f6c63430008090033",
446
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c806388aaf0c8116100cd578063a0712d6811610081578063e5d3d71411610066578063e5d3d714146102b6578063f2fde38b146102c9578063fc4e51f6146102dc57600080fd5b8063a0712d6814610299578063cfce0816146102ac57600080fd5b80638f4ffcb1116100b25780638f4ffcb114610267578063951315261461027a5780639a508c8e1461029157600080fd5b806388aaf0c8146102435780638da5cb5b1461025657600080fd5b8063479aa9271161012457806364e779b11161010957806364e779b1146101f8578063715018a61461020b57806376cdb03b1461021357600080fd5b8063479aa927146101d257806353dce4df146101e557600080fd5b8063317dfa7611610155578063317dfa7614610199578063461c6373146101ac578063475d0570146101bf57600080fd5b80631171bda9146101715780632e73e39814610186575b600080fd5b61018461017f3660046116a0565b6102ef565b005b61018461019436600461172a565b610367565b6101846101a73660046116a0565b61044b565b6101846101ba3660046117e2565b610531565b6101846101cd36600461184e565b610644565b6101846101e036600461189e565b6107f1565b6101846101f33660046118bb565b610915565b610184610206366004611907565b610921565b61018461092e565b600154610226906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600354610226906001600160a01b031681565b6000546001600160a01b0316610226565b610184610275366004611920565b610994565b61028360045481565b60405190815260200161023a565b610184610a69565b6101846102a7366004611907565b610caf565b6102836201518081565b600254610226906001600160a01b031681565b6101846102d736600461189e565b610e03565b6101846102ea36600461172a565b610ee2565b6000546001600160a01b0316331461034e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6103626001600160a01b0384168383610f89565b505050565b6000546001600160a01b031633146103c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6002546040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fc4e51f690610412908890889088908890889060040161199f565b600060405180830381600087803b15801561042c57600080fd5b505af1158015610440573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b031633146104a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6002546040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690631171bda990606401600060405180830381600087803b15801561051457600080fd5b505af1158015610528573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b0316331461058b5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610345565b826105d85760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610345565b60005b8381101561063d5761062b8585838181106105f8576105f86119d2565b905060200201602081019061060d919061189e565b84848481811061061f5761061f6119d2565b90506020020135611009565b80610635816119fe565b9150506105db565b5050505050565b6001546001600160a01b0316331461069e5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610345565b6001546040516370a0823160e01b81526001600160a01b038681166004830152859216906370a082319060240160206040518083038186803b1580156106e357600080fd5b505afa1580156106f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b9190611a19565b10156107745760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610345565b61077e8484611009565b600154604051631f1b6d2760e21b81526001600160a01b0386811660048301523060248301526044820186905290911690637c6db49c906064015b600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461084b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6001600160a01b0381166108a15760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610345565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a1426004556003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6103623384848461109e565b61092b3382611207565b50565b6000546001600160a01b031633146109885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6109926000611302565b565b6002546001600160a01b038481169116146109f15760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610345565b336001600160a01b03841614610a495760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610345565b80610a5d57610a588585611207565b61063d565b61063d8585848461109e565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b610ad26004546201518061135f565b6003546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a16002546003546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f2fde38b90602401600060405180830381600087803b158015610b7457600080fd5b505af1158015610b88573d6000803e3d6000fd5b50506001546003546040516370a0823160e01b81523060048201526001600160a01b0392831694506356a6d9ef935091169083906370a082319060240160206040518083038186803b158015610bdd57600080fd5b505afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611a19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610c7357600080fd5b505af1158015610c87573d6000803e3d6000fd5b50506003805473ffffffffffffffffffffffffffffffffffffffff1916905550506000600455565b6001546040516370a0823160e01b815233600482018190529183916001600160a01b03909116906370a082319060240160206040518083038186803b158015610cf757600080fd5b505afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190611a19565b1015610d885760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610345565b610d928183611009565b600154604051631f1b6d2760e21b81526001600160a01b0383811660048301523060248301526044820185905290911690637c6db49c906064015b600060405180830381600087803b158015610de757600080fd5b505af1158015610dfb573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6001600160a01b038116610ed95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610345565b61092b81611302565b6000546001600160a01b03163314610f3c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610345565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde90610412903090889088908890889060040161199f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261036290849061140c565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8260405161104491815260200190565b60405180910390a26002546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015260248201849052909116906340c10f1990604401610dcd565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b8846040516110d991815260200190565b60405180910390a260025460405163079cc67960e41b81526001600160a01b03868116600483015260248201869052909116906379cc679090604401600060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b5050600154604080517fe78cea9200000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169350634a38757e9250839163e78cea9291600480820192602092909190829003018186803b1580156111ad57600080fd5b505afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190611a32565b8585856040518563ffffffff1660e01b81526004016107b99493929190611a4f565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b88260405161124291815260200190565b60405180910390a260025460405163079cc67960e41b81526001600160a01b03848116600483015260248201849052909116906379cc679090604401600060405180830381600087803b15801561129857600080fd5b505af11580156112ac573d6000803e3d6000fd5b50506001546040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905290911692506356a6d9ef9150604401610dcd565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082116113af5760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610345565b806113ba8342611a82565b10156114085760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610345565b5050565b6000611461826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114f19092919063ffffffff16565b805190915015610362578080602001905181019061147f9190611a99565b6103625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610345565b6060611500848460008561150a565b90505b9392505050565b6060824710156115825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610345565b6001600160a01b0385163b6115d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610345565b600080866001600160a01b031685876040516115f59190611aeb565b60006040518083038185875af1925050503d8060008114611632576040519150601f19603f3d011682016040523d82523d6000602084013e611637565b606091505b5091509150611647828286611652565b979650505050505050565b60608315611661575081611503565b8251156116715782518084602001fd5b8160405162461bcd60e51b81526004016103459190611b07565b6001600160a01b038116811461092b57600080fd5b6000806000606084860312156116b557600080fd5b83356116c08161168b565b925060208401356116d08161168b565b929592945050506040919091013590565b60008083601f8401126116f357600080fd5b50813567ffffffffffffffff81111561170b57600080fd5b60208301915083602082850101111561172357600080fd5b9250929050565b60008060008060006080868803121561174257600080fd5b853561174d8161168b565b9450602086013561175d8161168b565b935060408601359250606086013567ffffffffffffffff81111561178057600080fd5b61178c888289016116e1565b969995985093965092949392505050565b60008083601f8401126117af57600080fd5b50813567ffffffffffffffff8111156117c757600080fd5b6020830191508360208260051b850101111561172357600080fd5b600080600080604085870312156117f857600080fd5b843567ffffffffffffffff8082111561181057600080fd5b61181c8883890161179d565b9096509450602087013591508082111561183557600080fd5b506118428782880161179d565b95989497509550505050565b6000806000806060858703121561186457600080fd5b843561186f8161168b565b935060208501359250604085013567ffffffffffffffff81111561189257600080fd5b611842878288016116e1565b6000602082840312156118b057600080fd5b81356115038161168b565b6000806000604084860312156118d057600080fd5b83359250602084013567ffffffffffffffff8111156118ee57600080fd5b6118fa868287016116e1565b9497909650939450505050565b60006020828403121561191957600080fd5b5035919050565b60008060008060006080868803121561193857600080fd5b85356119438161168b565b945060208601359350604086013561195a8161168b565b9250606086013567ffffffffffffffff81111561178057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808816835280871660208401525084604083015260806060830152611647608083018486611976565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a1257611a126119e8565b5060010190565b600060208284031215611a2b57600080fd5b5051919050565b600060208284031215611a4457600080fd5b81516115038161168b565b6001600160a01b0385168152836020820152606060408201526000611a78606083018486611976565b9695505050505050565b600082821015611a9457611a946119e8565b500390565b600060208284031215611aab57600080fd5b8151801515811461150357600080fd5b60005b83811015611ad6578181015183820152602001611abe565b83811115611ae5576000848401525b50505050565b60008251611afd818460208701611abb565b9190910192915050565b6020815260008251806020840152611b26816040850160208701611abb565b601f01601f1916919091016040019291505056fea26469706673582212202f0ac7db0281ac8c0004326c7e746d4b696bcf247bcd9c4847c3d196e8ecc35464736f6c63430008090033",
179
447
  "linkReferences": {},
180
448
  "deployedLinkReferences": {}
181
449
  }
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity 0.8.4;
3
+ pragma solidity ^0.8.9;
4
4
 
5
5
  library GovernanceUtils {
6
6
  /// @notice Reverts if the governance delay has not passed since
@@ -24,9 +24,9 @@ library GovernanceUtils {
24
24
  /// @notice Gets the time remaining until the governable parameter update
25
25
  /// can be committed.
26
26
  /// @param changeInitiatedTimestamp Timestamp indicating the beginning of
27
- /// the change
28
- /// @param delay Governance delay
29
- /// @return Remaining time in seconds
27
+ /// the change.
28
+ /// @param delay Governance delay.
29
+ /// @return Remaining time in seconds.
30
30
  function getRemainingGovernanceDelay(
31
31
  uint256 changeInitiatedTimestamp,
32
32
  uint256 delay