@bitgo-beta/unspents 0.13.2-beta.46 → 0.13.2-beta.461

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 (63) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +451 -0
  3. package/bin/generate_tables.ts +94 -0
  4. package/dist/bin/generate_tables.d.ts +2 -0
  5. package/dist/bin/generate_tables.d.ts.map +1 -0
  6. package/dist/bin/generate_tables.js +98 -0
  7. package/dist/{codes.d.ts → src/codes.d.ts} +2 -1
  8. package/dist/src/codes.d.ts.map +1 -0
  9. package/dist/src/codes.js +172 -0
  10. package/dist/{dimensions.d.ts → src/dimensions.d.ts} +4 -2
  11. package/dist/src/dimensions.d.ts.map +1 -0
  12. package/dist/src/dimensions.js +492 -0
  13. package/dist/{index.d.ts → src/index.d.ts} +1 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/{index.js → src/index.js} +6 -2
  16. package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +1 -0
  17. package/dist/src/inputWeights.d.ts.map +1 -0
  18. package/dist/src/inputWeights.js +97 -0
  19. package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
  20. package/dist/src/scriptSizes.d.ts.map +1 -0
  21. package/dist/src/scriptSizes.js +51 -0
  22. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  23. package/dist/src/types.d.ts.map +1 -0
  24. package/dist/{types.js → src/types.js} +6 -2
  25. package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +13 -12
  26. package/dist/src/virtualSizes.d.ts.map +1 -0
  27. package/dist/src/virtualSizes.js +114 -0
  28. package/dist/src/zcash.d.ts +9 -0
  29. package/dist/src/zcash.d.ts.map +1 -0
  30. package/dist/src/zcash.js +24 -0
  31. package/dist/test/chain.d.ts +2 -0
  32. package/dist/test/chain.d.ts.map +1 -0
  33. package/dist/test/chain.js +92 -0
  34. package/dist/test/dimensions.d.ts +2 -0
  35. package/dist/test/dimensions.d.ts.map +1 -0
  36. package/dist/test/dimensions.js +225 -0
  37. package/dist/test/signedTx/inputWeights.d.ts +2 -0
  38. package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
  39. package/dist/test/signedTx/inputWeights.js +117 -0
  40. package/dist/test/signedTx/txCombinations.d.ts +3 -0
  41. package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
  42. package/dist/test/signedTx/txCombinations.js +120 -0
  43. package/dist/test/signedTx/txGen.d.ts +75 -0
  44. package/dist/test/signedTx/txGen.d.ts.map +1 -0
  45. package/dist/test/signedTx/txGen.js +223 -0
  46. package/dist/test/testutils.d.ts +36 -0
  47. package/dist/test/testutils.d.ts.map +1 -0
  48. package/dist/test/testutils.js +180 -0
  49. package/dist/test/virtualSizes.d.ts +2 -0
  50. package/dist/test/virtualSizes.d.ts.map +1 -0
  51. package/dist/test/virtualSizes.js +18 -0
  52. package/dist/test/zcash.d.ts +2 -0
  53. package/dist/test/zcash.d.ts.map +1 -0
  54. package/dist/test/zcash.js +60 -0
  55. package/dist/tsconfig.build.tsbuildinfo +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -0
  57. package/docs/input-costs.md +13 -0
  58. package/package.json +7 -7
  59. package/dist/codes.js +0 -168
  60. package/dist/dimensions.js +0 -485
  61. package/dist/inputWeights.js +0 -97
  62. package/dist/scriptSizes.js +0 -51
  63. package/dist/virtualSizes.js +0 -114
@@ -0,0 +1,492 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Dimensions = exports.OutputDimensions = exports.VirtualSizes = void 0;
27
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
28
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
29
+ const { isChainCode, scriptTypeForChain } = utxo_lib_1.bitgo;
30
+ const scriptSizes_1 = require("./scriptSizes");
31
+ const types_1 = require("./types");
32
+ const virtualSizes_1 = require("./virtualSizes");
33
+ Object.defineProperty(exports, "VirtualSizes", { enumerable: true, get: function () { return virtualSizes_1.VirtualSizes; } });
34
+ /**
35
+ * Apply `f` to all properties of `d`
36
+ */
37
+ function mapDimensions(d, f) {
38
+ return new Dimensions(Object.fromEntries(Object.entries(d).map(([key, value]) => [key, f(key, value)])));
39
+ }
40
+ /**
41
+ * Aggregate count and size of transaction outputs
42
+ */
43
+ class OutputDimensions {
44
+ constructor({ count = 0, size = 0 } = { count: 0, size: 0 }) {
45
+ if (count === 0 || size === 0) {
46
+ if (count !== 0 || size !== 0) {
47
+ throw new Error(`count and size must both be zero if one is zero`);
48
+ }
49
+ }
50
+ this.count = count;
51
+ this.size = size;
52
+ Object.freeze(this);
53
+ }
54
+ }
55
+ exports.OutputDimensions = OutputDimensions;
56
+ const defaultUnspentParams = {
57
+ p2tr: {
58
+ // Default to recovery script paths, to make it easier for recovery case callers (WRW etc).
59
+ // WP can explicitly pass scriptPathLevel: 1 to use happy path.
60
+ scriptPathLevel: 2,
61
+ },
62
+ p2trMusig2: {
63
+ // Default to script path spend, to make it easier for recovery case callers (WRW etc).
64
+ // WP can explicitly pass scriptPathLevel: undefined to use key path.
65
+ scriptPathLevel: 1,
66
+ },
67
+ };
68
+ /**
69
+ * Dimensions of a BitGo wallet transactions.
70
+ */
71
+ class Dimensions {
72
+ constructor(d = {}) {
73
+ /** Input counts for BitGo wallet multi-signature inputs */
74
+ this.nP2shInputs = 0;
75
+ this.nP2shP2wshInputs = 0;
76
+ this.nP2wshInputs = 0;
77
+ this.nP2trKeypathInputs = 0;
78
+ this.nP2trScriptPathLevel1Inputs = 0;
79
+ this.nP2trScriptPathLevel2Inputs = 0;
80
+ /* Input count for single-signature inputs (Replay Protection inputs) */
81
+ this.nP2shP2pkInputs = 0;
82
+ this.outputs = new OutputDimensions();
83
+ Object.entries(d).forEach(([key, value]) => this.setProperty(key, value));
84
+ Object.freeze(this);
85
+ }
86
+ setProperty(k, v) {
87
+ switch (k) {
88
+ case 'nP2shInputs':
89
+ case 'nP2shP2wshInputs':
90
+ case 'nP2wshInputs':
91
+ case 'nP2trKeypathInputs':
92
+ case 'nP2trScriptPathLevel1Inputs':
93
+ case 'nP2trScriptPathLevel2Inputs':
94
+ case 'nP2shP2pkInputs':
95
+ if (typeof v !== 'number') {
96
+ throw new Error(`property ${k} must be number`);
97
+ }
98
+ if (!Number.isSafeInteger(v) || v < 0) {
99
+ throw new Error(`property ${k} must be zero or positive integer`);
100
+ }
101
+ break;
102
+ case 'outputs':
103
+ if (!(v instanceof OutputDimensions)) {
104
+ v = new OutputDimensions(v);
105
+ }
106
+ break;
107
+ default:
108
+ throw new Error(`unknown property ${k}`);
109
+ }
110
+ this[k] = v;
111
+ }
112
+ /**
113
+ * @deprecated use ZERO
114
+ * @return Dimensions for an empty transaction
115
+ */
116
+ static zero() {
117
+ return this.ZERO;
118
+ }
119
+ /**
120
+ * @param size
121
+ * @return Dimensions for a single output with given size
122
+ */
123
+ static singleOutput(size) {
124
+ return Dimensions.sum({ outputs: { count: 1, size } });
125
+ }
126
+ /**
127
+ * @return Number of total inputs (p2sh + p2shP2wsh + p2wsh + p2tr)
128
+ */
129
+ get nInputs() {
130
+ return (this.nP2shInputs +
131
+ this.nP2shP2wshInputs +
132
+ this.nP2wshInputs +
133
+ this.nP2trKeypathInputs +
134
+ this.nP2trScriptPathLevel1Inputs +
135
+ this.nP2trScriptPathLevel2Inputs +
136
+ this.nP2shP2pkInputs);
137
+ }
138
+ set nInputs(_) {
139
+ throw new Error('read-only property nInputs');
140
+ }
141
+ /**
142
+ * @return Number of total outputs
143
+ */
144
+ get nOutputs() {
145
+ return this.outputs.count;
146
+ }
147
+ set nOutputs(_) {
148
+ throw new Error(`read-only property nOutputs`);
149
+ }
150
+ /**
151
+ * @param args - Dimensions (can be partially defined)
152
+ * @return {Dimensions} sum of arguments
153
+ */
154
+ static sum(...args) {
155
+ return args.reduce((a, b) => a.plus(b), new Dimensions());
156
+ }
157
+ /**
158
+ * @param chain
159
+ * @return {Number}
160
+ */
161
+ static getOutputScriptLengthForChain(chain) {
162
+ switch (scriptTypeForChain(chain)) {
163
+ case 'p2wsh':
164
+ case 'p2tr':
165
+ case 'p2trMusig2':
166
+ return 34;
167
+ default:
168
+ return 23;
169
+ }
170
+ }
171
+ /**
172
+ * @param scriptLength
173
+ * @return {Number} vSize of an output with script length
174
+ */
175
+ static getVSizeForOutputWithScriptLength(scriptLength) {
176
+ if (!types_1.PositiveInteger.is(scriptLength)) {
177
+ throw new TypeError(`expected positive integer for scriptLength, got ${scriptLength}`);
178
+ }
179
+ return scriptLength + (0, scriptSizes_1.compactSize)(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
180
+ }
181
+ /**
182
+ * @return
183
+ */
184
+ static fromScriptType(scriptType, params = {}) {
185
+ switch (scriptType) {
186
+ case 'p2sh':
187
+ case 'p2shP2wsh':
188
+ case 'p2wsh':
189
+ case 'p2shP2pk':
190
+ return Dimensions.SingleInput[scriptType];
191
+ case 'p2tr':
192
+ case 'taprootScriptPathSpend':
193
+ switch (params.scriptPathLevel) {
194
+ case 1:
195
+ return Dimensions.SingleInput.p2trScriptPathLevel1;
196
+ case 2:
197
+ return Dimensions.SingleInput.p2trScriptPathLevel2;
198
+ default:
199
+ throw new Error(`unexpected script path level`);
200
+ }
201
+ case 'p2trMusig2':
202
+ switch (params.scriptPathLevel) {
203
+ case undefined:
204
+ return Dimensions.SingleInput.p2trKeypath;
205
+ case 1:
206
+ return Dimensions.SingleInput.p2trScriptPathLevel1;
207
+ default:
208
+ throw new Error(`unexpected script path level`);
209
+ }
210
+ case 'taprootKeyPathSpend':
211
+ return Dimensions.SingleInput.p2trKeypath;
212
+ default:
213
+ throw new Error(`unexpected scriptType ${scriptType}`);
214
+ }
215
+ }
216
+ static getAssumedDimension(params = {}, index) {
217
+ const { assumeUnsigned } = params;
218
+ if (!assumeUnsigned) {
219
+ throw new Error(`illegal input ${index}: empty script and assumeUnsigned not set`);
220
+ }
221
+ return assumeUnsigned;
222
+ }
223
+ /**
224
+ * @param input - the transaction input to count
225
+ * @param params
226
+ * [param.assumeUnsigned] - default type for unsigned input
227
+ */
228
+ static fromInput(input, params = {}) {
229
+ var _a, _b;
230
+ if (((_a = input.script) === null || _a === void 0 ? void 0 : _a.length) || ((_b = input.witness) === null || _b === void 0 ? void 0 : _b.length)) {
231
+ const parsed = utxolib.bitgo.parseSignatureScript(input);
232
+ return Dimensions.fromScriptType(parsed.scriptType, parsed);
233
+ }
234
+ return Dimensions.getAssumedDimension(params, input.index);
235
+ }
236
+ /**
237
+ * Create Dimensions from psbt input
238
+ * @param input - psbt input
239
+ */
240
+ static fromPsbtInput(input) {
241
+ const parsed = utxo_lib_1.bitgo.parsePsbtInput(input);
242
+ return Dimensions.fromScriptType(parsed.scriptType, parsed);
243
+ }
244
+ /**
245
+ * @param inputs - Array of inputs
246
+ * @param params - @see Dimensions.fromInput()
247
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromInput())
248
+ */
249
+ static fromInputs(inputs, params) {
250
+ if (!Array.isArray(inputs)) {
251
+ throw new TypeError(`inputs must be array`);
252
+ }
253
+ return Dimensions.sum(...inputs.map((i) => Dimensions.fromInput(i, params)));
254
+ }
255
+ /**
256
+ * Create Dimensions from multiple psbt inputs
257
+ * @param inputs psbt input array
258
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromPsbtInput())
259
+ */
260
+ static fromPsbtInputs(inputs) {
261
+ if (!Array.isArray(inputs)) {
262
+ throw new TypeError(`inputs must be array`);
263
+ }
264
+ return Dimensions.sum(...inputs.map((input, _) => Dimensions.fromPsbtInput(input)));
265
+ }
266
+ /**
267
+ * @param scriptLength {number} - size of the output script in bytes
268
+ * @return {Dimensions} - Dimensions of the output
269
+ */
270
+ static fromOutputScriptLength(scriptLength) {
271
+ return Dimensions.sum({
272
+ outputs: {
273
+ count: 1,
274
+ size: Dimensions.getVSizeForOutputWithScriptLength(scriptLength),
275
+ },
276
+ });
277
+ }
278
+ /**
279
+ * @param output - a tx output
280
+ * @return Dimensions - the dimensions of the given output
281
+ */
282
+ static fromOutput({ script }) {
283
+ if (!script) {
284
+ throw new Error('expected output script to be defined');
285
+ }
286
+ if (!Buffer.isBuffer(script)) {
287
+ throw new TypeError('expected script to be buffer, got ' + typeof script);
288
+ }
289
+ return Dimensions.fromOutputScriptLength(script.length);
290
+ }
291
+ /**
292
+ * @param outputs - Array of outputs
293
+ * @return {Dimensions} sum of the dimensions for each output (@see Dimensions.fromOutput())
294
+ */
295
+ static fromOutputs(outputs) {
296
+ if (!Array.isArray(outputs)) {
297
+ throw new TypeError(`outputs must be array`);
298
+ }
299
+ return Dimensions.sum(...outputs.map(Dimensions.fromOutput));
300
+ }
301
+ /**
302
+ * Returns the dimensions of an output that will be created on a specific chain.
303
+ * Currently, this simply adds a default output.
304
+ *
305
+ * @param chain - Chain code as defined by utxolib.bitgo
306
+ * @return {Dimensions} - Dimensions for a single output on the given chain.
307
+ */
308
+ static fromOutputOnChain(chain) {
309
+ return Dimensions.fromOutputScriptLength(Dimensions.getOutputScriptLengthForChain(chain));
310
+ }
311
+ /**
312
+ * Return dimensions of an unspent according to `chain` parameter
313
+ * @param chain - Chain code as defined by utxo.chain
314
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
315
+ * @return {Dimensions} of the unspent
316
+ * @throws if the chain code is invalid or unsupported
317
+ */
318
+ static fromUnspent({ chain }, params = defaultUnspentParams) {
319
+ if (!isChainCode(chain)) {
320
+ throw new TypeError('invalid chain code');
321
+ }
322
+ const scriptType = scriptTypeForChain(chain);
323
+ return Dimensions.fromScriptType(scriptType, scriptType === 'p2tr' ? params.p2tr : scriptType === 'p2trMusig2' ? params.p2trMusig2 : {});
324
+ }
325
+ /**
326
+ * @param unspents
327
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
328
+ * @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
329
+ */
330
+ static fromUnspents(unspents, params = defaultUnspentParams) {
331
+ if (!Array.isArray(unspents)) {
332
+ throw new TypeError(`unspents must be array`);
333
+ }
334
+ // Convert the individual unspents into dimensions and sum them up
335
+ return Dimensions.sum(...unspents.map((u) => Dimensions.fromUnspent(u, params)));
336
+ }
337
+ /**
338
+ * @param transaction - bitcoin-like transaction
339
+ * @param [param.assumeUnsigned] - default type for unsigned inputs
340
+ * @return {Dimensions}
341
+ */
342
+ static fromTransaction({ ins, outs, }, params) {
343
+ return Dimensions.fromInputs(ins, params).plus(Dimensions.fromOutputs(outs));
344
+ }
345
+ /**
346
+ * Create Dimensions from psbt inputs and outputs
347
+ * @param psbt
348
+ * @return {Dimensions}
349
+ */
350
+ static fromPsbt(psbt) {
351
+ return Dimensions.fromPsbtInputs(psbt.data.inputs).plus(Dimensions.fromOutputs(psbt.getUnsignedTx().outs));
352
+ }
353
+ /**
354
+ * @param dimensions (can be partially defined)
355
+ * @return new dimensions with argument added
356
+ */
357
+ plus(dimensions) {
358
+ if (typeof dimensions !== 'object') {
359
+ throw new TypeError(`expected argument to be object`);
360
+ }
361
+ if (!(dimensions instanceof Dimensions)) {
362
+ dimensions = new Dimensions(dimensions);
363
+ }
364
+ // Catch instances where we try to initialize Dimensions from partial data using deprecated parameters
365
+ // using only "nOutputs".
366
+ if ('nOutputs' in dimensions) {
367
+ if (!('outputs' in dimensions)) {
368
+ throw new Error('deprecated partial addition: argument has key "nOutputs" but no "outputs"');
369
+ }
370
+ const { outputs, nOutputs } = dimensions;
371
+ if (outputs.count !== nOutputs) {
372
+ throw new Error('deprecated partial addition: inconsistent values for "nOutputs" and "outputs.count"');
373
+ }
374
+ }
375
+ return mapDimensions(this, (key, v) => {
376
+ var _a;
377
+ const w = (_a = dimensions[key]) !== null && _a !== void 0 ? _a : Dimensions.ZERO[key];
378
+ if (key === 'outputs') {
379
+ const vOutputs = v;
380
+ const wOutputs = w;
381
+ return new OutputDimensions({
382
+ count: vOutputs.count + wOutputs.count,
383
+ size: vOutputs.size + wOutputs.size,
384
+ });
385
+ }
386
+ return v + w;
387
+ });
388
+ }
389
+ /**
390
+ * Multiply dimensions by a given factor
391
+ * @param factor - Positive integer
392
+ * @return {Dimensions}
393
+ */
394
+ times(factor) {
395
+ if (!types_1.PositiveInteger.is(factor)) {
396
+ throw new TypeError(`expected factor to be positive integer`);
397
+ }
398
+ return mapDimensions(this, (key, value) => {
399
+ if (key === 'outputs') {
400
+ const vOutputs = value;
401
+ return {
402
+ count: vOutputs.count * factor,
403
+ size: vOutputs.size * factor,
404
+ };
405
+ }
406
+ return value * factor;
407
+ });
408
+ }
409
+ /**
410
+ * @return Number of total inputs (p2sh, p2shP2wsh and p2wsh)
411
+ * @deprecated use `dimension.nInputs` instead
412
+ */
413
+ getNInputs() {
414
+ return this.nInputs;
415
+ }
416
+ /**
417
+ * @returns {boolean} true iff dimensions have one or more (p2sh)p2wsh inputs
418
+ */
419
+ isSegwit() {
420
+ return (this.nP2wshInputs +
421
+ this.nP2shP2wshInputs +
422
+ this.nP2trKeypathInputs +
423
+ this.nP2trScriptPathLevel1Inputs +
424
+ this.nP2trScriptPathLevel2Inputs >
425
+ 0);
426
+ }
427
+ /**
428
+ * @return {Number} overhead vsize, based on result isSegwit().
429
+ */
430
+ getOverheadVSize() {
431
+ return this.isSegwit() ? virtualSizes_1.VirtualSizes.txSegOverheadVSize : virtualSizes_1.VirtualSizes.txOverheadSize;
432
+ }
433
+ /**
434
+ * @returns {number} vsize of inputs, without transaction overhead
435
+ */
436
+ getInputsVSize() {
437
+ const { txP2shInputSize, txP2shP2wshInputSize, txP2wshInputSize, txP2trKeypathInputSize, txP2trScriptPathLevel1InputSize, txP2trScriptPathLevel2InputSize, txP2shP2pkInputSize, } = virtualSizes_1.VirtualSizes;
438
+ const { nP2shInputs, nP2shP2wshInputs, nP2wshInputs, nP2trKeypathInputs, nP2trScriptPathLevel1Inputs, nP2trScriptPathLevel2Inputs, nP2shP2pkInputs, } = this;
439
+ const size = nP2shInputs * txP2shInputSize +
440
+ nP2shP2wshInputs * txP2shP2wshInputSize +
441
+ nP2wshInputs * txP2wshInputSize +
442
+ nP2trKeypathInputs * txP2trKeypathInputSize +
443
+ nP2shP2pkInputs * txP2shP2pkInputSize +
444
+ nP2trScriptPathLevel1Inputs * txP2trScriptPathLevel1InputSize +
445
+ nP2trScriptPathLevel2Inputs * txP2trScriptPathLevel2InputSize;
446
+ if (Number.isNaN(size)) {
447
+ throw new Error(`invalid size`);
448
+ }
449
+ return size;
450
+ }
451
+ /**
452
+ * @returns {number} return vsize of outputs, without overhead
453
+ */
454
+ getOutputsVSize() {
455
+ return this.outputs.size;
456
+ }
457
+ /**
458
+ * Estimates the virtual size (1/4 weight) of a signed transaction as sum of
459
+ * overhead vsize, input vsize and output vsize.
460
+ * @returns {Number} The estimated vsize of the transaction dimensions.
461
+ */
462
+ getVSize() {
463
+ return this.getOverheadVSize() + this.getInputsVSize() + this.getOutputsVSize();
464
+ }
465
+ }
466
+ exports.Dimensions = Dimensions;
467
+ Dimensions.ZERO = Object.freeze(new Dimensions());
468
+ Dimensions.SingleOutput = Object.freeze({
469
+ p2sh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2shOutputSize),
470
+ p2shP2wsh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2shP2wshOutputSize),
471
+ p2wsh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2wshOutputSize),
472
+ p2tr: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2trOutputSize),
473
+ p2pkh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2pkhOutputSize),
474
+ p2wpkh: Dimensions.singleOutput(virtualSizes_1.VirtualSizes.txP2wpkhOutputSize),
475
+ });
476
+ Dimensions.SingleInput = Object.freeze({
477
+ p2sh: Dimensions.sum({ nP2shInputs: 1 }),
478
+ p2shP2wsh: Dimensions.sum({ nP2shP2wshInputs: 1 }),
479
+ p2wsh: Dimensions.sum({ nP2wshInputs: 1 }),
480
+ p2trKeypath: Dimensions.sum({ nP2trKeypathInputs: 1 }),
481
+ p2trScriptPathLevel1: Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }),
482
+ p2trScriptPathLevel2: Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }),
483
+ p2shP2pk: Dimensions.sum({ nP2shP2pkInputs: 1 }),
484
+ });
485
+ Dimensions.ASSUME_P2SH = Dimensions.SingleInput.p2sh;
486
+ Dimensions.ASSUME_P2SH_P2WSH = Dimensions.SingleInput.p2shP2wsh;
487
+ Dimensions.ASSUME_P2WSH = Dimensions.SingleInput.p2wsh;
488
+ Dimensions.ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath;
489
+ Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1;
490
+ Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2;
491
+ Dimensions.ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk;
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQWdEO0FBQ2hELG1EQUE2QztBQUM3QyxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsZ0JBQUssQ0FBQztBQUdsRCwrQ0FBNEM7QUFDNUMsbUNBQTBDO0FBRTFDLGlEQUE4QztBQUNyQyw2RkFEQSwyQkFBWSxPQUNBO0FBRXJCOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLENBQXNCLEVBQ3RCLENBQWdGO0lBRWhGLE9BQU8sSUFBSSxVQUFVLENBQ25CLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RHLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjtJQVUzQixZQUFZLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUF1QixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUMzRSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUM3QixJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElB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aXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuY29uc3QgeyBpc0NoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gPSBiaXRnbztcbnR5cGUgQ2hhaW5Db2RlID0gYml0Z28uQ2hhaW5Db2RlO1xuXG5pbXBvcnQgeyBjb21wYWN0U2l6ZSB9IGZyb20gJy4vc2NyaXB0U2l6ZXMnO1xuaW1wb3J0IHsgUG9zaXRpdmVJbnRlZ2VyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IFZpcnR1YWxTaXplcyB9IGZyb20gJy4vdmlydHVhbFNpemVzJztcbmV4cG9ydCB7IFZpcnR1YWxTaXplcyB9O1xuXG4vKipcbiAqIEFwcGx5IGBmYCB0byBhbGwgcHJvcGVydGllcyBvZiBgZGBcbiAqL1xuZnVuY3Rpb24gbWFwRGltZW5zaW9ucyhcbiAgZDogUGFydGlhbDxEaW1lbnNpb25zPixcbiAgZjogPFQgZXh0ZW5kcyBrZXlvZiBEaW1lbnNpb25zPihrZXk6IFQsIHY6IERpbWVuc2lvbnNbVF0gfCB1bmRlZmluZWQpID0+IHVua25vd25cbik6IERpbWVuc2lvbnMge1xuICByZXR1cm4gbmV3IERpbWVuc2lvbnMoXG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGQpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBmKGtleSBhcyBrZXlvZiBEaW1lbnNpb25zLCB2YWx1ZSldKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGUgY291bnQgYW5kIHNpemUgb2YgdHJhbnNhY3Rpb24gb3V0cHV0c1xuICovXG5leHBvcnQgY2xhc3MgT3V0cHV0RGltZW5zaW9ucyB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygb3V0cHV0c1xuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEFnZ3JlZ2F0ZSB2U2l6ZVxuICAgKi9cbiAgc2l6ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgY291bnQgPSAwLCBzaXplID0gMCB9OiBPdXRwdXREaW1lbnNpb25zID0geyBjb3VudDogMCwgc2l6ZTogMCB9KSB7XG4gICAgaWYgKGNvdW50ID09PSAwIHx8IHNpemUgPT09IDApIHtcbiAgICAgIGlmIChjb3VudCAhPT0gMCB8fCBzaXplICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY291bnQgYW5kIHNpemUgbXVzdCBib3RoIGJlIHplcm8gaWYgb25lIGlzIHplcm9gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQ7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEZyb21JbnB1dFBhcmFtcyB7XG4gIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCB0eXBlIGlzIGFtYmlndW91cywgd2UgbXVzdCBwcm92aWRlIGEgaGludCBhYm91dCBzcGVuZCBzY3JpcHQgdHlwZS5cbiAgYXNzdW1lVW5zaWduZWQ/OiBEaW1lbnNpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21VbnNwZW50UGFyYW1zIHtcbiAgcDJ0cjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbiAgcDJ0ck11c2lnMjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVuc3BlbnRQYXJhbXM6IEZyb21VbnNwZW50UGFyYW1zID0ge1xuICBwMnRyOiB7XG4gICAgLy8gRGVmYXVsdCB0byByZWNvdmVyeSBzY3JpcHQgcGF0aHMsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiAxIHRvIHVzZSBoYXBweSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMixcbiAgfSxcbiAgcDJ0ck11c2lnMjoge1xuICAgIC8vIERlZmF1bHQgdG8gc2NyaXB0IHBhdGggc3BlbmQsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgdG8gdXNlIGtleSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMSxcbiAgfSxcbn07XG5cbi8qKlxuICogRGltZW5zaW9ucyBvZiBhIEJpdEdvIHdhbGxldCB0cmFuc2FjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25zIHtcbiAgLyoqIElucHV0IGNvdW50cyBmb3IgQml0R28gd2FsbGV0IG11bHRpLXNpZ25hdHVyZSBpbnB1dHMgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAyc2hQMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyS2V5cGF0aElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogbnVtYmVyID0gMDtcblxuICAvKiBJbnB1dCBjb3VudCBmb3Igc2luZ2xlLXNpZ25hdHVyZSBpbnB1dHMgKFJlcGxheSBQcm90ZWN0aW9uIGlucHV0cykgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoUDJwa0lucHV0czogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3V0cHV0czogT3V0cHV0RGltZW5zaW9ucyA9IG5ldyBPdXRwdXREaW1lbnNpb25zKCk7XG5cbiAgY29uc3RydWN0b3IoZDogUGFydGlhbDxEaW1lbnNpb25zPiA9IHt9KSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB0aGlzLnNldFByb3BlcnR5KGtleSwgdmFsdWUpKTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5KGs6IHN0cmluZywgdjogdW5rbm93bik6IHZvaWQge1xuICAgIHN3aXRjaCAoaykge1xuICAgICAgY2FzZSAnblAyc2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMndzaElucHV0cyc6XG4gICAgICBjYXNlICduUDJ3c2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJLZXlwYXRoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyc6XG4gICAgICBjYXNlICduUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMnBrSW5wdXRzJzpcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvcGVydHkgJHtrfSBtdXN0IGJlIG51bWJlcmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIodikgfHwgdiA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByb3BlcnR5ICR7a30gbXVzdCBiZSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ291dHB1dHMnOlxuICAgICAgICBpZiAoISh2IGluc3RhbmNlb2YgT3V0cHV0RGltZW5zaW9ucykpIHtcbiAgICAgICAgICB2ID0gbmV3IE91dHB1dERpbWVuc2lvbnModiBhcyBPdXRwdXREaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBwcm9wZXJ0eSAke2t9YCk7XG4gICAgfVxuXG4gICAgKHRoaXMgYXMgYW55KVtrXSA9IHY7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgWkVSTyA9IE9iamVjdC5mcmVlemUobmV3IERpbWVuc2lvbnMoKSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBaRVJPXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYW4gZW1wdHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIHN0YXRpYyB6ZXJvKCk6IFJlYWRvbmx5PERpbWVuc2lvbnM+IHtcbiAgICByZXR1cm4gdGhpcy5aRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzaXplXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYSBzaW5nbGUgb3V0cHV0IHdpdGggZ2l2ZW4gc2l6ZVxuICAgKi9cbiAgc3RhdGljIHNpbmdsZU91dHB1dChzaXplOiBudW1iZXIpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oeyBvdXRwdXRzOiB7IGNvdW50OiAxLCBzaXplIH0gfSk7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgU2luZ2xlT3V0cHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaE91dHB1dFNpemUpLFxuICAgIHAyc2hQMndzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ3c2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ0cjogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemUpLFxuXG4gICAgcDJwa2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAycGtoT3V0cHV0U2l6ZSksXG4gICAgcDJ3cGtoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMndwa2hPdXRwdXRTaXplKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gTnVtYmVyIG9mIHRvdGFsIGlucHV0cyAocDJzaCArIHAyc2hQMndzaCArIHAyd3NoICsgcDJ0cilcbiAgICovXG4gIGdldCBuSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyc2hJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJLZXlwYXRoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICtcbiAgICAgIHRoaXMublAyc2hQMnBrSW5wdXRzXG4gICAgKTtcbiAgfVxuXG4gIHNldCBuSW5wdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVhZC1vbmx5IHByb3BlcnR5IG5JbnB1dHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBvdXRwdXRzXG4gICAqL1xuICBnZXQgbk91dHB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLmNvdW50O1xuICB9XG5cbiAgc2V0IG5PdXRwdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVhZC1vbmx5IHByb3BlcnR5IG5PdXRwdXRzYCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGFyZ3MgLSBEaW1lbnNpb25zIChjYW4gYmUgcGFydGlhbGx5IGRlZmluZWQpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiBhcmd1bWVudHNcbiAgICovXG4gIHN0YXRpYyBzdW0oLi4uYXJnczogUGFydGlhbDxEaW1lbnNpb25zPltdKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIGFyZ3MucmVkdWNlKChhOiBEaW1lbnNpb25zLCBiOiBQYXJ0aWFsPERpbWVuc2lvbnM+KSA9PiBhLnBsdXMoYiksIG5ldyBEaW1lbnNpb25zKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBzdGF0aWMgZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW46IENoYWluQ29kZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pKSB7XG4gICAgICBjYXNlICdwMndzaCc6XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgICByZXR1cm4gMzQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMjM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY3JpcHRMZW5ndGhcbiAgICogQHJldHVybiB7TnVtYmVyfSB2U2l6ZSBvZiBhbiBvdXRwdXQgd2l0aCBzY3JpcHQgbGVuZ3RoXG4gICAqL1xuICBzdGF0aWMgZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIVBvc2l0aXZlSW50ZWdlci5pcyhzY3JpcHRMZW5ndGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBwb3NpdGl2ZSBpbnRlZ2VyIGZvciBzY3JpcHRMZW5ndGgsIGdvdCAke3NjcmlwdExlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjcmlwdExlbmd0aCArIGNvbXBhY3RTaXplKHNjcmlwdExlbmd0aCkgKyBWaXJ0dWFsU2l6ZXMudHhPdXRwdXRBbW91bnRTaXplO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFNpbmdsZUlucHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJzaElucHV0czogMSB9KSxcbiAgICBwMnNoUDJ3c2g6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMndzaElucHV0czogMSB9KSxcbiAgICBwMndzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJ3c2hJbnB1dHM6IDEgfSksXG4gICAgcDJ0cktleXBhdGg6IERpbWVuc2lvbnMuc3VtKHsgblAydHJLZXlwYXRoSW5wdXRzOiAxIH0pLFxuICAgIHAydHJTY3JpcHRQYXRoTGV2ZWwxOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMSB9KSxcbiAgICBwMnRyU2NyaXB0UGF0aExldmVsMjogRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IDEgfSksXG4gICAgcDJzaFAycGs6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMnBrSW5wdXRzOiAxIH0pLFxuICB9KTtcblxuICAvKipcbiAgICogQHJldHVyblxuICAgKi9cbiAgc3RhdGljIGZyb21TY3JpcHRUeXBlKFxuICAgIHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMyB8ICdwMnBraCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gICAgfSA9IHt9XG4gICk6IERpbWVuc2lvbnMge1xuICAgIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgICAgY2FzZSAncDJzaCc6XG4gICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgY2FzZSAncDJzaFAycGsnOlxuICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dFtzY3JpcHRUeXBlXTtcbiAgICAgIGNhc2UgJ3AydHInOlxuICAgICAgY2FzZSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwyO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHBhdGggbGV2ZWxgKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzY3JpcHQgcGF0aCBsZXZlbGApO1xuICAgICAgICB9XG4gICAgICBjYXNlICd0YXByb290S2V5UGF0aFNwZW5kJzpcbiAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0VHlwZSAke3NjcmlwdFR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyU0hfUDJXU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMndzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMldTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ3c2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9LRVlQQVRIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyS2V5cGF0aDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwxID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwyID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMjtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIX1AyUEtfSU5QVVQgPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMnBrO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldEFzc3VtZWREaW1lbnNpb24ocGFyYW1zOiBGcm9tSW5wdXRQYXJhbXMgPSB7fSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHsgYXNzdW1lVW5zaWduZWQgfSA9IHBhcmFtcztcbiAgICBpZiAoIWFzc3VtZVVuc2lnbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgaW5wdXQgJHtpbmRleH06IGVtcHR5IHNjcmlwdCBhbmQgYXNzdW1lVW5zaWduZWQgbm90IHNldGApO1xuICAgIH1cbiAgICByZXR1cm4gYXNzdW1lVW5zaWduZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlucHV0IC0gdGhlIHRyYW5zYWN0aW9uIGlucHV0IHRvIGNvdW50XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogICAgICAgIFtwYXJhbS5hc3N1bWVVbnNpZ25lZF0gLSBkZWZhdWx0IHR5cGUgZm9yIHVuc2lnbmVkIGlucHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0KGlucHV0OiB1dHhvbGliLlR4SW5wdXQsIHBhcmFtczogRnJvbUlucHV0UGFyYW1zID0ge30pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoaW5wdXQuc2NyaXB0Py5sZW5ndGggfHwgaW5wdXQud2l0bmVzcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KTtcbiAgICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHBhcnNlZC5zY3JpcHRUeXBlLCBwYXJzZWQgYXMgeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZ2V0QXNzdW1lZERpbWVuc2lvbihwYXJhbXMsIGlucHV0LmluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIHBzYnQgaW5wdXRcbiAgICogQHBhcmFtIGlucHV0IC0gcHNidCBpbnB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0SW5wdXQoaW5wdXQ6IGJpdGdvLlBzYnRJbnB1dFR5cGUpOiBEaW1lbnNpb25zIHtcbiAgICBjb25zdCBwYXJzZWQgPSBiaXRnby5wYXJzZVBzYnRJbnB1dChpbnB1dCk7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUocGFyc2VkLnNjcmlwdFR5cGUsIHBhcnNlZCBhcyB7IHNjcmlwdFBhdGhMZXZlbD86IG51bWJlciB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW5wdXRzIC0gQXJyYXkgb2YgaW5wdXRzXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KClcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIGlucHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0cyhpbnB1dHM6IHV0eG9saWIuVHhJbnB1dFtdLCBwYXJhbXM/OiBGcm9tSW5wdXRQYXJhbXMpOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGkpID0+IERpbWVuc2lvbnMuZnJvbUlucHV0KGksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIG11bHRpcGxlIHBzYnQgaW5wdXRzXG4gICAqIEBwYXJhbSBpbnB1dHMgcHNidCBpbnB1dCBhcnJheVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggaW5wdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tUHNidElucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbVBzYnRJbnB1dHMoaW5wdXRzOiBiaXRnby5Qc2J0SW5wdXRUeXBlW10pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGlucHV0LCBfKSA9PiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXQoaW5wdXQpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNjcmlwdExlbmd0aCB7bnVtYmVyfSAtIHNpemUgb2YgdGhlIG91dHB1dCBzY3JpcHQgaW4gYnl0ZXNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIG9mIHRoZSBvdXRwdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKHtcbiAgICAgIG91dHB1dHM6IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHNpemU6IERpbWVuc2lvbnMuZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvdXRwdXQgLSBhIHR4IG91dHB1dFxuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgLSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZ2l2ZW4gb3V0cHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dCh7IHNjcmlwdCB9OiB7IHNjcmlwdDogQnVmZmVyIH0pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvdXRwdXQgc2NyaXB0IHRvIGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgc2NyaXB0IHRvIGJlIGJ1ZmZlciwgZ290ICcgKyB0eXBlb2Ygc2NyaXB0KTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbU91dHB1dFNjcmlwdExlbmd0aChzY3JpcHQubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3V0cHV0cyAtIEFycmF5IG9mIG91dHB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIG91dHB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21PdXRwdXQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0cyhvdXRwdXRzOiB7IHNjcmlwdDogQnVmZmVyIH1bXSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvdXRwdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3V0cHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5vdXRwdXRzLm1hcChEaW1lbnNpb25zLmZyb21PdXRwdXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkaW1lbnNpb25zIG9mIGFuIG91dHB1dCB0aGF0IHdpbGwgYmUgY3JlYXRlZCBvbiBhIHNwZWNpZmljIGNoYWluLlxuICAgKiBDdXJyZW50bHksIHRoaXMgc2ltcGx5IGFkZHMgYSBkZWZhdWx0IG91dHB1dC5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluIC0gQ2hhaW4gY29kZSBhcyBkZWZpbmVkIGJ5IHV0eG9saWIuYml0Z29cbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIGZvciBhIHNpbmdsZSBvdXRwdXQgb24gdGhlIGdpdmVuIGNoYWluLlxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXRPbkNoYWluKGNoYWluOiBDaGFpbkNvZGUpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKERpbWVuc2lvbnMuZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gZGltZW5zaW9ucyBvZiBhbiB1bnNwZW50IGFjY29yZGluZyB0byBgY2hhaW5gIHBhcmFtZXRlclxuICAgKiBAcGFyYW0gY2hhaW4gLSBDaGFpbiBjb2RlIGFzIGRlZmluZWQgYnkgdXR4by5jaGFpblxuICAgKiBAcGFyYW0gcGFyYW1zIC0gSGludCBmb3IgdW5zcGVudHMgd2l0aCB2YXJpYWJsZSBpbnB1dCBzaXplcyAocDJ0ciwgcDJ0ck11c2lnMilcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gb2YgdGhlIHVuc3BlbnRcbiAgICogQHRocm93cyBpZiB0aGUgY2hhaW4gY29kZSBpcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnQoeyBjaGFpbiB9OiB7IGNoYWluOiBudW1iZXIgfSwgcGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IGRlZmF1bHRVbnNwZW50UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFpc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgY2hhaW4gY29kZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoXG4gICAgICBzY3JpcHRUeXBlLFxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gcGFyYW1zLnAydHIgOiBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicgPyBwYXJhbXMucDJ0ck11c2lnMiA6IHt9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdW5zcGVudHNcbiAgICogQHBhcmFtIHBhcmFtcyAtIEhpbnQgZm9yIHVuc3BlbnRzIHdpdGggdmFyaWFibGUgaW5wdXQgc2l6ZXMgKHAydHIsIHAydHJNdXNpZzIpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCB1bnNwZW50IChAc2VlIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tVW5zcGVudHModW5zcGVudHM6IHsgY2hhaW46IENoYWluQ29kZSB9W10sIHBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSBkZWZhdWx0VW5zcGVudFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh1bnNwZW50cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3BlbnRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0aGUgaW5kaXZpZHVhbCB1bnNwZW50cyBpbnRvIGRpbWVuc2lvbnMgYW5kIHN1bSB0aGVtIHVwXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLnVuc3BlbnRzLm1hcCgodSkgPT4gRGltZW5zaW9ucy5mcm9tVW5zcGVudCh1LCBwYXJhbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIC0gYml0Y29pbi1saWtlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBbcGFyYW0uYXNzdW1lVW5zaWduZWRdIC0gZGVmYXVsdCB0eXBlIGZvciB1bnNpZ25lZCBpbnB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24oXG4gICAge1xuICAgICAgaW5zLFxuICAgICAgb3V0cyxcbiAgICB9OiB7XG4gICAgICBpbnM6IHV0eG9saWIuVHhJbnB1dFtdO1xuICAgICAgb3V0czogdXR4b2xpYi5UeE91dHB1dFtdO1xuICAgIH0sXG4gICAgcGFyYW1zPzogRnJvbUlucHV0UGFyYW1zXG4gICk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21JbnB1dHMoaW5zLCBwYXJhbXMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhvdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBwc2J0IGlucHV0cyBhbmQgb3V0cHV0c1xuICAgKiBAcGFyYW0gcHNidFxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfVxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0KHBzYnQ6IGJpdGdvLlV0eG9Qc2J0KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dHMocHNidC5kYXRhLmlucHV0cykucGx1cyhEaW1lbnNpb25zLmZyb21PdXRwdXRzKHBzYnQuZ2V0VW5zaWduZWRUeCgpLm91dHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGltZW5zaW9ucyAoY2FuIGJlIHBhcnRpYWxseSBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIG5ldyBkaW1lbnNpb25zIHdpdGggYXJndW1lbnQgYWRkZWRcbiAgICovXG4gIHBsdXMoZGltZW5zaW9uczogUGFydGlhbDxEaW1lbnNpb25zPik6IERpbWVuc2lvbnMge1xuICAgIGlmICh0eXBlb2YgZGltZW5zaW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIG9iamVjdGApO1xuICAgIH1cblxuICAgIGlmICghKGRpbWVuc2lvbnMgaW5zdGFuY2VvZiBEaW1lbnNpb25zKSkge1xuICAgICAgZGltZW5zaW9ucyA9IG5ldyBEaW1lbnNpb25zKGRpbWVuc2lvbnMpO1xuICAgIH1cblxuICAgIC8vIENhdGNoIGluc3RhbmNlcyB3aGVyZSB3ZSB0cnkgdG8gaW5pdGlhbGl6ZSBEaW1lbnNpb25zIGZyb20gcGFydGlhbCBkYXRhIHVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVyc1xuICAgIC8vIHVzaW5nIG9ubHkgXCJuT3V0cHV0c1wiLlxuICAgIGlmICgnbk91dHB1dHMnIGluIGRpbWVuc2lvbnMpIHtcbiAgICAgIGlmICghKCdvdXRwdXRzJyBpbiBkaW1lbnNpb25zKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogYXJndW1lbnQgaGFzIGtleSBcIm5PdXRwdXRzXCIgYnV0IG5vIFwib3V0cHV0c1wiJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb3V0cHV0cywgbk91dHB1dHMgfSA9IGRpbWVuc2lvbnMgYXMgRGltZW5zaW9ucztcblxuICAgICAgaWYgKG91dHB1dHMuY291bnQgIT09IG5PdXRwdXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZGVwcmVjYXRlZCBwYXJ0aWFsIGFkZGl0aW9uOiBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciBcIm5PdXRwdXRzXCIgYW5kIFwib3V0cHV0cy5jb3VudFwiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdikgPT4ge1xuICAgICAgY29uc3QgdyA9IGRpbWVuc2lvbnNba2V5XSA/PyBEaW1lbnNpb25zLlpFUk9ba2V5XTtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHYgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgY29uc3Qgd091dHB1dHMgPSB3IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiBuZXcgT3V0cHV0RGltZW5zaW9ucyh7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICsgd091dHB1dHMuY291bnQsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSArIHdPdXRwdXRzLnNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICh2IGFzIG51bWJlcikgKyAodyBhcyBudW1iZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGx5IGRpbWVuc2lvbnMgYnkgYSBnaXZlbiBmYWN0b3JcbiAgICogQHBhcmFtIGZhY3RvciAtIFBvc2l0aXZlIGludGVnZXJcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHRpbWVzKGZhY3RvcjogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFQb3NpdGl2ZUludGVnZXIuaXMoZmFjdG9yKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgZmFjdG9yIHRvIGJlIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwRGltZW5zaW9ucyh0aGlzLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ291dHB1dHMnKSB7XG4gICAgICAgIGNvbnN0IHZPdXRwdXRzID0gdmFsdWUgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogdk91dHB1dHMuY291bnQgKiBmYWN0b3IsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSAqIGZhY3RvcixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodmFsdWUgYXMgbnVtYmVyKSAqIGZhY3RvcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBpbnB1dHMgKHAyc2gsIHAyc2hQMndzaCBhbmQgcDJ3c2gpXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZGltZW5zaW9uLm5JbnB1dHNgIGluc3RlYWRcbiAgICovXG4gIGdldE5JbnB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uSW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBkaW1lbnNpb25zIGhhdmUgb25lIG9yIG1vcmUgKHAyc2gpcDJ3c2ggaW5wdXRzXG4gICAqL1xuICBpc1NlZ3dpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5uUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnNoUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyS2V5cGF0aElucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMgPlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSBvdmVyaGVhZCB2c2l6ZSwgYmFzZWQgb24gcmVzdWx0IGlzU2Vnd2l0KCkuXG4gICAqL1xuICBnZXRPdmVyaGVhZFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWd3aXQoKSA/IFZpcnR1YWxTaXplcy50eFNlZ092ZXJoZWFkVlNpemUgOiBWaXJ0dWFsU2l6ZXMudHhPdmVyaGVhZFNpemU7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gdnNpemUgb2YgaW5wdXRzLCB3aXRob3V0IHRyYW5zYWN0aW9uIG92ZXJoZWFkXG4gICAqL1xuICBnZXRJbnB1dHNWU2l6ZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IHtcbiAgICAgIHR4UDJzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAyd3NoSW5wdXRTaXplLFxuICAgICAgdHhQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ0cktleXBhdGhJbnB1dFNpemUsXG4gICAgICB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAycGtJbnB1dFNpemUsXG4gICAgfSA9IFZpcnR1YWxTaXplcztcblxuICAgIGNvbnN0IHtcbiAgICAgIG5QMnNoSW5wdXRzLFxuICAgICAgblAyc2hQMndzaElucHV0cyxcbiAgICAgIG5QMndzaElucHV0cyxcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyxcbiAgICAgIG5QMnNoUDJwa0lucHV0cyxcbiAgICB9ID0gdGhpcztcblxuICAgIGNvbnN0IHNpemUgPVxuICAgICAgblAyc2hJbnB1dHMgKiB0eFAyc2hJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMndzaElucHV0cyAqIHR4UDJzaFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMndzaElucHV0cyAqIHR4UDJ3c2hJbnB1dFNpemUgK1xuICAgICAgblAydHJLZXlwYXRoSW5wdXRzICogdHhQMnRyS2V5cGF0aElucHV0U2l6ZSArXG4gICAgICBuUDJzaFAycGtJbnB1dHMgKiB0eFAyc2hQMnBrSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dFNpemUgK1xuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICogdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2l6ZWApO1xuICAgIH1cblxuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHJldHVybiB2c2l6ZSBvZiBvdXRwdXRzLCB3aXRob3V0IG92ZXJoZWFkXG4gICAqL1xuICBnZXRPdXRwdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLnNpemU7XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGVzIHRoZSB2aXJ0dWFsIHNpemUgKDEvNCB3ZWlnaHQpIG9mIGEgc2lnbmVkIHRyYW5zYWN0aW9uIGFzIHN1bSBvZlxuICAgKiBvdmVyaGVhZCB2c2l6ZSwgaW5wdXQgdnNpemUgYW5kIG91dHB1dCB2c2l6ZS5cbiAgICogQHJldHVybnMge051bWJlcn0gVGhlIGVzdGltYXRlZCB2c2l6ZSBvZiB0aGUgdHJhbnNhY3Rpb24gZGltZW5zaW9ucy5cbiAgICovXG4gIGdldFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3ZlcmhlYWRWU2l6ZSgpICsgdGhpcy5nZXRJbnB1dHNWU2l6ZSgpICsgdGhpcy5nZXRPdXRwdXRzVlNpemUoKTtcbiAgfVxufVxuIl19
@@ -5,3 +5,4 @@ Codes,
5
5
  /** @deprecated - use utxolib.bitgo */
6
6
  CodesTypes, };
7
7
  export * from './dimensions';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,UAAU,MAAM,SAAS,CAAC;AAC7C,OAAO;AACL,sCAAsC;AACtC,KAAK;AACL,sCAAsC;AACtC,UAAU,GACX,CAAC;AAEF,cAAc,cAAc,CAAC"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,4 +31,4 @@ const codes_1 = __importStar(require("./codes")), CodesTypes = codes_1;
27
31
  exports.Codes = codes_1.default;
28
32
  exports.CodesTypes = CodesTypes;
29
33
  __exportStar(require("./dimensions"), exports);
30
- //# sourceMappingURL=index.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1RUFBNkM7QUFHM0MsZ0JBSEssZUFBSyxDQUdMO0FBRUwsZ0NBQVU7QUFHWiwrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29kZXMsICogYXMgQ29kZXNUeXBlcyBmcm9tICcuL2NvZGVzJztcbmV4cG9ydCB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIENvZGVzLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBDb2Rlc1R5cGVzLFxufTtcblxuZXhwb3J0ICogZnJvbSAnLi9kaW1lbnNpb25zJztcbiJdfQ==
@@ -23,3 +23,4 @@ export declare const inputComponentsP2trKeySpend: InputComponents;
23
23
  export declare const inputComponentsP2trScriptSpendLevel1: InputComponents;
24
24
  export declare const inputComponentsP2trScriptSpendLevel2: InputComponents;
25
25
  export declare const inputComponentsP2shP2pk: InputComponents;
26
+ //# sourceMappingURL=inputWeights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputWeights.d.ts","sourceRoot":"","sources":["../../src/inputWeights.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAItD;AAaD,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD;AAED,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAMnE;AAgCD,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,eAGzC,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,eAGlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAGrC,CAAC"}