@bitgo/sdk-coin-flrp 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/flrp.d.ts +6 -75
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +13 -298
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/lib/ExportInCTxBuilder.d.ts +51 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +186 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts +47 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInPTxBuilder.js +273 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts +48 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInCTxBuilder.js +215 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts +33 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInPTxBuilder.js +180 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +18 -16
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +38 -36
- package/dist/src/lib/atomicTransactionBuilder.d.ts +42 -79
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +138 -281
- package/dist/src/lib/iface.d.ts +50 -51
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +22 -10
- package/dist/src/lib/index.d.ts +2 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +5 -6
- package/dist/src/lib/keyPair.d.ts +1 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +9 -5
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +32 -67
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +91 -205
- package/dist/src/lib/transaction.d.ts +8 -73
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +159 -210
- package/dist/src/lib/transactionBuilder.d.ts +56 -34
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +113 -70
- package/dist/src/lib/transactionBuilderFactory.d.ts +35 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +133 -74
- package/dist/src/lib/utils.d.ts +73 -151
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +197 -390
- package/dist/test/resources/transactionData/exportInC.d.ts +20 -0
- package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInC.js +34 -0
- package/dist/test/resources/transactionData/exportInP.d.ts +69 -0
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInP.js +140 -0
- package/dist/test/resources/transactionData/importInC.d.ts +27 -0
- package/dist/test/resources/transactionData/importInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInC.js +44 -0
- package/dist/test/resources/transactionData/importInP.d.ts +35 -0
- package/dist/test/resources/transactionData/importInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInP.js +58 -0
- package/dist/test/unit/lib/exportInCTxBuilder.js +95 -513
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +110 -366
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +40 -251
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +61 -489
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +89 -0
- package/dist/test/unit/lib/utils.js +29 -302
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -10
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/lib/constants.d.ts +0 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -199
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -120
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- package/dist/test/unit/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/validatorTxBuilder.test.js +0 -293
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import 'should';
|
|
2
2
|
//# sourceMappingURL=exportInPTxBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/exportInPTxBuilder.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"exportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/exportInPTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|
|
@@ -1,377 +1,121 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
})();
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
35
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
require("should");
|
|
8
|
+
const exportInP_1 = require("../../resources/transactionData/exportInP");
|
|
9
|
+
const lib_1 = require("../../../src/lib");
|
|
36
10
|
const statics_1 = require("@bitgo/statics");
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
11
|
+
const signFlowTestSuit_1 = __importDefault(require("./signFlowTestSuit"));
|
|
12
|
+
describe('Flrp Export In P Tx Builder', () => {
|
|
13
|
+
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp'));
|
|
14
|
+
describe('validate txBuilder fields', () => {
|
|
15
|
+
const txBuilder = factory.getExportInPBuilder();
|
|
16
|
+
it('should fail amount low than zero', () => {
|
|
17
|
+
assert_1.default.throws(() => {
|
|
18
|
+
txBuilder.amount('-1');
|
|
19
|
+
}, (e) => e.message === 'Amount must be greater than 0');
|
|
20
|
+
});
|
|
21
|
+
it('should fail target chain id length incorrect', () => {
|
|
22
|
+
assert_1.default.throws(() => {
|
|
23
|
+
txBuilder.externalChainId(Buffer.from(exportInP_1.EXPORT_IN_P.INVALID_CHAIN_ID.slice(2)));
|
|
24
|
+
}, (e) => e.message === 'Chain id are 32 byte size');
|
|
25
|
+
});
|
|
26
|
+
it('should fail target chain id not a valid base58 string', () => {
|
|
27
|
+
assert_1.default.throws(() => {
|
|
28
|
+
txBuilder.externalChainId(exportInP_1.EXPORT_IN_P.INVALID_CHAIN_ID);
|
|
29
|
+
}, (e) => e.message === 'Non-base58 character');
|
|
30
|
+
});
|
|
31
|
+
it('should fail target chain id cb58 invalid checksum', () => {
|
|
32
|
+
assert_1.default.throws(() => {
|
|
33
|
+
txBuilder.externalChainId(exportInP_1.EXPORT_IN_P.VALID_C_CHAIN_ID.slice(2));
|
|
34
|
+
}, (e) => e.message === 'Invalid checksum');
|
|
35
|
+
});
|
|
36
|
+
it('should fail validate Utxos empty string', () => {
|
|
37
|
+
assert_1.default.throws(() => {
|
|
38
|
+
txBuilder.validateUtxos([]);
|
|
39
|
+
}, (e) => e.message === 'UTXOs array cannot be empty');
|
|
40
|
+
});
|
|
41
|
+
it('should fail validate Utxos without amount field', () => {
|
|
42
|
+
assert_1.default.throws(() => {
|
|
43
|
+
txBuilder.validateUtxos([{ outputID: '' }]);
|
|
44
|
+
}, (e) => e.message === 'UTXO missing required field: amount');
|
|
57
45
|
});
|
|
58
46
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
assert.doesNotThrow(() => {
|
|
80
|
-
builder.amount(amount);
|
|
81
|
-
}, `Should accept numeric amount: ${amount}`);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
it('should reject zero amount', function () {
|
|
85
|
-
assert.throws(() => {
|
|
86
|
-
builder.amount(0n);
|
|
87
|
-
}, /Amount must be positive/);
|
|
88
|
-
assert.throws(() => {
|
|
89
|
-
builder.amount('0');
|
|
90
|
-
}, /Amount must be positive/);
|
|
91
|
-
assert.throws(() => {
|
|
92
|
-
builder.amount(0);
|
|
93
|
-
}, /Amount must be positive/);
|
|
94
|
-
});
|
|
95
|
-
it('should handle large amounts', function () {
|
|
96
|
-
const largeAmounts = [
|
|
97
|
-
'100000000000000000000000', // Very large amount
|
|
98
|
-
'18446744073709551615', // Near uint64 max
|
|
99
|
-
BigInt('999999999999999999999999999999'),
|
|
100
|
-
999999999999999999n,
|
|
101
|
-
];
|
|
102
|
-
largeAmounts.forEach((amount) => {
|
|
103
|
-
assert.doesNotThrow(() => {
|
|
104
|
-
builder.amount(amount);
|
|
105
|
-
}, `Should handle large amount: ${amount}`);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
it('should reject negative amounts', function () {
|
|
109
|
-
const negativeAmounts = ['-1000', '-1'];
|
|
110
|
-
negativeAmounts.forEach((amount) => {
|
|
111
|
-
assert.throws(() => {
|
|
112
|
-
builder.amount(amount);
|
|
113
|
-
}, Error, // validateAmount should throw error for negative amounts
|
|
114
|
-
`Should reject negative amount: ${amount}`);
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
it('should reject negative bigint amounts', function () {
|
|
118
|
-
const negativeBigints = [-1n, -1000n, -999999999999n];
|
|
119
|
-
negativeBigints.forEach((amount) => {
|
|
120
|
-
assert.throws(() => {
|
|
121
|
-
builder.amount(amount);
|
|
122
|
-
}, Error, `Should reject negative bigint amount: ${amount}`);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
it('should chain amount setting with other methods', function () {
|
|
126
|
-
const amount = 1000000000000000000n; // 1 FLR
|
|
127
|
-
assert.doesNotThrow(() => {
|
|
128
|
-
builder.amount(amount);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
47
|
+
(0, signFlowTestSuit_1.default)({
|
|
48
|
+
transactionType: 'Export P2C with changeoutput',
|
|
49
|
+
newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp')),
|
|
50
|
+
newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp'))
|
|
51
|
+
.getExportInPBuilder()
|
|
52
|
+
.threshold(exportInP_1.EXPORT_IN_P.threshold)
|
|
53
|
+
.locktime(exportInP_1.EXPORT_IN_P.locktime)
|
|
54
|
+
.fromPubKey(exportInP_1.EXPORT_IN_P.pAddresses)
|
|
55
|
+
.amount(exportInP_1.EXPORT_IN_P.amount)
|
|
56
|
+
.externalChainId(exportInP_1.EXPORT_IN_P.sourceChainId)
|
|
57
|
+
.fee(exportInP_1.EXPORT_IN_P.fee)
|
|
58
|
+
.utxos(exportInP_1.EXPORT_IN_P.outputs),
|
|
59
|
+
unsignedTxHex: exportInP_1.EXPORT_IN_P.unsignedHex,
|
|
60
|
+
halfSignedTxHex: exportInP_1.EXPORT_IN_P.halfSigntxHex,
|
|
61
|
+
fullSignedTxHex: exportInP_1.EXPORT_IN_P.fullSigntxHex,
|
|
62
|
+
privateKey: {
|
|
63
|
+
prv1: exportInP_1.EXPORT_IN_P.privateKeys[0],
|
|
64
|
+
prv2: exportInP_1.EXPORT_IN_P.privateKeys[1],
|
|
65
|
+
},
|
|
66
|
+
txHash: exportInP_1.EXPORT_IN_P.txhash,
|
|
131
67
|
});
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
68
|
+
(0, signFlowTestSuit_1.default)({
|
|
69
|
+
transactionType: 'Export P2C with 2 UTXOs',
|
|
70
|
+
newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp')),
|
|
71
|
+
newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp'))
|
|
72
|
+
.getExportInPBuilder()
|
|
73
|
+
.threshold(exportInP_1.EXPORT_IN_P_TWO_UTXOS.threshold)
|
|
74
|
+
.locktime(exportInP_1.EXPORT_IN_P_TWO_UTXOS.locktime)
|
|
75
|
+
.fromPubKey(exportInP_1.EXPORT_IN_P_TWO_UTXOS.pAddresses)
|
|
76
|
+
.amount(exportInP_1.EXPORT_IN_P_TWO_UTXOS.amount)
|
|
77
|
+
.externalChainId(exportInP_1.EXPORT_IN_P_TWO_UTXOS.sourceChainId)
|
|
78
|
+
.fee(exportInP_1.EXPORT_IN_P_TWO_UTXOS.fee)
|
|
79
|
+
.utxos(exportInP_1.EXPORT_IN_P_TWO_UTXOS.outputs),
|
|
80
|
+
unsignedTxHex: exportInP_1.EXPORT_IN_P_TWO_UTXOS.unsignedHex,
|
|
81
|
+
halfSignedTxHex: exportInP_1.EXPORT_IN_P_TWO_UTXOS.halfSigntxHex,
|
|
82
|
+
fullSignedTxHex: exportInP_1.EXPORT_IN_P_TWO_UTXOS.fullSigntxHex,
|
|
83
|
+
privateKey: {
|
|
84
|
+
prv1: exportInP_1.EXPORT_IN_P_TWO_UTXOS.privateKeys[0],
|
|
85
|
+
prv2: exportInP_1.EXPORT_IN_P_TWO_UTXOS.privateKeys[1],
|
|
86
|
+
},
|
|
87
|
+
txHash: exportInP_1.EXPORT_IN_P_TWO_UTXOS.txhash,
|
|
137
88
|
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
type: 'export',
|
|
159
|
-
amount: '1000000000000000000',
|
|
160
|
-
from: 'P-flare1source',
|
|
161
|
-
to: 'C-flare1dest',
|
|
162
|
-
};
|
|
163
|
-
assert.doesNotThrow(() => {
|
|
164
|
-
builder.initBuilder(mockTx);
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
describe('Transaction Type Verification', function () {
|
|
169
|
-
it('should verify transaction type (returns false - not implemented)', function () {
|
|
170
|
-
const mockTx = { type: 'export' };
|
|
171
|
-
const result = exportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(mockTx);
|
|
172
|
-
assert.strictEqual(result, false); // Not implemented yet
|
|
173
|
-
});
|
|
174
|
-
it('should handle different transaction objects', function () {
|
|
175
|
-
const testCases = [{}, null, undefined, { type: 'import' }, { data: 'test' }];
|
|
176
|
-
testCases.forEach((testCase, index) => {
|
|
177
|
-
const result = exportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(testCase);
|
|
178
|
-
assert.strictEqual(result, false, `Test case ${index} should return false (not implemented)`);
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
it('should verify via instance method', function () {
|
|
182
|
-
const mockTx = { type: 'export' };
|
|
183
|
-
const result = builder.verifyTxType(mockTx);
|
|
184
|
-
assert.strictEqual(result, false); // Not implemented
|
|
185
|
-
});
|
|
186
|
-
it('should verify static and instance methods return same result', function () {
|
|
187
|
-
const mockTx = { type: 'export' };
|
|
188
|
-
const staticResult = exportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(mockTx);
|
|
189
|
-
const instanceResult = builder.verifyTxType(mockTx);
|
|
190
|
-
assert.strictEqual(staticResult, instanceResult);
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
describe('Transaction Building', function () {
|
|
194
|
-
it('should throw error when building (not implemented)', function () {
|
|
195
|
-
builder.amount(1000000000000000000n);
|
|
196
|
-
assert.throws(() => {
|
|
197
|
-
// Access protected method for testing
|
|
198
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
199
|
-
builder.buildFlareTransaction();
|
|
200
|
-
}, Error);
|
|
201
|
-
});
|
|
202
|
-
it('should throw specific error message', function () {
|
|
203
|
-
assert.throws(() => {
|
|
204
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
205
|
-
builder.buildFlareTransaction();
|
|
206
|
-
}, /Flare P-chain export transaction build not implemented/);
|
|
207
|
-
});
|
|
89
|
+
(0, signFlowTestSuit_1.default)({
|
|
90
|
+
transactionType: 'Export P2C with no change output',
|
|
91
|
+
newTxFactory: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp')),
|
|
92
|
+
newTxBuilder: () => new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp'))
|
|
93
|
+
.getExportInPBuilder()
|
|
94
|
+
.threshold(exportInP_1.EXPORT_IN_P_NO_CHANGE.threshold)
|
|
95
|
+
.locktime(exportInP_1.EXPORT_IN_P_NO_CHANGE.locktime)
|
|
96
|
+
.fromPubKey(exportInP_1.EXPORT_IN_P_NO_CHANGE.pAddresses)
|
|
97
|
+
.amount(exportInP_1.EXPORT_IN_P_NO_CHANGE.amount)
|
|
98
|
+
.externalChainId(exportInP_1.EXPORT_IN_P_NO_CHANGE.sourceChainId)
|
|
99
|
+
.fee(exportInP_1.EXPORT_IN_P_NO_CHANGE.fee)
|
|
100
|
+
.utxos(exportInP_1.EXPORT_IN_P_NO_CHANGE.outputs),
|
|
101
|
+
unsignedTxHex: exportInP_1.EXPORT_IN_P_NO_CHANGE.unsignedHex,
|
|
102
|
+
halfSignedTxHex: exportInP_1.EXPORT_IN_P_NO_CHANGE.halfSigntxHex,
|
|
103
|
+
fullSignedTxHex: exportInP_1.EXPORT_IN_P_NO_CHANGE.fullSigntxHex,
|
|
104
|
+
privateKey: {
|
|
105
|
+
prv1: exportInP_1.EXPORT_IN_P_NO_CHANGE.privateKeys[0],
|
|
106
|
+
prv2: exportInP_1.EXPORT_IN_P_NO_CHANGE.privateKeys[1],
|
|
107
|
+
},
|
|
108
|
+
txHash: exportInP_1.EXPORT_IN_P_NO_CHANGE.txhash,
|
|
208
109
|
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
it('should consistently return empty array', function () {
|
|
218
|
-
// Call multiple times to ensure consistency
|
|
219
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
220
|
-
const result1 = builder.exportedOutputs();
|
|
221
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
222
|
-
const result2 = builder.exportedOutputs();
|
|
223
|
-
assert.deepStrictEqual(result1, result2);
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
describe('Amount Validation', function () {
|
|
227
|
-
it('should validate positive amounts', function () {
|
|
228
|
-
const positiveAmounts = [1n, 1000n, 1000000000000000000n];
|
|
229
|
-
positiveAmounts.forEach((amount) => {
|
|
230
|
-
assert.doesNotThrow(() => {
|
|
231
|
-
builder.amount(amount);
|
|
232
|
-
}, `Should validate positive amount: ${amount}`);
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
it('should reject zero amount', function () {
|
|
236
|
-
assert.throws(() => {
|
|
237
|
-
builder.amount(0n);
|
|
238
|
-
}, /Amount must be positive/);
|
|
239
|
-
});
|
|
240
|
-
it('should validate large amounts', function () {
|
|
241
|
-
const largeAmounts = [
|
|
242
|
-
BigInt('18446744073709551615'), // Max uint64
|
|
243
|
-
BigInt('999999999999999999999999999999'), // Very large
|
|
244
|
-
];
|
|
245
|
-
largeAmounts.forEach((amount) => {
|
|
246
|
-
assert.doesNotThrow(() => {
|
|
247
|
-
builder.amount(amount);
|
|
248
|
-
}, `Should validate large amount: ${amount}`);
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
describe('Integration Tests', function () {
|
|
253
|
-
it('should handle basic P-chain export setup', function () {
|
|
254
|
-
const amount = 5000000000000000000n; // 5 FLR
|
|
255
|
-
// Basic setup
|
|
256
|
-
builder.amount(amount);
|
|
257
|
-
// Should not throw during setup
|
|
258
|
-
assert.ok(true);
|
|
259
|
-
});
|
|
260
|
-
it('should handle amount conversion from different types', function () {
|
|
261
|
-
// Test conversion from string
|
|
262
|
-
builder.amount('1000000000000000000');
|
|
263
|
-
// Test conversion from number
|
|
264
|
-
builder.amount(1000000);
|
|
265
|
-
// Test direct bigint
|
|
266
|
-
builder.amount(2000000000000000000n);
|
|
267
|
-
// All conversions should work
|
|
268
|
-
assert.ok(true);
|
|
269
|
-
});
|
|
270
|
-
it('should maintain state across operations', function () {
|
|
271
|
-
// Set amount
|
|
272
|
-
builder.amount(1000000000000000000n);
|
|
273
|
-
// Initialize with transaction
|
|
274
|
-
const mockTx = { type: 'export' };
|
|
275
|
-
builder.initBuilder(mockTx);
|
|
276
|
-
// State should be maintained
|
|
277
|
-
assert.ok(true);
|
|
278
|
-
});
|
|
279
|
-
it('should handle sequential amount updates', function () {
|
|
280
|
-
// Update amount multiple times
|
|
281
|
-
builder.amount(1000n);
|
|
282
|
-
builder.amount(2000n);
|
|
283
|
-
builder.amount(3000n);
|
|
284
|
-
// Should handle updates without issues
|
|
285
|
-
assert.ok(true);
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
describe('Error Handling', function () {
|
|
289
|
-
it('should handle invalid amount types gracefully', function () {
|
|
290
|
-
const invalidAmounts = [null, undefined, {}, [], 'invalid'];
|
|
291
|
-
invalidAmounts.forEach((amount) => {
|
|
292
|
-
assert.throws(() => {
|
|
293
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
294
|
-
builder.amount(amount);
|
|
295
|
-
}, `Should throw for invalid amount: ${amount}`);
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
it('should handle edge case string amounts', function () {
|
|
299
|
-
const edgeCaseAmounts = ['', ' ', 'abc', '1.5', 'infinity', 'NaN'];
|
|
300
|
-
edgeCaseAmounts.forEach((amount) => {
|
|
301
|
-
assert.throws(() => {
|
|
302
|
-
builder.amount(amount);
|
|
303
|
-
}, `Should throw for edge case amount: ${amount}`);
|
|
304
|
-
});
|
|
305
|
-
});
|
|
306
|
-
});
|
|
307
|
-
describe('Inheritance Tests', function () {
|
|
308
|
-
it('should inherit from AtomicTransactionBuilder', function () {
|
|
309
|
-
// Test that builder has expected inherited functionality
|
|
310
|
-
assert.ok(builder);
|
|
311
|
-
// Should have initBuilder method
|
|
312
|
-
assert.ok(typeof builder.initBuilder === 'function');
|
|
313
|
-
// Should have verifyTxType method
|
|
314
|
-
assert.ok(typeof builder.verifyTxType === 'function');
|
|
315
|
-
});
|
|
316
|
-
it('should have access to inherited UTXO methods', function () {
|
|
317
|
-
// Should inherit utxos method from parent
|
|
318
|
-
assert.ok(typeof builder.utxos === 'function');
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
describe('Edge Cases', function () {
|
|
322
|
-
it('should handle rapid consecutive operations', function () {
|
|
323
|
-
// Rapid amount changes (start from 1 since 0 is not valid)
|
|
324
|
-
for (let i = 1; i <= 100; i++) {
|
|
325
|
-
builder.amount(BigInt(i * 1000));
|
|
326
|
-
}
|
|
327
|
-
// Should handle rapid operations
|
|
328
|
-
assert.ok(true);
|
|
329
|
-
});
|
|
330
|
-
it('should handle maximum bigint values', function () {
|
|
331
|
-
const maxValues = [
|
|
332
|
-
BigInt(Number.MAX_SAFE_INTEGER),
|
|
333
|
-
BigInt('18446744073709551615'), // Max uint64
|
|
334
|
-
];
|
|
335
|
-
maxValues.forEach((value) => {
|
|
336
|
-
assert.doesNotThrow(() => {
|
|
337
|
-
builder.amount(value);
|
|
338
|
-
}, `Should handle max value: ${value}`);
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
it('should handle minimum valid values', function () {
|
|
342
|
-
const minValues = [1n]; // Removed 0n since it's not valid
|
|
343
|
-
minValues.forEach((value) => {
|
|
344
|
-
assert.doesNotThrow(() => {
|
|
345
|
-
builder.amount(value);
|
|
346
|
-
}, `Should handle min value: ${value}`);
|
|
347
|
-
});
|
|
348
|
-
});
|
|
349
|
-
});
|
|
350
|
-
describe('Future Implementation Readiness', function () {
|
|
351
|
-
it('should be ready for future buildFlareTransaction implementation', function () {
|
|
352
|
-
// Setup valid state
|
|
353
|
-
builder.amount(1000000000000000000n);
|
|
354
|
-
// Current implementation throws, but structure is in place
|
|
355
|
-
assert.throws(() => {
|
|
356
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
357
|
-
builder.buildFlareTransaction();
|
|
358
|
-
}, /not implemented/);
|
|
359
|
-
});
|
|
360
|
-
it('should be ready for future verifyTxType implementation', function () {
|
|
361
|
-
// Current implementation returns false
|
|
362
|
-
const result = builder.verifyTxType({ type: 'export' });
|
|
363
|
-
assert.strictEqual(result, false);
|
|
364
|
-
// But method signature is ready for implementation
|
|
365
|
-
assert.ok(typeof builder.verifyTxType === 'function');
|
|
366
|
-
});
|
|
367
|
-
it('should be ready for future exportedOutputs implementation', function () {
|
|
368
|
-
// Current implementation returns empty array
|
|
369
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
370
|
-
const result = builder.exportedOutputs();
|
|
371
|
-
assert.ok(Array.isArray(result));
|
|
372
|
-
// But method exists and is ready for implementation
|
|
373
|
-
assert.strictEqual(result.length, 0);
|
|
110
|
+
it('Should full sign a export tx from unsigned raw tx', () => {
|
|
111
|
+
const txBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tflrp')).from(exportInP_1.EXPORT_IN_P.unsignedHex);
|
|
112
|
+
txBuilder.sign({ key: exportInP_1.EXPORT_IN_P.privateKeys[0] });
|
|
113
|
+
txBuilder
|
|
114
|
+
.build()
|
|
115
|
+
.then(() => assert_1.default.fail('it can sign'))
|
|
116
|
+
.catch((err) => {
|
|
117
|
+
err.message.should.be.equal('Private key cannot sign the transaction');
|
|
374
118
|
});
|
|
375
119
|
});
|
|
376
120
|
});
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9leHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBdUM7QUFDdkMsK0NBQWlDO0FBQ2pDLDRFQUF5RTtBQUV6RSxRQUFRLENBQUMsb0JBQW9CLEVBQUU7SUFDN0IsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxJQUFJLE9BQTJCLENBQUM7SUFFaEMsVUFBVSxDQUFDO1FBQ1QsT0FBTyxHQUFHLElBQUksdUNBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFO1FBQ3RCLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRTtZQUN2QyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxZQUFZLHVDQUFrQixDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUU7WUFDM0MsbUJBQW1CO1lBQ25CLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUU7WUFDMUMsOEJBQThCO1lBQzlCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtRQUM1QixFQUFFLENBQUMsaUNBQWlDLEVBQUU7WUFDcEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVB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LENBQUMsQ0FBQztZQUVsQyxtREFBbUQ7WUFDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUU7WUFDOUQsNkNBQTZDO1lBQzdDLDhEQUE4RDtZQUM5RCxNQUFNLE1BQU0sR0FBSSxPQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFakMsb0RBQW9EO1lBQ3BELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgRXhwb3J0SW5QVHhCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRJblBUeEJ1aWxkZXInO1xuXG5kZXNjcmliZSgnRXhwb3J0SW5QVHhCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCd0ZmxycCcpO1xuICBsZXQgYnVpbGRlcjogRXhwb3J0SW5QVHhCdWlsZGVyO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIGJ1aWxkZXIgPSBuZXcgRXhwb3J0SW5QVHhCdWlsZGVyKGNvaW5Db25maWcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ29uc3RydWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHdpdGggY29pbiBjb25maWcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQub2soYnVpbGRlcik7XG4gICAgICBhc3NlcnQub2soYnVpbGRlciBpbnN0YW5jZW9mIEV4cG9ydEluUFR4QnVpbGRlcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4dGVuZCBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUZXN0IGluaGVyaXRhbmNlXG4gICAgICBhc3NlcnQub2soYnVpbGRlcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgd2l0aCBkZWZhdWx0IGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERlZmF1bHQgYW1vdW50IHNob3VsZCBiZSAwblxuICAgICAgYXNzZXJ0Lm9rKGJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQW1vdW50IE1hbmFnZW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdmFsaWQgYmlnaW50IGFtb3VudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWxpZEFtb3VudHMgPSBbMTAwMG4sIDEwMDAwMDAwMDAwMDAwMDAwMDBuLCA5OTk5OTk5OTk5OTk5OTk5OTluXTsgLy8gUmVtb3ZlZCAwblxuXG4gICAgICB2YWxpZEFtb3VudHMuZm9yRWFjaCgoYW1vdW50KSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgICAgIH0sIGBTaG91bGQgYWNjZXB0IGJpZ2ludCBhbW91bnQ6ICR7YW1vdW50fWApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBzdHJpbmcgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHN0cmluZ0Ftb3VudHMgPSBbJzEwMDAnLCAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsICc5OTk5OTk5OTk5OTk5OTk5OTknXTsgLy8gUmVtb3ZlZCAnMCdcblxuICAgICAgc3RyaW5nQW1vdW50cy5mb3JFYWNoKChhbW91bnQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgICAgfSwgYFNob3VsZCBhY2NlcHQgc3RyaW5nIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IG51bWVyaWMgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG51bWVyaWNBbW91bnRzID0gWzEwMDAsIDIwMDAwMDAsIDk5OTk5OTk5OV07IC8vIFJlbW92ZWQgMFxuXG4gICAgICBudW1lcmljQW1vdW50cy5mb3JFYWNoKChhbW91bnQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgICAgfSwgYFNob3VsZCBhY2NlcHQgbnVtZXJpYyBhbW91bnQ6ICR7YW1vdW50fWApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCB6ZXJvIGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmFtb3VudCgwbik7XG4gICAgICB9LCAvQW1vdW50IG11c3QgYmUgcG9zaXRpdmUvKTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KCcwJyk7XG4gICAgICB9LCAvQW1vdW50IG11c3QgYmUgcG9zaXRpdmUvKTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KDApO1xuICAgICAgfSwgL0Ftb3VudCBtdXN0IGJlIHBvc2l0aXZlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBsYXJnZSBhbW91bnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGFyZ2VBbW91bnRzID0gW1xuICAgICAgICAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgLy8gVmVyeSBsYXJnZSBhbW91bnRcbiAgICAgICAgJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JywgLy8gTmVhciB1aW50NjQgbWF4XG4gICAgICAgIEJpZ0ludCgnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyksXG4gICAgICAgIDk5OTk5OTk5OTk5OTk5OTk5OW4sXG4gICAgICBdO1xuXG4gICAgICBsYXJnZUFtb3VudHMuZm9yRWFjaCgoYW1vdW50KSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgICAgIH0sIGBTaG91bGQgaGFuZGxlIGxhcmdlIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG5lZ2F0aXZlIGFtb3VudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBuZWdhdGl2ZUFtb3VudHMgPSBbJy0xMDAwJywgJy0xJ107XG5cbiAgICAgIG5lZ2F0aXZlQW1vdW50cy5mb3JFYWNoKChhbW91bnQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBidWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgRXJyb3IsIC8vIHZhbGlkYXRlQW1vdW50IHNob3VsZCB0aHJvdyBlcnJvciBmb3IgbmVnYXRpdmUgYW1vdW50c1xuICAgICAgICAgIGBTaG91bGQgcmVqZWN0IG5lZ2F0aXZlIGFtb3VudDogJHthbW91bnR9YFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBuZWdhdGl2ZSBiaWdpbnQgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG5lZ2F0aXZlQmlnaW50cyA9IFstMW4sIC0xMDAwbiwgLTk5OTk5OTk5OTk5OW5dO1xuXG4gICAgICBuZWdhdGl2ZUJpZ2ludHMuZm9yRWFjaCgoYW1vdW50KSA9PiB7XG4gICAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgYnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIEVycm9yLFxuICAgICAgICAgIGBTaG91bGQgcmVqZWN0IG5lZ2F0aXZlIGJpZ2ludCBhbW91bnQ6ICR7YW1vdW50fWBcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjaGFpbiBhbW91bnQgc2V0dGluZyB3aXRoIG90aGVyIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhbW91bnQgPSAxMDAwMDAwMDAwMDAwMDAwMDAwbjsgLy8gMSBGTFJcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIFR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gRXhwb3J0IHRyYW5zYWN0aW9uIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDYW4ndCBhY2Nlc3MgcHJvdGVjdGVkIG1ldGhvZCBkaXJlY3RseSwgYnV0IHRlc3QgZG9lc24ndCB0aHJvd1xuICAgICAgYXNzZXJ0Lm9rKGJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gSW5pdGlhbGl6YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIGJ1aWxkZXIgZnJvbSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1vY2tUeCA9IHsgdHlwZTogJ2V4cG9ydCcsIGRhdGE6ICdwbGFjZWhvbGRlcicgfTtcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIobW9ja1R4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgbnVsbCB0cmFuc2FjdGlvbiBpbml0aWFsaXphdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmluaXRCdWlsZGVyKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQgdHJhbnNhY3Rpb24gaW5pdGlhbGl6YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBvYmplY3QgdHJhbnNhY3Rpb24gaW5pdGlhbGl6YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrVHggPSB7XG4gICAgICAgIGlkOiAndGVzdC10eCcsXG4gICAgICAgIHR5cGU6ICdleHBvcnQnLFxuICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgZnJvbTogJ1AtZmxhcmUxc291cmNlJyxcbiAgICAgICAgdG86ICdDLWZsYXJlMWRlc3QnLFxuICAgICAgfTtcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIobW9ja1R4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVHlwZSBWZXJpZmljYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdHJhbnNhY3Rpb24gdHlwZSAocmV0dXJucyBmYWxzZSAtIG5vdCBpbXBsZW1lbnRlZCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrVHggPSB7IHR5cGU6ICdleHBvcnQnIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBFeHBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKG1vY2tUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBmYWxzZSk7IC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXRcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGRpZmZlcmVudCB0cmFuc2FjdGlvbiBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGVzdENhc2VzID0gW3t9LCBudWxsLCB1bmRlZmluZWQsIHsgdHlwZTogJ2ltcG9ydCcgfSwgeyBkYXRhOiAndGVzdCcgfV07XG5cbiAgICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh0ZXN0Q2FzZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gRXhwb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0ZXN0Q2FzZSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIGZhbHNlLCBgVGVzdCBjYXNlICR7aW5kZXh9IHNob3VsZCByZXR1cm4gZmFsc2UgKG5vdCBpbXBsZW1lbnRlZClgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdmlhIGluc3RhbmNlIG1ldGhvZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1vY2tUeCA9IHsgdHlwZTogJ2V4cG9ydCcgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGJ1aWxkZXIudmVyaWZ5VHhUeXBlKG1vY2tUeCk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBmYWxzZSk7IC8vIE5vdCBpbXBsZW1lbnRlZFxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgc3RhdGljIGFuZCBpbnN0YW5jZSBtZXRob2RzIHJldHVybiBzYW1lIHJlc3VsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1vY2tUeCA9IHsgdHlwZTogJ2V4cG9ydCcgfTtcbiAgICAgIGNvbnN0IHN0YXRpY1Jlc3VsdCA9IEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUobW9ja1R4KTtcbiAgICAgIGNvbnN0IGluc3RhbmNlUmVzdWx0ID0gYnVpbGRlci52ZXJpZnlUeFR5cGUobW9ja1R4KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChzdGF0aWNSZXN1bHQsIGluc3RhbmNlUmVzdWx0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIEJ1aWxkaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBidWlsZGluZyAobm90IGltcGxlbWVudGVkKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXIuYW1vdW50KDEwMDAwMDAwMDAwMDAwMDAwMDBuKTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIC8vIEFjY2VzcyBwcm90ZWN0ZWQgbWV0aG9kIGZvciB0ZXN0aW5nXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIChidWlsZGVyIGFzIGFueSkuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgICB9LCBFcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHNwZWNpZmljIGVycm9yIG1lc3NhZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgKGJ1aWxkZXIgYXMgYW55KS5idWlsZEZsYXJlVHJhbnNhY3Rpb24oKTtcbiAgICAgIH0sIC9GbGFyZSBQLWNoYWluIGV4cG9ydCB0cmFuc2FjdGlvbiBidWlsZCBub3QgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cG9ydGVkIE91dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZW1wdHkgYXJyYXkgZm9yIGV4cG9ydGVkIG91dHB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBBY2Nlc3MgcHJvdGVjdGVkIG1ldGhvZCBmb3IgdGVzdGluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IChidWlsZGVyIGFzIGFueSkuZXhwb3J0ZWRPdXRwdXRzKCk7XG5cbiAgICAgIGFzc2VydC5vayhBcnJheS5pc0FycmF5KHJlc3VsdCkpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5sZW5ndGgsIDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb25zaXN0ZW50bHkgcmV0dXJuIGVtcHR5IGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ2FsbCBtdWx0aXBsZSB0aW1lcyB0byBlbnN1cmUgY29uc2lzdGVuY3lcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBjb25zdCByZXN1bHQxID0gKGJ1aWxkZXIgYXMgYW55KS5leHBvcnRlZE91dHB1dHMoKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBjb25zdCByZXN1bHQyID0gKGJ1aWxkZXIgYXMgYW55KS5leHBvcnRlZE91dHB1dHMoKTtcblxuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyZXN1bHQxLCByZXN1bHQyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Ftb3VudCBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgcG9zaXRpdmUgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHBvc2l0aXZlQW1vdW50cyA9IFsxbiwgMTAwMG4sIDEwMDAwMDAwMDAwMDAwMDAwMDBuXTtcblxuICAgICAgcG9zaXRpdmVBbW91bnRzLmZvckVhY2goKGFtb3VudCkgPT4ge1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgICB9LCBgU2hvdWxkIHZhbGlkYXRlIHBvc2l0aXZlIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHplcm8gYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KDBuKTtcbiAgICAgIH0sIC9BbW91bnQgbXVzdCBiZSBwb3NpdGl2ZS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBsYXJnZSBhbW91bnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGFyZ2VBbW91bnRzID0gW1xuICAgICAgICBCaWdJbnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JyksIC8vIE1heCB1aW50NjRcbiAgICAgICAgQmlnSW50KCc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknKSwgLy8gVmVyeSBsYXJnZVxuICAgICAgXTtcblxuICAgICAgbGFyZ2VBbW91bnRzLmZvckVhY2goKGFtb3VudCkgPT4ge1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgICB9LCBgU2hvdWxkIHZhbGlkYXRlIGxhcmdlIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ludGVncmF0aW9uIFRlc3RzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGJhc2ljIFAtY2hhaW4gZXhwb3J0IHNldHVwJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYW1vdW50ID0gNTAwMDAwMDAwMDAwMDAwMDAwMG47IC8vIDUgRkxSXG5cbiAgICAgIC8vIEJhc2ljIHNldHVwXG4gICAgICBidWlsZGVyLmFtb3VudChhbW91bnQpO1xuXG4gICAgICAvLyBTaG91bGQgbm90IHRocm93IGR1cmluZyBzZXR1cFxuICAgICAgYXNzZXJ0Lm9rKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgYW1vdW50IGNvbnZlcnNpb24gZnJvbSBkaWZmZXJlbnQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUZXN0IGNvbnZlcnNpb24gZnJvbSBzdHJpbmdcbiAgICAgIGJ1aWxkZXIuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIC8vIFRlc3QgY29udmVyc2lvbiBmcm9tIG51bWJlclxuICAgICAgYnVpbGRlci5hbW91bnQoMTAwMDAwMCk7XG5cbiAgICAgIC8vIFRlc3QgZGlyZWN0IGJpZ2ludFxuICAgICAgYnVpbGRlci5hbW91bnQoMjAwMDAwMDAwMDAwMDAwMDAwMG4pO1xuXG4gICAgICAvLyBBbGwgY29udmVyc2lvbnMgc2hvdWxkIHdvcmtcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWFpbnRhaW4gc3RhdGUgYWNyb3NzIG9wZXJhdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTZXQgYW1vdW50XG4gICAgICBidWlsZGVyLmFtb3VudCgxMDAwMDAwMDAwMDAwMDAwMDAwbik7XG5cbiAgICAgIC8vIEluaXRpYWxpemUgd2l0aCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgbW9ja1R4ID0geyB0eXBlOiAnZXhwb3J0JyB9O1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcihtb2NrVHgpO1xuXG4gICAgICAvLyBTdGF0ZSBzaG91bGQgYmUgbWFpbnRhaW5lZFxuICAgICAgYXNzZXJ0Lm9rKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc2VxdWVudGlhbCBhbW91bnQgdXBkYXRlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFVwZGF0ZSBhbW91bnQgbXVsdGlwbGUgdGltZXNcbiAgICAgIGJ1aWxkZXIuYW1vdW50KDEwMDBuKTtcbiAgICAgIGJ1aWxkZXIuYW1vdW50KDIwMDBuKTtcbiAgICAgIGJ1aWxkZXIuYW1vdW50KDMwMDBuKTtcblxuICAgICAgLy8gU2hvdWxkIGhhbmRsZSB1cGRhdGVzIHdpdGhvdXQgaXNzdWVzXG4gICAgICBhc3NlcnQub2sodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFcnJvciBIYW5kbGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBpbnZhbGlkIGFtb3VudCB0eXBlcyBncmFjZWZ1bGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW52YWxpZEFtb3VudHMgPSBbbnVsbCwgdW5kZWZpbmVkLCB7fSwgW10sICdpbnZhbGlkJ107XG5cbiAgICAgIGludmFsaWRBbW91bnRzLmZvckVhY2goKGFtb3VudCkgPT4ge1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIGJ1aWxkZXIuYW1vdW50KGFtb3VudCBhcyBhbnkpO1xuICAgICAgICB9LCBgU2hvdWxkIHRocm93IGZvciBpbnZhbGlkIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVkZ2UgY2FzZSBzdHJpbmcgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVkZ2VDYXNlQW1vdW50cyA9IFsnJywgJyAgJywgJ2FiYycsICcxLjUnLCAnaW5maW5pdHknLCAnTmFOJ107XG5cbiAgICAgIGVkZ2VDYXNlQW1vdW50cy5mb3JFYWNoKChhbW91bnQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgICAgfSwgYFNob3VsZCB0aHJvdyBmb3IgZWRnZSBjYXNlIGFtb3VudDogJHthbW91bnR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0luaGVyaXRhbmNlIFRlc3RzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgaW5oZXJpdCBmcm9tIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRlc3QgdGhhdCBidWlsZGVyIGhhcyBleHBlY3RlZCBpbmhlcml0ZWQgZnVuY3Rpb25hbGl0eVxuICAgICAgYXNzZXJ0Lm9rKGJ1aWxkZXIpO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSBpbml0QnVpbGRlciBtZXRob2RcbiAgICAgIGFzc2VydC5vayh0eXBlb2YgYnVpbGRlci5pbml0QnVpbGRlciA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgICAgIC8vIFNob3VsZCBoYXZlIHZlcmlmeVR4VHlwZSBtZXRob2RcbiAgICAgIGFzc2VydC5vayh0eXBlb2YgYnVpbGRlci52ZXJpZnlUeFR5cGUgPT09ICdmdW5jdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGFjY2VzcyB0byBpbmhlcml0ZWQgVVRYTyBtZXRob2RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2hvdWxkIGluaGVyaXQgdXR4b3MgbWV0aG9kIGZyb20gcGFyZW50XG4gICAgICBhc3NlcnQub2sodHlwZW9mIGJ1aWxkZXIudXR4b3MgPT09ICdmdW5jdGlvbicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRWRnZSBDYXNlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSByYXBpZCBjb25zZWN1dGl2ZSBvcGVyYXRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmFwaWQgYW1vdW50IGNoYW5nZXMgKHN0YXJ0IGZyb20gMSBzaW5jZSAwIGlzIG5vdCB2YWxpZClcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KEJpZ0ludChpICogMTAwMCkpO1xuICAgICAgfVxuXG4gICAgICAvLyBTaG91bGQgaGFuZGxlIHJhcGlkIG9wZXJhdGlvbnNcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG1heGltdW0gYmlnaW50IHZhbHVlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG1heFZhbHVlcyA9IFtcbiAgICAgICAgQmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxcbiAgICAgICAgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpLCAvLyBNYXggdWludDY0XG4gICAgICBdO1xuXG4gICAgICBtYXhWYWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5hbW91bnQodmFsdWUpO1xuICAgICAgICB9LCBgU2hvdWxkIGhhbmRsZSBtYXggdmFsdWU6ICR7dmFsdWV9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG1pbmltdW0gdmFsaWQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbWluVmFsdWVzID0gWzFuXTsgLy8gUmVtb3ZlZCAwbiBzaW5jZSBpdCdzIG5vdCB2YWxpZFxuXG4gICAgICBtaW5WYWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5hbW91bnQodmFsdWUpO1xuICAgICAgICB9LCBgU2hvdWxkIGhhbmRsZSBtaW4gdmFsdWU6ICR7dmFsdWV9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Z1dHVyZSBJbXBsZW1lbnRhdGlvbiBSZWFkaW5lc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBiZSByZWFkeSBmb3IgZnV0dXJlIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbiBpbXBsZW1lbnRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNldHVwIHZhbGlkIHN0YXRlXG4gICAgICBidWlsZGVyLmFtb3VudCgxMDAwMDAwMDAwMDAwMDAwMDAwbik7XG5cbiAgICAgIC8vIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gdGhyb3dzLCBidXQgc3RydWN0dXJlIGlzIGluIHBsYWNlXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgKGJ1aWxkZXIgYXMgYW55KS5idWlsZEZsYXJlVHJhbnNhY3Rpb24oKTtcbiAgICAgIH0sIC9ub3QgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgcmVhZHkgZm9yIGZ1dHVyZSB2ZXJpZnlUeFR5cGUgaW1wbGVtZW50YXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDdXJyZW50IGltcGxlbWVudGF0aW9uIHJldHVybnMgZmFsc2VcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGJ1aWxkZXIudmVyaWZ5VHhUeXBlKHsgdHlwZTogJ2V4cG9ydCcgfSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBmYWxzZSk7XG5cbiAgICAgIC8vIEJ1dCBtZXRob2Qgc2lnbmF0dXJlIGlzIHJlYWR5IGZvciBpbXBsZW1lbnRhdGlvblxuICAgICAgYXNzZXJ0Lm9rKHR5cGVvZiBidWlsZGVyLnZlcmlmeVR4VHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIHJlYWR5IGZvciBmdXR1cmUgZXhwb3J0ZWRPdXRwdXRzIGltcGxlbWVudGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGVtcHR5IGFycmF5XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgY29uc3QgcmVzdWx0ID0gKGJ1aWxkZXIgYXMgYW55KS5leHBvcnRlZE91dHB1dHMoKTtcbiAgICAgIGFzc2VydC5vayhBcnJheS5pc0FycmF5KHJlc3VsdCkpO1xuXG4gICAgICAvLyBCdXQgbWV0aG9kIGV4aXN0cyBhbmQgaXMgcmVhZHkgZm9yIGltcGxlbWVudGF0aW9uXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0Lmxlbmd0aCwgMCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9leHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsa0JBQWdCO0FBQ2hCLHlFQUltRDtBQUNuRCwwQ0FBNkU7QUFDN0UsNENBQXVDO0FBQ3ZDLDBFQUE4QztBQUU5QyxRQUFRLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWxFLFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtZQUMxQyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssK0JBQStCLENBQzFELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7WUFDdEQsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsQ0FBQyxFQUNELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLDJCQUEyQixDQUN0RCxDQUFD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QUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBFWFBPUlRfSU5fUCBhcyB0ZXN0RGF0YSxcbiAgRVhQT1JUX0lOX1BfVFdPX1VUWE9TIGFzIHR3b1V0eG9UZXN0RGF0YSxcbiAgRVhQT1JUX0lOX1BfTk9fQ0hBTkdFIGFzIG5vQ2hhbmdlVGVzdERhdGEsXG59IGZyb20gJy4uLy4uL3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvZXhwb3J0SW5QJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBzaWduRmxvd1Rlc3QgZnJvbSAnLi9zaWduRmxvd1Rlc3RTdWl0JztcblxuZGVzY3JpYmUoJ0ZscnAgRXhwb3J0IEluIFAgVHggQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGZscnAnKSk7XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkYXRlIHR4QnVpbGRlciBmaWVsZHMnLCAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeHBvcnRJblBCdWlsZGVyKCk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGFtb3VudCBsb3cgdGhhbiB6ZXJvJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5hbW91bnQoJy0xJyk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0Ftb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZhaWwgdGFyZ2V0IGNoYWluIGlkIGxlbmd0aCBpbmNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4dGVybmFsQ2hhaW5JZChCdWZmZXIuZnJvbSh0ZXN0RGF0YS5JTlZBTElEX0NIQUlOX0lELnNsaWNlKDIpKSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0NoYWluIGlkIGFyZSAzMiBieXRlIHNpemUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRhcmdldCBjaGFpbiBpZCBub3QgYSB2YWxpZCBiYXNlNTggc3RyaW5nJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlcm5hbENoYWluSWQodGVzdERhdGEuSU5WQUxJRF9DSEFJTl9JRCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ05vbi1iYXNlNTggY2hhcmFjdGVyJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0YXJnZXQgY2hhaW4gaWQgY2I1OCBpbnZhbGlkIGNoZWNrc3VtJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlcm5hbENoYWluSWQodGVzdERhdGEuVkFMSURfQ19DSEFJTl9JRC5zbGljZSgyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0ludmFsaWQgY2hlY2tzdW0nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHZhbGlkYXRlIFV0eG9zIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIudmFsaWRhdGVVdHhvcyhbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1VUWE9zIGFycmF5IGNhbm5vdCBiZSBlbXB0eSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdmFsaWRhdGUgVXR4b3Mgd2l0aG91dCBhbW91bnQgZmllbGQnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLnZhbGlkYXRlVXR4b3MoW3sgb3V0cHV0SUQ6ICcnIH0gYXMgYW55IGFzIERlY29kZWRVdHhvT2JqXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1VUWE8gbWlzc2luZyByZXF1aXJlZCBmaWVsZDogYW1vdW50J1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc2lnbkZsb3dUZXN0KHtcbiAgICB0cmFuc2FjdGlvblR5cGU6ICdFeHBvcnQgUDJDIHdpdGggY2hhbmdlb3V0cHV0JyxcbiAgICBuZXdUeEZhY3Rvcnk6ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGZscnAnKSksXG4gICAgbmV3VHhCdWlsZGVyOiAoKSA9PlxuICAgICAgbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0ZmxycCcpKVxuICAgICAgICAuZ2V0RXhwb3J0SW5QQnVpbGRlcigpXG4gICAgICAgIC50aHJlc2hvbGQodGVzdERhdGEudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodGVzdERhdGEubG9ja3RpbWUpXG4gICAgICAgIC5mcm9tUHViS2V5KHRlc3REYXRhLnBBZGRyZXNzZXMpXG4gICAgICAgIC5hbW91bnQodGVzdERhdGEuYW1vdW50KVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKHRlc3REYXRhLnNvdXJjZUNoYWluSWQpXG4gICAgICAgIC5mZWUodGVzdERhdGEuZmVlKVxuICAgICAgICAudXR4b3ModGVzdERhdGEub3V0cHV0cyksXG4gICAgdW5zaWduZWRUeEhleDogdGVzdERhdGEudW5zaWduZWRIZXgsXG4gICAgaGFsZlNpZ25lZFR4SGV4OiB0ZXN0RGF0YS5oYWxmU2lnbnR4SGV4LFxuICAgIGZ1bGxTaWduZWRUeEhleDogdGVzdERhdGEuZnVsbFNpZ250eEhleCxcbiAgICBwcml2YXRlS2V5OiB7XG4gICAgICBwcnYxOiB0ZXN0RGF0YS5wcml2YXRlS2V5c1swXSxcbiAgICAgIHBydjI6IHRlc3REYXRhLnByaXZhdGVLZXlzWzFdLFxuICAgIH0sXG4gICAgdHhIYXNoOiB0ZXN0RGF0YS50eGhhc2gsXG4gIH0pO1xuXG4gIHNpZ25GbG93VGVzdCh7XG4gICAgdHJhbnNhY3Rpb25UeXBlOiAnRXhwb3J0IFAyQyB3aXRoIDIgVVRYT3MnLFxuICAgIG5ld1R4RmFjdG9yeTogKCkgPT4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0ZmxycCcpKSxcbiAgICBuZXdUeEJ1aWxkZXI6ICgpID0+XG4gICAgICBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RmbHJwJykpXG4gICAgICAgIC5nZXRFeHBvcnRJblBCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZCh0d29VdHhvVGVzdERhdGEudGhyZXNob2xkKVxuICAgICAgICAubG9ja3RpbWUodHdvVXR4b1Rlc3REYXRhLmxvY2t0aW1lKVxuICAgICAgICAuZnJvbVB1YktleSh0d29VdHhvVGVzdERhdGEucEFkZHJlc3NlcylcbiAgICAgICAgLmFtb3VudCh0d29VdHhvVGVzdERhdGEuYW1vdW50KVxuICAgICAgICAuZXh0ZXJuYWxDaGFpbklkKHR3b1V0eG9UZXN0RGF0YS5zb3VyY2VDaGFpbklkKVxuICAgICAgICAuZmVlKHR3b1V0eG9UZXN0RGF0YS5mZWUpXG4gICAgICAgIC51dHhvcyh0d29VdHhvVGVzdERhdGEub3V0cHV0cyksXG4gICAgdW5zaWduZWRUeEhleDogdHdvVXR4b1Rlc3REYXRhLnVuc2lnbmVkSGV4LFxuICAgIGhhbGZTaWduZWRUeEhleDogdHdvVXR4b1Rlc3REYXRhLmhhbGZTaWdudHhIZXgsXG4gICAgZnVsbFNpZ25lZFR4SGV4OiB0d29VdHhvVGVzdERhdGEuZnVsbFNpZ250eEhleCxcbiAgICBwcml2YXRlS2V5OiB7XG4gICAgICBwcnYxOiB0d29VdHhvVGVzdERhdGEucHJpdmF0ZUtleXNbMF0sXG4gICAgICBwcnYyOiB0d29VdHhvVGVzdERhdGEucHJpdmF0ZUtleXNbMV0sXG4gICAgfSxcbiAgICB0eEhhc2g6IHR3b1V0eG9UZXN0RGF0YS50eGhhc2gsXG4gIH0pO1xuXG4gIHNpZ25GbG93VGVzdCh7XG4gICAgdHJhbnNhY3Rpb25UeXBlOiAnRXhwb3J0IFAyQyB3aXRoIG5vIGNoYW5nZSBvdXRwdXQnLFxuICAgIG5ld1R4RmFjdG9yeTogKCkgPT4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0ZmxycCcpKSxcbiAgICBuZXdUeEJ1aWxkZXI6ICgpID0+XG4gICAgICBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RmbHJwJykpXG4gICAgICAgIC5nZXRFeHBvcnRJblBCdWlsZGVyKClcbiAgICAgICAgLnRocmVzaG9sZChub0NoYW5nZVRlc3REYXRhLnRocmVzaG9sZClcbiAgICAgICAgLmxvY2t0aW1lKG5vQ2hhbmdlVGVzdERhdGEubG9ja3RpbWUpXG4gICAgICAgIC5mcm9tUHViS2V5KG5vQ2hhbmdlVGVzdERhdGEucEFkZHJlc3NlcylcbiAgICAgICAgLmFtb3VudChub0NoYW5nZVRlc3REYXRhLmFtb3VudClcbiAgICAgICAgLmV4dGVybmFsQ2hhaW5JZChub0NoYW5nZVRlc3REYXRhLnNvdXJjZUNoYWluSWQpXG4gICAgICAgIC5mZWUobm9DaGFuZ2VUZXN0RGF0YS5mZWUpXG4gICAgICAgIC51dHhvcyhub0NoYW5nZVRlc3REYXRhLm91dHB1dHMpLFxuICAgIHVuc2lnbmVkVHhIZXg6IG5vQ2hhbmdlVGVzdERhdGEudW5zaWduZWRIZXgsXG4gICAgaGFsZlNpZ25lZFR4SGV4OiBub0NoYW5nZVRlc3REYXRhLmhhbGZTaWdudHhIZXgsXG4gICAgZnVsbFNpZ25lZFR4SGV4OiBub0NoYW5nZVRlc3REYXRhLmZ1bGxTaWdudHhIZXgsXG4gICAgcHJpdmF0ZUtleToge1xuICAgICAgcHJ2MTogbm9DaGFuZ2VUZXN0RGF0YS5wcml2YXRlS2V5c1swXSxcbiAgICAgIHBydjI6IG5vQ2hhbmdlVGVzdERhdGEucHJpdmF0ZUtleXNbMV0sXG4gICAgfSxcbiAgICB0eEhhc2g6IG5vQ2hhbmdlVGVzdERhdGEudHhoYXNoLFxuICB9KTtcblxuICBpdCgnU2hvdWxkIGZ1bGwgc2lnbiBhIGV4cG9ydCB0eCBmcm9tIHVuc2lnbmVkIHJhdyB0eCcsICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3RmbHJwJykpLmZyb20odGVzdERhdGEudW5zaWduZWRIZXgpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcml2YXRlS2V5c1swXSB9KTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5idWlsZCgpXG4gICAgICAudGhlbigoKSA9PiBhc3NlcnQuZmFpbCgnaXQgY2FuIHNpZ24nKSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5iZS5lcXVhbCgnUHJpdmF0ZSBrZXkgY2Fubm90IHNpZ24gdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import 'should';
|
|
2
2
|
//# sourceMappingURL=importInCTxBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/importInCTxBuilder.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"importInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/importInCTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|