@bitgo-beta/abstract-utxo 1.6.1-alpha.421 → 1.6.1-alpha.422

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 (60) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +1 -8
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +4 -18
  4. package/dist/cjs/src/address/fixedScript.d.ts +2 -4
  5. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
  6. package/dist/cjs/src/address/fixedScript.js +11 -6
  7. package/dist/cjs/src/keychains.d.ts +6 -2
  8. package/dist/cjs/src/keychains.d.ts.map +1 -1
  9. package/dist/cjs/src/keychains.js +33 -1
  10. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  11. package/dist/cjs/src/recovery/backupKeyRecovery.js +20 -13
  12. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +2 -2
  13. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  14. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +1 -1
  15. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +1 -0
  16. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  17. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +42 -18
  18. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +14 -5
  19. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  20. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +61 -38
  21. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  22. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +9 -6
  23. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  24. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +53 -43
  25. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
  26. package/dist/cjs/src/transaction/recipient.js +2 -2
  27. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +2 -1
  28. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +40 -16
  29. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +100 -28
  30. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +3 -0
  31. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +1 -0
  32. package/dist/cjs/test/unit/transaction/fixedScript/util.js +46 -0
  33. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  34. package/dist/esm/abstractUtxoCoin.d.ts +1 -8
  35. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  36. package/dist/esm/abstractUtxoCoin.js +4 -18
  37. package/dist/esm/address/fixedScript.d.ts +2 -4
  38. package/dist/esm/address/fixedScript.d.ts.map +1 -1
  39. package/dist/esm/address/fixedScript.js +12 -7
  40. package/dist/esm/keychains.d.ts +6 -2
  41. package/dist/esm/keychains.d.ts.map +1 -1
  42. package/dist/esm/keychains.js +32 -1
  43. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
  44. package/dist/esm/recovery/backupKeyRecovery.js +20 -13
  45. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +2 -2
  46. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  47. package/dist/esm/transaction/descriptor/explainPsbt.js +1 -1
  48. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +1 -0
  49. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  50. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +42 -18
  51. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +14 -5
  52. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  53. package/dist/esm/transaction/fixedScript/explainTransaction.js +61 -38
  54. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  55. package/dist/esm/transaction/fixedScript/parseOutput.js +9 -6
  56. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  57. package/dist/esm/transaction/fixedScript/parseTransaction.js +53 -43
  58. package/dist/esm/transaction/recipient.d.ts.map +1 -1
  59. package/dist/esm/transaction/recipient.js +2 -2
  60. package/package.json +11 -11
@@ -5,8 +5,52 @@ import { fetchKeychains, getKeySignatures, toKeychainTriple, UtxoNamedKeychains
5
5
  import { outputDifference } from '../outputDifference';
6
6
  import { fromExtendedAddressFormatToScript, toExtendedAddressFormat } from '../recipient';
7
7
  import { parseOutput } from './parseOutput';
8
+ async function parseRbfTransaction(coin, params) {
9
+ const { txParams, wallet } = params;
10
+ assert(txParams.rbfTxIds);
11
+ assert(txParams.rbfTxIds.length === 1);
12
+ const txToBeReplaced = await wallet.getTransaction({ txHash: txParams.rbfTxIds[0], includeRbf: true });
13
+ const recipients = txToBeReplaced.outputs.flatMap((output) => {
14
+ // For self-sends, the walletId will be the same as the wallet's id
15
+ if (output.wallet === wallet.id()) {
16
+ return [];
17
+ }
18
+ return [coin.toCanonicalTransactionRecipient(output)];
19
+ });
20
+ // Recurse into parseTransaction with the derived recipients and without rbfTxIds
21
+ return parseTransaction(coin, {
22
+ ...params,
23
+ txParams: {
24
+ ...txParams,
25
+ recipients,
26
+ rbfTxIds: undefined,
27
+ },
28
+ });
29
+ }
30
+ function toExpectedOutputs(coin, txParams) {
31
+ // verify that each recipient from txParams has their own output
32
+ const expectedOutputs = (txParams.recipients ?? []).flatMap((output) => {
33
+ if (output.address === undefined) {
34
+ if (output.amount.toString() !== '0') {
35
+ throw new Error(`Only zero amounts allowed for non-encodeable scriptPubkeys: ${output}`);
36
+ }
37
+ return [output];
38
+ }
39
+ return [{ ...output, address: coin.canonicalAddress(output.address) }];
40
+ });
41
+ if (txParams.allowExternalChangeAddress && txParams.changeAddress) {
42
+ // when an external change address is explicitly specified, count all outputs going towards that
43
+ // address in the expected outputs (regardless of the output amount)
44
+ expectedOutputs.push({ address: coin.canonicalAddress(txParams.changeAddress), amount: 'max' });
45
+ }
46
+ return expectedOutputs;
47
+ }
8
48
  export async function parseTransaction(coin, params) {
9
49
  const { txParams, txPrebuild, wallet, verification = {}, reqId } = params;
50
+ // Branch off early for RBF transactions
51
+ if (txParams.rbfTxIds) {
52
+ return parseRbfTransaction(coin, params);
53
+ }
10
54
  if (!_.isUndefined(verification.disableNetworking) && !_.isBoolean(verification.disableNetworking)) {
11
55
  throw new Error('verification.disableNetworking must be a boolean');
12
56
  }
@@ -26,48 +70,7 @@ export async function parseTransaction(coin, params) {
26
70
  if (_.isUndefined(txPrebuild.txHex)) {
27
71
  throw new Error('missing required txPrebuild property txHex');
28
72
  }
29
- // obtain all outputs
30
- const explanation = await coin.explainTransaction({
31
- txHex: txPrebuild.txHex,
32
- txInfo: txPrebuild.txInfo,
33
- pubs: keychainArray.map((k) => k.pub),
34
- });
35
- const allOutputs = [...explanation.outputs, ...explanation.changeOutputs];
36
- let expectedOutputs;
37
- if (txParams.rbfTxIds) {
38
- assert(txParams.rbfTxIds.length === 1);
39
- const txToBeReplaced = await wallet.getTransaction({ txHash: txParams.rbfTxIds[0], includeRbf: true });
40
- expectedOutputs = txToBeReplaced.outputs.flatMap((output) => {
41
- // For self-sends, the walletId will be the same as the wallet's id
42
- if (output.wallet === wallet.id()) {
43
- return [];
44
- }
45
- return [coin.toCanonicalTransactionRecipient(output)];
46
- });
47
- }
48
- else {
49
- // verify that each recipient from txParams has their own output
50
- expectedOutputs = (txParams.recipients ?? []).flatMap((output) => {
51
- if (output.address === undefined) {
52
- if (output.amount.toString() !== '0') {
53
- throw new Error(`Only zero amounts allowed for non-encodeable scriptPubkeys: ${output}`);
54
- }
55
- return [output];
56
- }
57
- return [{ ...output, address: coin.canonicalAddress(output.address) }];
58
- });
59
- if (txParams.allowExternalChangeAddress && txParams.changeAddress) {
60
- // when an external change address is explicitly specified, count all outputs going towards that
61
- // address in the expected outputs (regardless of the output amount)
62
- expectedOutputs.push(...allOutputs.flatMap((output) => {
63
- if (output.address === undefined ||
64
- output.address !== coin.canonicalAddress(txParams.changeAddress)) {
65
- return [];
66
- }
67
- return [{ ...output, address: coin.canonicalAddress(output.address) }];
68
- }));
69
- }
70
- }
73
+ const expectedOutputs = toExpectedOutputs(coin, txParams);
71
74
  // get the keychains from the custom change wallet if needed
72
75
  let customChange;
73
76
  const { customChangeWalletId = undefined } = wallet.coinSpecific() || {};
@@ -92,6 +95,13 @@ export async function parseTransaction(coin, params) {
92
95
  };
93
96
  }
94
97
  }
98
+ // obtain all outputs
99
+ const explanation = await coin.explainTransaction({
100
+ txHex: txPrebuild.txHex,
101
+ txInfo: txPrebuild.txInfo,
102
+ pubs: keychainArray.map((k) => k.pub),
103
+ });
104
+ const allOutputs = [...explanation.outputs, ...explanation.changeOutputs];
95
105
  /**
96
106
  * Loop through all the outputs and classify each of them as either internal spends
97
107
  * or external spends by setting the "external" property to true or false on the output object.
@@ -163,4 +173,4 @@ export async function parseTransaction(coin, params) {
163
173
  customChange,
164
174
  };
165
175
  }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUYsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakUsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsSUFBc0IsRUFDdEIsTUFBd0M7SUFFeEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFFLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ25HLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUM7SUFFekQsMENBQTBDO0lBQzFDLElBQUksU0FBUyxHQUFzRSxZQUFZLENBQUMsU0FBUyxDQUFDO0lB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J2Fzc2VydCc7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUcmlwbGUsIFZlcmlmaWNhdGlvbk9wdGlvbnMsIFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj5cbik6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gPSB7fSwgcmVxSWQgfSA9IHBhcmFtcztcblxuICBpZiAoIV8uaXNVbmRlZmluZWQodmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nKSAmJiAhXy5pc0Jvb2xlYW4odmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nIG11c3QgYmUgYSBib29sZWFuJyk7XG4gIH1cbiAgY29uc3QgZGlzYWJsZU5ldHdvcmtpbmcgPSB2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG5cbiAgLy8gb2J0YWluIHRoZSBrZXljaGFpbnMgYW5kIGtleSBzaWduYXR1cmVzXG4gIGxldCBrZXljaGFpbnM6IFV0eG9OYW1lZEtleWNoYWlucyB8IFZlcmlmaWNhdGlvbk9wdGlvbnNbJ2tleWNoYWlucyddIHwgdW5kZWZpbmVkID0gdmVyaWZpY2F0aW9uLmtleWNoYWlucztcbiAgaWYgKCFrZXljaGFpbnMpIHtcbiAgICBpZiAoZGlzYWJsZU5ldHdvcmtpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZldGNoIGtleWNoYWlucyB3aXRob3V0IG5ldHdvcmtpbmcnKTtcbiAgICB9XG4gICAga2V5Y2hhaW5zID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgd2FsbGV0LCByZXFJZCk7XG4gIH1cblxuICBpZiAoIVV0eG9OYW1lZEtleWNoYWlucy5pcyhrZXljaGFpbnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGtleWNoYWlucycpO1xuICB9XG5cbiAgY29uc3Qga2V5Y2hhaW5BcnJheTogVHJpcGxlPFV0eG9LZXljaGFpbj4gPSB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyk7XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQodHhQcmVidWlsZC50eEhleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHhQcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICBsZXQgZXhwZWN0ZWRPdXRwdXRzO1xuICBpZiAodHhQYXJhbXMucmJmVHhJZHMpIHtcbiAgICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICAgIGNvbnN0IHR4VG9CZVJlcGxhY2VkID0gYXdhaXQgd2FsbGV0LmdldFRyYW5zYWN0aW9uKHsgdHhIYXNoOiB0eFBhcmFtcy5yYmZUeElkc1swXSwgaW5jbHVkZVJiZjogdHJ1ZSB9KTtcbiAgICBleHBlY3RlZE91dHB1dHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgICAob3V0cHV0OiB7IHZhbHVlU3RyaW5nOiBzdHJpbmc7IGFkZHJlc3M/OiBzdHJpbmc7IHdhbGxldD86IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIC8vIEZvciBzZWxmLXNlbmRzLCB0aGUgd2FsbGV0SWQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgd2FsbGV0J3MgaWRcbiAgICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgICAgfVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdmVyaWZ5IHRoYXQgZWFjaCByZWNpcGllbnQgZnJvbSB0eFBhcmFtcyBoYXMgdGhlaXIgb3duIG91dHB1dFxuICAgIGV4cGVjdGVkT3V0cHV0cyA9ICh0eFBhcmFtcy5yZWNpcGllbnRzID8/IFtdKS5mbGF0TWFwKChvdXRwdXQpID0+IHtcbiAgICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChvdXRwdXQuYW1vdW50LnRvU3RyaW5nKCkgIT09ICcwJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSB6ZXJvIGFtb3VudHMgYWxsb3dlZCBmb3Igbm9uLWVuY29kZWFibGUgc2NyaXB0UHVia2V5czogJHtvdXRwdXR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtvdXRwdXRdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgICB9KTtcbiAgICBpZiAodHhQYXJhbXMuYWxsb3dFeHRlcm5hbENoYW5nZUFkZHJlc3MgJiYgdHhQYXJhbXMuY2hhbmdlQWRkcmVzcykge1xuICAgICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgICAvLyBhZGRyZXNzIGluIHRoZSBleHBlY3RlZCBvdXRwdXRzIChyZWdhcmRsZXNzIG9mIHRoZSBvdXRwdXQgYW1vdW50KVxuICAgICAgZXhwZWN0ZWRPdXRwdXRzLnB1c2goXG4gICAgICAgIC4uLmFsbE91dHB1dHMuZmxhdE1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgb3V0cHV0LmFkZHJlc3MgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgb3V0cHV0LmFkZHJlc3MgIT09IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzIGFzIHN0cmluZylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvb3AgdGhyb3VnaCBhbGwgdGhlIG91dHB1dHMgYW5kIGNsYXNzaWZ5IGVhY2ggb2YgdGhlbSBhcyBlaXRoZXIgaW50ZXJuYWwgc3BlbmRzXG4gICAqIG9yIGV4dGVybmFsIHNwZW5kcyBieSBzZXR0aW5nIHRoZSBcImV4dGVybmFsXCIgcHJvcGVydHkgdG8gdHJ1ZSBvciBmYWxzZSBvbiB0aGUgb3V0cHV0IG9iamVjdC5cbiAgICovXG4gIGNvbnN0IGFsbE91dHB1dERldGFpbHM6IE91dHB1dFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYWxsT3V0cHV0cy5tYXAoKGN1cnJlbnRPdXRwdXQpID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU91dHB1dCh7XG4gICAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAga2V5Y2hhaW5BcnJheTogdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpLFxuICAgICAgICB3YWxsZXQsXG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogZXhwZWN0ZWRPdXRwdXRzLFxuICAgICAgICAgIGNoYW5nZUFkZHJlc3M6IHR4UGFyYW1zLmNoYW5nZUFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbUNoYW5nZSxcbiAgICAgICAgcmVxSWQsXG4gICAgICB9KTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uID0gYWxsT3V0cHV0RGV0YWlscy5zb21lKFxuICAgIChvdXRwdXQpID0+IChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpPy5uZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvblxuICApO1xuXG4gIGNvbnN0IGNoYW5nZU91dHB1dHMgPSBfLmZpbHRlcihhbGxPdXRwdXREZXRhaWxzLCB7IGV4dGVybmFsOiBmYWxzZSB9KTtcblxuICBmdW5jdGlvbiB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKG91dHB1dHM6IE91dHB1dFtdKTogQ29tcGFyYWJsZU91dHB1dFdpdGhFeHRlcm5hbDxiaWdpbnQgfCAnbWF4Jz5bXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBzY3JpcHQ6IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChvdXRwdXQuYWRkcmVzcywgY29pbi5uZXR3b3JrKSxcbiAgICAgIHZhbHVlOiBvdXRwdXQuYW1vdW50ID09PSAnbWF4JyA/ICdtYXgnIDogKEJpZ0ludChvdXRwdXQuYW1vdW50KSBhcyBiaWdpbnQgfCAnbWF4JyksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbnN0IG1pc3NpbmdPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGV4cGVjdGVkT3V0cHV0cyksXG4gICAgdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXRzKVxuICApO1xuXG4gIGNvbnN0IGltcGxpY2l0T3V0cHV0cyA9IG91dHB1dERpZmZlcmVuY2UoXG4gICAgdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXREZXRhaWxzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGV4cGVjdGVkT3V0cHV0cylcbiAgKTtcbiAgY29uc3QgZXhwbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZSh0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLCBpbXBsaWNpdE91dHB1dHMpO1xuXG4gIC8vIHRoZXNlIGFyZSBhbGwgdGhlIG5vbi13YWxsZXQgb3V0cHV0cyB0aGF0IGhhZCBiZWVuIG9yaWdpbmFsbHkgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gcmVjaXBpZW50c1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsT3V0cHV0cyA9IGV4cGxpY2l0T3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LmV4dGVybmFsKTtcbiAgLy8gdGhpcyBpcyB0aGUgc3VtIG9mIGFsbCB0aGUgb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBub24td2FsbGV0IG91dHB1dCB2YWx1ZXNcbiAgY29uc3QgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ID0gdXR4b2xpYi5iaXRnby50b1ROdW1iZXI8VE51bWJlcj4oXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHMucmVkdWNlKChzdW06IGJpZ2ludCwgbykgPT4gc3VtICsgQmlnSW50KG8udmFsdWUpLCBCaWdJbnQoMCkpIGFzIGJpZ2ludCxcbiAgICBjb2luLmFtb3VudFR5cGVcbiAgKTtcblxuICAvKipcbiAgICogVGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgcGVydGFpbnMgdG8gdmVyaWZ5aW5nIHRoZSBwYXktYXMteW91LWdvLWZlZSBCaXRHb1xuICAgKiBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gdHJhbnNhY3Rpb25zIHNlbmRpbmcgbW9uZXkgb3V0IG9mIHRoZSB3YWxsZXQuIFRoZSBsb2dpYyBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkXG4gICAqIGluIHRoYXQgd2UgY29tcGFyZSB0aGUgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IHRoYXQgd2FzIHNwZWNpZmllZCBleHBsaWNpdGx5IGJ5IHRoZSB1c2VyIHRvIHRoZSBwb3J0aW9uXG4gICAqIHRoYXQgd2FzIHNwZWNpZmllZCBpbXBsaWNpdGx5LiBUbyBwcm90ZWN0IGN1c3RvbWVycyBmcm9tIHBlb3BsZSB0YW1wZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0cywgd2VcbiAgICogZGVmaW5lIGEgdGhyZXNob2xkIGZvciB0aGUgbWF4aW11bSBwZXJjZW50YWdlIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBpbiByZWxhdGlvbiB0byB0aGUgZXhwbGljaXRcbiAgICogZXh0ZXJuYWwgc3BlbmQuXG4gICAqXG4gICAqIFRoaXMgaGFzIGJlY29tZSBvYnNvbGV0ZSB3aXRoIHRoZSBpbnRvZHVjdGlvbiBvZiBgdXR4b2NvcmUucGF5Z28udmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoKWAuXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gaW1wbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBpbXBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIGZ1bmN0aW9uIHRvT3V0cHV0cyhvdXRwdXRzOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdKTogT3V0cHV0W10ge1xuICAgIHJldHVybiBvdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgYWRkcmVzczogdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQob3V0cHV0LnNjcmlwdCwgY29pbi5uZXR3b3JrKSxcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5Y2hhaW5zLFxuICAgIGtleVNpZ25hdHVyZXM6IGdldEtleVNpZ25hdHVyZXMod2FsbGV0KSA/PyB7fSxcbiAgICBvdXRwdXRzOiBhbGxPdXRwdXREZXRhaWxzLFxuICAgIG1pc3NpbmdPdXRwdXRzOiB0b091dHB1dHMobWlzc2luZ091dHB1dHMpLFxuICAgIGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoZXhwbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoaW1wbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbixcbiAgICBjdXN0b21DaGFuZ2UsXG4gIH07XG59XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUYsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUks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Q0FBQyxjQUFjLENBQUM7UUFDekMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDO1FBQzNELHVCQUF1QixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxhQUFhO1FBQ2IsMkJBQTJCO1FBQzNCLDJCQUEyQjtRQUMzQix5Q0FBeUM7UUFDekMsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmlwbGUsIFZlcmlmaWNhdGlvbk9wdGlvbnMsIFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgIH1cbiAgKTtcblxuICAvLyBSZWN1cnNlIGludG8gcGFyc2VUcmFuc2FjdGlvbiB3aXRoIHRoZSBkZXJpdmVkIHJlY2lwaWVudHMgYW5kIHdpdGhvdXQgcmJmVHhJZHNcbiAgcmV0dXJuIHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgIC4uLnBhcmFtcyxcbiAgICB0eFBhcmFtczoge1xuICAgICAgLi4udHhQYXJhbXMsXG4gICAgICByZWNpcGllbnRzLFxuICAgICAgcmJmVHhJZHM6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9FeHBlY3RlZE91dHB1dHMoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbb3V0cHV0XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgLy8gYWRkcmVzcyBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0cyAocmVnYXJkbGVzcyBvZiB0aGUgb3V0cHV0IGFtb3VudClcbiAgICBleHBlY3RlZE91dHB1dHMucHVzaCh7IGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSwgYW1vdW50OiAnbWF4JyB9KTtcbiAgfVxuICByZXR1cm4gZXhwZWN0ZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIC8vIEJyYW5jaCBvZmYgZWFybHkgZm9yIFJCRiB0cmFuc2FjdGlvbnNcbiAgaWYgKHR4UGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgcmV0dXJuIHBhcnNlUmJmVHJhbnNhY3Rpb24oY29pbiwgcGFyYW1zKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkLnR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhjb2luLCB0eFBhcmFtcyk7XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICAvKipcbiAgICogTG9vcCB0aHJvdWdoIGFsbCB0aGUgb3V0cHV0cyBhbmQgY2xhc3NpZnkgZWFjaCBvZiB0aGVtIGFzIGVpdGhlciBpbnRlcm5hbCBzcGVuZHNcbiAgICogb3IgZXh0ZXJuYWwgc3BlbmRzIGJ5IHNldHRpbmcgdGhlIFwiZXh0ZXJuYWxcIiBwcm9wZXJ0eSB0byB0cnVlIG9yIGZhbHNlIG9uIHRoZSBvdXRwdXQgb2JqZWN0LlxuICAgKi9cbiAgY29uc3QgYWxsT3V0cHV0RGV0YWlsczogT3V0cHV0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxPdXRwdXRzLm1hcCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT3V0cHV0KHtcbiAgICAgICAgY3VycmVudE91dHB1dCxcbiAgICAgICAgY29pbixcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICBrZXljaGFpbkFycmF5OiB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyksXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBleHBlY3RlZE91dHB1dHMsXG4gICAgICAgICAgY2hhbmdlQWRkcmVzczogdHhQYXJhbXMuY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VzdG9tQ2hhbmdlLFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24gPSBhbGxPdXRwdXREZXRhaWxzLnNvbWUoXG4gICAgKG91dHB1dCkgPT4gKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCk/Lm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uXG4gICk7XG5cbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IF8uZmlsdGVyKGFsbE91dHB1dERldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuXG4gIGZ1bmN0aW9uIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwob3V0cHV0czogT3V0cHV0W10pOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5ldHdvcmspLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpXG4gICk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKVxuICApO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBwZXJ0YWlucyB0byB2ZXJpZnlpbmcgdGhlIHBheS1hcy15b3UtZ28tZmVlIEJpdEdvXG4gICAqIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byB0cmFuc2FjdGlvbnMgc2VuZGluZyBtb25leSBvdXQgb2YgdGhlIHdhbGxldC4gVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmRcbiAgICogaW4gdGhhdCB3ZSBjb21wYXJlIHRoZSBleHRlcm5hbCBzcGVuZCBhbW91bnQgdGhhdCB3YXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgdG8gdGhlIHBvcnRpb25cbiAgICogdGhhdCB3YXMgc3BlY2lmaWVkIGltcGxpY2l0bHkuIFRvIHByb3RlY3QgY3VzdG9tZXJzIGZyb20gcGVvcGxlIHRhbXBlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzLCB3ZVxuICAgKiBkZWZpbmUgYSB0aHJlc2hvbGQgZm9yIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGluIHJlbGF0aW9uIHRvIHRoZSBleHBsaWNpdFxuICAgKiBleHRlcm5hbCBzcGVuZC5cbiAgICpcbiAgICogVGhpcyBoYXMgYmVjb21lIG9ic29sZXRlIHdpdGggdGhlIGludG9kdWN0aW9uIG9mIGB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZigpYC5cbiAgICovXG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBleHRyYSBhZGRyZXNzZXMgYXJlIGNoYW5nZSBhZGRyZXNzZXNcbiAgLy8gZ2V0IGFsbCB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIHRoZSBzZXJ2ZXIgYWRkZWQgYW5kIGNhbGN1bGF0ZSB0aGVpciB2YWx1ZXNcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMgPSBpbXBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSBhcyBiaWdpbnQsXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICk7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10pOiBPdXRwdXRbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBjb2luLm5ldHdvcmspLFxuICAgICAgYW1vdW50OiBvdXRwdXQudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXljaGFpbnMsXG4gICAga2V5U2lnbmF0dXJlczogZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQpID8/IHt9LFxuICAgIG91dHB1dHM6IGFsbE91dHB1dERldGFpbHMsXG4gICAgbWlzc2luZ091dHB1dHM6IHRvT3V0cHV0cyhtaXNzaW5nT3V0cHV0cyksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQsXG4gICAgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uLFxuICAgIGN1c3RvbUNoYW5nZSxcbiAgfTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"recipient.d.ts","sourceRoot":"","sources":["../../../src/transaction/recipient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAIhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAK3G;AAED,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM3G;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAIxF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQpH"}
1
+ {"version":3,"file":"recipient.d.ts","sourceRoot":"","sources":["../../../src/transaction/recipient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAIhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAK3G;AAED,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM3G;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAIxF;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUpH"}
@@ -41,8 +41,8 @@ export function assertValidTransactionRecipient(output) {
41
41
  // We will verify that the amount is zero, and if it isnt then we will throw an error.
42
42
  if (!output.address || isScriptRecipient(output.address)) {
43
43
  if (output.amount.toString() !== '0') {
44
- throw new Error(`Only zero amounts allowed for non-encodeable scriptPubkeys: ${JSON.stringify(output)}`);
44
+ throw new Error(`Only zero amounts allowed for non-encodeable scriptPubkeys: amount: ${output.amount}, address: ${output.address}`);
45
45
  }
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3JlY2lwaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDO0FBRTlDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFlO0lBQy9DLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGVBQXVCO0lBQy9ELElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGVBQXVCLEVBQUUsT0FBd0I7SUFDakcsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUQsSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsT0FBd0I7SUFDOUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQzVDLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQUMsTUFBOEQ7SUFDNUcsK0dBQStHO0lBQy9HLHNGQUFzRjtJQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0csQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmNvbnN0IFNjcmlwdFJlY2lwaWVudFByZWZpeCA9ICdzY3JpcHRQdWJLZXk6JztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgYWRkcmVzcyBpcyBhIHNjcmlwdCByZWNpcGllbnQgKHN0YXJ0cyB3aXRoIGBzY3JpcHRQdWJLZXk6YCkuXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JpcHRSZWNpcGllbnQoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBhZGRyZXNzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChTY3JpcHRSZWNpcGllbnRQcmVmaXgudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8qKlxuICogQW4gZXh0ZW5kZWQgYWRkcmVzcyBpcyBvbmUgdGhhdCBlbmNvZGVzIGVpdGhlciBhIHJlZ3VsYXIgYWRkcmVzcyBvciBhIGhleCBlbmNvZGVkIHNjcmlwdCB3aXRoIHRoZSBwcmVmaXggYHNjcmlwdFB1YktleTpgLlxuICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgZXh0ZW5kZWQgYWRkcmVzcyBmb3JtYXQgdG8gZWl0aGVyIGEgc2NyaXB0IG9yIGFuIGFkZHJlc3MuXG4gKiBAcGFyYW0gZXh0ZW5kZWRBZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGV4dGVuZGVkQWRkcmVzczogc3RyaW5nKTogeyBhZGRyZXNzOiBzdHJpbmcgfSB8IHsgc2NyaXB0OiBzdHJpbmcgfSB7XG4gIGlmIChpc1NjcmlwdFJlY2lwaWVudChleHRlbmRlZEFkZHJlc3MpKSB7XG4gICAgcmV0dXJuIHsgc2NyaXB0OiBleHRlbmRlZEFkZHJlc3Muc2xpY2UoU2NyaXB0UmVjaXBpZW50UHJlZml4Lmxlbmd0aCkgfTtcbiAgfVxuICByZXR1cm4geyBhZGRyZXNzOiBleHRlbmRlZEFkZHJlc3MgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChleHRlbmRlZEFkZHJlc3M6IHN0cmluZywgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogQnVmZmVyIHtcbiAgY29uc3QgcmVzdWx0ID0gZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdChleHRlbmRlZEFkZHJlc3MpO1xuICBpZiAoJ3NjcmlwdCcgaW4gcmVzdWx0KSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlc3VsdC5zY3JpcHQsICdoZXgnKTtcbiAgfVxuICByZXR1cm4gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0VHJ5Rm9ybWF0cyhyZXN1bHQuYWRkcmVzcywgbmV0d29yayk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHNjcmlwdCBvciBhZGRyZXNzIHRvIHRoZSBleHRlbmRlZCBhZGRyZXNzIGZvcm1hdC5cbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJucyBpZiB0aGUgc2NyaXB0IGlzIGFuIE9QX1JFVFVSTiBzY3JpcHQsIHRoZW4gaXQgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIGBzY3JpcHRQdWJLZXk6YCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGFkZHJlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChzY3JpcHQ6IEJ1ZmZlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNjcmlwdFswXSA9PT0gdXR4b2xpYi5vcGNvZGVzLk9QX1JFVFVSTlxuICAgID8gYCR7U2NyaXB0UmVjaXBpZW50UHJlZml4fSR7c2NyaXB0LnRvU3RyaW5nKCdoZXgnKX1gXG4gICAgOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIG5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRUcmFuc2FjdGlvblJlY2lwaWVudChvdXRwdXQ6IHsgYW1vdW50OiBiaWdpbnQgfCBudW1iZXIgfCBzdHJpbmc7IGFkZHJlc3M/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoaXMgaXMgYW4gT1BfUkVUVVJOIG91dHB1dCBvciBhbm90aGVyIG5vbi1lbmNvZGFibGUgc2NyaXB0UHVia2V5LCB3ZSBkb250IGhhdmUgYW4gYWRkcmVzcy5cbiAgLy8gV2Ugd2lsbCB2ZXJpZnkgdGhhdCB0aGUgYW1vdW50IGlzIHplcm8sIGFuZCBpZiBpdCBpc250IHRoZW4gd2Ugd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgaWYgKCFvdXRwdXQuYWRkcmVzcyB8fCBpc1NjcmlwdFJlY2lwaWVudChvdXRwdXQuYWRkcmVzcykpIHtcbiAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSB6ZXJvIGFtb3VudHMgYWxsb3dlZCBmb3Igbm9uLWVuY29kZWFibGUgc2NyaXB0UHVia2V5czogJHtKU09OLnN0cmluZ2lmeShvdXRwdXQpfWApO1xuICAgIH1cbiAgfVxufVxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3JlY2lwaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDO0FBRTlDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFlO0lBQy9DLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGVBQXVCO0lBQy9ELElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGVBQXVCLEVBQUUsT0FBd0I7SUFDakcsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUQsSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsT0FBd0I7SUFDOUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQzVDLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQUMsTUFBOEQ7SUFDNUcsK0dBQStHO0lBQy9HLHNGQUFzRjtJQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQ25ILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuY29uc3QgU2NyaXB0UmVjaXBpZW50UHJlZml4ID0gJ3NjcmlwdFB1YktleTonO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBhZGRyZXNzIGlzIGEgc2NyaXB0IHJlY2lwaWVudCAoc3RhcnRzIHdpdGggYHNjcmlwdFB1YktleTpgKS5cbiAqIEBwYXJhbSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NjcmlwdFJlY2lwaWVudChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGFkZHJlc3MudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFNjcmlwdFJlY2lwaWVudFByZWZpeC50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBBbiBleHRlbmRlZCBhZGRyZXNzIGlzIG9uZSB0aGF0IGVuY29kZXMgZWl0aGVyIGEgcmVndWxhciBhZGRyZXNzIG9yIGEgaGV4IGVuY29kZWQgc2NyaXB0IHdpdGggdGhlIHByZWZpeCBgc2NyaXB0UHViS2V5OmAuXG4gKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBleHRlbmRlZCBhZGRyZXNzIGZvcm1hdCB0byBlaXRoZXIgYSBzY3JpcHQgb3IgYW4gYWRkcmVzcy5cbiAqIEBwYXJhbSBleHRlbmRlZEFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXQoZXh0ZW5kZWRBZGRyZXNzOiBzdHJpbmcpOiB7IGFkZHJlc3M6IHN0cmluZyB9IHwgeyBzY3JpcHQ6IHN0cmluZyB9IHtcbiAgaWYgKGlzU2NyaXB0UmVjaXBpZW50KGV4dGVuZGVkQWRkcmVzcykpIHtcbiAgICByZXR1cm4geyBzY3JpcHQ6IGV4dGVuZGVkQWRkcmVzcy5zbGljZShTY3JpcHRSZWNpcGllbnRQcmVmaXgubGVuZ3RoKSB9O1xuICB9XG4gIHJldHVybiB7IGFkZHJlc3M6IGV4dGVuZGVkQWRkcmVzcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KGV4dGVuZGVkQWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBCdWZmZXIge1xuICBjb25zdCByZXN1bHQgPSBmcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGV4dGVuZGVkQWRkcmVzcyk7XG4gIGlmICgnc2NyaXB0JyBpbiByZXN1bHQpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVzdWx0LnNjcmlwdCwgJ2hleCcpO1xuICB9XG4gIHJldHVybiB1dHhvbGliLmFkZHJlc3NGb3JtYXQudG9PdXRwdXRTY3JpcHRUcnlGb3JtYXRzKHJlc3VsdC5hZGRyZXNzLCBuZXR3b3JrKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc2NyaXB0IG9yIGFkZHJlc3MgdG8gdGhlIGV4dGVuZGVkIGFkZHJlc3MgZm9ybWF0LlxuICogQHBhcmFtIHNjcmlwdFxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm5zIGlmIHRoZSBzY3JpcHQgaXMgYW4gT1BfUkVUVVJOIHNjcmlwdCwgdGhlbiBpdCB3aWxsIGJlIHByZWZpeGVkIHdpdGggYHNjcmlwdFB1YktleTpgLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWRkcmVzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KHNjcmlwdDogQnVmZmVyLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBzdHJpbmcge1xuICByZXR1cm4gc2NyaXB0WzBdID09PSB1dHhvbGliLm9wY29kZXMuT1BfUkVUVVJOXG4gICAgPyBgJHtTY3JpcHRSZWNpcGllbnRQcmVmaXh9JHtzY3JpcHQudG9TdHJpbmcoJ2hleCcpfWBcbiAgICA6IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgbmV0d29yayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dDogeyBhbW91bnQ6IGJpZ2ludCB8IG51bWJlciB8IHN0cmluZzsgYWRkcmVzcz86IHN0cmluZyB9KTogdm9pZCB7XG4gIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhpcyBpcyBhbiBPUF9SRVRVUk4gb3V0cHV0IG9yIGFub3RoZXIgbm9uLWVuY29kYWJsZSBzY3JpcHRQdWJrZXksIHdlIGRvbnQgaGF2ZSBhbiBhZGRyZXNzLlxuICAvLyBXZSB3aWxsIHZlcmlmeSB0aGF0IHRoZSBhbW91bnQgaXMgemVybywgYW5kIGlmIGl0IGlzbnQgdGhlbiB3ZSB3aWxsIHRocm93IGFuIGVycm9yLlxuICBpZiAoIW91dHB1dC5hZGRyZXNzIHx8IGlzU2NyaXB0UmVjaXBpZW50KG91dHB1dC5hZGRyZXNzKSkge1xuICAgIGlmIChvdXRwdXQuYW1vdW50LnRvU3RyaW5nKCkgIT09ICcwJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgT25seSB6ZXJvIGFtb3VudHMgYWxsb3dlZCBmb3Igbm9uLWVuY29kZWFibGUgc2NyaXB0UHVia2V5czogYW1vdW50OiAke291dHB1dC5hbW91bnR9LCBhZGRyZXNzOiAke291dHB1dC5hZGRyZXNzfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/abstract-utxo",
3
- "version": "1.6.1-alpha.421",
3
+ "version": "1.6.1-alpha.422",
4
4
  "description": "BitGo SDK coin library for UTXO base implementation",
5
5
  "main": "./dist/cjs/src/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -60,14 +60,14 @@
60
60
  ]
61
61
  },
62
62
  "dependencies": {
63
- "@bitgo-beta/blockapis": "1.3.3-alpha.422",
64
- "@bitgo-beta/sdk-api": "1.6.1-alpha.421",
65
- "@bitgo-beta/sdk-core": "2.4.1-alpha.421",
66
- "@bitgo-beta/secp256k1": "1.0.1-alpha.379",
67
- "@bitgo-beta/unspents": "0.11.3-alpha.422",
68
- "@bitgo-beta/utxo-core": "1.0.1-alpha.152",
69
- "@bitgo-beta/utxo-lib": "4.0.1-alpha.422",
70
- "@bitgo-beta/utxo-ord": "1.1.3-alpha.376",
63
+ "@bitgo-beta/blockapis": "1.3.3-alpha.423",
64
+ "@bitgo-beta/sdk-api": "1.6.1-alpha.422",
65
+ "@bitgo-beta/sdk-core": "2.4.1-alpha.422",
66
+ "@bitgo-beta/secp256k1": "1.0.1-alpha.380",
67
+ "@bitgo-beta/unspents": "0.11.3-alpha.423",
68
+ "@bitgo-beta/utxo-core": "1.0.1-alpha.153",
69
+ "@bitgo-beta/utxo-lib": "4.0.1-alpha.423",
70
+ "@bitgo-beta/utxo-ord": "1.1.3-alpha.377",
71
71
  "@bitgo/wasm-utxo": "1.3.0",
72
72
  "@types/lodash": "^4.14.121",
73
73
  "@types/superagent": "4.1.15",
@@ -79,8 +79,8 @@
79
79
  "superagent": "^9.0.1"
80
80
  },
81
81
  "devDependencies": {
82
- "@bitgo-beta/sdk-test": "^9.1.13",
82
+ "@bitgo-beta/sdk-test": "^9.1.15",
83
83
  "mocha": "^10.2.0"
84
84
  },
85
- "gitHead": "827938bc6035dc4925d9b1d38fcf6cc367a05348"
85
+ "gitHead": "2aaf7336e7740019d9582799c9006a90e1974b77"
86
86
  }