@bitgo/abstract-utxo 9.2.2 → 9.4.0

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 (123) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/src/abstractUtxoCoin.d.ts +9 -13
  3. package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
  4. package/dist/src/abstractUtxoCoin.js +130 -70
  5. package/dist/src/core/descriptor/DescriptorMap.d.ts +9 -0
  6. package/dist/src/core/descriptor/DescriptorMap.d.ts.map +1 -0
  7. package/dist/src/core/descriptor/DescriptorMap.js +9 -0
  8. package/dist/src/core/descriptor/Output.d.ts +24 -0
  9. package/dist/src/core/descriptor/Output.d.ts.map +1 -0
  10. package/dist/src/core/descriptor/Output.js +22 -0
  11. package/dist/src/core/descriptor/VirtualSize.d.ts +21 -0
  12. package/dist/src/core/descriptor/VirtualSize.d.ts.map +1 -0
  13. package/dist/src/core/descriptor/VirtualSize.js +83 -0
  14. package/dist/src/core/descriptor/address.d.ts +5 -0
  15. package/dist/src/core/descriptor/address.d.ts.map +1 -0
  16. package/dist/src/core/descriptor/address.js +48 -0
  17. package/dist/src/core/descriptor/index.d.ts +9 -0
  18. package/dist/src/core/descriptor/index.d.ts.map +1 -0
  19. package/dist/src/core/descriptor/index.js +17 -0
  20. package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  21. package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  22. package/dist/src/core/descriptor/psbt/assertSatisfiable.js +75 -0
  23. package/dist/src/core/descriptor/psbt/createPsbt.d.ts +15 -0
  24. package/dist/src/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
  25. package/dist/src/core/descriptor/psbt/createPsbt.js +83 -0
  26. package/dist/src/core/descriptor/psbt/findDescriptors.d.ts +22 -0
  27. package/dist/src/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  28. package/dist/src/core/descriptor/psbt/findDescriptors.js +75 -0
  29. package/dist/src/core/descriptor/psbt/index.d.ts +5 -0
  30. package/dist/src/core/descriptor/psbt/index.d.ts.map +1 -0
  31. package/dist/src/core/descriptor/psbt/index.js +10 -0
  32. package/dist/src/core/descriptor/psbt/parse.d.ts +27 -0
  33. package/dist/src/core/descriptor/psbt/parse.d.ts.map +1 -0
  34. package/dist/src/core/descriptor/psbt/parse.js +87 -0
  35. package/dist/src/core/descriptor/psbt/wrap.d.ts +12 -0
  36. package/dist/src/core/descriptor/psbt/wrap.d.ts.map +1 -0
  37. package/dist/src/core/descriptor/psbt/wrap.js +76 -0
  38. package/dist/src/core/descriptor/signTxLocal.d.ts +3 -0
  39. package/dist/src/core/descriptor/signTxLocal.d.ts.map +1 -0
  40. package/dist/src/core/descriptor/signTxLocal.js +9 -0
  41. package/dist/src/descriptor/NamedDescriptor.js +35 -2
  42. package/dist/src/descriptor/assertDescriptorWalletAddress.js +45 -10
  43. package/dist/src/index.js +24 -2
  44. package/dist/src/names.d.ts +13 -0
  45. package/dist/src/names.d.ts.map +1 -0
  46. package/dist/src/names.js +175 -0
  47. package/dist/src/parseOutput.d.ts +0 -3
  48. package/dist/src/parseOutput.d.ts.map +1 -1
  49. package/dist/src/parseOutput.js +16 -17
  50. package/dist/src/recovery/RecoveryProvider.js +2 -3
  51. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -3
  52. package/dist/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  53. package/dist/src/recovery/backupKeyRecovery.js +50 -18
  54. package/dist/src/recovery/baseApi.d.ts +1 -4
  55. package/dist/src/recovery/baseApi.d.ts.map +1 -1
  56. package/dist/src/recovery/baseApi.js +6 -6
  57. package/dist/src/recovery/coingeckoApi.d.ts +0 -3
  58. package/dist/src/recovery/coingeckoApi.d.ts.map +1 -1
  59. package/dist/src/recovery/coingeckoApi.js +1 -4
  60. package/dist/src/recovery/crossChainRecovery.d.ts.map +1 -1
  61. package/dist/src/recovery/crossChainRecovery.js +44 -12
  62. package/dist/src/recovery/mempoolApi.d.ts.map +1 -1
  63. package/dist/src/recovery/mempoolApi.js +7 -7
  64. package/dist/src/replayProtection.js +37 -5
  65. package/dist/src/sign.d.ts +0 -3
  66. package/dist/src/sign.d.ts.map +1 -1
  67. package/dist/src/sign.js +44 -11
  68. package/dist/src/transaction/explainTransaction.d.ts +15 -0
  69. package/dist/src/transaction/explainTransaction.d.ts.map +1 -0
  70. package/dist/src/transaction/explainTransaction.js +51 -0
  71. package/dist/src/transaction/fetchInputs.d.ts +26 -0
  72. package/dist/src/transaction/fetchInputs.d.ts.map +1 -0
  73. package/dist/src/transaction/fetchInputs.js +110 -0
  74. package/dist/src/transaction/fixedScript/explainTransaction.d.ts +30 -0
  75. package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  76. package/dist/src/transaction/fixedScript/explainTransaction.js +220 -0
  77. package/dist/src/transaction/fixedScript/index.d.ts +2 -0
  78. package/dist/src/transaction/fixedScript/index.d.ts.map +1 -0
  79. package/dist/src/transaction/fixedScript/index.js +7 -0
  80. package/dist/src/transaction/index.d.ts +4 -0
  81. package/dist/src/transaction/index.d.ts.map +1 -0
  82. package/dist/src/transaction/index.js +22 -0
  83. package/dist/src/transaction/recipient.d.ts +28 -0
  84. package/dist/src/transaction/recipient.d.ts.map +1 -0
  85. package/dist/src/transaction/recipient.js +80 -0
  86. package/dist/test/core/descriptor/descriptor.utils.d.ts +9 -0
  87. package/dist/test/core/descriptor/descriptor.utils.d.ts.map +1 -0
  88. package/dist/test/core/descriptor/descriptor.utils.js +57 -0
  89. package/dist/test/core/descriptor/psbt/VirtualSize.d.ts +2 -0
  90. package/dist/test/core/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  91. package/dist/test/core/descriptor/psbt/VirtualSize.js +78 -0
  92. package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  93. package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  94. package/dist/test/core/descriptor/psbt/assertSatisfiable.js +56 -0
  95. package/dist/test/core/descriptor/psbt/createPsbt.d.ts +2 -0
  96. package/dist/test/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
  97. package/dist/test/core/descriptor/psbt/createPsbt.js +85 -0
  98. package/dist/test/core/descriptor/psbt/findDescriptors.d.ts +2 -0
  99. package/dist/test/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  100. package/dist/test/core/descriptor/psbt/findDescriptors.js +66 -0
  101. package/dist/test/core/descriptor/psbt/mock.utils.d.ts +34 -0
  102. package/dist/test/core/descriptor/psbt/mock.utils.d.ts.map +1 -0
  103. package/dist/test/core/descriptor/psbt/mock.utils.js +89 -0
  104. package/dist/test/core/descriptor/psbt/parse.d.ts +2 -0
  105. package/dist/test/core/descriptor/psbt/parse.d.ts.map +1 -0
  106. package/dist/test/core/descriptor/psbt/parse.js +32 -0
  107. package/dist/test/core/descriptor/psbt/psbt.utils.d.ts +4 -0
  108. package/dist/test/core/descriptor/psbt/psbt.utils.d.ts.map +1 -0
  109. package/dist/test/core/descriptor/psbt/psbt.utils.js +20 -0
  110. package/dist/test/core/fixtures.utils.d.ts +15 -0
  111. package/dist/test/core/fixtures.utils.d.ts.map +1 -0
  112. package/dist/test/core/fixtures.utils.js +114 -0
  113. package/dist/test/core/key.utils.d.ts +16 -0
  114. package/dist/test/core/key.utils.d.ts.map +1 -0
  115. package/dist/test/core/key.utils.js +59 -0
  116. package/dist/test/core/toPlainObject.utils.d.ts +11 -0
  117. package/dist/test/core/toPlainObject.utils.d.ts.map +1 -0
  118. package/dist/test/core/toPlainObject.utils.js +76 -0
  119. package/dist/tsconfig.tsbuildinfo +1 -1
  120. package/package.json +13 -10
  121. package/dist/src/transaction.d.ts +0 -64
  122. package/dist/src/transaction.d.ts.map +0 -1
  123. package/dist/src/transaction.js +0 -323
@@ -1,12 +1,47 @@
1
1
  "use strict";
2
- /**
3
- * @prettier
4
- */
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.v1Sweep = exports.v1BackupKeyRecovery = exports.backupKeyRecovery = void 0;
7
- const assert = require("assert");
8
- const _ = require("lodash");
9
- const utxolib = require("@bitgo/utxo-lib");
39
+ exports.backupKeyRecovery = backupKeyRecovery;
40
+ exports.v1BackupKeyRecovery = v1BackupKeyRecovery;
41
+ exports.v1Sweep = v1Sweep;
42
+ const assert_1 = __importDefault(require("assert"));
43
+ const lodash_1 = __importDefault(require("lodash"));
44
+ const utxolib = __importStar(require("@bitgo/utxo-lib"));
10
45
  const { getInternalChainCode, scriptTypeForChain, outputScripts, getExternalChainCode } = utxolib.bitgo;
11
46
  const unspents_1 = require("@bitgo/unspents");
12
47
  const sdk_core_1 = require("@bitgo/sdk-core");
@@ -27,7 +62,7 @@ function formatForOfflineVault(coinName, txInfo, txHex) {
27
62
  txHex,
28
63
  txInfo: {
29
64
  unspents: txInfo.inputs.map((input) => {
30
- assert(input.valueString);
65
+ (0, assert_1.default)(input.valueString);
31
66
  return { ...input, valueString: input.valueString };
32
67
  }),
33
68
  },
@@ -183,17 +218,17 @@ async function getRecoveryFeePerBytes(coin, { defaultValue }) {
183
218
  * for example: ['p2shP2wsh', 'p2wsh'] will prevent code from checking for wrapped-segwit and native-segwit chains on the public block explorers
184
219
  */
185
220
  async function backupKeyRecovery(coin, bitgo, params) {
186
- if (_.isUndefined(params.userKey)) {
221
+ if (lodash_1.default.isUndefined(params.userKey)) {
187
222
  throw new Error('missing userKey');
188
223
  }
189
- if (_.isUndefined(params.backupKey)) {
224
+ if (lodash_1.default.isUndefined(params.backupKey)) {
190
225
  throw new Error('missing backupKey');
191
226
  }
192
- if (_.isUndefined(params.recoveryDestination) ||
227
+ if (lodash_1.default.isUndefined(params.recoveryDestination) ||
193
228
  !coin.isValidAddress(params.recoveryDestination, { anyFormat: true })) {
194
229
  throw new Error('invalid recoveryDestination');
195
230
  }
196
- if (!_.isUndefined(params.scan) && (!_.isInteger(params.scan) || params.scan < 0)) {
231
+ if (!lodash_1.default.isUndefined(params.scan) && (!lodash_1.default.isInteger(params.scan) || params.scan < 0)) {
197
232
  throw new Error('scan must be a positive integer');
198
233
  }
199
234
  const isKrsRecovery = (0, sdk_core_1.getIsKrsRecovery)(params);
@@ -301,9 +336,8 @@ async function backupKeyRecovery(coin, bitgo, params) {
301
336
  }
302
337
  return txInfo;
303
338
  }
304
- exports.backupKeyRecovery = backupKeyRecovery;
305
339
  async function v1BackupKeyRecovery(coin, bitgo, params) {
306
- if (_.isUndefined(params.recoveryDestination) ||
340
+ if (lodash_1.default.isUndefined(params.recoveryDestination) ||
307
341
  !coin.isValidAddress(params.recoveryDestination, { anyFormat: true })) {
308
342
  throw new Error('invalid recoveryDestination');
309
343
  }
@@ -314,9 +348,8 @@ async function v1BackupKeyRecovery(coin, bitgo, params) {
314
348
  feeRate: recoveryFeePerByte,
315
349
  });
316
350
  }
317
- exports.v1BackupKeyRecovery = v1BackupKeyRecovery;
318
351
  async function v1Sweep(coin, bitgo, params) {
319
- if (_.isUndefined(params.recoveryDestination) ||
352
+ if (lodash_1.default.isUndefined(params.recoveryDestination) ||
320
353
  !coin.isValidAddress(params.recoveryDestination, { anyFormat: true })) {
321
354
  throw new Error('invalid recoveryDestination');
322
355
  }
@@ -330,5 +363,4 @@ async function v1Sweep(coin, bitgo, params) {
330
363
  feeRate: recoveryFeePerByte,
331
364
  });
332
365
  }
333
- exports.v1Sweep = v1Sweep;
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxpQ0FBaUM7QUFDakMsNEJBQTRCO0FBQzVCLDJDQUEyQztBQUMzQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQVV4Ryw4Q0FBK0M7QUFFL0MsOENBU3lCO0FBR3pCLHlEQUErRDtBQUMvRCw2Q0FBMEM7QUFDMUMsaURBQThDO0FBQzlDLGtDQUE0QztBQUM1Qyw4Q0FBdUQ7QUFldkQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsUUFBZ0IsRUFDaEIsTUFBMEIsRUFDMUIsS0FBYTtJQUViLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RELENBQUMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxFQUFFLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxJQUFzQjtJQUMxRCxPQUFPLE1BQU0sSUFBSSwyQkFBWSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxNQUE0QjtJQUNwRixNQUFNLFdBQVcsR0FBRyx1QkFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDL0U7SUFFRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQVcsTUFBTSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDekU7U0FBTTtRQUNMLCtHQUErRztRQUMvRyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBZ0JELFNBQVMsbUJBQW1CLENBQUMsSUFBc0IsRUFBRSxPQUF3QjtJQUMzRSxzSEFBc0g7SUFDdEgsMkJBQTJCO0lBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTTtRQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUN0QixDQUFDO0FBRUQsS0FBSyxVQUFVLDJCQUEyQixDQUN4QyxJQUFzQixFQUN0QixNQUFxQixFQUNyQixVQUEwQixFQUMxQixLQUFnQjs7SUFFaEIsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksSUFBQSxxQkFBVSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxtQkFBUSxDQUFDLEtBQUssQ0FBQztJQUN6RyxNQUFNLGdCQUFnQixHQUFHLE1BQUEsTUFBTSxDQUFDLGdCQUFnQixtQ0FBSSxJQUFBLDBCQUFPLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RixNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9ELElBQUksZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRTlDLEtBQUssVUFBVSxTQUFTLENBQUMsSUFBWTtRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxTQUFTLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNsQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFDLFNBQWlCO1FBQzdDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzRixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pFLG9HQUFvRztRQUNwRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1lBQzFCLGdDQUFnQyxFQUFFLENBQUM7U0FDcEM7YUFBTTtZQUNMLGdDQUFnQyxHQUFHLENBQUMsQ0FBQztZQUVyQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxPQUFPLENBQUMsT0FBTyxpQkFBaUIsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xHLE1BQU0sZUFBZSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN6QyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQWtDLEVBQUU7b0JBQzlELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO3dCQUNoQyxpRkFBaUY7d0JBQ2pGLDRGQUE0Rjt3QkFDNUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNsQyxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDcEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFTLEtBQUssQ0FBQyxDQUFDOzRCQUN4RCxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7eUJBQzNCO3FCQUNGO29CQUNELG1FQUFtRTtvQkFDbkUsc0RBQXNEO29CQUN0RCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN4RCxPQUFPO3dCQUNMLEdBQUcsQ0FBQzt3QkFDSixLQUFLLEVBQUUsR0FBRzt3QkFDVixLQUFLLEVBQUUsS0FBSzt3QkFDWixLQUFLLEVBQUUsU0FBUzt3QkFDaEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztxQkFDbkQsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFFRixjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBRUQsSUFBSSxnQ0FBZ0MsSUFBSSxvQ0FBb0MsRUFBRTtZQUM1RSw2SEFBNkg7WUFDN0gsY0FBYztZQUNkLE9BQU87U0FDUjtRQUVELE9BQU8sY0FBYyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbUNBQW1DO0lBRW5DLE1BQU0sY0FBYyxHQUE0QixFQUFFLENBQUM7SUFDbkQscUNBQXFDO0lBQ3JDLE1BQU0sY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhCLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDL0IseUNBQXlDO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsS0FBSyxVQUFVLHNCQUFzQixDQUNuQyxJQUFzQixFQUN0QixFQUFFLFlBQVksRUFBNEI7SUFFMUMsSUFBSTtRQUNGLE9BQU8sTUFBTSx1QkFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0tBQzNFO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxZQUFZLENBQUM7S0FDckI7QUFDSCxDQUFDO0FBV0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsSUFBc0IsRUFDdEIsS0FBZ0IsRUFDaEIsTUFBcUI7SUFFckIsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDcEM7SUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQUN0QztJQUVELElBQ0UsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDekMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUNyRTtRQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztLQUNoRDtJQUVELElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtRQUNqRixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFBLDJCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLElBQUEsNkJBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLElBQUksQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBRXJILE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBQSx5QkFBYyxFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV6Rix3SEFBd0g7SUFDeEgsTUFBTSxJQUFJLEdBQUcsSUFBQSx1QkFBWSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLElBQUksQ0FBQyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3hDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7UUFDeEQsTUFBTSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhO1FBQ2hFLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWE7UUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYTtLQUMzQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBNEIsQ0FDeEMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGFBQWEsQ0FBQyxlQUFlO1NBQzFCLE1BQU0sQ0FDTCxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBLE1BQUEsTUFBTSxDQUFDLGtCQUFrQiwwQ0FBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxFQUFBLENBQzVHO1NBQ0EsTUFBTSxDQUNMLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDeEIsR0FBRyxPQUFPO1FBQ1YsMkJBQTJCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEYsMkJBQTJCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDekYsRUFDRCxFQUF3QyxDQUN6QyxDQUNKLENBQ0YsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVULDhDQUE4QztJQUM5QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RSxJQUFJLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqQyxNQUFNLElBQUksZ0NBQXFCLEVBQUUsQ0FBQztLQUNuQztJQUVELGlCQUFpQjtJQUNqQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxNQUFNLEdBQUcsRUFBcUMsQ0FBQztJQUNyRCxNQUFNLFVBQVUsR0FBVyxNQUFNLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRXJGLGtIQUFrSDtJQUNsSCw0R0FBNEc7SUFDNUcsNERBQTREO0lBQzVELE1BQU0sVUFBVSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLHVCQUFZLENBQUMsaUJBQWlCLENBQUM7SUFDNUUsTUFBTSxlQUFlLEdBQUcsdUJBQVksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsdUJBQVksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN0SCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBRTVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsZ0JBQWdCLEtBQUssUUFBUTtZQUMzQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzdHLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksYUFBYSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7UUFDdkMsSUFBSTtZQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNuRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osNENBQTRDO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7S0FDRjtJQUVELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixHQUFHLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFFbEUsSUFBSSxjQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUM7d0NBQ29CLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtjQUNyRCxjQUFjLENBQUMsUUFBUSxFQUFFLHFCQUFxQixNQUFNLENBQUMsUUFBUSxFQUFFO21DQUMxQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzdEO0lBRUQsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFeEUsSUFBSSxXQUFXLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RkFBNkYsQ0FBQyxDQUFDO1NBQ2hIO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDL0Q7SUFFRCxJQUFJLGVBQWUsRUFBRTtRQUNuQix5RkFBeUY7UUFDekYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUE0QixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3BGO1NBQU07UUFDTCxJQUFBLHdCQUFpQixFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxhQUFhLEVBQUU7WUFDakIsNkZBQTZGO1lBQzdGLHlHQUF5RztZQUN6RyxtRUFBbUU7WUFDbkUscUZBQXFGO1lBQ3JGLE1BQU0sQ0FBQyxjQUFjO2dCQUNuQixNQUFNLENBQUMsV0FBVyxLQUFLLFdBQVc7b0JBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQzVFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7YUFBTTtZQUNMLE1BQU0sRUFBRSxHQUFHLElBQUEsd0JBQWlCLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkQ7S0FDRjtJQUVELElBQUksYUFBYSxFQUFFO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsb0JBQW9CLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3pEO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQXpKRCw4Q0F5SkM7QUFxQk0sS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUF1QjtJQUV2QixJQUNFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDckU7UUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7S0FDaEQ7SUFFRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sc0JBQXNCLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckYsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzVCLEdBQUcsTUFBTTtRQUNULE9BQU8sRUFBRSxrQkFBa0I7S0FDNUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWxCRCxrREFrQkM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUMzQixJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUFxQjtJQU1yQixJQUNFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDckU7UUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7S0FDaEQ7SUFFRCxJQUFJLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQ3hCLGtCQUFrQixHQUFHLE1BQU0sc0JBQXNCLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDaEY7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsT0FBTyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDMUIsR0FBRyxNQUFNO1FBQ1QsT0FBTyxFQUFFLGtCQUFrQjtLQUM1QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBMUJELDBCQTBCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cblxuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5jb25zdCB7IGdldEludGVybmFsQ2hhaW5Db2RlLCBzY3JpcHRUeXBlRm9yQ2hhaW4sIG91dHB1dFNjcmlwdHMsIGdldEV4dGVybmFsQ2hhaW5Db2RlIH0gPSB1dHhvbGliLmJpdGdvO1xuXG50eXBlIENoYWluQ29kZSA9IHV0eG9saWIuYml0Z28uQ2hhaW5Db2RlO1xudHlwZSBSb290V2FsbGV0S2V5cyA9IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXM7XG50eXBlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQ8VE51bWJlcj47XG50eXBlIFdhbGxldFVuc3BlbnRKU09OID0gdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50ICYge1xuICB2YWx1ZVN0cmluZzogc3RyaW5nO1xufTtcbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbmltcG9ydCB7IFZpcnR1YWxTaXplcyB9IGZyb20gJ0BiaXRnby91bnNwZW50cyc7XG5cbmltcG9ydCB7XG4gIEJpdEdvQmFzZSxcbiAgRXJyb3JOb0lucHV0VG9SZWNvdmVyLFxuICBnZXRLcnNQcm92aWRlcixcbiAgZ2V0QmlwMzJLZXlzLFxuICBnZXRJc0tyc1JlY292ZXJ5LFxuICBnZXRJc1Vuc2lnbmVkU3dlZXAsXG4gIGlzVHJpcGxlLFxuICBrcnNQcm92aWRlcnMsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBNdWx0aVNpZ0FkZHJlc3MgfSBmcm9tICcuLi9hYnN0cmFjdFV0eG9Db2luJztcblxuaW1wb3J0IHsgZm9yQ29pbiwgUmVjb3ZlcnlQcm92aWRlciB9IGZyb20gJy4vUmVjb3ZlcnlQcm92aWRlcic7XG5pbXBvcnQgeyBNZW1wb29sQXBpIH0gZnJvbSAnLi9tZW1wb29sQXBpJztcbmltcG9ydCB7IENvaW5nZWNrb0FwaSB9IGZyb20gJy4vY29pbmdlY2tvQXBpJztcbmltcG9ydCB7IHNpZ25BbmRWZXJpZnlQc2J0IH0gZnJvbSAnLi4vc2lnbic7XG5pbXBvcnQgeyBnZXRNYWlubmV0LCBuZXR3b3JrcyB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2ZmbGluZVZhdWx0VHhJbmZvIHtcbiAgaW5wdXRzOiBXYWxsZXRVbnNwZW50SlNPTltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlZE9mZmxpbmVWYXVsdFR4SW5mbyB7XG4gIHR4SW5mbzoge1xuICAgIHVuc3BlbnRzOiBXYWxsZXRVbnNwZW50SlNPTltdO1xuICB9O1xuICB0eEhleDogc3RyaW5nO1xuICBmZWVJbmZvOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gIGNvaW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGlzIHRyYW5zZm9ybXMgdGhlIHR4SW5mbyBmcm9tIHJlY292ZXIgaW50byB0aGUgZm9ybWF0IHRoYXQgb2ZmbGluZS1zaWduaW5nLXRvb2wgZXhwZWN0c1xuICogQHBhcmFtIGNvaW5OYW1lXG4gKiBAcGFyYW0gdHhJbmZvXG4gKiBAcGFyYW0gdHhIZXhcbiAqIEByZXR1cm5zIHt7dHhIZXg6ICosIHR4SW5mbzoge3Vuc3BlbnRzOiAqfSwgZmVlSW5mbzoge30sIGNvaW46IHZvaWR9fVxuICovXG5mdW5jdGlvbiBmb3JtYXRGb3JPZmZsaW5lVmF1bHQoXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIHR4SW5mbzogT2ZmbGluZVZhdWx0VHhJbmZvLFxuICB0eEhleDogc3RyaW5nXG4pOiBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8ge1xuICByZXR1cm4ge1xuICAgIHR4SGV4LFxuICAgIHR4SW5mbzoge1xuICAgICAgdW5zcGVudHM6IHR4SW5mby5pbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgICBhc3NlcnQoaW5wdXQudmFsdWVTdHJpbmcpO1xuICAgICAgICByZXR1cm4geyAuLi5pbnB1dCwgdmFsdWVTdHJpbmc6IGlucHV0LnZhbHVlU3RyaW5nIH07XG4gICAgICB9KSxcbiAgICB9LFxuICAgIGZlZUluZm86IHt9LFxuICAgIGNvaW46IGNvaW5OYW1lLFxuICB9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCBtYXJrZXQgcHJpY2UgZnJvbSBhIHRoaXJkIHBhcnR5IHRvIGJlIHVzZWQgZm9yIHJlY292ZXJ5XG4gKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG5vbi1iaXRnbyByZWNvdmVyeSB0cmFuc2FjdGlvbnMsIHdoZW4gaXQgaXMgbmVjZXNzYXJ5XG4gKiB0byBjYWxjdWxhdGUgdGhlIHJvdWdoIGZlZSBuZWVkZWQgdG8gcGF5IHRvIEtleXRlcm5hbC4gV2UgYXJlIG9rYXkgd2l0aCBhcHByb3hpbWF0aW5nLFxuICogYmVjYXVzZSB0aGUgcmVzdWx0aW5nIHByaWNlIG9mIHRoaXMgZnVuY3Rpb24gb25seSBoYXMgbGVzcyB0aGFuIDEgZG9sbGFyIGluZmx1ZW5jZSBvbiB0aGVcbiAqIGZlZSB0aGF0IG5lZWRzIHRvIGJlIHBhaWQgdG8gS2V5dGVybmFsLlxuICpcbiAqIFNlZSBjYWxjdWxhdGVGZWVBbW91bnQgZnVuY3Rpb246ICByZXR1cm4gTWF0aC5yb3VuZChmZWVBbW91bnRVc2QgLyBjdXJyZW50UHJpY2UgKiBzZWxmLmdldEJhc2VGYWN0b3IoKSk7XG4gKlxuICogVGhpcyBlbmQgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGFuIGFjY3VyYXRlIGVuZHBvaW50LCBzaW5jZSBzb21lIGNvaW5zJyBwcmljZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgcHJvdmlkZXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UmVjb3ZlcnlNYXJrZXRQcmljZShjb2luOiBBYnN0cmFjdFV0eG9Db2luKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBDb2luZ2Vja29BcGkoKS5nZXRVU0RQcmljZShjb2luLmdldEZhbWlseSgpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBhbW91bnQgKGluIGJhc2UgdW5pdHMpIHRvIHBheSBhIEtSUyBwcm92aWRlciB3aGVuIGJ1aWxkaW5nIGEgcmVjb3ZlcnkgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBjb2luXG4gKiBAcGFyYW0gcGFyYW1zXG4gKiBAcGFyYW0gcGFyYW1zLnByb3ZpZGVyIHtTdHJpbmd9IHRoZSBLUlMgcHJvdmlkZXIgdGhhdCBob2xkcyB0aGUgYmFja3VwIGtleVxuICogQHJldHVybnMgeyp9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUZlZUFtb3VudChjb2luOiBBYnN0cmFjdFV0eG9Db2luLCBwYXJhbXM6IHsgcHJvdmlkZXI6IHN0cmluZyB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qga3JzUHJvdmlkZXIgPSBrcnNQcm92aWRlcnNbcGFyYW1zLnByb3ZpZGVyXTtcblxuICBpZiAoa3JzUHJvdmlkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gZmVlIHN0cnVjdHVyZSBzcGVjaWZpZWQgZm9yIHByb3ZpZGVyICR7cGFyYW1zLnByb3ZpZGVyfWApO1xuICB9XG5cbiAgaWYgKGtyc1Byb3ZpZGVyLmZlZVR5cGUgPT09ICdmbGF0VXNkJykge1xuICAgIGNvbnN0IGZlZUFtb3VudFVzZCA9IGtyc1Byb3ZpZGVyLmZlZUFtb3VudDtcbiAgICBjb25zdCBjdXJyZW50UHJpY2U6IG51bWJlciA9IGF3YWl0IGdldFJlY292ZXJ5TWFya2V0UHJpY2UoY29pbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgoZmVlQW1vdW50VXNkIC8gY3VycmVudFByaWNlKSAqIGNvaW4uZ2V0QmFzZUZhY3RvcigpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB3ZSBjYW4gYWRkIG1vcmUgZmVlIHN0cnVjdHVyZXMgaGVyZSBhcyBuZWVkZWQgZm9yIGRpZmZlcmVudCBwcm92aWRlcnMsIHN1Y2ggYXMgcGVyY2VudGFnZSBvZiByZWNvdmVyeSBhbW91bnRcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZlZSBzdHJ1Y3R1cmUgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvdmVyUGFyYW1zIHtcbiAgc2Nhbj86IG51bWJlcjtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICBrcnNQcm92aWRlcj86IHN0cmluZztcbiAgaWdub3JlQWRkcmVzc1R5cGVzOiBTY3JpcHRUeXBlMk9mM1tdO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBhcGlLZXk/OiBzdHJpbmc7XG4gIHVzZXJLZXlQYXRoPzogc3RyaW5nO1xuICByZWNvdmVyeVByb3ZpZGVyPzogUmVjb3ZlcnlQcm92aWRlcjtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkQWRkcmVzcyhjb2luOiBBYnN0cmFjdFV0eG9Db2luLCBhZGRyZXNzOiBNdWx0aVNpZ0FkZHJlc3MpIHtcbiAgLy8gQmxvY2tjaGFpciB1c2VzIGNhc2hhZGRyIGZvcm1hdCB3aGVuIHF1ZXJ5aW5nIHRoZSBBUEkgZm9yIGFkZHJlc3MgaW5mb3JtYXRpb24uIENvbnZlcnQgbGVnYWN5IGFkZHJlc3NlcyB0byBjYXNoYWRkclxuICAvLyBiZWZvcmUgcXVlcnlpbmcgdGhlIEFQSS5cbiAgcmV0dXJuIGNvaW4uZ2V0Q2hhaW4oKSA9PT0gJ2JjaCcgfHwgY29pbi5nZXRDaGFpbigpID09PSAnYmNoYSdcbiAgICA/IGNvaW4uY2Fub25pY2FsQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MsICdjYXNoYWRkcicpLnNwbGl0KCc6JylbMV1cbiAgICA6IGFkZHJlc3MuYWRkcmVzcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcXVlcnlCbG9ja2NoYWluVW5zcGVudHNQYXRoKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBwYXJhbXM6IFJlY292ZXJQYXJhbXMsXG4gIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBjaGFpbjogQ2hhaW5Db2RlXG4pOiBQcm9taXNlPFdhbGxldFVuc3BlbnQ8YmlnaW50PltdPiB7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBjb25zdCBmZXRjaFByZXZUeCA9XG4gICAgIXV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5oYXNXaXRuZXNzRGF0YShzY3JpcHRUeXBlKSAmJiBnZXRNYWlubmV0KGNvaW4ubmV0d29yaykgIT09IG5ldHdvcmtzLnpjYXNoO1xuICBjb25zdCByZWNvdmVyeVByb3ZpZGVyID0gcGFyYW1zLnJlY292ZXJ5UHJvdmlkZXIgPz8gZm9yQ29pbihjb2luLmdldENoYWluKCksIHBhcmFtcy5hcGlLZXkpO1xuICBjb25zdCBNQVhfU0VRVUVOVElBTF9BRERSRVNTRVNfV0lUSE9VVF9UWFMgPSBwYXJhbXMuc2NhbiB8fCAyMDtcbiAgbGV0IG51bVNlcXVlbnRpYWxBZGRyZXNzZXNXaXRob3V0VHhzID0gMDtcbiAgY29uc3QgcHJldlR4Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFByZXZUeCh0eGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBwcmV2VHhIZXggPSBwcmV2VHhDYWNoZS5nZXQodHhpZCk7XG4gICAgaWYgKCFwcmV2VHhIZXgpIHtcbiAgICAgIHByZXZUeEhleCA9IGF3YWl0IHJlY292ZXJ5UHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb25IZXgodHhpZCk7XG4gICAgICBwcmV2VHhDYWNoZS5zZXQodHhpZCwgcHJldlR4SGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHByZXZUeEhleDtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdhdGhlclVuc3BlbnRzKGFkZHJJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgd2FsbGV0S2V5c0ZvclVuc3BlbnQgPSB3YWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGFkZHJJbmRleCk7XG4gICAgY29uc3QgYWRkcmVzcyA9IGNvaW4uY3JlYXRlTXVsdGlTaWdBZGRyZXNzKHNjcmlwdFR5cGUsIDIsIHdhbGxldEtleXNGb3JVbnNwZW50LnB1YmxpY0tleXMpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkQWRkcmVzcyA9IGdldEZvcm1hdHRlZEFkZHJlc3MoY29pbiwgYWRkcmVzcyk7XG4gICAgY29uc3QgYWRkckluZm8gPSBhd2FpdCByZWNvdmVyeVByb3ZpZGVyLmdldEFkZHJlc3NJbmZvKGZvcm1hdHRlZEFkZHJlc3MpO1xuICAgIC8vIHdlIHVzZSB0eENvdW50IGhlcmUgYmVjYXVzZSBpdCBpbXBsaWVzIHVzYWdlIC0gaGF2aW5nIHR4J2VzIG1lYW5zIHRoZSBhZGRyIHdhcyBnZW5lcmF0ZWQgYW5kIHVzZWRcbiAgICBpZiAoYWRkckluZm8udHhDb3VudCA9PT0gMCkge1xuICAgICAgbnVtU2VxdWVudGlhbEFkZHJlc3Nlc1dpdGhvdXRUeHMrKztcbiAgICB9IGVsc2Uge1xuICAgICAgbnVtU2VxdWVudGlhbEFkZHJlc3Nlc1dpdGhvdXRUeHMgPSAwO1xuXG4gICAgICBpZiAoYWRkckluZm8uYmFsYW5jZSA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIGFuIGFkZHJlc3Mgd2l0aCBiYWxhbmNlOiAke2FkZHJlc3MuYWRkcmVzc30gd2l0aCBiYWxhbmNlICR7YWRkckluZm8uYmFsYW5jZX1gKTtcbiAgICAgICAgY29uc3QgYWRkcmVzc1Vuc3BlbnRzID0gYXdhaXQgcmVjb3ZlcnlQcm92aWRlci5nZXRVbnNwZW50c0ZvckFkZHJlc3NlcyhbZm9ybWF0dGVkQWRkcmVzc10pO1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRVbnNwZW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIGFkZHJlc3NVbnNwZW50cy5tYXAoYXN5bmMgKHUpOiBQcm9taXNlPFdhbGxldFVuc3BlbnQ8YmlnaW50Pj4gPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eGlkLCB2b3V0IH0gPSB1dHhvbGliLmJpdGdvLnBhcnNlT3V0cHV0SWQodS5pZCk7XG4gICAgICAgICAgICBsZXQgdmFsID0gQmlnSW50KHUudmFsdWUpO1xuICAgICAgICAgICAgaWYgKGNvaW4uYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgLy8gYmxvY2tjaGFpciByZXR1cm5zIHRoZSBudW1iZXIgd2l0aCB0aGUgY29ycmVjdCBwcmVjaXNpb24sIGJ1dCBpbiBudW1iZXIgZm9ybWF0XG4gICAgICAgICAgICAgIC8vIGpzb24gcGFyc2Ugd29uJ3QgcGFyc2UgaXQgY29ycmVjdGx5LCBzbyB3ZSByZXF1ZXJ5IHRoZSB0eGlkIGZvciB0aGUgdHggaGV4IHRvIGRlY29kZSBoZXJlXG4gICAgICAgICAgICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIodS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eEhleCA9IGF3YWl0IGdldFByZXZUeCh0eGlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eCA9IGNvaW4uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tSGV4PGJpZ2ludD4odHhIZXgpO1xuICAgICAgICAgICAgICAgIHZhbCA9IHR4Lm91dHNbdm91dF0udmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoZSBhcGkgbWF5IHJldHVybiBjYXNoYWRkcidzIGluc3RlYWQgb2YgbGVnYWN5IGZvciBCQ0ggYW5kIEJDSEFcbiAgICAgICAgICAgIC8vIGRvd25zdHJlYW0gcHJvY2Vzc2VzJ3Mgb25seSBleHBlY3QgbGVnYWN5IGFkZHJlc3Nlc1xuICAgICAgICAgICAgdSA9IHsgLi4udSwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKHUuYWRkcmVzcykgfTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnUsXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgIGNoYWluOiBjaGFpbixcbiAgICAgICAgICAgICAgaW5kZXg6IGFkZHJJbmRleCxcbiAgICAgICAgICAgICAgcHJldlR4OiBmZXRjaFByZXZUeCA/IEJ1ZmZlci5mcm9tKGF3YWl0IGdldFByZXZUeCh0eGlkKSwgJ2hleCcpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSBhcyBXYWxsZXRVbnNwZW50PGJpZ2ludD47XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB3YWxsZXRVbnNwZW50cy5wdXNoKC4uLnByb2Nlc3NlZFVuc3BlbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobnVtU2VxdWVudGlhbEFkZHJlc3Nlc1dpdGhvdXRUeHMgPj0gTUFYX1NFUVVFTlRJQUxfQUREUkVTU0VTX1dJVEhPVVRfVFhTKSB7XG4gICAgICAvLyBzdG9wIHNlYXJjaGluZyBmb3IgYWRkcmVzc2VzIHdpdGggdW5zcGVudHMgaW4gdGhlbSwgd2UndmUgZm91bmQgJHtNQVhfU0VRVUVOVElBTF9BRERSRVNTRVNfV0lUSE9VVF9UWFN9IGluIGEgcm93IHdpdGggbm9uZVxuICAgICAgLy8gd2UgYXJlIGRvbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2F0aGVyVW5zcGVudHMoYWRkckluZGV4ICsgMSk7XG4gIH1cblxuICAvLyBnZXQgdW5zcGVudHMgZm9yIHRoZXNlIGFkZHJlc3Nlc1xuXG4gIGNvbnN0IHdhbGxldFVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PGJpZ2ludD5bXSA9IFtdO1xuICAvLyBUaGlzIHdpbGwgcG9wdWxhdGUgd2FsbGV0QWRkcmVzc2VzXG4gIGF3YWl0IGdhdGhlclVuc3BlbnRzKDApO1xuXG4gIGlmICh3YWxsZXRVbnNwZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBDb3VsZG4ndCBmaW5kIGFueSBhZGRyZXNzZXMgd2l0aCBmdW5kc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiB3YWxsZXRVbnNwZW50cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UmVjb3ZlcnlGZWVQZXJCeXRlcyhcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgeyBkZWZhdWx0VmFsdWUgfTogeyBkZWZhdWx0VmFsdWU6IG51bWJlciB9XG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBNZW1wb29sQXBpLmZvckNvaW4oY29pbi5nZXRDaGFpbigpKS5nZXRSZWNvdmVyeUZlZVBlckJ5dGVzKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmRpcihlKTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEJhY2t1cEtleVJlY292ZXJ5VHJhbnNhbnNhY3Rpb24gPSB7XG4gIGlucHV0cz86IFdhbGxldFVuc3BlbnRKU09OW107XG4gIHRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG4gIGNvaW46IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIHJlY292ZXJ5QW1vdW50OiBudW1iZXI7XG4gIHJlY292ZXJ5QW1vdW50U3RyaW5nOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIGZ1bmRzIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgQml0R28uXG4gKlxuICogUmV0dXJucyB0cmFuc2FjdGlvbiBoZXggaW4gbGVnYWN5IGZvcm1hdCBmb3IgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24sIGhhbGYgc2lnbmVkIGJhY2t1cCByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRoIEtSUyBwcm92aWRlciAob25seSBrZXl0ZXJuYWwpLFxuICogZnVsbHkgc2lnbmVkIGJhY2t1cCByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRob3V0IGEgS1JTIHByb3ZpZGVyLlxuICpcbiAqIFJldHVybnMgUFNCVCBoZXggZm9yIGhhbGYgc2lnbmVkIGJhY2t1cCByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRoIEtSUyBwcm92aWRlciAoZXhjbHVkaW5nIGtleXRlcm5hbClcbiAqIEZvciBQU0JUIGhleCBjYXNlcywgVW5zcGVudHMgYXJlIG5vdCByZXF1aXJlZCBpbiByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0gY29pblxuICogQHBhcmFtIGJpdGdvXG4gKiBAcGFyYW0gcGFyYW1zXG4gKiAtIHVzZXJLZXk6IFtlbmNyeXB0ZWRdIHhwcnYsIG9yIHhwdWJcbiAqIC0gYmFja3VwS2V5OiBbZW5jcnlwdGVkXSB4cHJ2LCBvciB4cHViIGlmIHRoZSB4cHJ2IGlzIGhlbGQgYnkgYSBLUlMgcHJvdmlkZXJcbiAqIC0gd2FsbGV0UGFzc3BocmFzZTogbmVjZXNzYXJ5IGlmIG9uZSBvZiB0aGUgeHBydnMgaXMgZW5jcnlwdGVkXG4gKiAtIGJpdGdvS2V5OiB4cHViXG4gKiAtIGtyc1Byb3ZpZGVyOiBuZWNlc3NhcnkgaWYgYmFja3VwIGtleSBpcyBoZWxkIGJ5IEtSU1xuICogLSByZWNvdmVyeURlc3RpbmF0aW9uOiB0YXJnZXQgYWRkcmVzcyB0byBzZW5kIHJlY292ZXJlZCBmdW5kcyB0b1xuICogLSBzY2FuOiB0aGUgYW1vdW50IG9mIGNvbnNlY3V0aXZlIGFkZHJlc3NlcyB3aXRob3V0IHVuc3BlbnRzIHRvIHNjYW4gdGhyb3VnaCBiZWZvcmUgc3RvcHBpbmdcbiAqIC0gaWdub3JlQWRkcmVzc1R5cGVzOiAob3B0aW9uYWwpIHNjcmlwdHMgdG8gaWdub3JlXG4gKiAgICAgICAgZm9yIGV4YW1wbGU6IFsncDJzaFAyd3NoJywgJ3Ayd3NoJ10gd2lsbCBwcmV2ZW50IGNvZGUgZnJvbSBjaGVja2luZyBmb3Igd3JhcHBlZC1zZWd3aXQgYW5kIG5hdGl2ZS1zZWd3aXQgY2hhaW5zIG9uIHRoZSBwdWJsaWMgYmxvY2sgZXhwbG9yZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBiYWNrdXBLZXlSZWNvdmVyeShcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBSZWNvdmVyUGFyYW1zXG4pOiBQcm9taXNlPEJhY2t1cEtleVJlY292ZXJ5VHJhbnNhbnNhY3Rpb24gfCBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8+IHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1zLnVzZXJLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHVzZXJLZXknKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmFtcy5iYWNrdXBLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICB9XG5cbiAgaWYgKFxuICAgIF8uaXNVbmRlZmluZWQocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pIHx8XG4gICAgIWNvaW4uaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sIHsgYW55Rm9ybWF0OiB0cnVlIH0pXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByZWNvdmVyeURlc3RpbmF0aW9uJyk7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQocGFyYW1zLnNjYW4pICYmICghXy5pc0ludGVnZXIocGFyYW1zLnNjYW4pIHx8IHBhcmFtcy5zY2FuIDwgMCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NjYW4gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgfVxuXG4gIGNvbnN0IGlzS3JzUmVjb3ZlcnkgPSBnZXRJc0tyc1JlY292ZXJ5KHBhcmFtcyk7XG4gIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9IGdldElzVW5zaWduZWRTd2VlcChwYXJhbXMpO1xuICBjb25zdCByZXNwb25zZVR4Rm9ybWF0ID0gaXNVbnNpZ25lZFN3ZWVwIHx8ICFpc0tyc1JlY292ZXJ5IHx8IHBhcmFtcy5rcnNQcm92aWRlciA9PT0gJ2tleXRlcm5hbCcgPyAnbGVnYWN5JyA6ICdwc2J0JztcblxuICBjb25zdCBrcnNQcm92aWRlciA9IGlzS3JzUmVjb3ZlcnkgPyBnZXRLcnNQcm92aWRlcihjb2luLCBwYXJhbXMua3JzUHJvdmlkZXIpIDogdW5kZWZpbmVkO1xuXG4gIC8vIGNoZWNrIHdoZXRoZXIga2V5IG1hdGVyaWFsIGFuZCBwYXNzd29yZCBhdXRoZW50aWNhdGUgdGhlIHVzZXJzIGFuZCByZXR1cm4gcGFyZW50IGtleXMgb2YgYWxsIHRocmVlIGtleXMgb2YgdGhlIHdhbGxldFxuICBjb25zdCBrZXlzID0gZ2V0QmlwMzJLZXlzKGJpdGdvLCBwYXJhbXMsIHsgcmVxdWlyZUJpdEdvWHB1YjogdHJ1ZSB9KTtcbiAgaWYgKCFpc1RyaXBsZShrZXlzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQga2V5IHRyaXBsZWApO1xuICB9XG4gIGNvbnN0IHdhbGxldEtleXMgPSBuZXcgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyhrZXlzLCBbXG4gICAgcGFyYW1zLnVzZXJLZXlQYXRoIHx8IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgICB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gICAgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICBdKTtcblxuICBjb25zdCB1bnNwZW50czogV2FsbGV0VW5zcGVudDxiaWdpbnQ+W10gPSAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBvdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mM1xuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChhZGRyZXNzVHlwZSkgPT4gY29pbi5zdXBwb3J0c0FkZHJlc3NUeXBlKGFkZHJlc3NUeXBlKSAmJiAhcGFyYW1zLmlnbm9yZUFkZHJlc3NUeXBlcz8uaW5jbHVkZXMoYWRkcmVzc1R5cGUpXG4gICAgICAgIClcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocXVlcmllcywgYWRkcmVzc1R5cGUpID0+IFtcbiAgICAgICAgICAgIC4uLnF1ZXJpZXMsXG4gICAgICAgICAgICBxdWVyeUJsb2NrY2hhaW5VbnNwZW50c1BhdGgoY29pbiwgcGFyYW1zLCB3YWxsZXRLZXlzLCBnZXRFeHRlcm5hbENoYWluQ29kZShhZGRyZXNzVHlwZSkpLFxuICAgICAgICAgICAgcXVlcnlCbG9ja2NoYWluVW5zcGVudHNQYXRoKGNvaW4sIHBhcmFtcywgd2FsbGV0S2V5cywgZ2V0SW50ZXJuYWxDaGFpbkNvZGUoYWRkcmVzc1R5cGUpKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtdIGFzIFByb21pc2U8V2FsbGV0VW5zcGVudDxiaWdpbnQ+W10+W11cbiAgICAgICAgKVxuICAgIClcbiAgKS5mbGF0KCk7XG5cbiAgLy8gRXhlY3V0ZSB0aGUgcXVlcmllcyBhbmQgZ2F0aGVyIHRoZSB1bnNwZW50c1xuICBjb25zdCB0b3RhbElucHV0QW1vdW50ID0gdXR4b2xpYi5iaXRnby51bnNwZW50U3VtKHVuc3BlbnRzLCAnYmlnaW50Jyk7XG4gIGlmICh0b3RhbElucHV0QW1vdW50IDw9IEJpZ0ludCgwKSkge1xuICAgIHRocm93IG5ldyBFcnJvck5vSW5wdXRUb1JlY292ZXIoKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHRoZSBwc2J0XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGb3JOZXR3b3JrKHsgbmV0d29yazogY29pbi5uZXR3b3JrIH0pO1xuICAvLyB4cHVicyBjYW4gYmVjb21lIGhhbmR5IGZvciBtYW55IHRoaW5ncy5cbiAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCB3YWxsZXRLZXlzKTtcbiAgY29uc3QgdHhJbmZvID0ge30gYXMgQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbjtcbiAgY29uc3QgZmVlUGVyQnl0ZTogbnVtYmVyID0gYXdhaXQgZ2V0UmVjb3ZlcnlGZWVQZXJCeXRlcyhjb2luLCB7IGRlZmF1bHRWYWx1ZTogMTAwIH0pO1xuXG4gIC8vIEtSUyByZWNvdmVyeSB0cmFuc2FjdGlvbnMgaGF2ZSBhIDJuZCBvdXRwdXQgdG8gcGF5IHRoZSByZWNvdmVyeSBmZWUsIGxpa2UgcGF5Z28gZmVlcy4gVXNlIHAyd3NoIG91dHB1dHMgYmVjYXVzZVxuICAvLyB0aGV5IGFyZSB0aGUgbGFyZ2VzdCBvdXRwdXRzIGFuZCB0aHVzIHRoZSBtb3N0IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZSB0byB1c2UgaW4gY2FsY3VsYXRpbmcgZmVlcy4gQWxzbyB1c2VcbiAgLy8gc2Vnd2l0IG92ZXJoZWFkIHNpemUgYW5kIHAyc2ggaW5wdXRzIGZvciB0aGUgc2FtZSByZWFzb24uXG4gIGNvbnN0IG91dHB1dFNpemUgPSAoaXNLcnNSZWNvdmVyeSA/IDIgOiAxKSAqIFZpcnR1YWxTaXplcy50eFAyd3NoT3V0cHV0U2l6ZTtcbiAgY29uc3QgYXBwcm94aW1hdGVTaXplID0gVmlydHVhbFNpemVzLnR4U2VnT3ZlcmhlYWRWU2l6ZSArIG91dHB1dFNpemUgKyBWaXJ0dWFsU2l6ZXMudHhQMnNoSW5wdXRTaXplICogdW5zcGVudHMubGVuZ3RoO1xuICBjb25zdCBhcHByb3hpbWF0ZUZlZSA9IEJpZ0ludChhcHByb3hpbWF0ZVNpemUgKiBmZWVQZXJCeXRlKTtcblxuICB0eEluZm8uaW5wdXRzID1cbiAgICByZXNwb25zZVR4Rm9ybWF0ID09PSAnbGVnYWN5J1xuICAgICAgPyB1bnNwZW50cy5tYXAoKHUpID0+ICh7IC4uLnUsIHZhbHVlOiBOdW1iZXIodS52YWx1ZSksIHZhbHVlU3RyaW5nOiB1LnZhbHVlLnRvU3RyaW5nKCksIHByZXZUeDogdW5kZWZpbmVkIH0pKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgdW5zcGVudHMuZm9yRWFjaCgodW5zcGVudCkgPT4ge1xuICAgIHV0eG9saWIuYml0Z28uYWRkV2FsbGV0VW5zcGVudFRvUHNidChwc2J0LCB1bnNwZW50LCB3YWxsZXRLZXlzLCAndXNlcicsICdiYWNrdXAnKTtcbiAgfSk7XG5cbiAgbGV0IGtyc0ZlZSA9IEJpZ0ludCgwKTtcbiAgaWYgKGlzS3JzUmVjb3ZlcnkgJiYgcGFyYW1zLmtyc1Byb3ZpZGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGtyc0ZlZSA9IEJpZ0ludChhd2FpdCBjYWxjdWxhdGVGZWVBbW91bnQoY29pbiwgeyBwcm92aWRlcjogcGFyYW1zLmtyc1Byb3ZpZGVyIH0pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIERvbid0IGxldCB0aGlzIGVycm9yIGJsb2NrIHRoZSByZWNvdmVyeSAtXG4gICAgICBjb25zb2xlLmRpcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlY292ZXJ5QW1vdW50ID0gdG90YWxJbnB1dEFtb3VudCAtIGFwcHJveGltYXRlRmVlIC0ga3JzRmVlO1xuXG4gIGlmIChyZWNvdmVyeUFtb3VudCA8IEJpZ0ludCgwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdGhpcyB3YWxsZXRcXCdzIGJhbGFuY2UgaXMgdG9vIGxvdyB0byBwYXkgdGhlIGZlZXMgc3BlY2lmaWVkIGJ5IHRoZSBLUlMgcHJvdmlkZXIuIFxuICAgICAgICAgIEV4aXN0aW5nIGJhbGFuY2Ugb24gd2FsbGV0OiAke3RvdGFsSW5wdXRBbW91bnQudG9TdHJpbmcoKX0uIEVzdGltYXRlZCBuZXR3b3JrIGZlZSBmb3IgdGhlIHJlY292ZXJ5IHRyYW5zYWN0aW9uXG4gICAgICAgICAgOiAke2FwcHJveGltYXRlRmVlLnRvU3RyaW5nKCl9LCBLUlMgZmVlIHRvIHBheTogJHtrcnNGZWUudG9TdHJpbmcoKX0uIEFmdGVyIGRlZHVjdGluZyBmZWVzLCB5b3VyIHRvdGFsIFxuICAgICAgICAgIHJlY292ZXJhYmxlIGJhbGFuY2UgaXMgJHtyZWNvdmVyeUFtb3VudC50b1N0cmluZygpfWApO1xuICB9XG5cbiAgY29uc3QgcmVjb3ZlcnlPdXRwdXRTY3JpcHQgPSB1dHhvbGliLmFkZHJlc3MudG9PdXRwdXRTY3JpcHQocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sIGNvaW4ubmV0d29yayk7XG4gIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiByZWNvdmVyeU91dHB1dFNjcmlwdCwgdmFsdWU6IHJlY292ZXJ5QW1vdW50IH0pO1xuXG4gIGlmIChrcnNQcm92aWRlciAmJiBrcnNGZWUgPiBCaWdJbnQoMCkpIHtcbiAgICBpZiAoIWtyc1Byb3ZpZGVyLmZlZUFkZHJlc3Nlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBrZXlQcm92aWRlciBtdXN0IGRlZmluZSBmZWVBZGRyZXNzZXNgKTtcbiAgICB9XG5cbiAgICBjb25zdCBrcnNGZWVBZGRyZXNzID0ga3JzUHJvdmlkZXIuZmVlQWRkcmVzc2VzW2NvaW4uZ2V0Q2hhaW4oKV07XG5cbiAgICBpZiAoIWtyc0ZlZUFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGhpcyBLUlMgcHJvdmlkZXIgaGFzIG5vdCBjb25maWd1cmVkIHRoZWlyIGZlZSBzdHJ1Y3R1cmUgeWV0IC0gcmVjb3ZlcnkgY2Fubm90IGJlIGNvbXBsZXRlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGtyc0ZlZU91dHB1dFNjcmlwdCA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChrcnNGZWVBZGRyZXNzLCBjb2luLm5ldHdvcmspO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiBrcnNGZWVPdXRwdXRTY3JpcHQsIHZhbHVlOiBrcnNGZWUgfSk7XG4gIH1cblxuICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgLy8gVE9ETyBCVEMtMzE3IC0gV2hlbiByZWFkeSB0byBQU0JUaWZ5IE9WQywgc2VuZCBwc2J0IGhleCBhbmQgc2tpcCB1bnNwZW50cyBpbiByZXNwb25zZS5cbiAgICBjb25zdCB0eEhleCA9IHBzYnQuZ2V0VW5zaWduZWRUeCgpLnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIHJldHVybiBmb3JtYXRGb3JPZmZsaW5lVmF1bHQoY29pbi5nZXRDaGFpbigpLCB0eEluZm8gYXMgT2ZmbGluZVZhdWx0VHhJbmZvLCB0eEhleCk7XG4gIH0gZWxzZSB7XG4gICAgc2lnbkFuZFZlcmlmeVBzYnQocHNidCwgd2FsbGV0S2V5cy51c2VyLCB7IGlzTGFzdFNpZ25hdHVyZTogZmFsc2UgfSk7XG4gICAgaWYgKGlzS3JzUmVjb3ZlcnkpIHtcbiAgICAgIC8vIFRoZSBLUlMgcHJvdmlkZXIga2V5dGVybmFsIHNvbGVseSBzdXBwb3J0cyBQMlNILCBQMldTSCwgYW5kIFAyU0gtUDJXU0ggaW5wdXQgc2NyaXB0IHR5cGVzLlxuICAgICAgLy8gSXQgY3VycmVudGx5IHVzZXMgYW4gb3V0ZGF0ZWQgQml0R29KUyBTREssIHdoaWNoIHJlbGllcyBvbiBhIGxlZ2FjeSB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciBjb3NpZ25pbmcuXG4gICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB1cGdyYWRpbmcgdGhlIGtleXRlcm5hbCBjb2RlIHByZXNlbnRzIGNoYWxsZW5nZXMsXG4gICAgICAvLyB3aGljaCBoaW5kZXJzIHRoZSBpbnRlZ3JhdGlvbiBvZiB0aGUgbGF0ZXN0IEJpdEdvSlMgU0RLIHdpdGggUFNCVCBzaWduaW5nIHN1cHBvcnQuXG4gICAgICB0eEluZm8udHJhbnNhY3Rpb25IZXggPVxuICAgICAgICBwYXJhbXMua3JzUHJvdmlkZXIgPT09ICdrZXl0ZXJuYWwnXG4gICAgICAgICAgPyB1dHhvbGliLmJpdGdvLmV4dHJhY3RQMm1zT25seUhhbGZTaWduZWRUeChwc2J0KS50b0J1ZmZlcigpLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAgIDogcHNidC50b0hleCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eCA9IHNpZ25BbmRWZXJpZnlQc2J0KHBzYnQsIHdhbGxldEtleXMuYmFja3VwLCB7IGlzTGFzdFNpZ25hdHVyZTogdHJ1ZSB9KTtcbiAgICAgIHR4SW5mby50cmFuc2FjdGlvbkhleCA9IHR4LnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0tyc1JlY292ZXJ5KSB7XG4gICAgdHhJbmZvLmNvaW4gPSBjb2luLmdldENoYWluKCk7XG4gICAgdHhJbmZvLmJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXk7XG4gICAgdHhJbmZvLnJlY292ZXJ5QW1vdW50ID0gTnVtYmVyKHJlY292ZXJ5QW1vdW50KTtcbiAgICB0eEluZm8ucmVjb3ZlcnlBbW91bnRTdHJpbmcgPSByZWNvdmVyeUFtb3VudC50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIHR4SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaXRHb1YxVW5zcGVudCB7XG4gIHR4X2hhc2g6IHN0cmluZztcbiAgdHhfb3V0cHV0X246IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWMVN3ZWVwUGFyYW1zIHtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICB1bnNwZW50czogQml0R29WMVVuc3BlbnRbXTtcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIG90cDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFYxUmVjb3ZlclBhcmFtcyBleHRlbmRzIE9taXQ8VjFTd2VlcFBhcmFtcywgJ290cCc+IHtcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2MUJhY2t1cEtleVJlY292ZXJ5KFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBiaXRnbzogQml0R29CYXNlLFxuICBwYXJhbXM6IFYxUmVjb3ZlclBhcmFtc1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKFxuICAgIF8uaXNVbmRlZmluZWQocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pIHx8XG4gICAgIWNvaW4uaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sIHsgYW55Rm9ybWF0OiB0cnVlIH0pXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByZWNvdmVyeURlc3RpbmF0aW9uJyk7XG4gIH1cblxuICBjb25zdCByZWNvdmVyeUZlZVBlckJ5dGUgPSBhd2FpdCBnZXRSZWNvdmVyeUZlZVBlckJ5dGVzKGNvaW4sIHsgZGVmYXVsdFZhbHVlOiAxMDAgfSk7XG4gIGNvbnN0IHYxd2FsbGV0ID0gYXdhaXQgYml0Z28ud2FsbGV0cygpLmdldCh7IGlkOiBwYXJhbXMud2FsbGV0SWQgfSk7XG4gIHJldHVybiBhd2FpdCB2MXdhbGxldC5yZWNvdmVyKHtcbiAgICAuLi5wYXJhbXMsXG4gICAgZmVlUmF0ZTogcmVjb3ZlcnlGZWVQZXJCeXRlLFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHYxU3dlZXAoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHBhcmFtczogVjFTd2VlcFBhcmFtc1xuKTogUHJvbWlzZTx7XG4gIHR4OiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG59PiB7XG4gIGlmIChcbiAgICBfLmlzVW5kZWZpbmVkKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSB8fFxuICAgICFjb2luLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uLCB7IGFueUZvcm1hdDogdHJ1ZSB9KVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmVjb3ZlcnlEZXN0aW5hdGlvbicpO1xuICB9XG5cbiAgbGV0IHJlY292ZXJ5RmVlUGVyQnl0ZSA9IDEwMDtcbiAgaWYgKGJpdGdvLmVudiA9PT0gJ3Byb2QnKSB7XG4gICAgcmVjb3ZlcnlGZWVQZXJCeXRlID0gYXdhaXQgZ2V0UmVjb3ZlcnlGZWVQZXJCeXRlcyhjb2luLCB7IGRlZmF1bHRWYWx1ZTogMTAwIH0pO1xuICB9XG5cbiAgY29uc3QgdjF3YWxsZXQgPSBhd2FpdCBiaXRnby53YWxsZXRzKCkuZ2V0KHsgaWQ6IHBhcmFtcy53YWxsZXRJZCB9KTtcbiAgcmV0dXJuIGF3YWl0IHYxd2FsbGV0LnN3ZWVwKHtcbiAgICAuLi5wYXJhbXMsXG4gICAgZmVlUmF0ZTogcmVjb3ZlcnlGZWVQZXJCeXRlLFxuICB9KTtcbn1cbiJdfQ==
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyUUEsOENBeUpDO0FBcUJELGtEQWtCQztBQUVELDBCQTBCQztBQXZlRCxvREFBNEI7QUFDNUIsb0RBQXVCO0FBQ3ZCLHlEQUEyQztBQUMzQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQVV4Ryw4Q0FBK0M7QUFFL0MsOENBU3lCO0FBR3pCLHlEQUErRDtBQUMvRCw2Q0FBMEM7QUFDMUMsaURBQThDO0FBQzlDLGtDQUE0QztBQUM1Qyw4Q0FBdUQ7QUFldkQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsUUFBZ0IsRUFDaEIsTUFBMEIsRUFDMUIsS0FBYTtJQUViLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUEsZ0JBQU0sRUFBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RELENBQUMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxFQUFFLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxJQUFzQjtJQUMxRCxPQUFPLE1BQU0sSUFBSSwyQkFBWSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUks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RSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM1QixHQUFHLE1BQU07UUFDVCxPQUFPLEVBQUUsa0JBQWtCO0tBQzVCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUMzQixJQUFzQixFQUN0QixLQUFnQixFQUNoQixNQUFxQjtJQU1yQixJQUNFLGdCQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUN6QyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQ3JFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0lBQzdCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN6QixrQkFBa0IsR0FBRyxNQUFNLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsT0FBTyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDMUIsR0FBRyxNQUFNO1FBQ1QsT0FBTyxFQUFFLGtCQUFrQjtLQUM1QixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmNvbnN0IHsgZ2V0SW50ZXJuYWxDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiwgb3V0cHV0U2NyaXB0cywgZ2V0RXh0ZXJuYWxDaGFpbkNvZGUgfSA9IHV0eG9saWIuYml0Z287XG5cbnR5cGUgQ2hhaW5Db2RlID0gdXR4b2xpYi5iaXRnby5DaGFpbkNvZGU7XG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcbnR5cGUgV2FsbGV0VW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PiA9IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudDxUTnVtYmVyPjtcbnR5cGUgV2FsbGV0VW5zcGVudEpTT04gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQgJiB7XG4gIHZhbHVlU3RyaW5nOiBzdHJpbmc7XG59O1xudHlwZSBTY3JpcHRUeXBlMk9mMyA9IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMztcblxuaW1wb3J0IHsgVmlydHVhbFNpemVzIH0gZnJvbSAnQGJpdGdvL3Vuc3BlbnRzJztcblxuaW1wb3J0IHtcbiAgQml0R29CYXNlLFxuICBFcnJvck5vSW5wdXRUb1JlY292ZXIsXG4gIGdldEtyc1Byb3ZpZGVyLFxuICBnZXRCaXAzMktleXMsXG4gIGdldElzS3JzUmVjb3ZlcnksXG4gIGdldElzVW5zaWduZWRTd2VlcCxcbiAgaXNUcmlwbGUsXG4gIGtyc1Byb3ZpZGVycyxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIE11bHRpU2lnQWRkcmVzcyB9IGZyb20gJy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuXG5pbXBvcnQgeyBmb3JDb2luLCBSZWNvdmVyeVByb3ZpZGVyIH0gZnJvbSAnLi9SZWNvdmVyeVByb3ZpZGVyJztcbmltcG9ydCB7IE1lbXBvb2xBcGkgfSBmcm9tICcuL21lbXBvb2xBcGknO1xuaW1wb3J0IHsgQ29pbmdlY2tvQXBpIH0gZnJvbSAnLi9jb2luZ2Vja29BcGknO1xuaW1wb3J0IHsgc2lnbkFuZFZlcmlmeVBzYnQgfSBmcm9tICcuLi9zaWduJztcbmltcG9ydCB7IGdldE1haW5uZXQsIG5ldHdvcmtzIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBPZmZsaW5lVmF1bHRUeEluZm8ge1xuICBpbnB1dHM6IFdhbGxldFVuc3BlbnRKU09OW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVkT2ZmbGluZVZhdWx0VHhJbmZvIHtcbiAgdHhJbmZvOiB7XG4gICAgdW5zcGVudHM6IFdhbGxldFVuc3BlbnRKU09OW107XG4gIH07XG4gIHR4SGV4OiBzdHJpbmc7XG4gIGZlZUluZm86IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgY29pbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoaXMgdHJhbnNmb3JtcyB0aGUgdHhJbmZvIGZyb20gcmVjb3ZlciBpbnRvIHRoZSBmb3JtYXQgdGhhdCBvZmZsaW5lLXNpZ25pbmctdG9vbCBleHBlY3RzXG4gKiBAcGFyYW0gY29pbk5hbWVcbiAqIEBwYXJhbSB0eEluZm9cbiAqIEBwYXJhbSB0eEhleFxuICogQHJldHVybnMge3t0eEhleDogKiwgdHhJbmZvOiB7dW5zcGVudHM6ICp9LCBmZWVJbmZvOiB7fSwgY29pbjogdm9pZH19XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEZvck9mZmxpbmVWYXVsdChcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgdHhJbmZvOiBPZmZsaW5lVmF1bHRUeEluZm8sXG4gIHR4SGV4OiBzdHJpbmdcbik6IEZvcm1hdHRlZE9mZmxpbmVWYXVsdFR4SW5mbyB7XG4gIHJldHVybiB7XG4gICAgdHhIZXgsXG4gICAgdHhJbmZvOiB7XG4gICAgICB1bnNwZW50czogdHhJbmZvLmlucHV0cy5tYXAoKGlucHV0KSA9PiB7XG4gICAgICAgIGFzc2VydChpbnB1dC52YWx1ZVN0cmluZyk7XG4gICAgICAgIHJldHVybiB7IC4uLmlucHV0LCB2YWx1ZVN0cmluZzogaW5wdXQudmFsdWVTdHJpbmcgfTtcbiAgICAgIH0pLFxuICAgIH0sXG4gICAgZmVlSW5mbzoge30sXG4gICAgY29pbjogY29pbk5hbWUsXG4gIH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IG1hcmtldCBwcmljZSBmcm9tIGEgdGhpcmQgcGFydHkgdG8gYmUgdXNlZCBmb3IgcmVjb3ZlcnlcbiAqIFRoaXMgZnVuY3Rpb24gaXMgb25seSBpbnRlbmRlZCBmb3Igbm9uLWJpdGdvIHJlY292ZXJ5IHRyYW5zYWN0aW9ucywgd2hlbiBpdCBpcyBuZWNlc3NhcnlcbiAqIHRvIGNhbGN1bGF0ZSB0aGUgcm91Z2ggZmVlIG5lZWRlZCB0byBwYXkgdG8gS2V5dGVybmFsLiBXZSBhcmUgb2theSB3aXRoIGFwcHJveGltYXRpbmcsXG4gKiBiZWNhdXNlIHRoZSByZXN1bHRpbmcgcHJpY2Ugb2YgdGhpcyBmdW5jdGlvbiBvbmx5IGhhcyBsZXNzIHRoYW4gMSBkb2xsYXIgaW5mbHVlbmNlIG9uIHRoZVxuICogZmVlIHRoYXQgbmVlZHMgdG8gYmUgcGFpZCB0byBLZXl0ZXJuYWwuXG4gKlxuICogU2VlIGNhbGN1bGF0ZUZlZUFtb3VudCBmdW5jdGlvbjogIHJldHVybiBNYXRoLnJvdW5kKGZlZUFtb3VudFVzZCAvIGN1cnJlbnRQcmljZSAqIHNlbGYuZ2V0QmFzZUZhY3RvcigpKTtcbiAqXG4gKiBUaGlzIGVuZCBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgYXMgYW4gYWNjdXJhdGUgZW5kcG9pbnQsIHNpbmNlIHNvbWUgY29pbnMnIHByaWNlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBwcm92aWRlclxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRSZWNvdmVyeU1hcmtldFByaWNlKGNvaW46IEFic3RyYWN0VXR4b0NvaW4pOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gYXdhaXQgbmV3IENvaW5nZWNrb0FwaSgpLmdldFVTRFByaWNlKGNvaW4uZ2V0RmFtaWx5KCkpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGFtb3VudCAoaW4gYmFzZSB1bml0cykgdG8gcGF5IGEgS1JTIHByb3ZpZGVyIHdoZW4gYnVpbGRpbmcgYSByZWNvdmVyeSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGNvaW5cbiAqIEBwYXJhbSBwYXJhbXNcbiAqIEBwYXJhbSBwYXJhbXMucHJvdmlkZXIge1N0cmluZ30gdGhlIEtSUyBwcm92aWRlciB0aGF0IGhvbGRzIHRoZSBiYWNrdXAga2V5XG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRmVlQW1vdW50KGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIHBhcmFtczogeyBwcm92aWRlcjogc3RyaW5nIH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBrcnNQcm92aWRlciA9IGtyc1Byb3ZpZGVyc1twYXJhbXMucHJvdmlkZXJdO1xuXG4gIGlmIChrcnNQcm92aWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBubyBmZWUgc3RydWN0dXJlIHNwZWNpZmllZCBmb3IgcHJvdmlkZXIgJHtwYXJhbXMucHJvdmlkZXJ9YCk7XG4gIH1cblxuICBpZiAoa3JzUHJvdmlkZXIuZmVlVHlwZSA9PT0gJ2ZsYXRVc2QnKSB7XG4gICAgY29uc3QgZmVlQW1vdW50VXNkID0ga3JzUHJvdmlkZXIuZmVlQW1vdW50O1xuICAgIGNvbnN0IGN1cnJlbnRQcmljZTogbnVtYmVyID0gYXdhaXQgZ2V0UmVjb3ZlcnlNYXJrZXRQcmljZShjb2luKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKChmZWVBbW91bnRVc2QgLyBjdXJyZW50UHJpY2UpICogY29pbi5nZXRCYXNlRmFjdG9yKCkpO1xuICB9IGVsc2Uge1xuICAgIC8vIHdlIGNhbiBhZGQgbW9yZSBmZWUgc3RydWN0dXJlcyBoZXJlIGFzIG5lZWRlZCBmb3IgZGlmZmVyZW50IHByb3ZpZGVycywgc3VjaCBhcyBwZXJjZW50YWdlIG9mIHJlY292ZXJ5IGFtb3VudFxuICAgIHRocm93IG5ldyBFcnJvcignRmVlIHN0cnVjdHVyZSBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY292ZXJQYXJhbXMge1xuICBzY2FuPzogbnVtYmVyO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICBiaXRnb0tleTogc3RyaW5nO1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGtyc1Byb3ZpZGVyPzogc3RyaW5nO1xuICBpZ25vcmVBZGRyZXNzVHlwZXM6IFNjcmlwdFR5cGUyT2YzW107XG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIGFwaUtleT86IHN0cmluZztcbiAgdXNlcktleVBhdGg/OiBzdHJpbmc7XG4gIHJlY292ZXJ5UHJvdmlkZXI/OiBSZWNvdmVyeVByb3ZpZGVyO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtYXR0ZWRBZGRyZXNzKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIGFkZHJlc3M6IE11bHRpU2lnQWRkcmVzcykge1xuICAvLyBCbG9ja2NoYWlyIHVzZXMgY2FzaGFkZHIgZm9ybWF0IHdoZW4gcXVlcnlpbmcgdGhlIEFQSSBmb3IgYWRkcmVzcyBpbmZvcm1hdGlvbi4gQ29udmVydCBsZWdhY3kgYWRkcmVzc2VzIHRvIGNhc2hhZGRyXG4gIC8vIGJlZm9yZSBxdWVyeWluZyB0aGUgQVBJLlxuICByZXR1cm4gY29pbi5nZXRDaGFpbigpID09PSAnYmNoJyB8fCBjb2luLmdldENoYWluKCkgPT09ICdiY2hhJ1xuICAgID8gY29pbi5jYW5vbmljYWxBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcywgJ2Nhc2hhZGRyJykuc3BsaXQoJzonKVsxXVxuICAgIDogYWRkcmVzcy5hZGRyZXNzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBxdWVyeUJsb2NrY2hhaW5VbnNwZW50c1BhdGgoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUmVjb3ZlclBhcmFtcyxcbiAgd2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGVcbik6IFByb21pc2U8V2FsbGV0VW5zcGVudDxiaWdpbnQ+W10+IHtcbiAgY29uc3Qgc2NyaXB0VHlwZSA9IHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbik7XG4gIGNvbnN0IGZldGNoUHJldlR4ID1cbiAgICAhdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLmhhc1dpdG5lc3NEYXRhKHNjcmlwdFR5cGUpICYmIGdldE1haW5uZXQoY29pbi5uZXR3b3JrKSAhPT0gbmV0d29ya3MuemNhc2g7XG4gIGNvbnN0IHJlY292ZXJ5UHJvdmlkZXIgPSBwYXJhbXMucmVjb3ZlcnlQcm92aWRlciA/PyBmb3JDb2luKGNvaW4uZ2V0Q2hhaW4oKSwgcGFyYW1zLmFwaUtleSk7XG4gIGNvbnN0IE1BWF9TRVFVRU5USUFMX0FERFJFU1NFU19XSVRIT1VUX1RYUyA9IHBhcmFtcy5zY2FuIHx8IDIwO1xuICBsZXQgbnVtU2VxdWVudGlhbEFkZHJlc3Nlc1dpdGhvdXRUeHMgPSAwO1xuICBjb25zdCBwcmV2VHhDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0UHJldlR4KHR4aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHByZXZUeEhleCA9IHByZXZUeENhY2hlLmdldCh0eGlkKTtcbiAgICBpZiAoIXByZXZUeEhleCkge1xuICAgICAgcHJldlR4SGV4ID0gYXdhaXQgcmVjb3ZlcnlQcm92aWRlci5nZXRUcmFuc2FjdGlvbkhleCh0eGlkKTtcbiAgICAgIHByZXZUeENhY2hlLnNldCh0eGlkLCBwcmV2VHhIZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcHJldlR4SGV4O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2F0aGVyVW5zcGVudHMoYWRkckluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB3YWxsZXRLZXlzRm9yVW5zcGVudCA9IHdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgYWRkckluZGV4KTtcbiAgICBjb25zdCBhZGRyZXNzID0gY29pbi5jcmVhdGVNdWx0aVNpZ0FkZHJlc3Moc2NyaXB0VHlwZSwgMiwgd2FsbGV0S2V5c0ZvclVuc3BlbnQucHVibGljS2V5cyk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWRBZGRyZXNzID0gZ2V0Rm9ybWF0dGVkQWRkcmVzcyhjb2luLCBhZGRyZXNzKTtcbiAgICBjb25zdCBhZGRySW5mbyA9IGF3YWl0IHJlY292ZXJ5UHJvdmlkZXIuZ2V0QWRkcmVzc0luZm8oZm9ybWF0dGVkQWRkcmVzcyk7XG4gICAgLy8gd2UgdXNlIHR4Q291bnQgaGVyZSBiZWNhdXNlIGl0IGltcGxpZXMgdXNhZ2UgLSBoYXZpbmcgdHgnZXMgbWVhbnMgdGhlIGFkZHIgd2FzIGdlbmVyYXRlZCBhbmQgdXNlZFxuICAgIGlmIChhZGRySW5mby50eENvdW50ID09PSAwKSB7XG4gICAgICBudW1TZXF1ZW50aWFsQWRkcmVzc2VzV2l0aG91dFR4cysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1TZXF1ZW50aWFsQWRkcmVzc2VzV2l0aG91dFR4cyA9IDA7XG5cbiAgICAgIGlmIChhZGRySW5mby5iYWxhbmNlID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgYW4gYWRkcmVzcyB3aXRoIGJhbGFuY2U6ICR7YWRkcmVzcy5hZGRyZXNzfSB3aXRoIGJhbGFuY2UgJHthZGRySW5mby5iYWxhbmNlfWApO1xuICAgICAgICBjb25zdCBhZGRyZXNzVW5zcGVudHMgPSBhd2FpdCByZWNvdmVyeVByb3ZpZGVyLmdldFVuc3BlbnRzRm9yQWRkcmVzc2VzKFtmb3JtYXR0ZWRBZGRyZXNzXSk7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZFVuc3BlbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgYWRkcmVzc1Vuc3BlbnRzLm1hcChhc3luYyAodSk6IFByb21pc2U8V2FsbGV0VW5zcGVudDxiaWdpbnQ+PiA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHR4aWQsIHZvdXQgfSA9IHV0eG9saWIuYml0Z28ucGFyc2VPdXRwdXRJZCh1LmlkKTtcbiAgICAgICAgICAgIGxldCB2YWwgPSBCaWdJbnQodS52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAvLyBibG9ja2NoYWlyIHJldHVybnMgdGhlIG51bWJlciB3aXRoIHRoZSBjb3JyZWN0IHByZWNpc2lvbiwgYnV0IGluIG51bWJlciBmb3JtYXRcbiAgICAgICAgICAgICAgLy8ganNvbiBwYXJzZSB3b24ndCBwYXJzZSBpdCBjb3JyZWN0bHksIHNvIHdlIHJlcXVlcnkgdGhlIHR4aWQgZm9yIHRoZSB0eCBoZXggdG8gZGVjb2RlIGhlcmVcbiAgICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih1LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR4SGV4ID0gYXdhaXQgZ2V0UHJldlR4KHR4aWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR4ID0gY29pbi5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXg8YmlnaW50Pih0eEhleCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdHgub3V0c1t2b3V0XS52YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGhlIGFwaSBtYXkgcmV0dXJuIGNhc2hhZGRyJ3MgaW5zdGVhZCBvZiBsZWdhY3kgZm9yIEJDSCBhbmQgQkNIQVxuICAgICAgICAgICAgLy8gZG93bnN0cmVhbSBwcm9jZXNzZXMncyBvbmx5IGV4cGVjdCBsZWdhY3kgYWRkcmVzc2VzXG4gICAgICAgICAgICB1ID0geyAuLi51LCBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3ModS5hZGRyZXNzKSB9O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4udSxcbiAgICAgICAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgICAgICAgY2hhaW46IGNoYWluLFxuICAgICAgICAgICAgICBpbmRleDogYWRkckluZGV4LFxuICAgICAgICAgICAgICBwcmV2VHg6IGZldGNoUHJldlR4ID8gQnVmZmVyLmZyb20oYXdhaXQgZ2V0UHJldlR4KHR4aWQpLCAnaGV4JykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9IGFzIFdhbGxldFVuc3BlbnQ8YmlnaW50PjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHdhbGxldFVuc3BlbnRzLnB1c2goLi4ucHJvY2Vzc2VkVW5zcGVudHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChudW1TZXF1ZW50aWFsQWRkcmVzc2VzV2l0aG91dFR4cyA+PSBNQVhfU0VRVUVOVElBTF9BRERSRVNTRVNfV0lUSE9VVF9UWFMpIHtcbiAgICAgIC8vIHN0b3Agc2VhcmNoaW5nIGZvciBhZGRyZXNzZXMgd2l0aCB1bnNwZW50cyBpbiB0aGVtLCB3ZSd2ZSBmb3VuZCAke01BWF9TRVFVRU5USUFMX0FERFJFU1NFU19XSVRIT1VUX1RYU30gaW4gYSByb3cgd2l0aCBub25lXG4gICAgICAvLyB3ZSBhcmUgZG9uZVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBnYXRoZXJVbnNwZW50cyhhZGRySW5kZXggKyAxKTtcbiAgfVxuXG4gIC8vIGdldCB1bnNwZW50cyBmb3IgdGhlc2UgYWRkcmVzc2VzXG5cbiAgY29uc3Qgd2FsbGV0VW5zcGVudHM6IFdhbGxldFVuc3BlbnQ8YmlnaW50PltdID0gW107XG4gIC8vIFRoaXMgd2lsbCBwb3B1bGF0ZSB3YWxsZXRBZGRyZXNzZXNcbiAgYXdhaXQgZ2F0aGVyVW5zcGVudHMoMCk7XG5cbiAgaWYgKHdhbGxldFVuc3BlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIENvdWxkbid0IGZpbmQgYW55IGFkZHJlc3NlcyB3aXRoIGZ1bmRzXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIHdhbGxldFVuc3BlbnRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZWNvdmVyeUZlZVBlckJ5dGVzKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB7IGRlZmF1bHRWYWx1ZSB9OiB7IGRlZmF1bHRWYWx1ZTogbnVtYmVyIH1cbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IE1lbXBvb2xBcGkuZm9yQ29pbihjb2luLmdldENoYWluKCkpLmdldFJlY292ZXJ5RmVlUGVyQnl0ZXMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZGlyKGUpO1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbiA9IHtcbiAgaW5wdXRzPzogV2FsbGV0VW5zcGVudEpTT05bXTtcbiAgdHJhbnNhY3Rpb25IZXg6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgcmVjb3ZlcnlBbW91bnQ6IG51bWJlcjtcbiAgcmVjb3ZlcnlBbW91bnRTdHJpbmc6IHN0cmluZztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHby5cbiAqXG4gKiBSZXR1cm5zIHRyYW5zYWN0aW9uIGhleCBpbiBsZWdhY3kgZm9ybWF0IGZvciB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbiwgaGFsZiBzaWduZWQgYmFja3VwIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGggS1JTIHByb3ZpZGVyIChvbmx5IGtleXRlcm5hbCksXG4gKiBmdWxseSBzaWduZWQgYmFja3VwIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgYSBLUlMgcHJvdmlkZXIuXG4gKlxuICogUmV0dXJucyBQU0JUIGhleCBmb3IgaGFsZiBzaWduZWQgYmFja3VwIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGggS1JTIHByb3ZpZGVyIChleGNsdWRpbmcga2V5dGVybmFsKVxuICogRm9yIFBTQlQgaGV4IGNhc2VzLCBVbnNwZW50cyBhcmUgbm90IHJlcXVpcmVkIGluIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSBjb2luXG4gKiBAcGFyYW0gYml0Z29cbiAqIEBwYXJhbSBwYXJhbXNcbiAqIC0gdXNlcktleTogW2VuY3J5cHRlZF0geHBydiwgb3IgeHB1YlxuICogLSBiYWNrdXBLZXk6IFtlbmNyeXB0ZWRdIHhwcnYsIG9yIHhwdWIgaWYgdGhlIHhwcnYgaXMgaGVsZCBieSBhIEtSUyBwcm92aWRlclxuICogLSB3YWxsZXRQYXNzcGhyYXNlOiBuZWNlc3NhcnkgaWYgb25lIG9mIHRoZSB4cHJ2cyBpcyBlbmNyeXB0ZWRcbiAqIC0gYml0Z29LZXk6IHhwdWJcbiAqIC0ga3JzUHJvdmlkZXI6IG5lY2Vzc2FyeSBpZiBiYWNrdXAga2V5IGlzIGhlbGQgYnkgS1JTXG4gKiAtIHJlY292ZXJ5RGVzdGluYXRpb246IHRhcmdldCBhZGRyZXNzIHRvIHNlbmQgcmVjb3ZlcmVkIGZ1bmRzIHRvXG4gKiAtIHNjYW46IHRoZSBhbW91bnQgb2YgY29uc2VjdXRpdmUgYWRkcmVzc2VzIHdpdGhvdXQgdW5zcGVudHMgdG8gc2NhbiB0aHJvdWdoIGJlZm9yZSBzdG9wcGluZ1xuICogLSBpZ25vcmVBZGRyZXNzVHlwZXM6IChvcHRpb25hbCkgc2NyaXB0cyB0byBpZ25vcmVcbiAqICAgICAgICBmb3IgZXhhbXBsZTogWydwMnNoUDJ3c2gnLCAncDJ3c2gnXSB3aWxsIHByZXZlbnQgY29kZSBmcm9tIGNoZWNraW5nIGZvciB3cmFwcGVkLXNlZ3dpdCBhbmQgbmF0aXZlLXNlZ3dpdCBjaGFpbnMgb24gdGhlIHB1YmxpYyBibG9jayBleHBsb3JlcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhY2t1cEtleVJlY292ZXJ5KFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBiaXRnbzogQml0R29CYXNlLFxuICBwYXJhbXM6IFJlY292ZXJQYXJhbXNcbik6IFByb21pc2U8QmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbiB8IEZvcm1hdHRlZE9mZmxpbmVWYXVsdFR4SW5mbz4ge1xuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbXMudXNlcktleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcktleScpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1zLmJhY2t1cEtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gIH1cblxuICBpZiAoXG4gICAgXy5pc1VuZGVmaW5lZChwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbikgfHxcbiAgICAhY29pbi5pc1ZhbGlkQWRkcmVzcyhwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiwgeyBhbnlGb3JtYXQ6IHRydWUgfSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXMuc2NhbikgJiYgKCFfLmlzSW50ZWdlcihwYXJhbXMuc2NhbikgfHwgcGFyYW1zLnNjYW4gPCAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2NhbiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICB9XG5cbiAgY29uc3QgaXNLcnNSZWNvdmVyeSA9IGdldElzS3JzUmVjb3ZlcnkocGFyYW1zKTtcbiAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gZ2V0SXNVbnNpZ25lZFN3ZWVwKHBhcmFtcyk7XG4gIGNvbnN0IHJlc3BvbnNlVHhGb3JtYXQgPSBpc1Vuc2lnbmVkU3dlZXAgfHwgIWlzS3JzUmVjb3ZlcnkgfHwgcGFyYW1zLmtyc1Byb3ZpZGVyID09PSAna2V5dGVybmFsJyA/ICdsZWdhY3knIDogJ3BzYnQnO1xuXG4gIGNvbnN0IGtyc1Byb3ZpZGVyID0gaXNLcnNSZWNvdmVyeSA/IGdldEtyc1Byb3ZpZGVyKGNvaW4sIHBhcmFtcy5rcnNQcm92aWRlcikgOiB1bmRlZmluZWQ7XG5cbiAgLy8gY2hlY2sgd2hldGhlciBrZXkgbWF0ZXJpYWwgYW5kIHBhc3N3b3JkIGF1dGhlbnRpY2F0ZSB0aGUgdXNlcnMgYW5kIHJldHVybiBwYXJlbnQga2V5cyBvZiBhbGwgdGhyZWUga2V5cyBvZiB0aGUgd2FsbGV0XG4gIGNvbnN0IGtleXMgPSBnZXRCaXAzMktleXMoYml0Z28sIHBhcmFtcywgeyByZXF1aXJlQml0R29YcHViOiB0cnVlIH0pO1xuICBpZiAoIWlzVHJpcGxlKGtleXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBrZXkgdHJpcGxlYCk7XG4gIH1cbiAgY29uc3Qgd2FsbGV0S2V5cyA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKGtleXMsIFtcbiAgICBwYXJhbXMudXNlcktleVBhdGggfHwgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICAgIHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgICB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gIF0pO1xuXG4gIGNvbnN0IHVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PGJpZ2ludD5bXSA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGFkZHJlc3NUeXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUoYWRkcmVzc1R5cGUpICYmICFwYXJhbXMuaWdub3JlQWRkcmVzc1R5cGVzPy5pbmNsdWRlcyhhZGRyZXNzVHlwZSlcbiAgICAgICAgKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChxdWVyaWVzLCBhZGRyZXNzVHlwZSkgPT4gW1xuICAgICAgICAgICAgLi4ucXVlcmllcyxcbiAgICAgICAgICAgIHF1ZXJ5QmxvY2tjaGFpblVuc3BlbnRzUGF0aChjb2luLCBwYXJhbXMsIHdhbGxldEtleXMsIGdldEV4dGVybmFsQ2hhaW5Db2RlKGFkZHJlc3NUeXBlKSksXG4gICAgICAgICAgICBxdWVyeUJsb2NrY2hhaW5VbnNwZW50c1BhdGgoY29pbiwgcGFyYW1zLCB3YWxsZXRLZXlzLCBnZXRJbnRlcm5hbENoYWluQ29kZShhZGRyZXNzVHlwZSkpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgW10gYXMgUHJvbWlzZTxXYWxsZXRVbnNwZW50PGJpZ2ludD5bXT5bXVxuICAgICAgICApXG4gICAgKVxuICApLmZsYXQoKTtcblxuICAvLyBFeGVjdXRlIHRoZSBxdWVyaWVzIGFuZCBnYXRoZXIgdGhlIHVuc3BlbnRzXG4gIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnVuc3BlbnRTdW0odW5zcGVudHMsICdiaWdpbnQnKTtcbiAgaWYgKHRvdGFsSW5wdXRBbW91bnQgPD0gQmlnSW50KDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTm9JbnB1dFRvUmVjb3ZlcigpO1xuICB9XG5cbiAgLy8gQnVpbGQgdGhlIHBzYnRcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZvck5ldHdvcmsoeyBuZXR3b3JrOiBjb2luLm5ldHdvcmsgfSk7XG4gIC8vIHhwdWJzIGNhbiBiZWNvbWUgaGFuZHkgZm9yIG1hbnkgdGhpbmdzLlxuICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHBzYnQsIHdhbGxldEtleXMpO1xuICBjb25zdCB0eEluZm8gPSB7fSBhcyBCYWNrdXBLZXlSZWNvdmVyeVRyYW5zYW5zYWN0aW9uO1xuICBjb25zdCBmZWVQZXJCeXRlOiBudW1iZXIgPSBhd2FpdCBnZXRSZWNvdmVyeUZlZVBlckJ5dGVzKGNvaW4sIHsgZGVmYXVsdFZhbHVlOiAxMDAgfSk7XG5cbiAgLy8gS1JTIHJlY292ZXJ5IHRyYW5zYWN0aW9ucyBoYXZlIGEgMm5kIG91dHB1dCB0byBwYXkgdGhlIHJlY292ZXJ5IGZlZSwgbGlrZSBwYXlnbyBmZWVzLiBVc2UgcDJ3c2ggb3V0cHV0cyBiZWNhdXNlXG4gIC8vIHRoZXkgYXJlIHRoZSBsYXJnZXN0IG91dHB1dHMgYW5kIHRodXMgdGhlIG1vc3QgY29uc2VydmF0aXZlIGVzdGltYXRlIHRvIHVzZSBpbiBjYWxjdWxhdGluZyBmZWVzLiBBbHNvIHVzZVxuICAvLyBzZWd3aXQgb3ZlcmhlYWQgc2l6ZSBhbmQgcDJzaCBpbnB1dHMgZm9yIHRoZSBzYW1lIHJlYXNvbi5cbiAgY29uc3Qgb3V0cHV0U2l6ZSA9IChpc0tyc1JlY292ZXJ5ID8gMiA6IDEpICogVmlydHVhbFNpemVzLnR4UDJ3c2hPdXRwdXRTaXplO1xuICBjb25zdCBhcHByb3hpbWF0ZVNpemUgPSBWaXJ0dWFsU2l6ZXMudHhTZWdPdmVyaGVhZFZTaXplICsgb3V0cHV0U2l6ZSArIFZpcnR1YWxTaXplcy50eFAyc2hJbnB1dFNpemUgKiB1bnNwZW50cy5sZW5ndGg7XG4gIGNvbnN0IGFwcHJveGltYXRlRmVlID0gQmlnSW50KGFwcHJveGltYXRlU2l6ZSAqIGZlZVBlckJ5dGUpO1xuXG4gIHR4SW5mby5pbnB1dHMgPVxuICAgIHJlc3BvbnNlVHhGb3JtYXQgPT09ICdsZWdhY3knXG4gICAgICA/IHVuc3BlbnRzLm1hcCgodSkgPT4gKHsgLi4udSwgdmFsdWU6IE51bWJlcih1LnZhbHVlKSwgdmFsdWVTdHJpbmc6IHUudmFsdWUudG9TdHJpbmcoKSwgcHJldlR4OiB1bmRlZmluZWQgfSkpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICB1bnNwZW50cy5mb3JFYWNoKCh1bnNwZW50KSA9PiB7XG4gICAgdXR4b2xpYi5iaXRnby5hZGRXYWxsZXRVbnNwZW50VG9Qc2J0KHBzYnQsIHVuc3BlbnQsIHdhbGxldEtleXMsICd1c2VyJywgJ2JhY2t1cCcpO1xuICB9KTtcblxuICBsZXQga3JzRmVlID0gQmlnSW50KDApO1xuICBpZiAoaXNLcnNSZWNvdmVyeSAmJiBwYXJhbXMua3JzUHJvdmlkZXIpIHtcbiAgICB0cnkge1xuICAgICAga3JzRmVlID0gQmlnSW50KGF3YWl0IGNhbGN1bGF0ZUZlZUFtb3VudChjb2luLCB7IHByb3ZpZGVyOiBwYXJhbXMua3JzUHJvdmlkZXIgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gRG9uJ3QgbGV0IHRoaXMgZXJyb3IgYmxvY2sgdGhlIHJlY292ZXJ5IC1cbiAgICAgIGNvbnNvbGUuZGlyKGVycik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVjb3ZlcnlBbW91bnQgPSB0b3RhbElucHV0QW1vdW50IC0gYXBwcm94aW1hdGVGZWUgLSBrcnNGZWU7XG5cbiAgaWYgKHJlY292ZXJ5QW1vdW50IDwgQmlnSW50KDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0aGlzIHdhbGxldFxcJ3MgYmFsYW5jZSBpcyB0b28gbG93IHRvIHBheSB0aGUgZmVlcyBzcGVjaWZpZWQgYnkgdGhlIEtSUyBwcm92aWRlci4gXG4gICAgICAgICAgRXhpc3RpbmcgYmFsYW5jZSBvbiB3YWxsZXQ6ICR7dG90YWxJbnB1dEFtb3VudC50b1N0cmluZygpfS4gRXN0aW1hdGVkIG5ldHdvcmsgZmVlIGZvciB0aGUgcmVjb3ZlcnkgdHJhbnNhY3Rpb25cbiAgICAgICAgICA6ICR7YXBwcm94aW1hdGVGZWUudG9TdHJpbmcoKX0sIEtSUyBmZWUgdG8gcGF5OiAke2tyc0ZlZS50b1N0cmluZygpfS4gQWZ0ZXIgZGVkdWN0aW5nIGZlZXMsIHlvdXIgdG90YWwgXG4gICAgICAgICAgcmVjb3ZlcmFibGUgYmFsYW5jZSBpcyAke3JlY292ZXJ5QW1vdW50LnRvU3RyaW5nKCl9YCk7XG4gIH1cblxuICBjb25zdCByZWNvdmVyeU91dHB1dFNjcmlwdCA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiwgY29pbi5uZXR3b3JrKTtcbiAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHJlY292ZXJ5T3V0cHV0U2NyaXB0LCB2YWx1ZTogcmVjb3ZlcnlBbW91bnQgfSk7XG5cbiAgaWYgKGtyc1Byb3ZpZGVyICYmIGtyc0ZlZSA+IEJpZ0ludCgwKSkge1xuICAgIGlmICgha3JzUHJvdmlkZXIuZmVlQWRkcmVzc2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGtleVByb3ZpZGVyIG11c3QgZGVmaW5lIGZlZUFkZHJlc3Nlc2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGtyc0ZlZUFkZHJlc3MgPSBrcnNQcm92aWRlci5mZWVBZGRyZXNzZXNbY29pbi5nZXRDaGFpbigpXTtcblxuICAgIGlmICgha3JzRmVlQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGlzIEtSUyBwcm92aWRlciBoYXMgbm90IGNvbmZpZ3VyZWQgdGhlaXIgZmVlIHN0cnVjdHVyZSB5ZXQgLSByZWNvdmVyeSBjYW5ub3QgYmUgY29tcGxldGVkJyk7XG4gICAgfVxuXG4gICAgY29uc3Qga3JzRmVlT3V0cHV0U2NyaXB0ID0gdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGtyc0ZlZUFkZHJlc3MsIGNvaW4ubmV0d29yayk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IGtyc0ZlZU91dHB1dFNjcmlwdCwgdmFsdWU6IGtyc0ZlZSB9KTtcbiAgfVxuXG4gIGlmIChpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAvLyBUT0RPIEJUQy0zMTcgLSBXaGVuIHJlYWR5IHRvIFBTQlRpZnkgT1ZDLCBzZW5kIHBzYnQgaGV4IGFuZCBza2lwIHVuc3BlbnRzIGluIHJlc3BvbnNlLlxuICAgIGNvbnN0IHR4SGV4ID0gcHNidC5nZXRVbnNpZ25lZFR4KCkudG9CdWZmZXIoKS50b1N0cmluZygnaGV4Jyk7XG4gICAgcmV0dXJuIGZvcm1hdEZvck9mZmxpbmVWYXVsdChjb2luLmdldENoYWluKCksIHR4SW5mbyBhcyBPZmZsaW5lVmF1bHRUeEluZm8sIHR4SGV4KTtcbiAgfSBlbHNlIHtcbiAgICBzaWduQW5kVmVyaWZ5UHNidChwc2J0LCB3YWxsZXRLZXlzLnVzZXIsIHsgaXNMYXN0U2lnbmF0dXJlOiBmYWxzZSB9KTtcbiAgICBpZiAoaXNLcnNSZWNvdmVyeSkge1xuICAgICAgLy8gVGhlIEtSUyBwcm92aWRlciBrZXl0ZXJuYWwgc29sZWx5IHN1cHBvcnRzIFAyU0gsIFAyV1NILCBhbmQgUDJTSC1QMldTSCBpbnB1dCBzY3JpcHQgdHlwZXMuXG4gICAgICAvLyBJdCBjdXJyZW50bHkgdXNlcyBhbiBvdXRkYXRlZCBCaXRHb0pTIFNESywgd2hpY2ggcmVsaWVzIG9uIGEgbGVnYWN5IHRyYW5zYWN0aW9uIGJ1aWxkZXIgZm9yIGNvc2lnbmluZy5cbiAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHVwZ3JhZGluZyB0aGUga2V5dGVybmFsIGNvZGUgcHJlc2VudHMgY2hhbGxlbmdlcyxcbiAgICAgIC8vIHdoaWNoIGhpbmRlcnMgdGhlIGludGVncmF0aW9uIG9mIHRoZSBsYXRlc3QgQml0R29KUyBTREsgd2l0aCBQU0JUIHNpZ25pbmcgc3VwcG9ydC5cbiAgICAgIHR4SW5mby50cmFuc2FjdGlvbkhleCA9XG4gICAgICAgIHBhcmFtcy5rcnNQcm92aWRlciA9PT0gJ2tleXRlcm5hbCdcbiAgICAgICAgICA/IHV0eG9saWIuYml0Z28uZXh0cmFjdFAybXNPbmx5SGFsZlNpZ25lZFR4KHBzYnQpLnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgOiBwc2J0LnRvSGV4KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR4ID0gc2lnbkFuZFZlcmlmeVBzYnQocHNidCwgd2FsbGV0S2V5cy5iYWNrdXAsIHsgaXNMYXN0U2lnbmF0dXJlOiB0cnVlIH0pO1xuICAgICAgdHhJbmZvLnRyYW5zYWN0aW9uSGV4ID0gdHgudG9CdWZmZXIoKS50b1N0cmluZygnaGV4Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzS3JzUmVjb3ZlcnkpIHtcbiAgICB0eEluZm8uY29pbiA9IGNvaW4uZ2V0Q2hhaW4oKTtcbiAgICB0eEluZm8uYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleTtcbiAgICB0eEluZm8ucmVjb3ZlcnlBbW91bnQgPSBOdW1iZXIocmVjb3ZlcnlBbW91bnQpO1xuICAgIHR4SW5mby5yZWNvdmVyeUFtb3VudFN0cmluZyA9IHJlY292ZXJ5QW1vdW50LnRvU3RyaW5nKCk7XG4gIH1cblxuICByZXR1cm4gdHhJbmZvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpdEdvVjFVbnNwZW50IHtcbiAgdHhfaGFzaDogc3RyaW5nO1xuICB0eF9vdXRwdXRfbjogbnVtYmVyO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFYxU3dlZXBQYXJhbXMge1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG4gIHVuc3BlbnRzOiBCaXRHb1YxVW5zcGVudFtdO1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgb3RwOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVjFSZWNvdmVyUGFyYW1zIGV4dGVuZHMgT21pdDxWMVN3ZWVwUGFyYW1zLCAnb3RwJz4ge1xuICBiYWNrdXBLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHYxQmFja3VwS2V5UmVjb3ZlcnkoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHBhcmFtczogVjFSZWNvdmVyUGFyYW1zXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoXG4gICAgXy5pc1VuZGVmaW5lZChwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbikgfHxcbiAgICAhY29pbi5pc1ZhbGlkQWRkcmVzcyhwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiwgeyBhbnlGb3JtYXQ6IHRydWUgfSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgfVxuXG4gIGNvbnN0IHJlY292ZXJ5RmVlUGVyQnl0ZSA9IGF3YWl0IGdldFJlY292ZXJ5RmVlUGVyQnl0ZXMoY29pbiwgeyBkZWZhdWx0VmFsdWU6IDEwMCB9KTtcbiAgY29uc3QgdjF3YWxsZXQgPSBhd2FpdCBiaXRnby53YWxsZXRzKCkuZ2V0KHsgaWQ6IHBhcmFtcy53YWxsZXRJZCB9KTtcbiAgcmV0dXJuIGF3YWl0IHYxd2FsbGV0LnJlY292ZXIoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBmZWVSYXRlOiByZWNvdmVyeUZlZVBlckJ5dGUsXG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdjFTd2VlcChcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBWMVN3ZWVwUGFyYW1zXG4pOiBQcm9taXNlPHtcbiAgdHg6IHN0cmluZztcbiAgaGFzaDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbn0+IHtcbiAgaWYgKFxuICAgIF8uaXNVbmRlZmluZWQocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pIHx8XG4gICAgIWNvaW4uaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sIHsgYW55Rm9ybWF0OiB0cnVlIH0pXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByZWNvdmVyeURlc3RpbmF0aW9uJyk7XG4gIH1cblxuICBsZXQgcmVjb3ZlcnlGZWVQZXJCeXRlID0gMTAwO1xuICBpZiAoYml0Z28uZW52ID09PSAncHJvZCcpIHtcbiAgICByZWNvdmVyeUZlZVBlckJ5dGUgPSBhd2FpdCBnZXRSZWNvdmVyeUZlZVBlckJ5dGVzKGNvaW4sIHsgZGVmYXVsdFZhbHVlOiAxMDAgfSk7XG4gIH1cblxuICBjb25zdCB2MXdhbGxldCA9IGF3YWl0IGJpdGdvLndhbGxldHMoKS5nZXQoeyBpZDogcGFyYW1zLndhbGxldElkIH0pO1xuICByZXR1cm4gYXdhaXQgdjF3YWxsZXQuc3dlZXAoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBmZWVSYXRlOiByZWNvdmVyeUZlZVBlckJ5dGUsXG4gIH0pO1xufVxuIl19
@@ -1,7 +1,4 @@
1
- /**
2
- * @prettier
3
- */
4
- import * as superagent from 'superagent';
1
+ import superagent from 'superagent';
5
2
  import { BitGoJsError } from '@bitgo/sdk-core';
6
3
  export declare class ApiNotImplementedError extends BitGoJsError {
7
4
  constructor(coinName: string);
@@ -1 +1 @@
1
- {"version":3,"file":"baseApi.d.ts","sourceRoot":"","sources":["../../../src/recovery/baseApi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,eAAgB,SAAQ,YAAY;gBACnC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM;IAI/C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe;IAInF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe;CAGtF;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,qBAAa,OAAO;IACC,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAS5B,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,MAAM,GAAE,cAAmB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IA4BvB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAInE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAGpF"}
1
+ {"version":3,"file":"baseApi.d.ts","sourceRoot":"","sources":["../../../src/recovery/baseApi.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,QAAQ,EAAE,MAAM;CAG7B;AAED,qBAAa,eAAgB,SAAQ,YAAY;gBACnC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM;IAI/C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe;IAInF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe;CAGtF;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,qBAAa,OAAO;IACC,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAS5B,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,MAAM,GAAE,cAAmB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IA4BvB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAInE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAGpF"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.BaseApi = exports.ApiRequestError = exports.ApiNotImplementedError = void 0;
4
- /**
5
- * @prettier
6
- */
7
- const superagent = require("superagent");
7
+ const superagent_1 = __importDefault(require("superagent"));
8
8
  const sdk_core_1 = require("@bitgo/sdk-core");
9
9
  class ApiNotImplementedError extends sdk_core_1.BitGoJsError {
10
10
  constructor(coinName) {
@@ -41,7 +41,7 @@ class BaseApi {
41
41
  const url = this.baseUrl + path;
42
42
  let response;
43
43
  try {
44
- response = await superagent(method, url)
44
+ response = await (0, superagent_1.default)(method, url)
45
45
  .retry(params.retry)
46
46
  .send(requestBody);
47
47
  }
@@ -70,4 +70,4 @@ class BaseApi {
70
70
  }
71
71
  }
72
72
  exports.BaseApi = BaseApi;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWNvdmVyeS9iYXNlQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLDhDQUErQztBQUUvQyxNQUFhLHNCQUF1QixTQUFRLHVCQUFZO0lBQ3RELFlBQVksUUFBZ0I7UUFDMUIsS0FBSyxDQUFDLGdDQUFnQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUpELHdEQUlDO0FBRUQsTUFBYSxlQUFnQixTQUFRLHVCQUFZO0lBQy9DLFlBQVksR0FBVyxFQUFFLE1BQXNCO1FBQzdDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBdUIsRUFBRSxNQUFzQjtRQUMvRCxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUF3QixFQUFFLE1BQXNCO1FBQ2pFLE9BQU8sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQztBQVVELE1BQWEsT0FBTztJQUNsQixZQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQ1gsTUFBYyxFQUNkLElBQVksRUFDWixXQUFnQyxFQUNoQyxTQUF5QixFQUFFO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN2RDtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSTtZQUNGLFFBQVEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2lCQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsSUFBSSxDQUFDLFdBQXNDLENBQUMsQ0FBQztTQUNqRDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxlQUFlLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsT0FBTztZQUNMLEdBQUcsQ0FBSSxDQUFpQjtnQkFDdEIsSUFBSTtvQkFDRixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3pCO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNuQztZQUNILENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBSSxJQUFZLEVBQUUsTUFBdUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLENBQUksSUFBWSxFQUFFLElBQWEsRUFBRSxNQUF1QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBbERELDBCQWtEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIHN1cGVyYWdlbnQgZnJvbSAnc3VwZXJhZ2VudCc7XG5pbXBvcnQgeyBCaXRHb0pzRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgQXBpTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgYXBpIG5vdCBpbXBsZW1lbnRlZCBmb3IgY29pbiAke2NvaW5OYW1lfWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZywgcmVhc29uOiBFcnJvciB8IHN0cmluZykge1xuICAgIHN1cGVyKGBlcnJvciBpbiBBUEkgcmVxdWVzdDogJHt1cmx9OiAke3JlYXNvbn1gKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSZXF1ZXN0KHJlcTogc3VwZXJhZ2VudC5SZXF1ZXN0LCByZWFzb246IEVycm9yIHwgc3RyaW5nKTogQXBpUmVxdWVzdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IEFwaVJlcXVlc3RFcnJvcihyZXEudG9TdHJpbmcoKSwgcmVhc29uKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSZXNwb25zZShyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UsIHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpOiBBcGlSZXF1ZXN0RXJyb3Ige1xuICAgIHJldHVybiBuZXcgQXBpUmVxdWVzdEVycm9yKHJlcy5oZWFkZXIsIHJlYXNvbik7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdE9wdGlvbnMgPSB7XG4gIHJldHJ5PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2U8VD4gPSB7XG4gIG1hcDxWPihmOiAoYm9keTogVCkgPT4gVik6IFY7XG59O1xuXG5leHBvcnQgY2xhc3MgQmFzZUFwaSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAoIWJhc2VVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYXNlVXJsIG11c3Qgc3RhcnQgd2l0aCBodHRwczovL2ApO1xuICAgIH1cbiAgICBpZiAoYmFzZVVybC5lbmRzV2l0aChgL2ApKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhc2VVcmwgbXVzdCBub3QgZW5kIHdpdGggc2xhc2ggKC8pYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVxdWVzdDxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcmVxdWVzdEJvZHk6IHVua25vd24gfCB1bmRlZmluZWQsXG4gICAgcGFyYW1zOiBSZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8UmVzcG9uc2U8VD4+IHtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aChwYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXRoIG11c3Qgc3RhcnQgd2l0aCAnLycgY2hhcmFjdGVyYCk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArIHBhdGg7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHN1cGVyYWdlbnQobWV0aG9kLCB1cmwpXG4gICAgICAgIC5yZXRyeShwYXJhbXMucmV0cnkpXG4gICAgICAgIC5zZW5kKHJlcXVlc3RCb2R5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgQXBpUmVxdWVzdEVycm9yKHVybCwgZSk7XG4gICAgfVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlSZXF1ZXN0RXJyb3IodXJsLCBgc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXNDb2RlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtYXA8Vj4oZjogKGJvZHk6IFQpID0+IFYpOiBWIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZihyZXNwb25zZS5ib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBBcGlSZXF1ZXN0RXJyb3IodXJsLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0PFQ+KHBhdGg6IHN0cmluZywgcGFyYW1zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnZ2V0JywgcGF0aCwgdW5kZWZpbmVkLCBwYXJhbXMpO1xuICB9XG5cbiAgcG9zdDxUPihwYXRoOiBzdHJpbmcsIGJvZHk6IHVua25vd24sIHBhcmFtcz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ3Bvc3QnLCBwYXRoLCBib2R5LCBwYXJhbXMpO1xuICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWNvdmVyeS9iYXNlQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDREQUFvQztBQUNwQyw4Q0FBK0M7QUFFL0MsTUFBYSxzQkFBdUIsU0FBUSx1QkFBWTtJQUN0RCxZQUFZLFFBQWdCO1FBQzFCLEtBQUssQ0FBQyxnQ0FBZ0MsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVELE1BQWEsZUFBZ0IsU0FBUSx1QkFBWTtJQUMvQyxZQUFZLEdBQVcsRUFBRSxNQUFzQjtRQUM3QyxLQUFLLENBQUMseUJBQXlCLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQXVCLEVBQUUsTUFBc0I7UUFDL0QsT0FBTyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBd0IsRUFBRSxNQUFzQjtRQUNqRSxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBWkQsMENBWUM7QUFVRCxNQUFhLE9BQU87SUFDbEIsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQ1gsTUFBYyxFQUNkLElBQVksRUFDWixXQUFnQyxFQUNoQyxTQUF5QixFQUFFO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLFFBQVEsQ0FBQztRQUNiLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxNQUFNLElBQUEsb0JBQVUsRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2lCQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDbkIsSUFBSSxDQUFDLFdBQXNDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLGVBQWUsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE9BQU87WUFDTCxHQUFHLENBQUksQ0FBaUI7Z0JBQ3RCLElBQUksQ0FBQztvQkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxNQUFNLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBSSxJQUFZLEVBQUUsTUFBdUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLENBQUksSUFBWSxFQUFFLElBQWEsRUFBRSxNQUF1QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBbERELDBCQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdXBlcmFnZW50IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0IHsgQml0R29Kc0Vycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIEFwaU5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihjb2luTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGFwaSBub3QgaW1wbGVtZW50ZWQgZm9yIGNvaW4gJHtjb2luTmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpUmVxdWVzdEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcsIHJlYXNvbjogRXJyb3IgfCBzdHJpbmcpIHtcbiAgICBzdXBlcihgZXJyb3IgaW4gQVBJIHJlcXVlc3Q6ICR7dXJsfTogJHtyZWFzb259YCk7XG4gIH1cblxuICBzdGF0aWMgZm9yUmVxdWVzdChyZXE6IHN1cGVyYWdlbnQuUmVxdWVzdCwgcmVhc29uOiBFcnJvciB8IHN0cmluZyk6IEFwaVJlcXVlc3RFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBcGlSZXF1ZXN0RXJyb3IocmVxLnRvU3RyaW5nKCksIHJlYXNvbik7XG4gIH1cblxuICBzdGF0aWMgZm9yUmVzcG9uc2UocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlLCByZWFzb246IEVycm9yIHwgc3RyaW5nKTogQXBpUmVxdWVzdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IEFwaVJlcXVlc3RFcnJvcihyZXMuaGVhZGVyLCByZWFzb24pO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3RPcHRpb25zID0ge1xuICByZXRyeT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlPFQ+ID0ge1xuICBtYXA8Vj4oZjogKGJvZHk6IFQpID0+IFYpOiBWO1xufTtcblxuZXhwb3J0IGNsYXNzIEJhc2VBcGkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmFzZVVybDogc3RyaW5nKSB7XG4gICAgaWYgKCFiYXNlVXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYmFzZVVybCBtdXN0IHN0YXJ0IHdpdGggaHR0cHM6Ly9gKTtcbiAgICB9XG4gICAgaWYgKGJhc2VVcmwuZW5kc1dpdGgoYC9gKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYXNlVXJsIG11c3Qgbm90IGVuZCB3aXRoIHNsYXNoICgvKWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlcXVlc3Q8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHJlcXVlc3RCb2R5OiB1bmtub3duIHwgdW5kZWZpbmVkLFxuICAgIHBhcmFtczogUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFJlc3BvbnNlPFQ+PiB7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgocGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcGF0aCBtdXN0IHN0YXJ0IHdpdGggJy8nIGNoYXJhY3RlcmApO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyBwYXRoO1xuICAgIGxldCByZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBzdXBlcmFnZW50KG1ldGhvZCwgdXJsKVxuICAgICAgICAucmV0cnkocGFyYW1zLnJldHJ5KVxuICAgICAgICAuc2VuZChyZXF1ZXN0Qm9keSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEFwaVJlcXVlc3RFcnJvcih1cmwsIGUpO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgQXBpUmVxdWVzdEVycm9yKHVybCwgYHN0YXR1cyBjb2RlICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWFwPFY+KGY6IChib2R5OiBUKSA9PiBWKTogViB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGYocmVzcG9uc2UuYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBpUmVxdWVzdEVycm9yKHVybCwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldDxUPihwYXRoOiBzdHJpbmcsIHBhcmFtcz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ2dldCcsIHBhdGgsIHVuZGVmaW5lZCwgcGFyYW1zKTtcbiAgfVxuXG4gIHBvc3Q8VD4ocGF0aDogc3RyaW5nLCBib2R5OiB1bmtub3duLCBwYXJhbXM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdwb3N0JywgcGF0aCwgYm9keSwgcGFyYW1zKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,3 @@
1
- /**
2
- * @prettier
3
- */
4
1
  import { BaseApi } from './baseApi';
5
2
  export declare class CoingeckoApi extends BaseApi {
6
3
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"coingeckoApi.d.ts","sourceRoot":"","sources":["../../../src/recovery/coingeckoApi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,qBAAa,YAAa,SAAQ,OAAO;;IAKjC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwBvD"}
1
+ {"version":3,"file":"coingeckoApi.d.ts","sourceRoot":"","sources":["../../../src/recovery/coingeckoApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,qBAAa,YAAa,SAAQ,OAAO;;IAKjC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwBvD"}
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CoingeckoApi = void 0;
4
- /**
5
- * @prettier
6
- */
7
4
  const baseApi_1 = require("./baseApi");
8
5
  const familyNamesToCoinGeckoIds = new Map()
9
6
  .set('BTC', 'bitcoin')
@@ -44,4 +41,4 @@ class CoingeckoApi extends baseApi_1.BaseApi {
44
41
  }
45
42
  }
46
43
  exports.CoingeckoApi = CoingeckoApi;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbmdlY2tvQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlY292ZXJ5L2NvaW5nZWNrb0FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILHVDQUFvQztBQUVwQyxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUFFO0tBQ3hDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO0tBQ3JCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO0tBQ3RCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO0tBQzFCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO0tBQ25CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLGtIQUFrSDtJQUNsSCx3RUFBd0U7S0FDdkUsR0FBRyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUM7S0FDM0IsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztBQUU5QixNQUFhLFlBQWEsU0FBUSxpQkFBTztJQUN2QztRQUNFLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDMUY7UUFDRCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsV0FBVyxvQkFBb0IsQ0FBQztRQUMxRSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQU0sWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEIseUJBQXlCO1lBQ3pCLElBQUk7WUFDSixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLE1BQU07WUFDTixJQUFJO1lBQ0osSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7YUFDbEU7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDN0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO2FBQzNFO1lBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE3QkQsb0NBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQmFzZUFwaSB9IGZyb20gJy4vYmFzZUFwaSc7XG5cbmNvbnN0IGZhbWlseU5hbWVzVG9Db2luR2Vja29JZHMgPSBuZXcgTWFwKClcbiAgLnNldCgnQlRDJywgJ2JpdGNvaW4nKVxuICAuc2V0KCdMVEMnLCAnbGl0ZWNvaW4nKVxuICAuc2V0KCdCQ0gnLCAnYml0Y29pbi1jYXNoJylcbiAgLnNldCgnWkVDJywgJ3pjYXNoJylcbiAgLnNldCgnREFTSCcsICdkYXNoJylcbiAgLy8gbm90ZTogd2UgZG9uJ3QgaGF2ZSBhIHNvdXJjZSBmb3IgcHJpY2UgZGF0YSBvZiBCQ0hBIGFuZCBCU1YsIGJ1dCB3ZSB3aWxsIHVzZSBCQ0ggYXMgYSBwcm94eS4gV2Ugd2lsbCBzdWJzdGl0dXRlXG4gIC8vIGl0IG91dCBmb3IgYSBiZXR0ZXIgc291cmNlIHdoZW4gaXQgYmVjb21lcyBhdmFpbGFibGUuICBUT0RPIEJHLTI2MzU5LlxuICAuc2V0KCdCQ0hBJywgJ2JpdGNvaW4tY2FzaCcpXG4gIC5zZXQoJ0JTVicsICdiaXRjb2luLWNhc2gnKTtcblxuZXhwb3J0IGNsYXNzIENvaW5nZWNrb0FwaSBleHRlbmRzIEJhc2VBcGkge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignaHR0cHM6Ly9hcGkuY29pbmdlY2tvLmNvbS9hcGkvdjMnKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVTRFByaWNlKGNvaW5GYW1pbHk6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgY29pbkdlY2tvSWQgPSBmYW1pbHlOYW1lc1RvQ29pbkdlY2tvSWRzLmdldChjb2luRmFtaWx5LnRvVXBwZXJDYXNlKCkpO1xuICAgIGlmICghY29pbkdlY2tvSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm8gQ29pbkdlY2tvIGlkIGZvciBmYW1pbHkgbmFtZSAke2NvaW5GYW1pbHkudG9VcHBlckNhc2UoKX0uYCk7XG4gICAgfVxuICAgIGNvbnN0IGNvaW5HZWNrb1VybCA9IGAvc2ltcGxlL3ByaWNlP2lkcz0ke2NvaW5HZWNrb0lkfSZ2c19jdXJyZW5jaWVzPVVTRGA7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nZXQ8YW55Pihjb2luR2Vja29VcmwsIHsgcmV0cnk6IDIgfSk7XG4gICAgcmV0dXJuIHJlcy5tYXAoKGJvZHkpID0+IHtcbiAgICAgIC8vIEFuIGV4YW1wbGUgb2YgcmVzcG9uc2VcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgXCJldGhlcmV1bVwiOiB7XG4gICAgICAvLyAgICAgXCJ1c2RcIjogMjIwLjY0XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIGlmICghYm9keSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFjaCBDb2luIEdlY2tvIEFQSSBmb3IgcHJpY2UgZGF0YScpO1xuICAgICAgfVxuICAgICAgaWYgKCFib2R5W2NvaW5HZWNrb0lkXVsndXNkJ10gfHwgdHlwZW9mIGJvZHlbY29pbkdlY2tvSWRdWyd1c2QnXSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gQ29pbiBHZWNrbyBBUEkgZm9yIHByaWNlIGRhdGEnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJvZHlbY29pbkdlY2tvSWRdWyd1c2QnXTtcbiAgICB9KTtcbiAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbmdlY2tvQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlY292ZXJ5L2NvaW5nZWNrb0FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBb0M7QUFFcEMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsRUFBRTtLQUN4QyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztLQUNyQixHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztLQUN0QixHQUFHLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztLQUMxQixHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztLQUNuQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNwQixrSEFBa0g7SUFDbEgsd0VBQXdFO0tBQ3ZFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO0tBQzNCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFOUIsTUFBYSxZQUFhLFNBQVEsaUJBQU87SUFDdkM7UUFDRSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFrQjtRQUNsQyxNQUFNLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixXQUFXLG9CQUFvQixDQUFDO1FBQzFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBTSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0Qix5QkFBeUI7WUFDekIsSUFBSTtZQUNKLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsTUFBTTtZQUNOLElBQUk7WUFDSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDNUUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0JELG9DQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBcGkgfSBmcm9tICcuL2Jhc2VBcGknO1xuXG5jb25zdCBmYW1pbHlOYW1lc1RvQ29pbkdlY2tvSWRzID0gbmV3IE1hcCgpXG4gIC5zZXQoJ0JUQycsICdiaXRjb2luJylcbiAgLnNldCgnTFRDJywgJ2xpdGVjb2luJylcbiAgLnNldCgnQkNIJywgJ2JpdGNvaW4tY2FzaCcpXG4gIC5zZXQoJ1pFQycsICd6Y2FzaCcpXG4gIC5zZXQoJ0RBU0gnLCAnZGFzaCcpXG4gIC8vIG5vdGU6IHdlIGRvbid0IGhhdmUgYSBzb3VyY2UgZm9yIHByaWNlIGRhdGEgb2YgQkNIQSBhbmQgQlNWLCBidXQgd2Ugd2lsbCB1c2UgQkNIIGFzIGEgcHJveHkuIFdlIHdpbGwgc3Vic3RpdHV0ZVxuICAvLyBpdCBvdXQgZm9yIGEgYmV0dGVyIHNvdXJjZSB3aGVuIGl0IGJlY29tZXMgYXZhaWxhYmxlLiAgVE9ETyBCRy0yNjM1OS5cbiAgLnNldCgnQkNIQScsICdiaXRjb2luLWNhc2gnKVxuICAuc2V0KCdCU1YnLCAnYml0Y29pbi1jYXNoJyk7XG5cbmV4cG9ydCBjbGFzcyBDb2luZ2Vja29BcGkgZXh0ZW5kcyBCYXNlQXBpIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2h0dHBzOi8vYXBpLmNvaW5nZWNrby5jb20vYXBpL3YzJyk7XG4gIH1cblxuICBhc3luYyBnZXRVU0RQcmljZShjb2luRmFtaWx5OiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGNvaW5HZWNrb0lkID0gZmFtaWx5TmFtZXNUb0NvaW5HZWNrb0lkcy5nZXQoY29pbkZhbWlseS50b1VwcGVyQ2FzZSgpKTtcbiAgICBpZiAoIWNvaW5HZWNrb0lkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIENvaW5HZWNrbyBpZCBmb3IgZmFtaWx5IG5hbWUgJHtjb2luRmFtaWx5LnRvVXBwZXJDYXNlKCl9LmApO1xuICAgIH1cbiAgICBjb25zdCBjb2luR2Vja29VcmwgPSBgL3NpbXBsZS9wcmljZT9pZHM9JHtjb2luR2Vja29JZH0mdnNfY3VycmVuY2llcz1VU0RgO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2V0PGFueT4oY29pbkdlY2tvVXJsLCB7IHJldHJ5OiAyIH0pO1xuICAgIHJldHVybiByZXMubWFwKChib2R5KSA9PiB7XG4gICAgICAvLyBBbiBleGFtcGxlIG9mIHJlc3BvbnNlXG4gICAgICAvLyB7XG4gICAgICAvLyAgIFwiZXRoZXJldW1cIjoge1xuICAgICAgLy8gICAgIFwidXNkXCI6IDIyMC42NFxuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVhY2ggQ29pbiBHZWNrbyBBUEkgZm9yIHByaWNlIGRhdGEnKTtcbiAgICAgIH1cbiAgICAgIGlmICghYm9keVtjb2luR2Vja29JZF1bJ3VzZCddIHx8IHR5cGVvZiBib2R5W2NvaW5HZWNrb0lkXVsndXNkJ10gIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCByZXNwb25zZSBmcm9tIENvaW4gR2Vja28gQVBJIGZvciBwcmljZSBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBib2R5W2NvaW5HZWNrb0lkXVsndXNkJ107XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"crossChainRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/crossChainRecovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAI3C,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAO1D,OAAO,EAAE,SAAS,EAAE,OAAO,EAA4B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKxE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,0BAA0B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAChF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,QAAQ,GAAG;IACd,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,wBAAwB,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAsB,SAAS,CAC7B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,CAgB7B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanG;AAwRD,KAAK,aAAa,GAAG;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC9E,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAsDlF"}
1
+ {"version":3,"file":"crossChainRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/crossChainRecovery.ts"],"names":[],"mappings":"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"}