@keep-network/tbtc-v2 0.1.1-dev.124 → 0.1.1-dev.126

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 (116) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +8 -8
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +1 -1
  5. package/artifacts/BeaconDkgValidator.json +1 -1
  6. package/artifacts/BeaconInactivity.json +1 -1
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +2 -2
  10. package/artifacts/BridgeGovernanceParameters.json +2 -2
  11. package/artifacts/Deposit.json +2 -2
  12. package/artifacts/DepositSweep.json +2 -2
  13. package/artifacts/EcdsaDkgValidator.json +1 -1
  14. package/artifacts/EcdsaInactivity.json +1 -1
  15. package/artifacts/EcdsaSortitionPool.json +3 -3
  16. package/artifacts/Fraud.json +2 -2
  17. package/artifacts/KeepRegistry.json +1 -1
  18. package/artifacts/KeepStake.json +2 -2
  19. package/artifacts/KeepToken.json +2 -2
  20. package/artifacts/KeepTokenStaking.json +1 -1
  21. package/artifacts/LightRelay.json +19 -19
  22. package/artifacts/MaintainerProxy.json +26 -26
  23. package/artifacts/MovingFunds.json +2 -2
  24. package/artifacts/NuCypherStakingEscrow.json +1 -1
  25. package/artifacts/NuCypherToken.json +2 -2
  26. package/artifacts/RandomBeacon.json +2 -2
  27. package/artifacts/RandomBeaconChaosnet.json +2 -2
  28. package/artifacts/RandomBeaconGovernance.json +2 -2
  29. package/artifacts/Redemption.json +2 -2
  30. package/artifacts/ReimbursementPool.json +2 -2
  31. package/artifacts/T.json +2 -2
  32. package/artifacts/TBTC.json +10 -10
  33. package/artifacts/TBTCToken.json +10 -10
  34. package/artifacts/TBTCVault.json +32 -32
  35. package/artifacts/TokenStaking.json +1 -1
  36. package/artifacts/TokenholderGovernor.json +9 -9
  37. package/artifacts/TokenholderTimelock.json +8 -8
  38. package/artifacts/VendingMachine.json +11 -11
  39. package/artifacts/VendingMachineKeep.json +1 -1
  40. package/artifacts/VendingMachineNuCypher.json +1 -1
  41. package/artifacts/WalletRegistry.json +5 -5
  42. package/artifacts/WalletRegistryGovernance.json +49 -49
  43. package/artifacts/Wallets.json +2 -2
  44. package/artifacts/solcInputs/{a78407b97d2748d5c91e02af49985262.json → 898e0f70d11502bb7c40e2859883a26e.json} +2 -2
  45. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  46. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  47. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  48. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  49. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  50. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  51. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  52. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  53. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  54. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  55. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  56. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  57. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  58. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  59. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  60. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  61. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  62. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  63. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  64. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  65. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  66. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  67. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  68. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  69. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  70. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  71. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  72. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  73. package/contracts/vault/TBTCOptimisticMinting.sol +6 -2
  74. package/deploy/10_set_deposit_params.ts +6 -1
  75. package/deploy/91_genesis_relay.ts +35 -0
  76. package/deploy/92_retarget_relay.ts +119 -0
  77. package/deploy/93_authorize_relay_maintainer.ts +24 -0
  78. package/export/artifacts/@keep-network/ecdsa/contracts/EcdsaDkgValidator.sol/EcdsaDkgValidator.json +26 -26
  79. package/export/artifacts/@keep-network/ecdsa/contracts/WalletRegistry.sol/WalletRegistry.json +251 -251
  80. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaDkg.sol/EcdsaDkg.json +2 -2
  81. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaInactivity.sol/EcdsaInactivity.json +25 -25
  82. package/export/artifacts/@keep-network/random-beacon/contracts/ReimbursementPool.sol/ReimbursementPool.json +47 -47
  83. package/export/artifacts/@keep-network/sortition-pools/contracts/Chaosnet.sol/Chaosnet.json +21 -21
  84. package/export/artifacts/@keep-network/sortition-pools/contracts/Rewards.sol/Rewards.json +16 -16
  85. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionPool.sol/SortitionPool.json +204 -204
  86. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionTree.sol/SortitionTree.json +26 -26
  87. package/export/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +42 -42
  88. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +34 -34
  89. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +74 -74
  90. package/export/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +62 -62
  91. package/export/artifacts/@thesis/solidity-contracts/contracts/token/ERC20WithPermit.sol/ERC20WithPermit.json +77 -77
  92. package/export/artifacts/@thesis/solidity-contracts/contracts/token/MisfundRecovery.sol/MisfundRecovery.json +38 -38
  93. package/export/artifacts/contracts/bank/Bank.sol/Bank.json +75 -75
  94. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +322 -322
  95. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +104 -104
  96. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +147 -147
  97. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +74 -74
  98. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +77 -77
  99. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +360 -360
  100. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +4 -4
  101. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +76 -76
  102. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  103. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +83 -83
  104. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +72 -72
  105. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +4 -4
  106. package/export/artifacts/contracts/test/TestRelay.sol/TestRelay.json +14 -14
  107. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +100 -100
  108. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +19 -19
  109. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +261 -261
  110. package/export/deploy/10_set_deposit_params.js +3 -2
  111. package/export/deploy/91_genesis_relay.js +72 -0
  112. package/export/deploy/92_retarget_relay.js +158 -0
  113. package/export/deploy/93_authorize_relay_maintainer.js +64 -0
  114. package/export/typechain/factories/TBTCVault__factory.js +1 -1
  115. package/export/typechain/factories/WalletRegistry__factory.js +1 -1
  116. package/package.json +2 -2
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var func = function (hre) { return __awaiter(void 0, void 0, void 0, function () {
40
- var deployments, ethers, getNamedAccounts, execute, read, deployer, depositTreasuryFeeDivisor, depositParameters;
40
+ var deployments, ethers, getNamedAccounts, execute, read, deployer, depositTreasuryFeeDivisor, depositRevealAheadPeriod, depositParameters;
41
41
  return __generator(this, function (_a) {
42
42
  switch (_a.label) {
43
43
  case 0:
@@ -48,10 +48,11 @@ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function ()
48
48
  deployer = (_a.sent()).deployer;
49
49
  deployments.log("setting initial deposit parameters");
50
50
  depositTreasuryFeeDivisor = ethers.BigNumber.from("0");
51
+ depositRevealAheadPeriod = ethers.BigNumber.from("21945600");
51
52
  return [4 /*yield*/, read("Bridge", "depositParameters")];
52
53
  case 2:
53
54
  depositParameters = _a.sent();
54
- return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateDepositParameters", depositParameters.depositDustThreshold, depositTreasuryFeeDivisor, depositParameters.depositTxMaxFee, depositParameters.depositRevealAheadPeriod)];
55
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateDepositParameters", depositParameters.depositDustThreshold, depositTreasuryFeeDivisor, depositParameters.depositTxMaxFee, depositRevealAheadPeriod)];
55
56
  case 3:
56
57
  _a.sent();
57
58
  return [2 /*return*/];
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) {
40
+ return __awaiter(this, void 0, void 0, function () {
41
+ var getNamedAccounts, deployments, execute, deployer, genesisHeader, genesisHeight, genesisProofLength;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ getNamedAccounts = hre.getNamedAccounts, deployments = hre.deployments;
46
+ execute = deployments.execute;
47
+ return [4 /*yield*/, getNamedAccounts()
48
+ // The genesis header comes form the Bitcoin mainnet block at height 766080
49
+ // which is the first block of Bitcoin difficulty epoch 380.
50
+ ];
51
+ case 1:
52
+ deployer = (_a.sent()).deployer;
53
+ genesisHeader = "0x0000402089138e40cd8b4832beb8013bc80b1425c8bcbe10fc28040000000000000000" +
54
+ "0058a06ab0edc5653a6ab78490675a954f8d8b4d4f131728dcf965cd0022a02cdde59f8e" +
55
+ "63303808176bbe3919";
56
+ genesisHeight = 766080;
57
+ genesisProofLength = 20;
58
+ return [4 /*yield*/, execute("LightRelay", { from: deployer, log: true, waitConfirmations: 1 }, "genesis", genesisHeader, genesisHeight, genesisProofLength)];
59
+ case 2:
60
+ _a.sent();
61
+ return [2 /*return*/];
62
+ }
63
+ });
64
+ });
65
+ };
66
+ exports.default = func;
67
+ func.tags = ["GenesisLightRelay"];
68
+ func.dependencies = ["LightRelay"];
69
+ // Only execute for mainnet.
70
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
71
+ return [2 /*return*/, hre.network.name !== "mainnet"];
72
+ }); }); };
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) {
40
+ return __awaiter(this, void 0, void 0, function () {
41
+ var getNamedAccounts, deployments, execute, deployer, headers;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ getNamedAccounts = hre.getNamedAccounts, deployments = hre.deployments;
46
+ execute = deployments.execute;
47
+ return [4 /*yield*/, getNamedAccounts()
48
+ // The headers come from 40 Bitcoin mainnet blocks in range 768076 to 768115
49
+ // and are needed to prove the first Bitcoin epoch (381) after the genesis
50
+ // epoch (380). This first retarget in `LightRelay` is needed to set the
51
+ // previous and current epoch difficulties.
52
+ ];
53
+ case 1:
54
+ deployer = (_a.sent()).deployer;
55
+ headers = "0x048000207b9401c8a93cca7f84a8b8581ea6ad1e0044f598fc48050000000000000000" +
56
+ "006a4d2b727113ccba3fb734c0f1208f428b783d2eb097df59a8de109150ddd8a75552a0" +
57
+ "633038081729a81a8c006001205921fa2f984d17fbcd977e99e6bcd58877e26776487403" +
58
+ "000000000000000000a493bc40db99be0b102360176ffc67aeb8917090bf93bfb0a30603" +
59
+ "ce1e9556d69f52a06330380817105f5f5e00e000201113b00390ab92c6413e0d4ec2b741" +
60
+ "9d9e7047a0abaf0700000000000000000034d330ff05120c07152de162224b322dcda64e" +
61
+ "8a018bf29b6c6fddc25991a0db9154a06330380817b419da3d04e0ff3fe15c89975fc717" +
62
+ "3c0757543c382bbde70f17942cdc05020000000000000000002eef5923d64d7a6abba02f" +
63
+ "a48395ee13cdcb47020526abee3fff2d4ec92fde0acb59a063303808170ae0ef54000060" +
64
+ "20dbdb6b65829e449c7036ec6e01df85d262a002204937070000000000000000008cadaf" +
65
+ "a5e74080b07a2b2ecbe6f50a8555a8fdc6a524c5bd888010df47a565e56262a063303808" +
66
+ "170481b9010000e02047ecb7ed6e1b037d32143903611f23d257957fdf6b340500000000" +
67
+ "0000000000eeb25ef7c6eaaa3b89275bc68c992a67e7595889c859abbfe2dff075b87ce6" +
68
+ "357e63a063303808172291fd7704a0a628ee3633fbd87e252e110657e3af1228551a8af8" +
69
+ "d2362b0100000000000000000019e5895d912135b94eb679352d0adb8b1ed137804d1f5a" +
70
+ "fb6ebc3844417ffb4d5966a0633038081738cc1e4300400020d7744fcc18f37b4266574d" +
71
+ "53cea9a95a12bbb8cbd95207000000000000000000558676dc836a0da76376ad69115031" +
72
+ "575253ad16a07d849768192271916c7e511068a06330380817b14c513304006020bc0e8a" +
73
+ "20301456a1f0ea13d61d2696814a9bf89ad4130500000000000000000097775f0f00af96" +
74
+ "74616563471c71711e5d21f8eee6f3b90a3af0ee7b3656a1f65a68a063303808175fc00e" +
75
+ "cc00002020e9908aae5d8d827d74ab6b14fbae2037e8c196713ec2010000000000000000" +
76
+ "00d8dbdd64c4610f51ab93da688b618349feef3ec4fceb60806a49b673ee46038d6f68a0" +
77
+ "6330380817681d617e00c03a294bbdebb6ffd3cce966cdcc75eb253dffc653137d9a9807" +
78
+ "000000000000000000ce2d7c2e44652d82ea3e92d644f5cbbe426f53708a527eaa09e3bf" +
79
+ "8e7aeda286e168a06330380817386074d40420b3234a0a21e0fc488200e28079e221abf0" +
80
+ "1885b992d7adad000000000000000000007cd36eb9595ea17971f8417ec29749c6729b6a" +
81
+ "dc19fed275a97203e62ea2d4b52d70a0633038081770c90b3500e0ff3715bf97e9dc9c1a" +
82
+ "21983a711abe251733caf3296cfea003000000000000000000e9e47d8c11a05a31db0b1c" +
83
+ "34bc9d06cccad3c56c91e71139dc90913d9c647f42f570a063303808174867c07e040071" +
84
+ "316d5a670f16141ef66e4b81d22757d3adce55272cd639010000000000000000005ef579" +
85
+ "ac4c962599d59f287972b5787f1bcbfd10dd4d91d55eb39c9bda52f0b12575a063303808" +
86
+ "17603e71970060002094e7d56dc463b49f3566cee7409cf2cf09564c77ee250600000000" +
87
+ "0000000000c22b23d9d1c385102b554c25a089cfcaa292ed5d0411d686f5d54f293684f1" +
88
+ "8d3e77a06330380817c210254a0000e020d655bcbb673cc0f95a329c242ba505f44832c3" +
89
+ "26c57f0300000000000000000007bbcfc84d28565dc4727fe24c462a3b67f16ed2bf2700" +
90
+ "d83c674e7fb9bb9ff0b179a0633038081701256cc200e00020d83f702e8bd98191a165f9" +
91
+ "ab76623c400cc86bf0ceed050000000000000000009db7cafcca7971fa21b4469350ef89" +
92
+ "bfb02a0918ca6784a07f0eb02d07893622937ba06330380817275ce472000080201cde8d" +
93
+ "500f8d45e5577a71ae32ca51e58deb04d4ab43070000000000000000001af9dc09004d08" +
94
+ "57ac50bb53efa7afa46ae2362f409990ce83a8b8eba95df24ca17da063303808171c552e" +
95
+ "1a04e0ff3f962d99d1b55bda58242cf7264121cd5dda3e7c23e104040000000000000000" +
96
+ "0005100a22aec826a2a70c7ad3e5fb9d47eaddd0f5455a8ec2808fb68d510a4408127ea0" +
97
+ "6330380817d5e8483f00800431a7731db0df5696d9a8c45b001ca9e0f59a0ac9e49e9b01" +
98
+ "000000000000000000e6c77013d53ead67c0389877a04b9fee5118fc8692a5f5348853a0" +
99
+ "2f0d77695e4a7fa063303808174c46ed4a0000602025f63077f95bfec0944643ba896f97" +
100
+ "33200f815a525201000000000000000000a1b58dc8c037f5840da2ac5666214694baea82" +
101
+ "49bf7c2ffc4492199e49752c13a480a06390f507178de119fa00e0362666e884e03c6a43" +
102
+ "2eb74153f5fecf197c50fc324e78e004000000000000000000ea03b06d65c3d3f9280d54" +
103
+ "9140f408005692e2e655050c6c1c23f3938e2256eb4986a06390f50717494cd88e000000" +
104
+ "20e4db79e53a70db1cf15478f468ac7cea0fb5c4593e7200000000000000000000220157" +
105
+ "bb6d9be47c6e0e86d265c15ab83622992b3d80668de2118579442b066a498da06390f507" +
106
+ "1700c939de0020042ba111796d9b9bb0f6b4823692dd553d33401b733b0be00700000000" +
107
+ "0000000000fa213371003531875c7c55045b747e40b3bc1a5fd6593667d540c755fb14ac" +
108
+ "fc3d93a06390f5071703a4227e000000209900227794cd9070bb6d93d51f3ee8b2135b4a" +
109
+ "f6b5e50600000000000000000037db066c45e7550387db75370ad2d1f3313a455787590a" +
110
+ "40e084e3ee6743662fea95a06390f50717afeafe6c04401b2e4d0f977cd786300b0f4664" +
111
+ "eab1c47040b0f8c3e6740e040000000000000000009e2f76bcf1b3692c48e933575521fd" +
112
+ "bf1d5d385184823dcd92b8dea27bfb870b549ba06390f507171cc5fc0f0020002007b658" +
113
+ "524aad00f174782ab83699b043d5358b27656106000000000000000000ebdaba52af764a" +
114
+ "31f84302bcb544b4fd82fdb33533e01c98fc685854677a4244909ba06390f507177940da" +
115
+ "6204200020c10e26bc114630b6d90915d744244c97816b971741f0010000000000000000" +
116
+ "00c00a12d565e8f146b2b2a76918e76a6c89d7e136eaf2c75e6f0214a3df96b769749ca0" +
117
+ "6390f507175f1b00250020012041c31f14f583f93ddd8e2308e0784398ddcd1360a58b07" +
118
+ "00000000000000000075a57e4e79adb7c5dbae3b4c4500ed94f7d34a2f1c8dd07d07054e" +
119
+ "0a1073e1aebe9ca06390f507175958878200605828f12c983c15b919c03089cf117cdc65" +
120
+ "d865ae88a596e2020000000000000000005a2d55357c0846bfcf695343ab56c270ed1c4c" +
121
+ "7c116177afd7dc929478b451bde29fa06390f5071744765e2d00801220ffbc53670b79fd" +
122
+ "a367c6c925d1c2621fa22a42203fc501000000000000000000f0537fc7737c6940af5d17" +
123
+ "eb388c40189d04d6eb0125ead3cbd092bef9fa590683a0a06390f50717666a1066040060" +
124
+ "20de7f707e7f0910a44ab8d2e31a9644c70f85fbec4ad20000000000000000000044371c" +
125
+ "0af4f1a8bbcd61ae8ef65ef4a31c934202d92b05fb0f752534f5352f023fa2a06390f507" +
126
+ "177f2943b900c00c28b42b6d8f97ce6a82016fa4afd817ac4755cceacb3a100000000000" +
127
+ "0000000000b9727dd5bcf2870b225edd881106822b1aa353c04e977dc98d119a9dc74dc9" +
128
+ "e113a7a06390f507172c78994a00007c25e5d58a72ca5e3514bd9bdf48ef57a3e6fafcea" +
129
+ "4bc44306000000000000000000ed4b8a5f8e44c9e2ad7d9690c80de3c064f1035255ae10" +
130
+ "c5ae91cdec6ff44c518ca7a06390f50717212a2f6600a08b28d7a6ad25687cde3703a9d9" +
131
+ "a0f0bee090bd6011fb9a6f040000000000000000007b3261cfb7bb9c78c89792556f1e21" +
132
+ "b2dd7fc41299d5372d892f08e3fe2a20f7d9ada06390f5071737ef232b0400c020b5418d" +
133
+ "62d0a19c2de1c96fefe82092339c44183bafa402000000000000000000ac6ae399a73436" +
134
+ "3043026f008651a3cbc61f6f5cd387428d70638f89d1b86238e9aea06390f507174772b7" +
135
+ "23000080200941f2c5fd01cc7dbee913617861ef759c56e9593939010000000000000000" +
136
+ "000adb93b71075857413826d55078d633d7106f433e8e38bb36b428b7608cf539e3bb6a0" +
137
+ "6390f507170444c90000004020fee3c940a2f19e5f04a57c668388ebfab54dbb8b4d3602" +
138
+ "000000000000000000319cdaf0010646d09750bf4f7ffeee6a593e296145ca1529b90924" +
139
+ "9a5f6bbf9ac5b8a06390f507176e386e800000a020662cdabd29bad13621fca6ee601ceb" +
140
+ "6cea36a0c25fce00000000000000000000d46e68944e26294232b97110be78c2a9afe032" +
141
+ "34e0baba2e23595e095d1948b9f6b8a06390f5071763ba125100e0ff3f5cb5f2e1e73b9b" +
142
+ "a9382b47ce261e12c37b211e5a81b600000000000000000000b6bcda49736fb4a79f2b60" +
143
+ "320904198cdd0f703cf25a4dcece27aafd6429a76916bfa06390f50717060b6d11";
144
+ return [4 /*yield*/, execute("LightRelay", { from: deployer, log: true, waitConfirmations: 1 }, "retarget", headers)];
145
+ case 2:
146
+ _a.sent();
147
+ return [2 /*return*/];
148
+ }
149
+ });
150
+ });
151
+ };
152
+ exports.default = func;
153
+ func.tags = ["RetargetLightRelay"];
154
+ func.dependencies = ["GenesisLightRelay"];
155
+ // Only execute for mainnet.
156
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
157
+ return [2 /*return*/, hre.network.name !== "mainnet"];
158
+ }); }); };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) {
40
+ return __awaiter(this, void 0, void 0, function () {
41
+ var getNamedAccounts, deployments, execute, deployer;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ getNamedAccounts = hre.getNamedAccounts, deployments = hre.deployments;
46
+ execute = deployments.execute;
47
+ return [4 /*yield*/, getNamedAccounts()];
48
+ case 1:
49
+ deployer = (_a.sent()).deployer;
50
+ return [4 /*yield*/, execute("LightRelay", { from: deployer, log: true, waitConfirmations: 1 }, "setAuthorizationStatus", true)];
51
+ case 2:
52
+ _a.sent();
53
+ return [2 /*return*/];
54
+ }
55
+ });
56
+ });
57
+ };
58
+ exports.default = func;
59
+ func.tags = ["AuthorizeLightRelayMaintainer"];
60
+ func.dependencies = ["RetargetLightRelay"];
61
+ // Only execute for mainnet.
62
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
63
+ return [2 /*return*/, hre.network.name !== "mainnet"];
64
+ }); }); };
@@ -1119,7 +1119,7 @@ var _abi = [
1119
1119
  type: "function",
1120
1120
  },
1121
1121
  ];
1122
- var _bytecode = "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d1738038062003d1783398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139fb6200031c600039600081816106e30152818161093001528181610ca401528181611ed6015281816122bf01528181612c8f01528181612e060152612f5601526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe50152818161233b0152818161245a0152818161255201528181612e900152612fef01526000818161070a015281816114e30152818161167901528181611c950152612ebf01526139fb6000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b610379610364366004613304565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c610397366004613333565b610752565b005b61039c6103ac366004613350565b6107f2565b6103c46103bf366004613391565b610853565b60405190815260200161034d565b61039c6103e036600461340a565b6108b8565b61039c6103f3366004613304565b6109a6565b61039c610406366004613350565b610c15565b6103c460095481565b61039c6104223660046134c2565b610d05565b61039c61043536600461352e565b610e50565b61039c610448366004613304565b611048565b61039c61114d565b61039c61046336600461357e565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135ca565b611237565b61039c6104a0366004613391565b611244565b6104ad61178b565b60405161034d91906135e3565b6104f46104c83660046135ca565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c610523366004613304565b6117ed565b61039c6118e6565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613391565b61193a565b61039c610590366004613391565b611b26565b60065461033c9063ffffffff1681565b6105576105b33660046135ca565b611eaa565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613630565b611ed4565b6103c4600b5481565b61039c61061a366004613304565b611fd1565b61039c61210e565b61039c6121ec565b61039c61063d3660046135ca565b612443565b6103c460075481565b61039c6125b2565b61039c610661366004613304565b61269a565b610379610674366004613304565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a1366004613304565b60056020526000908152604090205481565b61039c6127bd565b61039c6106c9366004613333565b612894565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a366004613304565b612928565b61039c61074d36600461340a565b6129f5565b6000546001600160a01b0316331461079f5760405162461bcd60e51b815260206004820181905260248201526000805160206139a683398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b61084e6001600160a01b0384168383612a8a565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136af565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136e2565b6000918252602090912001546001600160a01b031603610bcb5760028054610b299060019061370e565b81548110610b3957610b396136e2565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136e2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613721565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd581613737565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136e2565b9050602002016020810190610e029190613304565b90506000848484818110610e1857610e186136e2565b905060200201359050610e3482610e2f8484612b0a565b612c0d565b50508080610e4190613737565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613750565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c0d565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6007546111a58162015180612cf0565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d9d565b6112413382612eed565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613769565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137bd565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c8919061386a565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff168361388b565b905061161a818361370e565b83516001600160a01b0316600090815260056020526040812054919350906116439084906138ad565b84516001600160a01b03166000908152600560205260409020819055845190915061166e9084612c0d565b81156116ff576116ff7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f991906138c0565b83612c0d565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117c5575b5050505050905090565b6000546001600160a01b031633146118355760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff1661189d5760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b0316331461192e5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6119386000613020565b565b3360009081526003602052604090205460ff166119995760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b60006119a58383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a375760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611ac25760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b855760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bdf5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611beb8383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c7c5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0891906137bd565b9050806040015163ffffffff16600003611d6e5760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dc65760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e225760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eba57600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f555760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fad5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fc557611fc08585612eed565b610e49565b610e4985858484612d9d565b6000546001600160a01b031633146120195760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff16156120825760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b031633146121565760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6009546121668162015180612cf0565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b031633146122345760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b600b546122448162015180612cf0565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b15801561230557600080fd5b505af1158015612319573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b59190613750565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561241357600080fd5b505af1158015612427573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cd9190613750565b10156125265760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125303382612c0d565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259e57600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125fa5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b600054600160a01b900460ff161561265e5760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126e25760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127715760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146128055760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b600054600160a01b900460ff1661285e5760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128dc5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129705760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6001600160a01b0381166129ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613020565b6000546001600160a01b03163314612a3d5760405162461bcd60e51b815260206004820181905260248201526000805160206139a68339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136af565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613070565b6001600160a01b038216600090815260056020526040812054808203612b3357829150506108b2565b80831115612b9a576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b92818461370e565b9150506108b2565b612ba4838261370e565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612beb858461370e565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4891815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612cd457600080fd5b505af1158015612ce8573d6000803e3d6000fd5b505050505050565b60008211612d405760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d4b834261370e565b1015612d995760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd891815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138dd565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2891815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9a57600080fd5b505af1158015612fae573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cba565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131559092919063ffffffff16565b80519091501561084e57808060200190518101906130e39190613910565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b6060613164848460008561316e565b90505b9392505050565b6060824710156131e65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b61323d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b031685876040516132599190613956565b60006040518083038185875af1925050503d8060008114613296576040519150601f19603f3d011682016040523d82523d6000602084013e61329b565b606091505b50915091506132ab8282866132b6565b979650505050505050565b606083156132c5575081613167565b8251156132d55782518084602001fd5b8160405162461bcd60e51b81526004016107969190613972565b6001600160a01b038116811461124157600080fd5b60006020828403121561331657600080fd5b8135613167816132ef565b63ffffffff8116811461124157600080fd5b60006020828403121561334557600080fd5b813561316781613321565b60008060006060848603121561336557600080fd5b8335613370816132ef565b92506020840135613380816132ef565b929592945050506040919091013590565b600080604083850312156133a457600080fd5b8235915060208301356133b681613321565b809150509250929050565b60008083601f8401126133d357600080fd5b50813567ffffffffffffffff8111156133eb57600080fd5b60208301915083602082850101111561340357600080fd5b9250929050565b60008060008060006080868803121561342257600080fd5b853561342d816132ef565b9450602086013561343d816132ef565b935060408601359250606086013567ffffffffffffffff81111561346057600080fd5b61346c888289016133c1565b969995985093965092949392505050565b60008083601f84011261348f57600080fd5b50813567ffffffffffffffff8111156134a757600080fd5b6020830191508360208260051b850101111561340357600080fd5b600080600080604085870312156134d857600080fd5b843567ffffffffffffffff808211156134f057600080fd5b6134fc8883890161347d565b9096509450602087013591508082111561351557600080fd5b506135228782880161347d565b95989497509550505050565b6000806000806060858703121561354457600080fd5b843561354f816132ef565b935060208501359250604085013567ffffffffffffffff81111561357257600080fd5b613522878288016133c1565b60008060006040848603121561359357600080fd5b83359250602084013567ffffffffffffffff8111156135b157600080fd5b6135bd868287016133c1565b9497909650939450505050565b6000602082840312156135dc57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156136245783516001600160a01b0316835292840192918401916001016135ff565b50909695505050505050565b60008060008060006080868803121561364857600080fd5b8535613653816132ef565b945060208601359350604086013561366a816132ef565b9250606086013567ffffffffffffffff81111561346057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132ab608083018486613686565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f8565b634e487b7160e01b600052603160045260246000fd5b600060018201613749576137496136f8565b5060010190565b60006020828403121561376257600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612c0657612c066136f8565b8051613795816132ef565b919050565b805167ffffffffffffffff8116811461379557600080fd5b805161379581613321565b600060c082840312156137cf57600080fd5b60405160c0810181811067ffffffffffffffff8211171561380057634e487b7160e01b600052604160045260246000fd5b60405261380c8361378a565b815261381a6020840161379a565b602082015261382b604084016137b2565b604082015261383c6060840161378a565b606082015261384d6080840161379a565b608082015261385e60a084016137b2565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612c0657612c066136f8565b6000826138a857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f8565b6000602082840312156138d257600080fd5b8151613167816132ef565b6001600160a01b0385168152836020820152606060408201526000613906606083018486613686565b9695505050505050565b60006020828403121561392257600080fd5b8151801515811461316757600080fd5b60005b8381101561394d578181015183820152602001613935565b50506000910152565b60008251613968818460208701613932565b9190910192915050565b6020815260008251806020840152613991816040850160208701613932565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122058a5e526e269b8b8967e1c8093034132ae45744cfbaed3985b75761917450b3064736f6c63430008110033";
1122
+ var _bytecode = "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d0f38038062003d0f83398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139f36200031c600039600081816106e30152818161093001528181610ca401528181611ece015281816122b701528181612c8701528181612dfe0152612f4e01526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe501528181612333015281816124520152818161254a01528181612e880152612fe701526000818161070a015281816114e30152818161167101528181611c8d0152612eb701526139f36000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220315099ded630ababcaaa082c785452da72d15cee94e64c9bfc51f6ee88671bc164736f6c63430008110033";
1123
1123
  var isSuperArgs = function (xs) { return xs.length > 1; };
1124
1124
  var TBTCVault__factory = /** @class */ (function (_super) {
1125
1125
  __extends(TBTCVault__factory, _super);