@bitgo-beta/utxo-core 1.0.1-alpha.6 → 1.0.1-alpha.61

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 (91) hide show
  1. package/dist/src/Output.d.ts +43 -0
  2. package/dist/src/Output.d.ts.map +1 -0
  3. package/dist/src/Output.js +60 -0
  4. package/dist/src/bip32utils.d.ts +16 -0
  5. package/dist/src/bip32utils.d.ts.map +1 -0
  6. package/dist/src/bip32utils.js +72 -0
  7. package/dist/src/bip65/index.d.ts +2 -0
  8. package/dist/src/bip65/index.d.ts.map +1 -0
  9. package/dist/src/bip65/index.js +18 -0
  10. package/dist/src/bip65/locktime.d.ts +8 -0
  11. package/dist/src/bip65/locktime.d.ts.map +1 -0
  12. package/dist/src/bip65/locktime.js +37 -0
  13. package/dist/src/descriptor/DescriptorMap.d.ts.map +1 -1
  14. package/dist/src/descriptor/DescriptorMap.js +2 -5
  15. package/dist/src/descriptor/Output.d.ts +2 -43
  16. package/dist/src/descriptor/Output.d.ts.map +1 -1
  17. package/dist/src/descriptor/Output.js +12 -66
  18. package/dist/src/descriptor/VirtualSize.d.ts +2 -0
  19. package/dist/src/descriptor/VirtualSize.d.ts.map +1 -1
  20. package/dist/src/descriptor/VirtualSize.js +14 -1
  21. package/dist/src/descriptor/address.d.ts +1 -1
  22. package/dist/src/descriptor/address.d.ts.map +1 -1
  23. package/dist/src/descriptor/address.js +2 -2
  24. package/dist/src/descriptor/derive.d.ts +13 -0
  25. package/dist/src/descriptor/derive.d.ts.map +1 -0
  26. package/dist/src/descriptor/derive.js +45 -0
  27. package/dist/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  28. package/dist/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  29. package/dist/src/descriptor/fromFixedScriptWallet.js +88 -0
  30. package/dist/src/descriptor/index.d.ts +9 -8
  31. package/dist/src/descriptor/index.d.ts.map +1 -1
  32. package/dist/src/descriptor/index.js +13 -36
  33. package/dist/src/descriptor/psbt/createPsbt.d.ts +6 -2
  34. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +1 -1
  35. package/dist/src/descriptor/psbt/createPsbt.js +2 -2
  36. package/dist/src/descriptor/psbt/findDescriptors.d.ts +6 -2
  37. package/dist/src/descriptor/psbt/findDescriptors.d.ts.map +1 -1
  38. package/dist/src/descriptor/psbt/findDescriptors.js +24 -11
  39. package/dist/src/descriptor/psbt/index.d.ts +1 -0
  40. package/dist/src/descriptor/psbt/index.d.ts.map +1 -1
  41. package/dist/src/descriptor/psbt/index.js +2 -1
  42. package/dist/src/descriptor/psbt/parse.d.ts +1 -1
  43. package/dist/src/descriptor/psbt/parse.d.ts.map +1 -1
  44. package/dist/src/descriptor/psbt/parse.js +8 -8
  45. package/dist/src/descriptor/psbt/sign.d.ts +26 -0
  46. package/dist/src/descriptor/psbt/sign.d.ts.map +1 -0
  47. package/dist/src/descriptor/psbt/sign.js +42 -0
  48. package/dist/src/dustThreshold.d.ts +4 -0
  49. package/dist/src/dustThreshold.d.ts.map +1 -0
  50. package/dist/src/dustThreshold.js +134 -0
  51. package/dist/src/index.d.ts +6 -0
  52. package/dist/src/index.d.ts.map +1 -1
  53. package/dist/src/index.js +11 -2
  54. package/dist/src/paygo/attestation.d.ts +11 -0
  55. package/dist/src/paygo/attestation.d.ts.map +1 -0
  56. package/dist/src/paygo/attestation.js +58 -0
  57. package/dist/src/paygo/index.d.ts +3 -0
  58. package/dist/src/paygo/index.d.ts.map +1 -0
  59. package/dist/src/paygo/index.js +19 -0
  60. package/dist/src/paygo/parsePayGoAttestation.d.ts +15 -0
  61. package/dist/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  62. package/dist/src/paygo/parsePayGoAttestation.js +46 -0
  63. package/dist/src/paygo/psbt/Errors.d.ts +22 -0
  64. package/dist/src/paygo/psbt/Errors.d.ts.map +1 -0
  65. package/dist/src/paygo/psbt/Errors.js +44 -0
  66. package/dist/src/paygo/psbt/index.d.ts +2 -0
  67. package/dist/src/paygo/psbt/index.d.ts.map +1 -0
  68. package/dist/src/paygo/psbt/index.js +18 -0
  69. package/dist/src/paygo/psbt/payGoAddressProof.d.ts +28 -0
  70. package/dist/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  71. package/dist/src/paygo/psbt/payGoAddressProof.js +122 -0
  72. package/dist/src/testutil/descriptor/descriptors.d.ts +1 -1
  73. package/dist/src/testutil/descriptor/descriptors.d.ts.map +1 -1
  74. package/dist/src/testutil/descriptor/descriptors.js +28 -6
  75. package/dist/src/testutil/descriptor/mock.utils.d.ts +3 -3
  76. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +1 -1
  77. package/dist/src/testutil/descriptor/mock.utils.js +9 -5
  78. package/dist/src/testutil/descriptor/psbt.utils.js +8 -8
  79. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  80. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  81. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +43 -0
  82. package/dist/src/testutil/index.d.ts +2 -0
  83. package/dist/src/testutil/index.d.ts.map +1 -1
  84. package/dist/src/testutil/index.js +3 -1
  85. package/dist/src/testutil/trimMessagePrefix.d.ts +11 -0
  86. package/dist/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  87. package/dist/src/testutil/trimMessagePrefix.js +60 -0
  88. package/dist/src/xOnlyPubkey.d.ts +2 -0
  89. package/dist/src/xOnlyPubkey.d.ts.map +1 -0
  90. package/dist/src/xOnlyPubkey.js +18 -0
  91. package/package.json +11 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./payGoAddressProof"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXlHb0FkZHJlc3NQcm9vZic7XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
3
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
4
+ * to later verify.
5
+ *
6
+ * @param psbt - PSBT that we need to encode our paygo address into
7
+ * @param outputIndex - the index of the address in our output
8
+ * @param sig - the signature that we want to encode
9
+ */
10
+ export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
11
+ /** Verify the paygo address signature is valid using verification pub key.
12
+ *
13
+ * @param psbt - PSBT we want to verify that the paygo address is in
14
+ * @param outputIndex - we have the output index that address is in
15
+ * @param uuid
16
+ * @returns
17
+ */
18
+ export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
19
+ /** Get the output index of the paygo output if there is one. It does this by
20
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
21
+ * no paygo output, return undefined
22
+ *
23
+ * @param psbt
24
+ * @returns number - the index of the output address
25
+ */
26
+ export declare function getPayGoAddressProofOutputIndex(psbt: utxolib.bitgo.UtxoPsbt): number | undefined;
27
+ export declare function psbtOutputIncludesPaygoAddressProof(psbt: utxolib.bitgo.UtxoPsbt): boolean;
28
+ //# sourceMappingURL=payGoAddressProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAgCN;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAehG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAEzF"}
@@ -0,0 +1,122 @@
1
+ "use strict";
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addPayGoAddressProof = addPayGoAddressProof;
37
+ exports.verifyPayGoAddressProof = verifyPayGoAddressProof;
38
+ exports.getPayGoAddressProofOutputIndex = getPayGoAddressProofOutputIndex;
39
+ exports.psbtOutputIncludesPaygoAddressProof = psbtOutputIncludesPaygoAddressProof;
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const utils_1 = require("bip174/src/lib/utils");
42
+ const bip32utils_1 = require("../../bip32utils");
43
+ const attestation_1 = require("../attestation");
44
+ const Errors_1 = require("./Errors");
45
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
46
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
47
+ * to later verify.
48
+ *
49
+ * @param psbt - PSBT that we need to encode our paygo address into
50
+ * @param outputIndex - the index of the address in our output
51
+ * @param sig - the signature that we want to encode
52
+ */
53
+ function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
54
+ utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
55
+ key: {
56
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
57
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
58
+ keydata: entropy,
59
+ },
60
+ value: sig,
61
+ });
62
+ }
63
+ /** Verify the paygo address signature is valid using verification pub key.
64
+ *
65
+ * @param psbt - PSBT we want to verify that the paygo address is in
66
+ * @param outputIndex - we have the output index that address is in
67
+ * @param uuid
68
+ * @returns
69
+ */
70
+ function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
71
+ const psbtOutputs = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
72
+ const stored = utxolib.bitgo.getProprietaryKeyValuesFromUnknownKeyValues(psbtOutputs, {
73
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
74
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
75
+ });
76
+ // assert stored length is 0 or 1
77
+ if (stored.length === 0) {
78
+ throw new Errors_1.ErrorNoPayGoProof(outputIndex);
79
+ }
80
+ else if (stored.length > 1) {
81
+ throw new Errors_1.ErrorMultiplePayGoProof();
82
+ }
83
+ // We get the signature and entropy from our PSBT unknown key vals
84
+ const signature = stored[0].value;
85
+ const entropy = stored[0].key.keydata;
86
+ // Get the the PayGo address from the txOutputs
87
+ const txOutputs = psbt.txOutputs;
88
+ if (outputIndex >= txOutputs.length) {
89
+ throw new Errors_1.ErrorOutputIndexOutOfBounds(outputIndex);
90
+ }
91
+ const output = txOutputs[outputIndex];
92
+ const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
93
+ // We construct our message <ENTROPY><ADDRESS><UUID>
94
+ const message = (0, attestation_1.createPayGoAttestationBuffer)(addressFromOutput, entropy, psbt.network);
95
+ if (!(0, bip32utils_1.verifyMessage)(message.toString(), verificationPubkey, signature, utxolib.networks.bitcoin)) {
96
+ throw new Errors_1.ErrorPayGoAddressProofFailedVerification();
97
+ }
98
+ }
99
+ /** Get the output index of the paygo output if there is one. It does this by
100
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
101
+ * no paygo output, return undefined
102
+ *
103
+ * @param psbt
104
+ * @returns number - the index of the output address
105
+ */
106
+ function getPayGoAddressProofOutputIndex(psbt) {
107
+ const res = psbt.data.outputs.flatMap((output, outputIndex) => {
108
+ const proprietaryKeyVals = utxolib.bitgo.getPsbtOutputProprietaryKeyVals(output, {
109
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
110
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
111
+ });
112
+ if (proprietaryKeyVals.length > 1) {
113
+ throw new Errors_1.ErrorMultiplePayGoProofAtPsbtIndex(outputIndex);
114
+ }
115
+ return proprietaryKeyVals.length === 0 ? [] : [outputIndex];
116
+ });
117
+ return res.length === 0 ? undefined : res[0];
118
+ }
119
+ function psbtOutputIncludesPaygoAddressProof(psbt) {
120
+ return getPayGoAddressProofOutputIndex(psbt) !== undefined;
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxvREFjQztBQVNELDBEQW9DQztBQVNELDBFQWVDO0FBRUQsa0ZBRUM7QUE3R0QsOERBQWdEO0FBQ2hELGdEQUFzRDtBQUV0RCxpREFBaUQ7QUFDakQsZ0RBQThEO0FBRTlELHFDQU1rQjtBQUVsQjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLEdBQVcsRUFDWCxPQUFlO0lBRWYsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNyRixHQUFHLEVBQUU7WUFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1lBQzVFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0QsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLGtCQUEwQjtJQUUxQixNQUFNLFdBQVcsR0FBRyxJQUFBLHNCQUFjLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxXQUFXLEVBQUU7UUFDcEYsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1FBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtLQUM3RSxDQUFDLENBQUM7SUFFSCxpQ0FBaUM7SUFDakMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSwwQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxnQ0FBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUV0QywrQ0FBK0M7SUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLG9DQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhGLG9EQUFvRDtJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLDBDQUE0QixFQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkYsSUFBSSxDQUFDLElBQUEsMEJBQWEsRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxNQUFNLElBQUksaURBQXdDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLCtCQUErQixDQUFDLElBQTRCO0lBQzFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUM1RCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsTUFBTSxFQUFFO1lBQy9FLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQjtZQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7U0FDN0UsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLDJDQUFrQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFnQixtQ0FBbUMsQ0FBQyxJQUE0QjtJQUM5RSxPQUFPLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBjaGVja0Zvck91dHB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgdmVyaWZ5TWVzc2FnZSB9IGZyb20gJy4uLy4uL2JpcDMydXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlciB9IGZyb20gJy4uL2F0dGVzdGF0aW9uJztcblxuaW1wb3J0IHtcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2YsXG4gIEVycm9yTXVsdGlwbGVQYXlHb1Byb29mQXRQc2J0SW5kZXgsXG4gIEVycm9yTm9QYXlHb1Byb29mLFxuICBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMsXG4gIEVycm9yUGF5R29BZGRyZXNzUHJvb2ZGYWlsZWRWZXJpZmljYXRpb24sXG59IGZyb20gJy4vRXJyb3JzJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gYWRkcyB0aGUgZW50cm9weSBhbmQgc2lnbmF0dXJlIGludG8gdGhlIFBTQlQgb3V0cHV0IHVua25vd24ga2V5IHZhbHMuXG4gKiBXZSBzdG9yZSB0aGUgZW50cm9weSBzbyB0aGF0IHdlIHJlY29uc3RydWN0IHRoZSBtZXNzYWdlIDxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICogdG8gbGF0ZXIgdmVyaWZ5LlxuICpcbiAqIEBwYXJhbSBwc2J0IC0gUFNCVCB0aGF0IHdlIG5lZWQgdG8gZW5jb2RlIG91ciBwYXlnbyBhZGRyZXNzIGludG9cbiAqIEBwYXJhbSBvdXRwdXRJbmRleCAtIHRoZSBpbmRleCBvZiB0aGUgYWRkcmVzcyBpbiBvdXIgb3V0cHV0XG4gKiBAcGFyYW0gc2lnIC0gdGhlIHNpZ25hdHVyZSB0aGF0IHdlIHdhbnQgdG8gZW5jb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXlHb0FkZHJlc3NQcm9vZihcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgc2lnOiBCdWZmZXIsXG4gIGVudHJvcHk6IEJ1ZmZlclxuKTogdm9pZCB7XG4gIHV0eG9saWIuYml0Z28uYWRkUHJvcHJpZXRhcnlLZXlWYWx1ZXNGcm9tVW5rbm93bktleVZhbHVlcyhwc2J0LCAnb3V0cHV0Jywgb3V0cHV0SW5kZXgsIHtcbiAgICBrZXk6IHtcbiAgICAgIGlkZW50aWZpZXI6IHV0eG9saWIuYml0Z28uUFNCVF9QUk9QUklFVEFSWV9JREVOVElGSUVSLFxuICAgICAgc3VidHlwZTogdXR4b2xpYi5iaXRnby5Qcm9wcmlldGFyeUtleVN1YnR5cGUuUEFZR09fQUREUkVTU19BVFRFU1RBVElPTl9QUk9PRixcbiAgICAgIGtleWRhdGE6IGVudHJvcHksXG4gICAgfSxcbiAgICB2YWx1ZTogc2lnLFxuICB9KTtcbn1cblxuLyoqIFZlcmlmeSB0aGUgcGF5Z28gYWRkcmVzcyBzaWduYXR1cmUgaXMgdmFsaWQgdXNpbmcgdmVyaWZpY2F0aW9uIHB1YiBrZXkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHdlIHdhbnQgdG8gdmVyaWZ5IHRoYXQgdGhlIHBheWdvIGFkZHJlc3MgaXMgaW5cbiAqIEBwYXJhbSBvdXRwdXRJbmRleCAtIHdlIGhhdmUgdGhlIG91dHB1dCBpbmRleCB0aGF0IGFkZHJlc3MgaXMgaW5cbiAqIEBwYXJhbSB1dWlkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIGlmICghdmVyaWZ5TWVzc2FnZShtZXNzYWdlLnRvU3RyaW5nKCksIHZlcmlmaWNhdGlvblB1YmtleSwgc2lnbmF0dXJlLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yUGF5R29BZGRyZXNzUHJvb2ZGYWlsZWRWZXJpZmljYXRpb24oKTtcbiAgfVxufVxuXG4vKiogR2V0IHRoZSBvdXRwdXQgaW5kZXggb2YgdGhlIHBheWdvIG91dHB1dCBpZiB0aGVyZSBpcyBvbmUuIEl0IGRvZXMgdGhpcyBieVxuICogY2hlY2tpbmcgaWYgdGhlIG1ldGFkYXRhIGlzIG9uIG9uZSBvZiB0aGUgb3V0cHV0cyBvZiB0aGUgUFNCVC4gSWYgdGhlcmUgaXNcbiAqIG5vIHBheWdvIG91dHB1dCwgcmV0dXJuIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSBwc2J0XG4gKiBAcmV0dXJucyBudW1iZXIgLSB0aGUgaW5kZXggb2YgdGhlIG91dHB1dCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXMgPSBwc2J0LmRhdGEub3V0cHV0cy5mbGF0TWFwKChvdXRwdXQsIG91dHB1dEluZGV4KSA9PiB7XG4gICAgY29uc3QgcHJvcHJpZXRhcnlLZXlWYWxzID0gdXR4b2xpYi5iaXRnby5nZXRQc2J0T3V0cHV0UHJvcHJpZXRhcnlLZXlWYWxzKG91dHB1dCwge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3ByaWV0YXJ5S2V5VmFscy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleChvdXRwdXRJbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3ByaWV0YXJ5S2V5VmFscy5sZW5ndGggPT09IDAgPyBbXSA6IFtvdXRwdXRJbmRleF07XG4gIH0pO1xuXG4gIHJldHVybiByZXMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcmVzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHNidE91dHB1dEluY2x1ZGVzUGF5Z29BZGRyZXNzUHJvb2YocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UGF5R29BZGRyZXNzUHJvb2ZPdXRwdXRJbmRleChwc2J0KSAhPT0gdW5kZWZpbmVkO1xufVxuIl19
@@ -3,7 +3,7 @@ import { DescriptorMap, PsbtParams } from '../../descriptor';
3
3
  import { Triple, KeyTriple } from '../key.utils';
4
4
  export declare function getDefaultXPubs(seed?: string): Triple<string>;
5
5
  export declare function getUnspendableKey(): string;
6
- export type DescriptorTemplate = 'Wsh2Of3' | 'Tr2Of3-NoKeyPath' | 'Wsh2Of2' | 'Wsh2Of3CltvDrop';
6
+ export type DescriptorTemplate = 'Wsh2Of3' | 'Tr1Of3-NoKeyPath-Tree' | 'Tr1Of3-NoKeyPath-Tree-Plain' | 'Tr2Of3-NoKeyPath' | 'Wsh2Of2' | 'Wsh2Of3CltvDrop';
7
7
  export declare function getPsbtParams(t: DescriptorTemplate): Partial<PsbtParams>;
8
8
  export declare function getDescriptor(template: DescriptorTemplate, keys?: KeyTriple | string[], path?: string): Descriptor;
9
9
  export declare function getDescriptorMap(template: DescriptorTemplate, keys?: KeyTriple | string[]): DescriptorMap;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/descriptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAO,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAE7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAsB1C;AAMD,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,kBAAkB,GAClB,SAAS,GAMT,iBAAiB,CAAC;AAoBtB,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CASxE;AAgCD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,EAC9C,IAAI,SAAQ,GACX,UAAU,CAEZ;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,GAC7C,aAAa,CAKf"}
1
+ {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/descriptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAO,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAE7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAsB1C;AAMD,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,uBAAuB,GAEvB,6BAA6B,GAC7B,kBAAkB,GAClB,SAAS,GAMT,iBAAiB,CAAC;AAkCtB,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAOxE;AA2CD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,EAC9C,IAAI,SAAQ,GACX,UAAU,CAEZ;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,GAC7C,aAAa,CAKf"}
@@ -10,6 +10,7 @@ exports.getDescriptor = getDescriptor;
10
10
  exports.getDescriptorMap = getDescriptorMap;
11
11
  const assert_1 = __importDefault(require("assert"));
12
12
  const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
13
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
13
14
  const key_utils_1 = require("../key.utils");
14
15
  function getDefaultXPubs(seed) {
15
16
  return (0, key_utils_1.getKeyTriple)(seed).map((k) => k.neutered().toBase58());
@@ -46,6 +47,18 @@ function toXPub(k, path) {
46
47
  }
47
48
  return k.neutered().toBase58() + '/' + path;
48
49
  }
50
+ function toPlain(k, { xonly = false } = {}) {
51
+ if (typeof k === 'string') {
52
+ if (k.startsWith('xpub') || k.startsWith('xprv')) {
53
+ return toPlain(utxo_lib_1.bip32.fromBase58(k), { xonly });
54
+ }
55
+ return k;
56
+ }
57
+ return k.publicKey.subarray(xonly ? 1 : 0).toString('hex');
58
+ }
59
+ function toXOnly(k) {
60
+ return toPlain(k, { xonly: true });
61
+ }
49
62
  function multiArgs(m, n, keys, path) {
50
63
  if (n < m) {
51
64
  throw new Error(`Cannot create ${m} of ${n} multisig`);
@@ -58,12 +71,10 @@ function multiArgs(m, n, keys, path) {
58
71
  }
59
72
  function getPsbtParams(t) {
60
73
  switch (t) {
61
- case 'Wsh2Of3':
62
- case 'Wsh2Of2':
63
- case 'Tr2Of3-NoKeyPath':
64
- return {};
65
74
  case 'Wsh2Of3CltvDrop':
66
75
  return { locktime: 1 };
76
+ default:
77
+ return {};
67
78
  }
68
79
  }
69
80
  function getDescriptorNode(template, keys = getDefaultXPubs(), path = '0/*') {
@@ -88,11 +99,22 @@ function getDescriptorNode(template, keys = getDefaultXPubs(), path = '0/*') {
88
99
  return {
89
100
  tr: [getUnspendableKey(), { multi_a: multiArgs(2, 3, keys, path) }],
90
101
  };
102
+ case 'Tr1Of3-NoKeyPath-Tree':
103
+ return {
104
+ tr: [
105
+ getUnspendableKey(),
106
+ [{ pk: toXPub(keys[0], path) }, [{ pk: toXPub(keys[1], path) }, { pk: toXPub(keys[2], path) }]],
107
+ ],
108
+ };
109
+ case 'Tr1Of3-NoKeyPath-Tree-Plain':
110
+ return {
111
+ tr: [getUnspendableKey(), [{ pk: toXOnly(keys[0]) }, [{ pk: toXOnly(keys[1]) }, { pk: toXOnly(keys[2]) }]]],
112
+ };
91
113
  }
92
114
  throw new Error(`Unknown descriptor template: ${template}`);
93
115
  }
94
116
  function getDescriptor(template, keys = getDefaultXPubs(), path = '0/*') {
95
- return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode(getDescriptorNode(template, keys, path)), 'derivable');
117
+ return wasm_miniscript_1.Descriptor.fromStringDetectType(wasm_miniscript_1.ast.formatNode(getDescriptorNode(template, keys, path)));
96
118
  }
97
119
  function getDescriptorMap(template, keys = getDefaultXPubs()) {
98
120
  return toDescriptorMap({
@@ -100,4 +122,4 @@ function getDescriptorMap(template, keys = getDefaultXPubs()) {
100
122
  internal: getDescriptor(template, keys, '1/*').toString(),
101
123
  });
102
124
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9kZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLDBDQUVDO0FBRUQsOENBc0JDO0FBbUNELHNDQVNDO0FBZ0NELHNDQU1DO0FBRUQsNENBUUM7QUE5SEQsb0RBQTRCO0FBRTVCLDREQUF5RDtBQUl6RCw0Q0FBK0Q7QUFFL0QsU0FBZ0IsZUFBZSxDQUFDLElBQWE7SUFDM0MsT0FBTyxJQUFBLHdCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQW1CLENBQUM7QUFDbEYsQ0FBQztBQUVELFNBQWdCLGlCQUFpQjtJQUMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1CRTtJQUNGLE9BQU8sa0VBQWtFLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLENBQXlCO0lBQ2hELE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsNEJBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFhRCxTQUFTLE1BQU0sQ0FBQyxDQUEwQixFQUFFLElBQVk7SUFDdEQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdB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QzlCLFFBQTRCLEVBQzVCLE9BQTZCLGVBQWUsRUFBRTtJQUU5QyxPQUFPLGVBQWUsQ0FBQztRQUNyQixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQ3pELFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDMUQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvciwgYXN0IH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgUHNidFBhcmFtcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlLCBUcmlwbGUsIEtleVRyaXBsZSB9IGZyb20gJy4uL2tleS51dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WFB1YnMoc2VlZD86IHN0cmluZyk6IFRyaXBsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGdldEtleVRyaXBsZShzZWVkKS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKSBhcyBUcmlwbGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuc3BlbmRhYmxlS2V5KCk6IHN0cmluZyB7XG4gIC8qXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAzNDEubWVkaWF3aWtpI2NvbnN0cnVjdGluZy1hbmQtc3BlbmRpbmctdGFwcm9vdC1vdXRwdXRzXG5cbiAgYGBgXG4gIElmIG9uZSBvciBtb3JlIG9mIHRoZSBzcGVuZGluZyBjb25kaXRpb25zIGNvbnNpc3Qgb2YganVzdCBhIHNpbmdsZSBrZXkgKGFmdGVyIGFnZ3JlZ2F0aW9uKSwgdGhlIG1vc3QgbGlrZWx5IG9uZSBzaG91bGRcbiAgYmUgbWFkZSB0aGUgaW50ZXJuYWwga2V5LiBJZiBubyBzdWNoIGNvbmRpdGlvbiBleGlzdHMsIGl0IG1heSBiZSB3b3J0aHdoaWxlIGFkZGluZyBvbmUgdGhhdCBjb25zaXN0cyBvZiBhbiBhZ2dyZWdhdGlvblxuICBvZiBhbGwga2V5cyBwYXJ0aWNpcGF0aW5nIGluIGFsbCBzY3JpcHRzIGNvbWJpbmVkOyBlZmZlY3RpdmVseSBhZGRpbmcgYW4gXCJldmVyeW9uZSBhZ3JlZXNcIiBicmFuY2guIElmIHRoYXQgaXNcbiAgaW5hY2NlcHRhYmxlLCBwaWNrIGFzIGludGVybmFsIGtleSBhIFwiTm90aGluZyBVcCBNeSBTbGVldmVcIiAoTlVNUykgcG9pbnQsIGkuZS4sIGEgcG9pbnQgd2l0aCB1bmtub3duIGRpc2NyZXRlXG4gIGxvZ2FyaXRobS5cblxuICBPbmUgZXhhbXBsZSBvZiBzdWNoIGEgcG9pbnQgaXMgSCA9IGxpZnRfeCgweDUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzApIHdoaWNoIGlzXG4gIGNvbnN0cnVjdGVkIGJ5IHRha2luZyB0aGUgaGFzaCBvZiB0aGUgc3RhbmRhcmQgdW5jb21wcmVzc2VkIGVuY29kaW5nIG9mIHRoZSBzZWNwMjU2azEgYmFzZSBwb2ludCBHIGFzIFggY29vcmRpbmF0ZS5cbiAgSW4gb3JkZXIgdG8gYXZvaWQgbGVha2luZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBrZXkgcGF0aCBzcGVuZGluZyBpcyBub3QgcG9zc2libGUgaXQgaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoXG4gIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2UgSCArIHJHIGFzIGludGVybmFsIGtleS4gSXQgaXMgcG9zc2libGUgdG8gcHJvdmUgdGhhdCB0aGlzXG4gIGludGVybmFsIGtleSBkb2VzIG5vdCBoYXZlIGEga25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHdpdGggcmVzcGVjdCB0byBHIGJ5IHJldmVhbGluZyByIHRvIGEgdmVyaWZpZXIgd2hvIGNhbiB0aGVuXG4gIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICBgYGBcblxuICBXZSBjb3VsZCBkbyB0aGUgcmFuZG9tIGludGVnZXIgdHJpY2sgaGVyZSwgYnV0IGZvciBpbnRlcm5hbCB0ZXN0aW5nIGl0IGlzIHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBmaXhlZCBwb2ludC5cbiAgKi9cbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwKHY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIG5ldyBNYXAoT2JqZWN0LmVudHJpZXModikubWFwKChbaywgdl0pID0+IFtrLCBEZXNjcmlwdG9yLmZyb21TdHJpbmcodiwgJ2Rlcml2YWJsZScpXSkpO1xufVxuXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVGVtcGxhdGUgPVxuICB8ICdXc2gyT2YzJ1xuICB8ICdUcjJPZjMtTm9LZXlQYXRoJ1xuICB8ICdXc2gyT2YyJ1xuICAvKlxuICAgKiBUaGlzIGlzIGEgd3JhcHBlZCBzZWd3aXQgMm9mMyBtdWx0aXNpZyB0aGF0IGFsc28gdXNlcyBhIHJlbGF0aXZlIGxvY2t0aW1lIHdpdGhcbiAgICogYW4gT1BfRFJPUCAocmVxdWlyaW5nIGEgbWluaXNjcmlwdCBleHRlbnNpb24pLlxuICAgKiBJdCBpcyBiYXNpY2FsbHkgd2hhdCBpcyB1c2VkIGluIENvcmVEYW8gc3Rha2luZyB0cmFuc2FjdGlvbnMuXG4gICAqL1xuICB8ICdXc2gyT2YzQ2x0dkRyb3AnO1xuXG5mdW5jdGlvbiB0b1hQdWIoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gayArICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpICsgJy8nICsgcGF0aDtcbn1cblxuZnVuY3Rpb24gbXVsdGlBcmdzKG06IG51bWJlciwgbjogbnVtYmVyLCBrZXlzOiBCSVAzMkludGVyZmFjZVtdIHwgc3RyaW5nW10sIHBhdGg6IHN0cmluZyk6IFtudW1iZXIsIC4uLnN0cmluZ1tdXSB7XG4gIGlmIChuIDwgbSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSAke219IG9mICR7bn0gbXVsdGlzaWdgKTtcbiAgfVxuICBpZiAoa2V5cy5sZW5ndGggPCBuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIGtleXMgZm9yICR7bX0gb2YgJHtufSBtdWx0aXNpZzoga2V5cy5sZW5ndGg9JHtrZXlzLmxlbmd0aH1gKTtcbiAgfVxuICBrZXlzID0ga2V5cy5zbGljZSgwLCBuKTtcbiAgcmV0dXJuIFttLCAuLi5rZXlzLm1hcCgoaykgPT4gdG9YUHViKGssIHBhdGgpKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0UGFyYW1zKHQ6IERlc2NyaXB0b3JUZW1wbGF0ZSk6IFBhcnRpYWw8UHNidFBhcmFtcz4ge1xuICBzd2l0Y2ggKHQpIHtcbiAgICBjYXNlICdXc2gyT2YzJzpcbiAgICBjYXNlICdXc2gyT2YyJzpcbiAgICBjYXNlICdUcjJPZjMtTm9LZXlQYXRoJzpcbiAgICAgIHJldHVybiB7fTtcbiAgICBjYXNlICdXc2gyT2YzQ2x0dkRyb3AnOlxuICAgICAgcmV0dXJuIHsgbG9ja3RpbWU6IDEgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZXNjcmlwdG9yTm9kZShcbiAgdGVtcGxhdGU6IERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAga2V5czogS2V5VHJpcGxlIHwgc3RyaW5nW10gPSBnZXREZWZhdWx0WFB1YnMoKSxcbiAgcGF0aCA9ICcwLyonXG4pOiBhc3QuRGVzY3JpcHRvck5vZGUge1xuICBzd2l0Y2ggKHRlbXBsYXRlKSB7XG4gICAgY2FzZSAnV3NoMk9mMyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3c2g6IHsgbXVsdGk6IG11bHRpQXJncygyLCAzLCBrZXlzLCBwYXRoKSB9LFxuICAgICAgfTtcbiAgICBjYXNlICdXc2gyT2YzQ2x0dkRyb3AnOlxuICAgICAgY29uc3QgeyBsb2NrdGltZSB9ID0gZ2V0UHNidFBhcmFtcyh0ZW1wbGF0ZSk7XG4gICAgICBhc3NlcnQobG9ja3RpbWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3NoOiB7XG4gICAgICAgICAgYW5kX3Y6IFt7ICdyOmFmdGVyJzogbG9ja3RpbWUgfSwgeyBtdWx0aTogbXVsdGlBcmdzKDIsIDMsIGtleXMsIHBhdGgpIH1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICdXc2gyT2YyJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdzaDogeyBtdWx0aTogbXVsdGlBcmdzKDIsIDIsIGtleXMsIHBhdGgpIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1RyMk9mMy1Ob0tleVBhdGgnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHI6IFtnZXRVbnNwZW5kYWJsZUtleSgpLCB7IG11bHRpX2E6IG11bHRpQXJncygyLCAzLCBrZXlzLCBwYXRoKSB9XSxcbiAgICAgIH07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRlc2NyaXB0b3IgdGVtcGxhdGU6ICR7dGVtcGxhdGV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yKFxuICB0ZW1wbGF0ZTogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBrZXlzOiBLZXlUcmlwbGUgfCBzdHJpbmdbXSA9IGdldERlZmF1bHRYUHVicygpLFxuICBwYXRoID0gJzAvKidcbik6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGFzdC5mb3JtYXROb2RlKGdldERlc2NyaXB0b3JOb2RlKHRlbXBsYXRlLCBrZXlzLCBwYXRoKSksICdkZXJpdmFibGUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JNYXAoXG4gIHRlbXBsYXRlOiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIGtleXM6IEtleVRyaXBsZSB8IHN0cmluZ1tdID0gZ2V0RGVmYXVsdFhQdWJzKClcbik6IERlc2NyaXB0b3JNYXAge1xuICByZXR1cm4gdG9EZXNjcmlwdG9yTWFwKHtcbiAgICBleHRlcm5hbDogZ2V0RGVzY3JpcHRvcih0ZW1wbGF0ZSwga2V5cywgJzAvKicpLnRvU3RyaW5nKCksXG4gICAgaW50ZXJuYWw6IGdldERlc2NyaXB0b3IodGVtcGxhdGUsIGtleXMsICcxLyonKS50b1N0cmluZygpLFxuICB9KTtcbn1cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9kZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLDBDQUVDO0FBRUQsOENBc0JDO0FBb0RELHNDQU9DO0FBMkNELHNDQU1DO0FBRUQsNENBUUM7QUF4SkQsb0RBQTRCO0FBRTVCLDREQUF5RDtBQUN6RCxtREFBNkQ7QUFHN0QsNENBQStEO0FBRS9ELFNBQWdCLGVBQWUsQ0FBQyxJQUFhO0lBQzNDLE9BQU8sSUFBQSx3QkFBWSxFQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFtQixDQUFDO0FBQ2xGLENBQUM7QUFFRCxTQUFnQixpQkFBaUI7SUFDL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQkU7SUFDRixPQUFPLGtFQUFrRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUF5QjtJQUNoRCxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLDRCQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFDO0FBZ0JELFNBQVMsTUFBTSxDQUFDLENBQTBCLEVBQUUsSUFBWTtJQUN0RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFB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UUFBNEIsRUFDNUIsT0FBNkIsZUFBZSxFQUFFLEVBQzlDLElBQUksR0FBRyxLQUFLO0lBRVosT0FBTyw0QkFBVSxDQUFDLG9CQUFvQixDQUFDLHFCQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsUUFBNEIsRUFDNUIsT0FBNkIsZUFBZSxFQUFFO0lBRTlDLE9BQU8sZUFBZSxDQUFDO1FBQ3JCLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUU7UUFDekQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUMxRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBhc3QgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgUHNidFBhcmFtcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlLCBUcmlwbGUsIEtleVRyaXBsZSB9IGZyb20gJy4uL2tleS51dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WFB1YnMoc2VlZD86IHN0cmluZyk6IFRyaXBsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGdldEtleVRyaXBsZShzZWVkKS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKSBhcyBUcmlwbGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuc3BlbmRhYmxlS2V5KCk6IHN0cmluZyB7XG4gIC8qXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAzNDEubWVkaWF3aWtpI2NvbnN0cnVjdGluZy1hbmQtc3BlbmRpbmctdGFwcm9vdC1vdXRwdXRzXG5cbiAgYGBgXG4gIElmIG9uZSBvciBtb3JlIG9mIHRoZSBzcGVuZGluZyBjb25kaXRpb25zIGNvbnNpc3Qgb2YganVzdCBhIHNpbmdsZSBrZXkgKGFmdGVyIGFnZ3JlZ2F0aW9uKSwgdGhlIG1vc3QgbGlrZWx5IG9uZSBzaG91bGRcbiAgYmUgbWFkZSB0aGUgaW50ZXJuYWwga2V5LiBJZiBubyBzdWNoIGNvbmRpdGlvbiBleGlzdHMsIGl0IG1heSBiZSB3b3J0aHdoaWxlIGFkZGluZyBvbmUgdGhhdCBjb25zaXN0cyBvZiBhbiBhZ2dyZWdhdGlvblxuICBvZiBhbGwga2V5cyBwYXJ0aWNpcGF0aW5nIGluIGFsbCBzY3JpcHRzIGNvbWJpbmVkOyBlZmZlY3RpdmVseSBhZGRpbmcgYW4gXCJldmVyeW9uZSBhZ3JlZXNcIiBicmFuY2guIElmIHRoYXQgaXNcbiAgaW5hY2NlcHRhYmxlLCBwaWNrIGFzIGludGVybmFsIGtleSBhIFwiTm90aGluZyBVcCBNeSBTbGVldmVcIiAoTlVNUykgcG9pbnQsIGkuZS4sIGEgcG9pbnQgd2l0aCB1bmtub3duIGRpc2NyZXRlXG4gIGxvZ2FyaXRobS5cblxuICBPbmUgZXhhbXBsZSBvZiBzdWNoIGEgcG9pbnQgaXMgSCA9IGxpZnRfeCgweDUwOTI5Yjc0YzFhMDQ5NTRiNzhiNGI2MDM1ZTk3YTVlMDc4YTVhMGYyOGVjOTZkNTQ3YmZlZTlhY2U4MDNhYzApIHdoaWNoIGlzXG4gIGNvbnN0cnVjdGVkIGJ5IHRha2luZyB0aGUgaGFzaCBvZiB0aGUgc3RhbmRhcmQgdW5jb21wcmVzc2VkIGVuY29kaW5nIG9mIHRoZSBzZWNwMjU2azEgYmFzZSBwb2ludCBHIGFzIFggY29vcmRpbmF0ZS5cbiAgSW4gb3JkZXIgdG8gYXZvaWQgbGVha2luZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBrZXkgcGF0aCBzcGVuZGluZyBpcyBub3QgcG9zc2libGUgaXQgaXMgcmVjb21tZW5kZWQgdG8gcGljayBhIGZyZXNoXG4gIGludGVnZXIgciBpbiB0aGUgcmFuZ2UgMC4uLm4tMSB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZCB1c2UgSCArIHJHIGFzIGludGVybmFsIGtleS4gSXQgaXMgcG9zc2libGUgdG8gcHJvdmUgdGhhdCB0aGlzXG4gIGludGVybmFsIGtleSBkb2VzIG5vdCBoYXZlIGEga25vd24gZGlzY3JldGUgbG9nYXJpdGhtIHdpdGggcmVzcGVjdCB0byBHIGJ5IHJldmVhbGluZyByIHRvIGEgdmVyaWZpZXIgd2hvIGNhbiB0aGVuXG4gIHJlY29uc3RydWN0IGhvdyB0aGUgaW50ZXJuYWwga2V5IHdhcyBjcmVhdGVkLlxuICBgYGBcblxuICBXZSBjb3VsZCBkbyB0aGUgcmFuZG9tIGludGVnZXIgdHJpY2sgaGVyZSwgYnV0IGZvciBpbnRlcm5hbCB0ZXN0aW5nIGl0IGlzIHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBmaXhlZCBwb2ludC5cbiAgKi9cbiAgcmV0dXJuICc1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwJztcbn1cblxuZnVuY3Rpb24gdG9EZXNjcmlwdG9yTWFwKHY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBEZXNjcmlwdG9yTWFwIHtcbiAgcmV0dXJuIG5ldyBNYXAoT2JqZWN0LmVudHJpZXModikubWFwKChbaywgdl0pID0+IFtrLCBEZXNjcmlwdG9yLmZyb21TdHJpbmcodiwgJ2Rlcml2YWJsZScpXSkpO1xufVxuXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVGVtcGxhdGUgPVxuICB8ICdXc2gyT2YzJ1xuICB8ICdUcjFPZjMtTm9LZXlQYXRoLVRyZWUnXG4gIC8vIG5vIHhwdWJzLCBqdXN0IHBsYWluIGtleXNcbiAgfCAnVHIxT2YzLU5vS2V5UGF0aC1UcmVlLVBsYWluJ1xuICB8ICdUcjJPZjMtTm9LZXlQYXRoJ1xuICB8ICdXc2gyT2YyJ1xuICAvKlxuICAgKiBUaGlzIGlzIGEgd3JhcHBlZCBzZWd3aXQgMm9mMyBtdWx0aXNpZyB0aGF0IGFsc28gdXNlcyBhIHJlbGF0aXZlIGxvY2t0aW1lIHdpdGhcbiAgICogYW4gT1BfRFJPUCAocmVxdWlyaW5nIGEgbWluaXNjcmlwdCBleHRlbnNpb24pLlxuICAgKiBJdCBpcyBiYXNpY2FsbHkgd2hhdCBpcyB1c2VkIGluIENvcmVEYW8gc3Rha2luZyB0cmFuc2FjdGlvbnMuXG4gICAqL1xuICB8ICdXc2gyT2YzQ2x0dkRyb3AnO1xuXG5mdW5jdGlvbiB0b1hQdWIoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gayArICcvJyArIHBhdGg7XG4gIH1cbiAgcmV0dXJuIGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpICsgJy8nICsgcGF0aDtcbn1cblxuZnVuY3Rpb24gdG9QbGFpbihrOiBCSVAzMkludGVyZmFjZSB8IHN0cmluZywgeyB4b25seSA9IGZhbHNlIH0gPSB7fSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoay5zdGFydHNXaXRoKCd4cHViJykgfHwgay5zdGFydHNXaXRoKCd4cHJ2JykpIHtcbiAgICAgIHJldHVybiB0b1BsYWluKGJpcDMyLmZyb21CYXNlNTgoayksIHsgeG9ubHkgfSk7XG4gICAgfVxuICAgIHJldHVybiBrO1xuICB9XG4gIHJldHVybiBrLnB1YmxpY0tleS5zdWJhcnJheSh4b25seSA/IDEgOiAwKS50b1N0cmluZygnaGV4Jyk7XG59XG5cbmZ1bmN0aW9uIHRvWE9ubHkoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9QbGFpbihrLCB7IHhvbmx5OiB0cnVlIH0pO1xufVxuXG5mdW5jdGlvbiBtdWx0aUFyZ3MobTogbnVtYmVyLCBuOiBudW1iZXIsIGtleXM6IEJJUDMySW50ZXJmYWNlW10gfCBzdHJpbmdbXSwgcGF0aDogc3RyaW5nKTogW251bWJlciwgLi4uc3RyaW5nW11dIHtcbiAgaWYgKG4gPCBtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlICR7bX0gb2YgJHtufSBtdWx0aXNpZ2ApO1xuICB9XG4gIGlmIChrZXlzLmxlbmd0aCA8IG4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2gga2V5cyBmb3IgJHttfSBvZiAke259IG11bHRpc2lnOiBrZXlzLmxlbmd0aD0ke2tleXMubGVuZ3RofWApO1xuICB9XG4gIGtleXMgPSBrZXlzLnNsaWNlKDAsIG4pO1xuICByZXR1cm4gW20sIC4uLmtleXMubWFwKChrKSA9PiB0b1hQdWIoaywgcGF0aCkpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRQYXJhbXModDogRGVzY3JpcHRvclRlbXBsYXRlKTogUGFydGlhbDxQc2J0UGFyYW1zPiB7XG4gIHN3aXRjaCAodCkge1xuICAgIGNhc2UgJ1dzaDJPZjNDbHR2RHJvcCc6XG4gICAgICByZXR1cm4geyBsb2NrdGltZTogMSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvck5vZGUoXG4gIHRlbXBsYXRlOiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIGtleXM6IEtleVRyaXBsZSB8IHN0cmluZ1tdID0gZ2V0RGVmYXVsdFhQdWJzKCksXG4gIHBhdGggPSAnMC8qJ1xuKTogYXN0LkRlc2NyaXB0b3JOb2RlIHtcbiAgc3dpdGNoICh0ZW1wbGF0ZSkge1xuICAgIGNhc2UgJ1dzaDJPZjMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3NoOiB7IG11bHRpOiBtdWx0aUFyZ3MoMiwgMywga2V5cywgcGF0aCkgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnV3NoMk9mM0NsdHZEcm9wJzpcbiAgICAgIGNvbnN0IHsgbG9ja3RpbWUgfSA9IGdldFBzYnRQYXJhbXModGVtcGxhdGUpO1xuICAgICAgYXNzZXJ0KGxvY2t0aW1lKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdzaDoge1xuICAgICAgICAgIGFuZF92OiBbeyAncjphZnRlcic6IGxvY2t0aW1lIH0sIHsgbXVsdGk6IG11bHRpQXJncygyLCAzLCBrZXlzLCBwYXRoKSB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnV3NoMk9mMic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3c2g6IHsgbXVsdGk6IG11bHRpQXJncygyLCAyLCBrZXlzLCBwYXRoKSB9LFxuICAgICAgfTtcbiAgICBjYXNlICdUcjJPZjMtTm9LZXlQYXRoJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyOiBbZ2V0VW5zcGVuZGFibGVLZXkoKSwgeyBtdWx0aV9hOiBtdWx0aUFyZ3MoMiwgMywga2V5cywgcGF0aCkgfV0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cjogW1xuICAgICAgICAgIGdldFVuc3BlbmRhYmxlS2V5KCksXG4gICAgICAgICAgW3sgcGs6IHRvWFB1YihrZXlzWzBdLCBwYXRoKSB9LCBbeyBwazogdG9YUHViKGtleXNbMV0sIHBhdGgpIH0sIHsgcGs6IHRvWFB1YihrZXlzWzJdLCBwYXRoKSB9XV0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cjogW2dldFVuc3BlbmRhYmxlS2V5KCksIFt7IHBrOiB0b1hPbmx5KGtleXNbMF0pIH0sIFt7IHBrOiB0b1hPbmx5KGtleXNbMV0pIH0sIHsgcGs6IHRvWE9ubHkoa2V5c1syXSkgfV1dXSxcbiAgICAgIH07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRlc2NyaXB0b3IgdGVtcGxhdGU6ICR7dGVtcGxhdGV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yKFxuICB0ZW1wbGF0ZTogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBrZXlzOiBLZXlUcmlwbGUgfCBzdHJpbmdbXSA9IGdldERlZmF1bHRYUHVicygpLFxuICBwYXRoID0gJzAvKidcbik6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nRGV0ZWN0VHlwZShhc3QuZm9ybWF0Tm9kZShnZXREZXNjcmlwdG9yTm9kZSh0ZW1wbGF0ZSwga2V5cywgcGF0aCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JNYXAoXG4gIHRlbXBsYXRlOiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIGtleXM6IEtleVRyaXBsZSB8IHN0cmluZ1tdID0gZ2V0RGVmYXVsdFhQdWJzKClcbik6IERlc2NyaXB0b3JNYXAge1xuICByZXR1cm4gdG9EZXNjcmlwdG9yTWFwKHtcbiAgICBleHRlcm5hbDogZ2V0RGVzY3JpcHRvcih0ZW1wbGF0ZSwga2V5cywgJzAvKicpLnRvU3RyaW5nKCksXG4gICAgaW50ZXJuYWw6IGdldERlc2NyaXB0b3IodGVtcGxhdGUsIGtleXMsICcxLyonKS50b1N0cmluZygpLFxuICB9KTtcbn1cbiJdfQ==
@@ -1,7 +1,6 @@
1
1
  import { Descriptor } from '@bitgo/wasm-miniscript';
2
2
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
- import { PsbtParams } from '../../descriptor';
4
- import { DerivedDescriptorWalletOutput } from '../../descriptor/Output';
3
+ import { PsbtParams, DerivedDescriptorTransactionInput } from '../../descriptor';
5
4
  import { DescriptorTemplate } from './descriptors';
6
5
  type MockOutputIdParams = {
7
6
  hash?: string;
@@ -11,8 +10,9 @@ type BaseMockDescriptorOutputParams = {
11
10
  id?: MockOutputIdParams;
12
11
  index?: number;
13
12
  value?: bigint;
13
+ sequence?: number;
14
14
  };
15
- export declare function mockDerivedDescriptorWalletOutput(descriptor: Descriptor, outputParams?: BaseMockDescriptorOutputParams): DerivedDescriptorWalletOutput;
15
+ export declare function mockDerivedDescriptorWalletOutput(descriptor: Descriptor, outputParams?: BaseMockDescriptorOutputParams): DerivedDescriptorTransactionInput;
16
16
  type MockInput = BaseMockDescriptorOutputParams & {
17
17
  index: number;
18
18
  descriptor: Descriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"mock.utils.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/mock.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAgD,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAkC,MAAM,eAAe,CAAC;AAEnF,KAAK,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,KAAK,8BAA8B,GAAG;IACpC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAWF,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EACtB,YAAY,GAAE,8BAAmC,GAChD,6BAA6B,CAY/B;AAED,KAAK,SAAS,GAAG,8BAA8B,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAaxB;AAED,wBAAgB,eAAe,CAAC,EAC9B,cAA+D,EAC/D,eAAgE,EAChE,MAAW,GACZ,GAAE;IACD,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CACzB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAY9B;AAED,wBAAgB,qCAAqC,CACnD,CAAC,EAAE,kBAAkB,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAMxB"}
1
+ {"version":3,"file":"mock.utils.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/mock.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,UAAU,EAGV,iCAAiC,EAClC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,eAAe,CAAC;AAEnF,KAAK,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,KAAK,8BAA8B,GAAG;IACpC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EACtB,YAAY,GAAE,8BAAmC,GAChD,iCAAiC,CAanC;AAED,KAAK,SAAS,GAAG,8BAA8B,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAaxB;AAED,wBAAgB,eAAe,CAAC,EAC9B,cAA+D,EAC/D,eAAgE,EAChE,MAAW,GACZ,GAAE;IACD,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CACzB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAY9B;AAED,wBAAgB,qCAAqC,CACnD,CAAC,EAAE,kBAAkB,EACrB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAMxB"}
@@ -52,17 +52,21 @@ function mockDerivedDescriptorWalletOutput(descriptor, outputParams = {}) {
52
52
  hash,
53
53
  index: vout,
54
54
  witnessUtxo: {
55
- script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(descriptor),
55
+ script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(descriptor, undefined),
56
56
  value,
57
57
  },
58
58
  descriptor,
59
+ sequence: outputParams.sequence,
59
60
  };
60
61
  }
62
+ function tryDeriveAtIndex(descriptor, index) {
63
+ return descriptor.hasWildcard() ? descriptor.atDerivationIndex(index) : descriptor;
64
+ }
61
65
  function mockPsbt(inputs, outputs, params = {}) {
62
- return (0, descriptor_1.createPsbt)({ ...params, network: params.network ?? utxolib.networks.bitcoin }, inputs.map((i) => mockDerivedDescriptorWalletOutput(i.descriptor.atDerivationIndex(i.index), i)), outputs.map((o) => {
63
- const derivedDescriptor = o.descriptor.atDerivationIndex(o.index);
66
+ return (0, descriptor_1.createPsbt)({ ...params, network: params.network ?? utxolib.networks.bitcoin }, inputs.map((i) => mockDerivedDescriptorWalletOutput(tryDeriveAtIndex(i.descriptor, i.index), i)), outputs.map((o) => {
67
+ const derivedDescriptor = tryDeriveAtIndex(o.descriptor, o.index);
64
68
  return {
65
- script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(derivedDescriptor),
69
+ script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(derivedDescriptor, undefined),
66
70
  value: o.value,
67
71
  descriptor: o.external ? undefined : derivedDescriptor,
68
72
  };
@@ -84,4 +88,4 @@ function mockPsbtDefaultWithDescriptorTemplate(t, params = {}) {
84
88
  params,
85
89
  });
86
90
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL21vY2sudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsOEVBZUM7QUFjRCw0QkFpQkM7QUFFRCwwQ0FvQkM7QUFFRCxzRkFTQztBQXZHRCw4REFBZ0Q7QUFFaEQsaURBQTRGO0FBRzVGLCtDQUFtRjtBQVVuRixTQUFTLFlBQVksQ0FBQyxFQUF1QjtJQUkzQyxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxNQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMzQixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFnQixpQ0FBaUMsQ0FDL0MsVUFBc0IsRUFDdEIsZUFBK0MsRUFBRTtJQUVqRCxNQUFNLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQztJQUM3QyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTztRQUNMLElBQUk7UUFDSixLQUFLLEVBQUUsSUFBSTtRQUNYLFdBQVcsRUFBRTtZQUNYLE1BQU0sRUFBRSxJQUFBLDZDQUFnQyxFQUFDLFVBQVUsQ0FBQztZQUNwRCxLQUFLO1NBQ047UUFDRCxVQUFVO0tBQ1gsQ0FBQztBQUNKLENBQUM7QUFjRCxTQUFnQixRQUFRLENBQ3RCLE1BQW1CLEVBQ25CLE9BQXFCLEVBQ3JCLFNBQThCLEVBQUU7SUFFaEMsT0FBTyxJQUFBLHVCQUFVLEVBQ2YsRUFBRSxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUNsRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUEsNkNBQWdDLEVBQUMsaUJBQWlCLENBQUM7WUFDM0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1NBQ3ZELENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxFQUM5QixjQUFjLEdBQUcsSUFBQSwyQkFBYSxFQUFDLFNBQVMsRUFBRSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0QsZUFBZSxHQUFHLElBQUEsMkJBQWEsRUFBQyxTQUFTLEVBQUUsSUFBQSw2QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hFLE1BQU0sR0FBRyxFQUFFLE1BS1QsRUFBRTtJQUNKLE9BQU8sUUFBUSxDQUNiO1FBQ0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0tBQzFELEVBQ0Q7UUFDRSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDN0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtLQUM3RCxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLHFDQUFxQyxDQUNuRCxDQUFxQixFQUNyQixTQUE4QixFQUFFO0lBRWhDLE9BQU8sZUFBZSxDQUFDO1FBQ3JCLGNBQWMsRUFBRSxJQUFBLDJCQUFhLEVBQUMsQ0FBQyxFQUFFLElBQUEsNkJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxlQUFlLEVBQUUsSUFBQSwyQkFBYSxFQUFDLENBQUMsRUFBRSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsTUFBTTtLQUNQLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgUHNidFBhcmFtcywgY3JlYXRlUHNidCwgY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IERlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci9PdXRwdXQnO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yVGVtcGxhdGUsIGdldERlZmF1bHRYUHVicywgZ2V0RGVzY3JpcHRvciB9IGZyb20gJy4vZGVzY3JpcHRvcnMnO1xuXG50eXBlIE1vY2tPdXRwdXRJZFBhcmFtcyA9IHsgaGFzaD86IHN0cmluZzsgdm91dD86IG51bWJlciB9O1xuXG50eXBlIEJhc2VNb2NrRGVzY3JpcHRvck91dHB1dFBhcmFtcyA9IHtcbiAgaWQ/OiBNb2NrT3V0cHV0SWRQYXJhbXM7XG4gIGluZGV4PzogbnVtYmVyO1xuICB2YWx1ZT86IGJpZ2ludDtcbn07XG5cbmZ1bmN0aW9uIG1vY2tPdXRwdXRJZChpZD86IE1vY2tPdXRwdXRJZFBhcmFtcyk6IHtcbiAgaGFzaDogc3RyaW5nO1xuICB2b3V0OiBudW1iZXI7XG59IHtcbiAgY29uc3QgaGFzaCA9IGlkPy5oYXNoID8/IEJ1ZmZlci5hbGxvYygzMiwgMSkudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCB2b3V0ID0gaWQ/LnZvdXQgPz8gMDtcbiAgcmV0dXJuIHsgaGFzaCwgdm91dCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0KFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBvdXRwdXRQYXJhbXM6IEJhc2VNb2NrRGVzY3JpcHRvck91dHB1dFBhcmFtcyA9IHt9XG4pOiBEZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dCB7XG4gIGNvbnN0IHsgdmFsdWUgPSBCaWdJbnQoMWU2KSB9ID0gb3V0cHV0UGFyYW1zO1xuICBjb25zdCB7IGhhc2gsIHZvdXQgfSA9IG1vY2tPdXRwdXRJZChvdXRwdXRQYXJhbXMuaWQpO1xuICByZXR1cm4ge1xuICAgIGhhc2gsXG4gICAgaW5kZXg6IHZvdXQsXG4gICAgd2l0bmVzc1V0eG86IHtcbiAgICAgIHNjcmlwdDogY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvciksXG4gICAgICB2YWx1ZSxcbiAgICB9LFxuICAgIGRlc2NyaXB0b3IsXG4gIH07XG59XG5cbnR5cGUgTW9ja0lucHV0ID0gQmFzZU1vY2tEZXNjcmlwdG9yT3V0cHV0UGFyYW1zICYge1xuICBpbmRleDogbnVtYmVyO1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xufTtcblxudHlwZSBNb2NrT3V0cHV0ID0ge1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xuICBpbmRleDogbnVtYmVyO1xuICB2YWx1ZTogYmlnaW50O1xuICBleHRlcm5hbD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1BzYnQoXG4gIGlucHV0czogTW9ja0lucHV0W10sXG4gIG91dHB1dHM6IE1vY2tPdXRwdXRbXSxcbiAgcGFyYW1zOiBQYXJ0aWFsPFBzYnRQYXJhbXM+ID0ge31cbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICByZXR1cm4gY3JlYXRlUHNidChcbiAgICB7IC4uLnBhcmFtcywgbmV0d29yazogcGFyYW1zLm5ldHdvcmsgPz8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luIH0sXG4gICAgaW5wdXRzLm1hcCgoaSkgPT4gbW9ja0Rlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0KGkuZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChpLmluZGV4KSwgaSkpLFxuICAgIG91dHB1dHMubWFwKChvKSA9PiB7XG4gICAgICBjb25zdCBkZXJpdmVkRGVzY3JpcHRvciA9IG8uZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChvLmluZGV4KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdDogY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IoZGVyaXZlZERlc2NyaXB0b3IpLFxuICAgICAgICB2YWx1ZTogby52YWx1ZSxcbiAgICAgICAgZGVzY3JpcHRvcjogby5leHRlcm5hbCA/IHVuZGVmaW5lZCA6IGRlcml2ZWREZXNjcmlwdG9yLFxuICAgICAgfTtcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1BzYnREZWZhdWx0KHtcbiAgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdhJykpLFxuICBkZXNjcmlwdG9yT3RoZXIgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdiJykpLFxuICBwYXJhbXMgPSB7fSxcbn06IHtcbiAgZGVzY3JpcHRvclNlbGY/OiBEZXNjcmlwdG9yO1xuICBkZXNjcmlwdG9yT3RoZXI/OiBEZXNjcmlwdG9yO1xuICBwYXJhbXM/OiBQYXJ0aWFsPFBzYnRQYXJhbXM+O1xufSA9IHt9KTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIHJldHVybiBtb2NrUHNidChcbiAgICBbXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCB9LFxuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDEsIGlkOiB7IHZvdXQ6IDEgfSB9LFxuICAgIF0sXG4gICAgW1xuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yT3RoZXIsIGluZGV4OiAwLCB2YWx1ZTogQmlnSW50KDRlNSksIGV4dGVybmFsOiB0cnVlIH0sXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpIH0sXG4gICAgXSxcbiAgICBwYXJhbXNcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUoXG4gIHQ6IERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAgcGFyYW1zOiBQYXJ0aWFsPFBzYnRQYXJhbXM+ID0ge31cbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICByZXR1cm4gbW9ja1BzYnREZWZhdWx0KHtcbiAgICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2EnKSksXG4gICAgZGVzY3JpcHRvck90aGVyOiBnZXREZXNjcmlwdG9yKHQsIGdldERlZmF1bHRYUHVicygnYicpKSxcbiAgICBwYXJhbXMsXG4gIH0pO1xufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL21vY2sudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsOEVBZ0JDO0FBa0JELDRCQWlCQztBQUVELDBDQW9CQztBQUVELHNGQVNDO0FBakhELDhEQUFnRDtBQUVoRCxpREFLMEI7QUFFMUIsK0NBQW1GO0FBV25GLFNBQVMsWUFBWSxDQUFDLEVBQXVCO0lBSTNDLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzNCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxVQUFzQixFQUN0QixlQUErQyxFQUFFO0lBRWpELE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDO0lBQzdDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLEtBQUssRUFBRSxJQUFJO1FBQ1gsV0FBVyxFQUFFO1lBQ1gsTUFBTSxFQUFFLElBQUEsNkNBQWdDLEVBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQztZQUMvRCxLQUFLO1NBQ047UUFDRCxVQUFVO1FBQ1YsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBY0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLEtBQWE7SUFDN0QsT0FBTyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3JGLENBQUM7QUFFRCxTQUFnQixRQUFRLENBQ3RCLE1BQW1CLEVBQ25CLE9BQXFCLEVBQ3JCLFNBQThCLEVBQUU7SUFFaEMsT0FBTyxJQUFBLHVCQUFVLEVBQ2YsRUFBRSxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUNsRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUEsNkNBQWdDLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1lBQ3RFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtTQUN2RCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsRUFDOUIsY0FBYyxHQUFHLElBQUEsMkJBQWEsRUFBQyxTQUFTLEVBQUUsSUFBQSw2QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQy9ELGVBQWUsR0FBRyxJQUFBLDJCQUFhLEVBQUMsU0FBUyxFQUFFLElBQUEsNkJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQyxFQUNoRSxNQUFNLEdBQUcsRUFBRSxNQUtULEVBQUU7SUFDSixPQUFPLFFBQVEsQ0FDYjtRQUNFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQ3hDLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtLQUMxRCxFQUNEO1FBQ0UsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQzdFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7S0FDN0QsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixxQ0FBcUMsQ0FDbkQsQ0FBcUIsRUFDckIsU0FBOEIsRUFBRTtJQUVoQyxPQUFPLGVBQWUsQ0FBQztRQUNyQixjQUFjLEVBQUUsSUFBQSwyQkFBYSxFQUFDLENBQUMsRUFBRSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsZUFBZSxFQUFFLElBQUEsMkJBQWEsRUFBQyxDQUFDLEVBQUUsSUFBQSw2QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU07S0FDUCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7XG4gIFBzYnRQYXJhbXMsXG4gIGNyZWF0ZVBzYnQsXG4gIGNyZWF0ZVNjcmlwdFB1YktleUZyb21EZXNjcmlwdG9yLFxuICBEZXJpdmVkRGVzY3JpcHRvclRyYW5zYWN0aW9uSW5wdXQsXG59IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yVGVtcGxhdGUsIGdldERlZmF1bHRYUHVicywgZ2V0RGVzY3JpcHRvciB9IGZyb20gJy4vZGVzY3JpcHRvcnMnO1xuXG50eXBlIE1vY2tPdXRwdXRJZFBhcmFtcyA9IHsgaGFzaD86IHN0cmluZzsgdm91dD86IG51bWJlciB9O1xuXG50eXBlIEJhc2VNb2NrRGVzY3JpcHRvck91dHB1dFBhcmFtcyA9IHtcbiAgaWQ/OiBNb2NrT3V0cHV0SWRQYXJhbXM7XG4gIGluZGV4PzogbnVtYmVyO1xuICB2YWx1ZT86IGJpZ2ludDtcbiAgc2VxdWVuY2U/OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBtb2NrT3V0cHV0SWQoaWQ/OiBNb2NrT3V0cHV0SWRQYXJhbXMpOiB7XG4gIGhhc2g6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IGhhc2ggPSBpZD8uaGFzaCA/PyBCdWZmZXIuYWxsb2MoMzIsIDEpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3Qgdm91dCA9IGlkPy52b3V0ID8/IDA7XG4gIHJldHVybiB7IGhhc2gsIHZvdXQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tEZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dChcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgb3V0cHV0UGFyYW1zOiBCYXNlTW9ja0Rlc2NyaXB0b3JPdXRwdXRQYXJhbXMgPSB7fVxuKTogRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0IHtcbiAgY29uc3QgeyB2YWx1ZSA9IEJpZ0ludCgxZTYpIH0gPSBvdXRwdXRQYXJhbXM7XG4gIGNvbnN0IHsgaGFzaCwgdm91dCB9ID0gbW9ja091dHB1dElkKG91dHB1dFBhcmFtcy5pZCk7XG4gIHJldHVybiB7XG4gICAgaGFzaCxcbiAgICBpbmRleDogdm91dCxcbiAgICB3aXRuZXNzVXR4bzoge1xuICAgICAgc2NyaXB0OiBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yLCB1bmRlZmluZWQpLFxuICAgICAgdmFsdWUsXG4gICAgfSxcbiAgICBkZXNjcmlwdG9yLFxuICAgIHNlcXVlbmNlOiBvdXRwdXRQYXJhbXMuc2VxdWVuY2UsXG4gIH07XG59XG5cbnR5cGUgTW9ja0lucHV0ID0gQmFzZU1vY2tEZXNjcmlwdG9yT3V0cHV0UGFyYW1zICYge1xuICBpbmRleDogbnVtYmVyO1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xufTtcblxudHlwZSBNb2NrT3V0cHV0ID0ge1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xuICBpbmRleDogbnVtYmVyO1xuICB2YWx1ZTogYmlnaW50O1xuICBleHRlcm5hbD86IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiB0cnlEZXJpdmVBdEluZGV4KGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsIGluZGV4OiBudW1iZXIpOiBEZXNjcmlwdG9yIHtcbiAgcmV0dXJuIGRlc2NyaXB0b3IuaGFzV2lsZGNhcmQoKSA/IGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoaW5kZXgpIDogZGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQc2J0KFxuICBpbnB1dHM6IE1vY2tJbnB1dFtdLFxuICBvdXRwdXRzOiBNb2NrT3V0cHV0W10sXG4gIHBhcmFtczogUGFydGlhbDxQc2J0UGFyYW1zPiA9IHt9XG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgcmV0dXJuIGNyZWF0ZVBzYnQoXG4gICAgeyAuLi5wYXJhbXMsIG5ldHdvcms6IHBhcmFtcy5uZXR3b3JrID8/IHV0eG9saWIubmV0d29ya3MuYml0Y29pbiB9LFxuICAgIGlucHV0cy5tYXAoKGkpID0+IG1vY2tEZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dCh0cnlEZXJpdmVBdEluZGV4KGkuZGVzY3JpcHRvciwgaS5pbmRleCksIGkpKSxcbiAgICBvdXRwdXRzLm1hcCgobykgPT4ge1xuICAgICAgY29uc3QgZGVyaXZlZERlc2NyaXB0b3IgPSB0cnlEZXJpdmVBdEluZGV4KG8uZGVzY3JpcHRvciwgby5pbmRleCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY3JpcHQ6IGNyZWF0ZVNjcmlwdFB1YktleUZyb21EZXNjcmlwdG9yKGRlcml2ZWREZXNjcmlwdG9yLCB1bmRlZmluZWQpLFxuICAgICAgICB2YWx1ZTogby52YWx1ZSxcbiAgICAgICAgZGVzY3JpcHRvcjogby5leHRlcm5hbCA/IHVuZGVmaW5lZCA6IGRlcml2ZWREZXNjcmlwdG9yLFxuICAgICAgfTtcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1BzYnREZWZhdWx0KHtcbiAgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdhJykpLFxuICBkZXNjcmlwdG9yT3RoZXIgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdiJykpLFxuICBwYXJhbXMgPSB7fSxcbn06IHtcbiAgZGVzY3JpcHRvclNlbGY/OiBEZXNjcmlwdG9yO1xuICBkZXNjcmlwdG9yT3RoZXI/OiBEZXNjcmlwdG9yO1xuICBwYXJhbXM/OiBQYXJ0aWFsPFBzYnRQYXJhbXM+O1xufSA9IHt9KTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIHJldHVybiBtb2NrUHNidChcbiAgICBbXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCB9LFxuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDEsIGlkOiB7IHZvdXQ6IDEgfSB9LFxuICAgIF0sXG4gICAgW1xuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yT3RoZXIsIGluZGV4OiAwLCB2YWx1ZTogQmlnSW50KDRlNSksIGV4dGVybmFsOiB0cnVlIH0sXG4gICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpIH0sXG4gICAgXSxcbiAgICBwYXJhbXNcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQc2J0RGVmYXVsdFdpdGhEZXNjcmlwdG9yVGVtcGxhdGUoXG4gIHQ6IERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAgcGFyYW1zOiBQYXJ0aWFsPFBzYnRQYXJhbXM+ID0ge31cbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICByZXR1cm4gbW9ja1BzYnREZWZhdWx0KHtcbiAgICBkZXNjcmlwdG9yU2VsZjogZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2EnKSksXG4gICAgZGVzY3JpcHRvck90aGVyOiBnZXREZXNjcmlwdG9yKHQsIGdldERlZmF1bHRYUHVicygnYicpKSxcbiAgICBwYXJhbXMsXG4gIH0pO1xufVxuIl19
@@ -2,19 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toPlainObjectFromPsbt = toPlainObjectFromPsbt;
4
4
  exports.toPlainObjectFromTx = toPlainObjectFromTx;
5
- const toPlainObject_utils_1 = require("../../../src/testutil/toPlainObject.utils");
5
+ const testutil_1 = require("../../../src/testutil");
6
6
  function toPlainObjectFromPsbt(v) {
7
- return (0, toPlainObject_utils_1.toPlainObject)(v, {
7
+ return (0, testutil_1.toPlainObject)(v, {
8
8
  propertyDescriptors: true,
9
9
  ignorePaths(path) {
10
- return ((0, toPlainObject_utils_1.matchPath)(path, ['__CACHE']) ||
11
- (0, toPlainObject_utils_1.matchPath)(path, ['opts', 'network']) ||
12
- (0, toPlainObject_utils_1.matchPath)(path, ['data', 'globalMap', 'unsignedTx', 'tx', 'network']) ||
13
- (0, toPlainObject_utils_1.matchPath)(path, ['network']));
10
+ return ((0, testutil_1.matchPath)(path, ['__CACHE']) ||
11
+ (0, testutil_1.matchPath)(path, ['opts', 'network']) ||
12
+ (0, testutil_1.matchPath)(path, ['data', 'globalMap', 'unsignedTx', 'tx', 'network']) ||
13
+ (0, testutil_1.matchPath)(path, ['network']));
14
14
  },
15
15
  }, []);
16
16
  }
17
17
  function toPlainObjectFromTx(v) {
18
- return (0, toPlainObject_utils_1.toPlainObject)(v, {}, []);
18
+ return (0, testutil_1.toPlainObject)(v, {}, []);
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL3BzYnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzREFnQkM7QUFFRCxrREFFQztBQXRCRCxtRkFBa0c7QUFFbEcsU0FBZ0IscUJBQXFCLENBQUMsQ0FBZTtJQUNuRCxPQUFPLElBQUEsbUNBQWEsRUFDbEIsQ0FBQyxFQUNEO1FBQ0UsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixXQUFXLENBQUMsSUFBbUI7WUFDN0IsT0FBTyxDQUNMLElBQUEsK0JBQVMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBQSwrQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsSUFBQSwrQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDckUsSUFBQSwrQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0YsRUFDRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFzQjtJQUN4RCxPQUFPLElBQUEsbUNBQWEsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgbWF0Y2hQYXRoLCBQYXRoRWxlbWVudCwgdG9QbGFpbk9iamVjdCB9IGZyb20gJy4uLy4uLy4uL3NyYy90ZXN0dXRpbC90b1BsYWluT2JqZWN0LnV0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5PYmplY3RGcm9tUHNidCh2OiB1dHhvbGliLlBzYnQpOiB1bmtub3duIHtcbiAgcmV0dXJuIHRvUGxhaW5PYmplY3QoXG4gICAgdixcbiAgICB7XG4gICAgICBwcm9wZXJ0eURlc2NyaXB0b3JzOiB0cnVlLFxuICAgICAgaWdub3JlUGF0aHMocGF0aDogUGF0aEVsZW1lbnRbXSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoUGF0aChwYXRoLCBbJ19fQ0FDSEUnXSkgfHxcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWydvcHRzJywgJ25ldHdvcmsnXSkgfHxcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWydkYXRhJywgJ2dsb2JhbE1hcCcsICd1bnNpZ25lZFR4JywgJ3R4JywgJ25ldHdvcmsnXSkgfHxcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWyduZXR3b3JrJ10pXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgW11cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5PYmplY3RGcm9tVHgodjogdXR4b2xpYi5UcmFuc2FjdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdG9QbGFpbk9iamVjdCh2LCB7fSwgW10pO1xufVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL3BzYnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzREFnQkM7QUFFRCxrREFFQztBQXRCRCxvREFBOEU7QUFFOUUsU0FBZ0IscUJBQXFCLENBQUMsQ0FBZTtJQUNuRCxPQUFPLElBQUEsd0JBQWEsRUFDbEIsQ0FBQyxFQUNEO1FBQ0UsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixXQUFXLENBQUMsSUFBbUI7WUFDN0IsT0FBTyxDQUNMLElBQUEsb0JBQVMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDckUsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0YsRUFDRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFzQjtJQUN4RCxPQUFPLElBQUEsd0JBQWEsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgbWF0Y2hQYXRoLCBQYXRoRWxlbWVudCwgdG9QbGFpbk9iamVjdCB9IGZyb20gJy4uLy4uLy4uL3NyYy90ZXN0dXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluT2JqZWN0RnJvbVBzYnQodjogdXR4b2xpYi5Qc2J0KTogdW5rbm93biB7XG4gIHJldHVybiB0b1BsYWluT2JqZWN0KFxuICAgIHYsXG4gICAge1xuICAgICAgcHJvcGVydHlEZXNjcmlwdG9yczogdHJ1ZSxcbiAgICAgIGlnbm9yZVBhdGhzKHBhdGg6IFBhdGhFbGVtZW50W10pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWydfX0NBQ0hFJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnb3B0cycsICduZXR3b3JrJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnZGF0YScsICdnbG9iYWxNYXAnLCAndW5zaWduZWRUeCcsICd0eCcsICduZXR3b3JrJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnbmV0d29yayddKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9LFxuICAgIFtdXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluT2JqZWN0RnJvbVR4KHY6IHV0eG9saWIuVHJhbnNhY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRvUGxhaW5PYmplY3Qodiwge30sIFtdKTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ /** We have a mirrored function similar to our hsm that generates our Bitcoin signed
2
+ * message so that we can use for testing. This creates a random entropy as well using
3
+ * the nilUUID structure to construct our uuid buffer and given our address we can
4
+ * directly encode it into our message.
5
+ *
6
+ * @param attestationPrvKey
7
+ * @param uuid
8
+ * @param address
9
+ * @returns
10
+ */
11
+ export declare function generatePayGoAttestationProof(uuid: string, address: Buffer): Buffer;
12
+ //# sourceMappingURL=generatePayGoAttestationProof.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePayGoAttestationProof.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/generatePayGoAttestationProof.utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BnF"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generatePayGoAttestationProof = generatePayGoAttestationProof;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
9
+ /** We have a mirrored function similar to our hsm that generates our Bitcoin signed
10
+ * message so that we can use for testing. This creates a random entropy as well using
11
+ * the nilUUID structure to construct our uuid buffer and given our address we can
12
+ * directly encode it into our message.
13
+ *
14
+ * @param attestationPrvKey
15
+ * @param uuid
16
+ * @param address
17
+ * @returns
18
+ */
19
+ function generatePayGoAttestationProof(uuid, address) {
20
+ // <0x18Bitcoin Signed Message:\n
21
+ const prefixByte = Buffer.from([0x18]);
22
+ const prefixMessage = Buffer.from('Bitcoin Signed Message:\n');
23
+ const prefixBuffer = Buffer.concat([prefixByte, prefixMessage]);
24
+ // <ENTROPY>
25
+ const entropyLength = 64;
26
+ const entropy = crypto_1.default.randomBytes(entropyLength);
27
+ // <UUID>
28
+ const uuidBuffer = Buffer.from(uuid);
29
+ const uuidBufferLength = uuidBuffer.length;
30
+ // <ADDRESS>
31
+ const addressBufferLength = address.length;
32
+ // <VARINT_LENGTH>
33
+ const msgLength = entropyLength + addressBufferLength + uuidBufferLength;
34
+ const msgLengthBuffer = utxo_lib_1.bufferutils.varuint.encode(msgLength);
35
+ // <0x18Bitcoin Signed Message:\n<LENGTH><ENTROPY><ADDRESS><UUID>
36
+ const proofMessage = Buffer.concat([prefixBuffer, msgLengthBuffer, entropy, address, uuidBuffer]);
37
+ // we sign this with the priv key
38
+ // don't know what sign function to call. Since this is just a mirrored function don't know if we need
39
+ // to include this part.
40
+ // const signedMsg = sign(attestationPrvKey, proofMessage);
41
+ return proofMessage;
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFhQSxzRUE2QkM7QUExQ0Qsb0RBQTRCO0FBRTVCLG1EQUFtRDtBQUNuRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUN6RSxpQ0FBaUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUVoRSxZQUFZO0lBQ1osTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxELFNBQVM7SUFDVCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUUzQyxZQUFZO0lBQ1osTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRTNDLGtCQUFrQjtJQUNsQixNQUFNLFNBQVMsR0FBRyxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7SUFDekUsTUFBTSxlQUFlLEdBQUcsc0JBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlELGlFQUFpRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFbEcsaUNBQWlDO0lBQ2pDLHNHQUFzRztJQUN0Ryx3QkFBd0I7SUFDeEIsMkRBQTJEO0lBQzNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IGJ1ZmZlcnV0aWxzIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuLyoqIFdlIGhhdmUgYSBtaXJyb3JlZCBmdW5jdGlvbiBzaW1pbGFyIHRvIG91ciBoc20gdGhhdCBnZW5lcmF0ZXMgb3VyIEJpdGNvaW4gc2lnbmVkXG4gKiBtZXNzYWdlIHNvIHRoYXQgd2UgY2FuIHVzZSBmb3IgdGVzdGluZy4gVGhpcyBjcmVhdGVzIGEgcmFuZG9tIGVudHJvcHkgYXMgd2VsbCB1c2luZ1xuICogdGhlIG5pbFVVSUQgc3RydWN0dXJlIHRvIGNvbnN0cnVjdCBvdXIgdXVpZCBidWZmZXIgYW5kIGdpdmVuIG91ciBhZGRyZXNzIHdlIGNhblxuICogZGlyZWN0bHkgZW5jb2RlIGl0IGludG8gb3VyIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIGF0dGVzdGF0aW9uUHJ2S2V5XG4gKiBAcGFyYW0gdXVpZFxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZih1dWlkOiBzdHJpbmcsIGFkZHJlc3M6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIC8vIDwweDE4Qml0Y29pbiBTaWduZWQgTWVzc2FnZTpcXG5cbiAgY29uc3QgcHJlZml4Qnl0ZSA9IEJ1ZmZlci5mcm9tKFsweDE4XSk7XG4gIGNvbnN0IHByZWZpeE1lc3NhZ2UgPSBCdWZmZXIuZnJvbSgnQml0Y29pbiBTaWduZWQgTWVzc2FnZTpcXG4nKTtcbiAgY29uc3QgcHJlZml4QnVmZmVyID0gQnVmZmVyLmNvbmNhdChbcHJlZml4Qnl0ZSwgcHJlZml4TWVzc2FnZV0pO1xuXG4gIC8vIDxFTlRST1BZPlxuICBjb25zdCBlbnRyb3B5TGVuZ3RoID0gNjQ7XG4gIGNvbnN0IGVudHJvcHkgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoZW50cm9weUxlbmd0aCk7XG5cbiAgLy8gPFVVSUQ+XG4gIGNvbnN0IHV1aWRCdWZmZXIgPSBCdWZmZXIuZnJvbSh1dWlkKTtcbiAgY29uc3QgdXVpZEJ1ZmZlckxlbmd0aCA9IHV1aWRCdWZmZXIubGVuZ3RoO1xuXG4gIC8vIDxBRERSRVNTPlxuICBjb25zdCBhZGRyZXNzQnVmZmVyTGVuZ3RoID0gYWRkcmVzcy5sZW5ndGg7XG5cbiAgLy8gPFZBUklOVF9MRU5HVEg+XG4gIGNvbnN0IG1zZ0xlbmd0aCA9IGVudHJvcHlMZW5ndGggKyBhZGRyZXNzQnVmZmVyTGVuZ3RoICsgdXVpZEJ1ZmZlckxlbmd0aDtcbiAgY29uc3QgbXNnTGVuZ3RoQnVmZmVyID0gYnVmZmVydXRpbHMudmFydWludC5lbmNvZGUobXNnTGVuZ3RoKTtcblxuICAvLyA8MHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuPExFTkdUSD48RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbiAgY29uc3QgcHJvb2ZNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbcHJlZml4QnVmZmVyLCBtc2dMZW5ndGhCdWZmZXIsIGVudHJvcHksIGFkZHJlc3MsIHV1aWRCdWZmZXJdKTtcblxuICAvLyB3ZSBzaWduIHRoaXMgd2l0aCB0aGUgcHJpdiBrZXlcbiAgLy8gZG9uJ3Qga25vdyB3aGF0IHNpZ24gZnVuY3Rpb24gdG8gY2FsbC4gU2luY2UgdGhpcyBpcyBqdXN0IGEgbWlycm9yZWQgZnVuY3Rpb24gZG9uJ3Qga25vdyBpZiB3ZSBuZWVkXG4gIC8vIHRvIGluY2x1ZGUgdGhpcyBwYXJ0LlxuICAvLyBjb25zdCBzaWduZWRNc2cgPSBzaWduKGF0dGVzdGF0aW9uUHJ2S2V5LCBwcm9vZk1lc3NhZ2UpO1xuICByZXR1cm4gcHJvb2ZNZXNzYWdlO1xufVxuIl19
@@ -1,4 +1,6 @@
1
1
  export * from './fixtures.utils';
2
2
  export * from './key.utils';
3
3
  export * from './toPlainObject.utils';
4
+ export * from './generatePayGoAttestationProof.utils';
5
+ export * from './trimMessagePrefix';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC"}
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./fixtures.utils"), exports);
18
18
  __exportStar(require("./key.utils"), exports);
19
19
  __exportStar(require("./toPlainObject.utils"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyw4Q0FBNEI7QUFDNUIsd0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maXh0dXJlcy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2tleS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3RvUGxhaW5PYmplY3QudXRpbHMnO1xuIl19
20
+ __exportStar(require("./generatePayGoAttestationProof.utils"), exports);
21
+ __exportStar(require("./trimMessagePrefix"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLHdFQUFzRDtBQUN0RCxzREFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpeHR1cmVzLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4va2V5LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9QbGFpbk9iamVjdC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlUGF5R29BdHRlc3RhdGlvblByb29mLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJpbU1lc3NhZ2VQcmVmaXgnO1xuIl19
@@ -0,0 +1,11 @@
1
+ /** We receive a proof in the form:
2
+ * 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
3
+ * and when verifying our message we want to exclude the 0x18Bitcoin Signed Message:\n<varint_length>
4
+ * of the proof so that we are left with the entropy address and uuid as our message.
5
+ * This is what we are going to be verifying.
6
+ *
7
+ * @param proof
8
+ * @returns
9
+ */
10
+ export declare function trimMessagePrefix(proof: Buffer): Buffer;
11
+ //# sourceMappingURL=trimMessagePrefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trimMessagePrefix.d.ts","sourceRoot":"","sources":["../../../src/testutil/trimMessagePrefix.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAavD"}