@bitgo/sdk-coin-polyx 1.17.2 → 1.18.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/lib/iface.d.ts +7 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +6 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +14 -2
- package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -1
- package/dist/src/lib/preApproveAssetBuilder.js +1 -2
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +5 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts +12 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +25 -1
- package/dist/src/lib/utils.d.ts +1 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +6 -1
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.js +21 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTransferBuilder.js +21 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TokenTransferBuilder.js +21 -0
- package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TransferBuilder.js +21 -0
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +3 -1
- package/dist/src/resources/mainnetV8.d.ts +13 -0
- package/dist/src/resources/mainnetV8.d.ts.map +1 -0
- package/dist/src/resources/mainnetV8.js +16 -0
- package/dist/src/resources/testnetV8.d.ts +13 -0
- package/dist/src/resources/testnetV8.d.ts.map +1 -0
- package/dist/src/resources/testnetV8.js +16 -0
- package/dist/test/resources/index.d.ts +1 -1
- package/dist/test/resources/index.d.ts.map +1 -1
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +30 -1
- package/dist/test/unit/transactionBuilder/nominateBuilder.js +58 -1
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +60 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +51 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +88 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -108,5 +108,5 @@ export declare const nominateTx: {
|
|
|
108
108
|
export declare const nominateSender = "5Cm9EXKwcDDNVNDFSUnsp46YCA7QmMVAaRKSFeeCUed1Jbix";
|
|
109
109
|
export declare const nominateValidators: string[];
|
|
110
110
|
export declare const txVersion: number, specVersion: number, genesisHash: string, chainName: string, specName: import("@bitgo/statics").SubstrateSpecNameType;
|
|
111
|
-
export declare const mainTxVersion: number, mainSpecVersion: number, mainGenesisHash: string, mainChainName: string, mainSpecName:
|
|
111
|
+
export declare const mainTxVersion: number, mainSpecVersion: number, mainGenesisHash: string, mainChainName: string, mainSpecName: import("@bitgo/statics").SubstrateSpecNameType;
|
|
112
112
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,eAAO,MAAM,gBAAgB,qIACuG,CAAC;AAErI,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDpB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAKtB,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAqD,CAAC;AAEjF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAQ,SAAS,UAAE,WAAW,UAAE,WAAW,UAAE,SAAS,UAAE,QAAQ,gDAAwB,CAAC;AAChG,eAAO,MACM,aAAa,UACX,eAAe,UACf,eAAe,UACjB,aAAa,UACd,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,eAAO,MAAM,gBAAgB,qIACuG,CAAC;AAErI,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDpB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAKtB,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAqD,CAAC;AAEjF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAQ,SAAS,UAAE,WAAW,UAAE,WAAW,UAAE,SAAS,UAAE,QAAQ,gDAAwB,CAAC;AAChG,eAAO,MACM,aAAa,UACX,eAAe,UACf,eAAe,UACjB,aAAa,UACd,YAAY,gDACD,CAAC"}
|
|
@@ -197,6 +197,35 @@ describe('Polyx Batch Builder', function () {
|
|
|
197
197
|
}, /Invalid transaction type/);
|
|
198
198
|
});
|
|
199
199
|
});
|
|
200
|
+
describe('signablePayload (Substrate 256-byte blake2 rule)', function () {
|
|
201
|
+
const buildBatchTx = async (numValidators) => {
|
|
202
|
+
const batchBuilder = factory.getBatchBuilder();
|
|
203
|
+
batchBuilder
|
|
204
|
+
.amount(testAmount)
|
|
205
|
+
.controller({ address: controllerAddress })
|
|
206
|
+
.payee('Staked')
|
|
207
|
+
.validators(Array(numValidators).fill(validatorAddress))
|
|
208
|
+
.sender({ address: senderAddress })
|
|
209
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
210
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
211
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
212
|
+
batchBuilder.material(utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type));
|
|
213
|
+
return batchBuilder.build();
|
|
214
|
+
};
|
|
215
|
+
it('should return raw payload bytes when the batch extrinsic is at most 256 bytes', async () => {
|
|
216
|
+
// bond + nominate with a single validator stays under the 256-byte threshold
|
|
217
|
+
const tx = await buildBatchTx(1);
|
|
218
|
+
const signablePayload = tx.signablePayload;
|
|
219
|
+
signablePayload.length.should.be.belowOrEqual(256);
|
|
220
|
+
signablePayload.length.should.not.equal(32);
|
|
221
|
+
});
|
|
222
|
+
it('should return the 32-byte blake2_256 hash when the batch extrinsic exceeds 256 bytes', async () => {
|
|
223
|
+
// bond + nominate with many validators pushes the batch over the 256-byte threshold
|
|
224
|
+
const tx = await buildBatchTx(6);
|
|
225
|
+
const signablePayload = tx.signablePayload;
|
|
226
|
+
should_1.default.equal(signablePayload.length, 32);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
200
229
|
describe('From Raw Transaction', function () {
|
|
201
230
|
it('should rebuild from real batch transaction', async () => {
|
|
202
231
|
// First build a transaction to get a real raw transaction
|
|
@@ -260,4 +289,4 @@ describe('Polyx Batch Builder', function () {
|
|
|
260
289
|
});
|
|
261
290
|
});
|
|
262
291
|
});
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCw0Q0FBdUM7QUFDdkMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBd0Y7QUFDeEYsOENBQWtEO0FBRWxELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElB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QUFDLENBQUM7aUJBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7aUJBQ2hELGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekQsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIEJhdGNoQnVpbGRlciwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXRjaEFyZ3MsIEJvbmRBcmdzLCBOb21pbmF0ZUFyZ3MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgYWNjb3VudHMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vY2tUcmFuc2FjdGlvbih0eERhdGE6IHN0cmluZyk6IFBhcnRpYWw8VHJhbnNhY3Rpb24+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogJzEyMycsXG4gICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkJhdGNoLFxuICAgIHRvQnJvYWRjYXN0Rm9ybWF0OiAoKSA9PiB0eERhdGEsXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbXSxcbiAgICBzaWduYXR1cmU6IFsnbW9jay1zaWduYXR1cmUnXSxcbiAgICB0b0pzb246ICgpID0+ICh7XG4gICAgICBpZDogJzEyMycsXG4gICAgICB0eXBlOiAnQmF0Y2gnLFxuICAgICAgc2VuZGVyOiBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgICAgcmVmZXJlbmNlQmxvY2s6ICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnLFxuICAgICAgYmxvY2tOdW1iZXI6IDEwMCxcbiAgICAgIGdlbmVzaXNIYXNoOiAnMHgnLFxuICAgICAgbm9uY2U6IDEsXG4gICAgICB0aXA6IDAsXG4gICAgICBzcGVjVmVyc2lvbjogMSxcbiAgICAgIHRyYW5zYWN0aW9uVmVyc2lvbjogMSxcbiAgICAgIGNoYWluTmFtZTogJ1BvbHltZXNoJyxcbiAgICAgIGlucHV0czogW10sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICB9KSxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ1BvbHl4IEJhdGNoIEJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBidWlsZGVyOiBCYXRjaEJ1aWxkZXI7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcztcbiAgY29uc3QgY29udHJvbGxlckFkZHJlc3MgPSBhY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzO1xuICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gJzVDN2tOcFN2VnIyMloxWDZnVkFVamZhaFNKZlNwdnc0REhOb1k3dVVIcExmRUpaUic7XG4gIGNvbnN0IHRlc3RBbW91bnQgPSAnMTAwMDAnO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzdGFraW5nIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmFtb3VudCgnLTEnKSwgL1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVyby8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmFtb3VudCgnMTAwMCcpKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBjb250cm9sbGVyIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlQWRkcmVzcycpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiAnaW52YWxpZC1hZGRyZXNzJyB9KSwgL2lzIG5vdCBhIHdlbGwtZm9ybWVkLyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZUFkZHJlc3MnKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFsnaW52YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCb25kIGFuZCBOb21pbmF0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGJvbmQgYW5kIG5vbWluYXRlIGFyZ3MgdG9nZXRoZXInLCAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSk7XG5cbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpO1xuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyLmFtb3VudCh0ZXN0QW1vdW50KS5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSkucGF5ZWUoJ1N0YWtlZCcpO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0sIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9LCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIGJhdGNoIHRyYW5zYWN0aW9uIHdpdGggYm90aCBib25kIGFuZCBub21pbmF0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIGNvbnN0IG1vY2tUeCA9IGNyZWF0ZU1vY2tUcmFuc2FjdGlvbihzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnVuc2lnbmVkKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYnVpbGQsIGRlY29kZSwgYW5kIHZhbGlkYXRlIGEgcmVhbCBiYXRjaCBzdGFraW5nIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIHdpdGggcmVhbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWwgZm9yIGRlY29kaW5nXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgLy8gQnVpbGQgdGhlIGFjdHVhbCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IGJ1aWxkZXJbJ2J1aWxkVHJhbnNhY3Rpb24nXSgpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBidWlsZGVyWydfcmVnaXN0cnknXTtcblxuICAgICAgLy8gRGVjb2RlIHRoZSBhY3R1YWwgYnVpbHQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIHN0cnVjdHVyZVxuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QubmFtZSwgJ2JhdGNoQWxsJyk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQsICd1dGlsaXR5Jyk7XG5cbiAgICAgIGNvbnN0IGJhdGNoQXJncyA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIEJhdGNoQXJncztcbiAgICAgIHNob3VsZC5leGlzdChiYXRjaEFyZ3MuY2FsbHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJhdGNoQXJncy5jYWxscy5sZW5ndGgsIDIpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBmaXJzdCBjYWxsIGlzIGJvbmRcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbCA9IGJhdGNoQXJncy5jYWxsc1swXTtcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoZmlyc3RDYWxsLCByZWdpc3RyeSk7XG4gICAgICBzaG91bGQuZXF1YWwoZmlyc3RDYWxsTWV0aG9kLCAnYm9uZCcpO1xuXG4gICAgICBjb25zdCBib25kQXJncyA9IGZpcnN0Q2FsbC5hcmdzIGFzIHVua25vd24gYXMgQm9uZEFyZ3M7XG4gICAgICBzaG91bGQuZXF1YWwoYm9uZEFyZ3MudmFsdWUsIHRlc3RBbW91bnQpO1xuICAgICAgLy8gQ29udHJvbGxlciBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIGlkIHByb3BlcnR5XG4gICAgICBjb25zdCBjb250cm9sbGVyVmFsdWUgPVxuICAgICAgICB0eXBlb2YgYm9uZEFyZ3MuY29udHJvbGxlciA9PT0gJ3N0cmluZycgPyBib25kQXJncy5jb250cm9sbGVyIDogKGJvbmRBcmdzLmNvbnRyb2xsZXIgYXMgeyBpZDogc3RyaW5nIH0pLmlkO1xuICAgICAgc2hvdWxkLmVxdWFsKGNvbnRyb2xsZXJWYWx1ZSwgY29udHJvbGxlckFkZHJlc3MpO1xuICAgICAgLy8gUGF5ZWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3Qgd2l0aCBzdGFrZWQgcHJvcGVydHlcbiAgICAgIGNvbnN0IHBheWVlVmFsdWUgPVxuICAgICAgICB0eXBlb2YgYm9uZEFyZ3MucGF5ZWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBib25kQXJncy5wYXllZVxuICAgICAgICAgIDogKGJvbmRBcmdzLnBheWVlIGFzIHsgc3Rha2VkPzogbnVsbCB9KS5zdGFrZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gJ1N0YWtlZCdcbiAgICAgICAgICA6IGJvbmRBcmdzLnBheWVlO1xuICAgICAgc2hvdWxkLmVxdWFsKHBheWVlVmFsdWUsICdTdGFrZWQnKTtcblxuICAgICAgLy8gVmFsaWRhdGUgc2Vjb25kIGNhbGwgaXMgbm9taW5hdGVcbiAgICAgIGNvbnN0IHNlY29uZENhbGwgPSBiYXRjaEFyZ3MuY2FsbHNbMV07XG4gICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShzZWNvbmRDYWxsLCByZWdpc3RyeSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2Vjb25kQ2FsbE1ldGhvZCwgJ25vbWluYXRlJyk7XG5cbiAgICAgIGNvbnN0IG5vbWluYXRlQXJncyA9IHNlY29uZENhbGwuYXJncyBhcyB1bmtub3duIGFzIE5vbWluYXRlQXJncztcbiAgICAgIC8vIFRhcmdldHMgY2FuIGJlIGVpdGhlciBzdHJpbmdzIG9yIG9iamVjdHMgd2l0aCBpZCBwcm9wZXJ0eVxuICAgICAgY29uc3QgdGFyZ2V0VmFsdWVzID0gbm9taW5hdGVBcmdzLnRhcmdldHMubWFwKCh0YXJnZXQpID0+XG4gICAgICAgIHR5cGVvZiB0YXJnZXQgPT09ICdzdHJpbmcnID8gdGFyZ2V0IDogKHRhcmdldCBhcyB7IGlkOiBzdHJpbmcgfSkuaWRcbiAgICAgICk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHRhcmdldFZhbHVlcywgW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgLy8gTm93IHZhbGlkYXRlIHVzaW5nIHRoZSBidWlsZGVyJ3MgdmFsaWRhdGlvbiBtZXRob2RcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgYmF0Y2ggdHJhbnNhY3Rpb24gd2hlbiBidWlsdCcsICgpID0+IHtcbiAgICAgIC8vIFRyeSB0byBidWlsZCBhIGJhdGNoIHdpdGggb25seSBib25kIChtaXNzaW5nIG5vbWluYXRlKVxuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbFxuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgLy8gU2hvdWxkIHRocm93IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIHdpdGhvdXQgdmFsaWRhdG9yc1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXJbJ2J1aWxkVHJhbnNhY3Rpb24nXSgpO1xuICAgICAgfSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHZhbGlkYXRpb24gb2Ygbm9uLWJhdGNoIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgbW9jayBkZWNvZGVkIHRyYW5zYWN0aW9uIHdpdGggd3JvbmcgbWV0aG9kIG5hbWVcbiAgICAgIGNvbnN0IG1vY2tEZWNvZGVkVHg6IERlY29kZWRTaWduaW5nUGF5bG9hZCA9IHtcbiAgICAgICAgbWV0aG9kOiB7XG4gICAgICAgICAgbmFtZTogJ2JvbmQnLFxuICAgICAgICAgIHBhbGxldDogJ3N0YWtpbmcnLFxuICAgICAgICAgIGFyZ3M6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSBhcyB1bmtub3duIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZDtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24obW9ja0RlY29kZWRUeCk7XG4gICAgICB9LCAvSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIFJhdyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSByZWFsIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY3JlYXRlIHByb3Blcmx5IGNvbmZpZ3VyZWQgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBiYXRjaCB0cmFuc2FjdGlvbiB3aXRoIGN1c3RvbSByZXBsYXkgcHJvdGVjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiA0MDAwLCBtYXhEdXJhdGlvbjogMTAwIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgyNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRlJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oJ2N1c3RvbS10eC1mb3JtYXQnKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCw0Q0FBdUM7QUFDdkMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBd0Y7QUFDeEYsOENBQWtEO0FBRWxELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sYUFBYSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNwRCxNQUFNLGdCQUFnQixHQUFHLGtEQUFrRCxDQUFDO0lBQzVFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUUzQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtZQUN4QyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFDNUUsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xELGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDaEcsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RSxlQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7WUFDN0MsTUFBTSxHQUFHLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDckYsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7UUFDNUIsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxPQUFPO2lCQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQ2xCLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNmLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUVsQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7WUFFckQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRXZDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUUsT0FBTztpQkFDSixNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUNsQixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDZixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0UsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVqQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDekQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxHQUFHLEVBQUU7WUFDN0UsNkNBQTZDO1lBQzdDLE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0QsK0JBQStCO1lBQy9CLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQix3Q0FBd0M7WUFDeEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEMsc0NBQXNDO1lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUEsMkJBQU0sRUFBQyxVQUFVLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDOUIsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsNkNBQTZDO1lBQzdDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRWpELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBNEIsQ0FBQztZQUNoRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEMsOEJBQThCO1lBQzlCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQTJCLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN6QyxrRUFBa0U7WUFDbEUsTUFBTSxlQUFlLEdBQ25CLE9BQU8sUUFBUSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxVQUE2QixDQUFDLEVBQUUsQ0FBQztZQUM3RyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNqRCxpRUFBaUU7WUFDakUsTUFBTSxVQUFVLEdBQ2QsT0FBTyxRQUFRLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDaEIsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxLQUEyQixDQUFDLE1BQU0sS0FBSyxTQUFTO29CQUM1RCxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNyQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFbkMsbUNBQW1DO1lBQ25DLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRTNDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUErQixDQUFDO1lBQ2hFLDREQUE0RDtZQUM1RCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3ZELE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUF5QixDQUFDLEVBQUUsQ0FDcEUsQ0FBQztZQUNGLGdCQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUVuRCxxREFBcUQ7WUFDckQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7WUFDNUQseURBQXlEO1lBQ3pELE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0Qsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQix1REFBdUQ7WUFDdkQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCwyREFBMkQ7WUFDM0QsTUFBTSxhQUFhLEdBQTBCO2dCQUMzQyxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLE1BQU07b0JBQ1osTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxFQUFFO2lCQUNUO2FBQ2tDLENBQUM7WUFFdEMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrREFBa0QsRUFBRTtRQUMzRCxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsYUFBcUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxZQUFZO2lCQUNULE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQ2xCLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNmLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3Riw2RUFBNkU7WUFDN0UsTUFBTSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUMzQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0ZBQXNGLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEcsb0ZBQW9GO1lBQ3BGLE1BQU0sRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFO1FBQy9CLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxRCwwREFBMEQ7WUFDMUQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xELGVBQWU7aUJBQ1osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0Qsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuQyxtREFBbUQ7WUFDbkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFeEMsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3QyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUIsMkRBQTJEO1lBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM1RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0RBQWdELEVBQUU7UUFDekQsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUs7WUFDN0IsT0FBTztpQkFDSixNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUNsQixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDZixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0UsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLO1lBQzNELE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQztpQkFDaEQsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0QsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6RCxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO1lBRTdELE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29kZWRTaWduaW5nUGF5bG9hZCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgQmF0Y2hCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhdGNoQXJncywgQm9uZEFyZ3MsIE5vbWluYXRlQXJncyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc3Rha2luZ1R4IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcblxuZnVuY3Rpb24gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHR4RGF0YTogc3RyaW5nKTogUGFydGlhbDxUcmFuc2FjdGlvbj4ge1xuICByZXR1cm4ge1xuICAgIGlkOiAnMTIzJyxcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuQmF0Y2gsXG4gICAgdG9Ccm9hZGNhc3RGb3JtYXQ6ICgpID0+IHR4RGF0YSxcbiAgICBpbnB1dHM6IFtdLFxuICAgIG91dHB1dHM6IFtdLFxuICAgIHNpZ25hdHVyZTogWydtb2NrLXNpZ25hdHVyZSddLFxuICAgIHRvSnNvbjogKCkgPT4gKHtcbiAgICAgIGlkOiAnMTIzJyxcbiAgICAgIHR5cGU6ICdCYXRjaCcsXG4gICAgICBzZW5kZXI6IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcsXG4gICAgICBibG9ja051bWJlcjogMTAwLFxuICAgICAgZ2VuZXNpc0hhc2g6ICcweCcsXG4gICAgICBub25jZTogMSxcbiAgICAgIHRpcDogMCxcbiAgICAgIHNwZWNWZXJzaW9uOiAxLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiAxLFxuICAgICAgY2hhaW5OYW1lOiAnUG9seW1lc2gnLFxuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgIH0pLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUG9seXggQmF0Y2ggQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJ1aWxkZXI6IEJhdGNoQnVpbGRlcjtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHBvbHl4JykpO1xuXG4gIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzO1xuICBjb25zdCBjb250cm9sbGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQyLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSAnNUM3a05wU3ZWcjIyWjFYNmdWQVVqZmFoU0pmU3B2dzRESE5vWTd1VUhwTGZFSlpSJztcbiAgY29uc3QgdGVzdEFtb3VudCA9ICcxMDAwMCc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHN0YWtpbmcgYW1vdW50JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZVZhbHVlJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuYW1vdW50KCctMScpLCAvVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvLyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuYW1vdW50KCcxMDAwJykpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGNvbnRyb2xsZXIgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVBZGRyZXNzJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuY29udHJvbGxlcih7IGFkZHJlc3M6ICdpbnZhbGlkLWFkZHJlc3MnIH0pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHZhbGlkYXRvciBhZGRyZXNzZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlQWRkcmVzcycpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydpbnZhbGlkLWFkZHJlc3MnXSksIC9pcyBub3QgYSB3ZWxsLWZvcm1lZC8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0JvbmQgYW5kIE5vbWluYXRlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYm9uZCBhbmQgbm9taW5hdGUgYXJncyB0b2dldGhlcicsICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9KTtcblxuICAgICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG5cbiAgICAgIGJ1aWxkZXIuYW1vdW50KHRlc3RBbW91bnQpLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KS5wYXllZSgnU3Rha2VkJyk7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpO1xuICAgICAgfSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcblxuICAgICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG5cbiAgICAgIGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0sIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgYmF0Y2ggdHJhbnNhY3Rpb24gd2l0aCBib3RoIGJvbmQgYW5kIG5vbWluYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldEFtb3VudCgpLCB0ZXN0QW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldENvbnRyb2xsZXIoKSwgY29udHJvbGxlckFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0UGF5ZWUoKSwgJ1N0YWtlZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3NdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCwgZGVjb2RlLCBhbmQgdmFsaWRhdGUgYSByZWFsIGJhdGNoIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAvLyBCdWlsZCB0aGUgdHJhbnNhY3Rpb24gd2l0aCByZWFsIHBhcmFtZXRlcnNcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbCBmb3IgZGVjb2RpbmdcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICAvLyBCdWlsZCB0aGUgYWN0dWFsIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IGJ1aWxkZXJbJ19yZWdpc3RyeSddO1xuXG4gICAgICAvLyBEZWNvZGUgdGhlIGFjdHVhbCBidWlsdCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHVuc2lnbmVkVHgsIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IG1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lLCAnYmF0Y2hBbGwnKTtcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLnBhbGxldCwgJ3V0aWxpdHknKTtcblxuICAgICAgY29uc3QgYmF0Y2hBcmdzID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgc2hvdWxkLmV4aXN0KGJhdGNoQXJncy5jYWxscyk7XG4gICAgICBzaG91bGQuZXF1YWwoYmF0Y2hBcmdzLmNhbGxzLmxlbmd0aCwgMik7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGZpcnN0IGNhbGwgaXMgYm9uZFxuICAgICAgY29uc3QgZmlyc3RDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzBdO1xuICAgICAgY29uc3QgZmlyc3RDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShmaXJzdENhbGwsIHJlZ2lzdHJ5KTtcbiAgICAgIHNob3VsZC5lcXVhbChmaXJzdENhbGxNZXRob2QsICdib25kJyk7XG5cbiAgICAgIGNvbnN0IGJvbmRBcmdzID0gZmlyc3RDYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBCb25kQXJncztcbiAgICAgIHNob3VsZC5lcXVhbChib25kQXJncy52YWx1ZSwgdGVzdEFtb3VudCk7XG4gICAgICAvLyBDb250cm9sbGVyIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggaWQgcHJvcGVydHlcbiAgICAgIGNvbnN0IGNvbnRyb2xsZXJWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBib25kQXJncy5jb250cm9sbGVyID09PSAnc3RyaW5nJyA/IGJvbmRBcmdzLmNvbnRyb2xsZXIgOiAoYm9uZEFyZ3MuY29udHJvbGxlciBhcyB7IGlkOiBzdHJpbmcgfSkuaWQ7XG4gICAgICBzaG91bGQuZXF1YWwoY29udHJvbGxlclZhbHVlLCBjb250cm9sbGVyQWRkcmVzcyk7XG4gICAgICAvLyBQYXllZSBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIHN0YWtlZCBwcm9wZXJ0eVxuICAgICAgY29uc3QgcGF5ZWVWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBib25kQXJncy5wYXllZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGJvbmRBcmdzLnBheWVlXG4gICAgICAgICAgOiAoYm9uZEFyZ3MucGF5ZWUgYXMgeyBzdGFrZWQ/OiBudWxsIH0pLnN0YWtlZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAnU3Rha2VkJ1xuICAgICAgICAgIDogYm9uZEFyZ3MucGF5ZWU7XG4gICAgICBzaG91bGQuZXF1YWwocGF5ZWVWYWx1ZSwgJ1N0YWtlZCcpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBzZWNvbmQgY2FsbCBpcyBub21pbmF0ZVxuICAgICAgY29uc3Qgc2Vjb25kQ2FsbCA9IGJhdGNoQXJncy5jYWxsc1sxXTtcbiAgICAgIGNvbnN0IHNlY29uZENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKHNlY29uZENhbGwsIHJlZ2lzdHJ5KTtcbiAgICAgIHNob3VsZC5lcXVhbChzZWNvbmRDYWxsTWV0aG9kLCAnbm9taW5hdGUnKTtcblxuICAgICAgY29uc3Qgbm9taW5hdGVBcmdzID0gc2Vjb25kQ2FsbC5hcmdzIGFzIHVua25vd24gYXMgTm9taW5hdGVBcmdzO1xuICAgICAgLy8gVGFyZ2V0cyBjYW4gYmUgZWl0aGVyIHN0cmluZ3Mgb3Igb2JqZWN0cyB3aXRoIGlkIHByb3BlcnR5XG4gICAgICBjb25zdCB0YXJnZXRWYWx1ZXMgPSBub21pbmF0ZUFyZ3MudGFyZ2V0cy5tYXAoKHRhcmdldCkgPT5cbiAgICAgICAgdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycgPyB0YXJnZXQgOiAodGFyZ2V0IGFzIHsgaWQ6IHN0cmluZyB9KS5pZFxuICAgICAgKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodGFyZ2V0VmFsdWVzLCBbdmFsaWRhdG9yQWRkcmVzc10pO1xuXG4gICAgICAvLyBOb3cgdmFsaWRhdGUgdXNpbmcgdGhlIGJ1aWxkZXIncyB2YWxpZGF0aW9uIG1ldGhvZFxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBiYXRjaCB0cmFuc2FjdGlvbiB3aGVuIGJ1aWx0JywgKCkgPT4ge1xuICAgICAgLy8gVHJ5IHRvIGJ1aWxkIGEgYmF0Y2ggd2l0aCBvbmx5IGJvbmQgKG1pc3Npbmcgbm9taW5hdGUpXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBTaG91bGQgdGhyb3cgd2hlbiB0cnlpbmcgdG8gYnVpbGQgd2l0aG91dCB2YWxpZGF0b3JzXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICB9LCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgdmFsaWRhdGlvbiBvZiBub24tYmF0Y2ggbWV0aG9kIG5hbWUnLCAoKSA9PiB7XG4gICAgICAvLyBDcmVhdGUgYSBtb2NrIGRlY29kZWQgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBtZXRob2QgbmFtZVxuICAgICAgY29uc3QgbW9ja0RlY29kZWRUeDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBuYW1lOiAnYm9uZCcsXG4gICAgICAgICAgcGFsbGV0OiAnc3Rha2luZycsXG4gICAgICAgICAgYXJnczoge30sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZFR4KTtcbiAgICAgIH0sIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NpZ25hYmxlUGF5bG9hZCAoU3Vic3RyYXRlIDI1Ni1ieXRlIGJsYWtlMiBydWxlKScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBidWlsZEJhdGNoVHggPSBhc3luYyAobnVtVmFsaWRhdG9yczogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBiYXRjaEJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuICAgICAgYmF0Y2hCdWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKEFycmF5KG51bVZhbGlkYXRvcnMpLmZpbGwodmFsaWRhdG9yQWRkcmVzcykpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcbiAgICAgIGJhdGNoQnVpbGRlci5tYXRlcmlhbCh1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSkpO1xuICAgICAgcmV0dXJuIGJhdGNoQnVpbGRlci5idWlsZCgpO1xuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiByYXcgcGF5bG9hZCBieXRlcyB3aGVuIHRoZSBiYXRjaCBleHRyaW5zaWMgaXMgYXQgbW9zdCAyNTYgYnl0ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBib25kICsgbm9taW5hdGUgd2l0aCBhIHNpbmdsZSB2YWxpZGF0b3Igc3RheXMgdW5kZXIgdGhlIDI1Ni1ieXRlIHRocmVzaG9sZFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZEJhdGNoVHgoMSk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaWduYWJsZVBheWxvYWQubGVuZ3RoLnNob3VsZC5iZS5iZWxvd09yRXF1YWwoMjU2KTtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZC5sZW5ndGguc2hvdWxkLm5vdC5lcXVhbCgzMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgMzItYnl0ZSBibGFrZTJfMjU2IGhhc2ggd2hlbiB0aGUgYmF0Y2ggZXh0cmluc2ljIGV4Y2VlZHMgMjU2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gYm9uZCArIG5vbWluYXRlIHdpdGggbWFueSB2YWxpZGF0b3JzIHB1c2hlcyB0aGUgYmF0Y2ggb3ZlciB0aGUgMjU2LWJ5dGUgdGhyZXNob2xkXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkQmF0Y2hUeCg2KTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduYWJsZVBheWxvYWQubGVuZ3RoLCAzMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIFJhdyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSByZWFsIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY3JlYXRlIHByb3Blcmx5IGNvbmZpZ3VyZWQgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBiYXRjaCB0cmFuc2FjdGlvbiB3aXRoIGN1c3RvbSByZXBsYXkgcHJvdGVjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiA0MDAwLCBtYXhEdXJhdGlvbjogMTAwIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgyNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRlJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oJ2N1c3RvbS10eC1mb3JtYXQnKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -155,6 +155,63 @@ describe('Polyx Nominate Builder', function () {
|
|
|
155
155
|
should_1.default.deepEqual(rebuiltBuilder.getValidators(), [validatorAddress, validatorAddress2]);
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
|
+
describe('signablePayload (Substrate 256-byte blake2 rule)', () => {
|
|
159
|
+
const buildNominateTx = async (validators) => {
|
|
160
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
161
|
+
const nominateBuilder = factory.getNominateBuilder();
|
|
162
|
+
nominateBuilder
|
|
163
|
+
.validators(validators)
|
|
164
|
+
.sender({ address: senderAddress })
|
|
165
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
166
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
167
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
|
|
168
|
+
.fee({ amount: 0, type: 'tip' })
|
|
169
|
+
.material(material);
|
|
170
|
+
return (await nominateBuilder.build());
|
|
171
|
+
};
|
|
172
|
+
it('should return raw payload bytes when the extrinsic is at most 256 bytes', async () => {
|
|
173
|
+
const tx = await buildNominateTx([validatorAddress, validatorAddress2]);
|
|
174
|
+
const signablePayload = tx.signablePayload;
|
|
175
|
+
// small nominate extrinsic stays under the 256-byte threshold, so it is signed as-is
|
|
176
|
+
signablePayload.length.should.be.belowOrEqual(256);
|
|
177
|
+
signablePayload.length.should.not.equal(32);
|
|
178
|
+
// for a sub-256-byte payload, signablePayload is exactly the raw extrinsic payload
|
|
179
|
+
const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
|
|
180
|
+
rawExtrinsicPayload.should.deepEqual(signablePayload);
|
|
181
|
+
// toJson surfaces the full raw payload as rawSignableHex even when it equals signablePayload
|
|
182
|
+
should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
|
|
183
|
+
});
|
|
184
|
+
it('should return the 32-byte blake2_256 hash when the extrinsic exceeds 256 bytes', async () => {
|
|
185
|
+
// Each nominate target adds a 33-byte MultiAddress (1-byte variant + 32-byte account id) on
|
|
186
|
+
// top of 79 bytes of fixed signing-payload overhead (call index, era, nonce, tip,
|
|
187
|
+
// spec/transaction versions, genesis + block hash). So 5 targets stay raw at 244 bytes and
|
|
188
|
+
// 6 already cross to 277 bytes (hashed). 8 would also exceed the threshold; this uses 9 to
|
|
189
|
+
// mirror the multi-nomination scenario from SI-926 with margin (376 bytes).
|
|
190
|
+
const manyValidators = Array(9).fill(validatorAddress);
|
|
191
|
+
const tx = await buildNominateTx(manyValidators);
|
|
192
|
+
const signablePayload = tx.signablePayload;
|
|
193
|
+
should_1.default.equal(signablePayload.length, 32);
|
|
194
|
+
// the raw extrinsic payload stays full-length and diverges from the hashed signablePayload
|
|
195
|
+
const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
|
|
196
|
+
rawExtrinsicPayload.length.should.be.greaterThan(256);
|
|
197
|
+
rawExtrinsicPayload.should.not.deepEqual(signablePayload);
|
|
198
|
+
// signablePayload is the blake2_256 hash of the raw extrinsic payload
|
|
199
|
+
utils_1.default.getSubstrateSigningBytes(tx.rawExtrinsicPayload).should.deepEqual(signablePayload);
|
|
200
|
+
// toJson surfaces the full raw payload as rawSignableHex for the HSM signing path
|
|
201
|
+
should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
|
|
202
|
+
});
|
|
203
|
+
// The 256-byte boundary is impractical to hit with a real extrinsic, so exercise the
|
|
204
|
+
// raw-vs-hash decision directly through the shared Substrate signing-bytes helper.
|
|
205
|
+
it('should keep payloads of exactly 256 bytes raw and only hash strictly larger ones', () => {
|
|
206
|
+
const at = utils_1.default.getSubstrateSigningBytes(new Uint8Array(256).fill(7));
|
|
207
|
+
should_1.default.equal(at.length, 256);
|
|
208
|
+
at.should.deepEqual(Buffer.alloc(256, 7));
|
|
209
|
+
const below = utils_1.default.getSubstrateSigningBytes(new Uint8Array(255).fill(7));
|
|
210
|
+
should_1.default.equal(below.length, 255);
|
|
211
|
+
const above = utils_1.default.getSubstrateSigningBytes(new Uint8Array(257).fill(7));
|
|
212
|
+
should_1.default.equal(above.length, 32);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
158
215
|
describe('factory routing', () => {
|
|
159
216
|
it('should route raw nominate extrinsic to NominateBuilder', () => {
|
|
160
217
|
const resolvedBuilder = factory.from(resources_1.nominateTx.signed);
|
|
@@ -166,4 +223,4 @@ describe('Polyx Nominate Builder', function () {
|
|
|
166
223
|
});
|
|
167
224
|
});
|
|
168
225
|
});
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9taW5hdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9ub21pbmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FBNEY7QUFDNUYsOENBQWtEO0FBQ2xELG1FQUEyQztBQUMzQywrQ0FBc0Y7QUFFdEYsUUFBUSxDQUFDLHdCQUF3QixFQUFFO0lBQ2pDLElBQUksT0FBd0IsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLGFBQWEsR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFN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LEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxxQkFBZSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxrQkFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb21pbmF0ZUJ1aWxkZXIsIEJhdGNoQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IGFjY291bnRzLCBub21pbmF0ZVR4LCBub21pbmF0ZVZhbGlkYXRvcnMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eCBOb21pbmF0ZSBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogTm9taW5hdGVCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSBub21pbmF0ZVZhbGlkYXRvcnNbMF07XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MyID0gbm9taW5hdGVWYWxpZGF0b3JzWzFdO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJhbnNhY3Rpb24gdHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBTdGFraW5nVm90ZSB0cmFuc2FjdGlvbiB0eXBlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXJbJ3RyYW5zYWN0aW9uVHlwZSddLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdG9ycyBzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSB2YWxpZGF0b3JzIGFycmF5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW10pLCAvYXQgbGVhc3QgMS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbW9yZSB0aGFuIDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b29NYW55ID0gQXJyYXkoMTcpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyh0b29NYW55KSwgL2F0IG1vc3QgMTYvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1hbGZvcm1lZCB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydub3QtYS12YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWNjZXB0IHZhbGlkIHNpbmdsZSB2YWxpZGF0b3InLCAoKSA9PiB7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBtdWx0aXBsZSB2YWxpZCB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBleGFjdGx5IDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBleGFjdGx5MTYgPSBBcnJheSgxNikuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKGV4YWN0bHkxNikpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdW5zaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2lnbmVkIG5vbWluYXRlIHRyYW5zYWN0aW9uIGZyb20gaGV4JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBzaWduZWRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHNpZ25lZEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgc2lnbmVkQnVpbGRlci5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHNpZ25lZEJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHZhbGlkYXRvcnMpO1xuICAgICAgdmFsaWRhdG9ycy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgbm9uLW5vbWluYXRlIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWQgPSB7XG4gICAgICAgIG1ldGhvZDogeyBuYW1lOiAnYm9uZCcsIHBhbGxldDogJ3N0YWtpbmcnLCBhcmdzOiB7fSB9LFxuICAgICAgfTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZCBhcyBuZXZlciksIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSByZWFsIGJ1aWx0IG5vbWluYXRlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IGJ1aWxkZXJbJ19yZWdpc3RyeSddLFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdub21pbmF0ZScpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2UgZnJvbSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2Ugc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBzaG91bGQuZXhpc3QodmFsaWRhdG9ycyk7XG4gICAgICB2YWxpZGF0b3JzLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwYXJzZSBmcm9tIHJhdyB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHVuc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIC8vIEJ1aWxkIGEgcmVhbCB1bnNpZ25lZCB0eCBmaXJzdCwgdGhlbiBwYXJzZSBpdCBiYWNrXG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKHJhd0hleCk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXdCdWlsZGVyLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgIHNob3VsZC5leGlzdCh2YWxpZGF0b3JzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodmFsaWRhdG9ycywgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVidWlsZCBmcm9tIHNlcmlhbGl6ZWQgdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByZXNlcnZlIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTUgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd0hleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcblxuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSByb3V0aW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcm91dGUgcmF3IG5vbWluYXRlIGV4dHJpbnNpYyB0byBOb21pbmF0ZUJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKHJlc29sdmVkQnVpbGRlciBpbnN0YW5jZW9mIE5vbWluYXRlQnVpbGRlciwgJ2V4cGVjdGVkIE5vbWluYXRlQnVpbGRlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSBiYXRjaEFsbCBib25kK25vbWluYXRlIHRvIEJhdGNoQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnNpZ25lZCk7XG4gICAgICBzaG91bGQub2socmVzb2x2ZWRCdWlsZGVyIGluc3RhbmNlb2YgQmF0Y2hCdWlsZGVyLCAnZXhwZWN0ZWQgQmF0Y2hCdWlsZGVyJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9taW5hdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9ub21pbmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FBOEc7QUFDOUcsOENBQWtEO0FBQ2xELG1FQUEyQztBQUMzQywrQ0FBc0Y7QUFFdEYsUUFBUSxDQUFDLHdCQUF3QixFQUFFO0lBQ2pDLElBQUksT0FBd0IsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLGFBQWEsR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1lBQzdDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNuRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzdELE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTztpQkFDSixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2lCQUNqRCxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQzFELEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUMvQixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEIsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQ2pELEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxHQUFHLEVBQUU7WUFDN0QsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuRCxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV0QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtRQUMxQyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sV0FBVyxHQUFHO2dCQUNsQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTthQUN0RCxDQUFDO1lBQ0YsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLFdBQW9CLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQzVHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU87aUJBQ0osVUFBVSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztpQkFDakQsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBTSxFQUFDLFVBQVUsRUFBRTtnQkFDbkMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUM5QixRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUMvQixDQUFDLENBQUM7WUFFSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hFLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUscURBQXFEO1lBQ3JELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JELGVBQWU7aUJBQ1osVUFBVSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztpQkFDakQsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXRDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4QixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUMxQixFQUFFLENBQUMsNkVBQTZFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDM0YsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyRCxlQUFlO2lCQUNaLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7aUJBQ2pELE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QixNQUFNLEVBQUUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV0QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNwRCxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUIsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDckQsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyRCxlQUFlO2lCQUNaLFVBQVUsQ0FBQyxVQUFVLENBQUM7aUJBQ3RCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixPQUFPLENBQUMsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQXFCLENBQUM7UUFDN0QsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZGLE1BQU0sRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDM0MscUZBQXFGO1lBQ3JGLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxtRkFBbUY7WUFDbkYsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEQsNkZBQTZGO1lBQzdGLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0ZBQWdGLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUYsNEZBQTRGO1lBQzVGLGtGQUFrRjtZQUNsRiwyRkFBMkY7WUFDM0YsMkZBQTJGO1lBQzNGLDRFQUE0RTtZQUM1RSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUMzQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLDJGQUEyRjtZQUMzRixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDaEUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFELHNFQUFzRTtZQUN0RSxlQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6RixrRkFBa0Y7WUFDbEYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztRQUVILHFGQUFxRjtRQUNyRixtRkFBbUY7UUFDbkYsRUFBRSxDQUFDLGtGQUFrRixFQUFFLEdBQUcsRUFBRTtZQUMxRixNQUFNLEVBQUUsR0FBRyxlQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM3QixFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxxQkFBZSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxrQkFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb21pbmF0ZUJ1aWxkZXIsIEJhdGNoQnVpbGRlciwgUG9seXhUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IGFjY291bnRzLCBub21pbmF0ZVR4LCBub21pbmF0ZVZhbGlkYXRvcnMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eCBOb21pbmF0ZSBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogTm9taW5hdGVCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSBub21pbmF0ZVZhbGlkYXRvcnNbMF07XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MyID0gbm9taW5hdGVWYWxpZGF0b3JzWzFdO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJhbnNhY3Rpb24gdHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBTdGFraW5nVm90ZSB0cmFuc2FjdGlvbiB0eXBlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXJbJ3RyYW5zYWN0aW9uVHlwZSddLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdG9ycyBzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSB2YWxpZGF0b3JzIGFycmF5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW10pLCAvYXQgbGVhc3QgMS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbW9yZSB0aGFuIDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b29NYW55ID0gQXJyYXkoMTcpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyh0b29NYW55KSwgL2F0IG1vc3QgMTYvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1hbGZvcm1lZCB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydub3QtYS12YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWNjZXB0IHZhbGlkIHNpbmdsZSB2YWxpZGF0b3InLCAoKSA9PiB7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBtdWx0aXBsZSB2YWxpZCB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBleGFjdGx5IDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBleGFjdGx5MTYgPSBBcnJheSgxNikuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKGV4YWN0bHkxNikpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdW5zaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2lnbmVkIG5vbWluYXRlIHRyYW5zYWN0aW9uIGZyb20gaGV4JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBzaWduZWRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHNpZ25lZEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgc2lnbmVkQnVpbGRlci5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHNpZ25lZEJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHZhbGlkYXRvcnMpO1xuICAgICAgdmFsaWRhdG9ycy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgbm9uLW5vbWluYXRlIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWQgPSB7XG4gICAgICAgIG1ldGhvZDogeyBuYW1lOiAnYm9uZCcsIHBhbGxldDogJ3N0YWtpbmcnLCBhcmdzOiB7fSB9LFxuICAgICAgfTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZCBhcyBuZXZlciksIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSByZWFsIGJ1aWx0IG5vbWluYXRlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IGJ1aWxkZXJbJ19yZWdpc3RyeSddLFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdub21pbmF0ZScpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2UgZnJvbSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2Ugc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBzaG91bGQuZXhpc3QodmFsaWRhdG9ycyk7XG4gICAgICB2YWxpZGF0b3JzLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwYXJzZSBmcm9tIHJhdyB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHVuc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIC8vIEJ1aWxkIGEgcmVhbCB1bnNpZ25lZCB0eCBmaXJzdCwgdGhlbiBwYXJzZSBpdCBiYWNrXG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKHJhd0hleCk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXdCdWlsZGVyLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgIHNob3VsZC5leGlzdCh2YWxpZGF0b3JzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodmFsaWRhdG9ycywgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVidWlsZCBmcm9tIHNlcmlhbGl6ZWQgdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByZXNlcnZlIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTUgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd0hleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcblxuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2lnbmFibGVQYXlsb2FkIChTdWJzdHJhdGUgMjU2LWJ5dGUgYmxha2UyIHJ1bGUpJywgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkTm9taW5hdGVUeCA9IGFzeW5jICh2YWxpZGF0b3JzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBub21pbmF0ZUJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbm9taW5hdGVCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKHZhbGlkYXRvcnMpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICByZXR1cm4gKGF3YWl0IG5vbWluYXRlQnVpbGRlci5idWlsZCgpKSBhcyBQb2x5eFRyYW5zYWN0aW9uO1xuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiByYXcgcGF5bG9hZCBieXRlcyB3aGVuIHRoZSBleHRyaW5zaWMgaXMgYXQgbW9zdCAyNTYgYnl0ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkTm9taW5hdGVUeChbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIC8vIHNtYWxsIG5vbWluYXRlIGV4dHJpbnNpYyBzdGF5cyB1bmRlciB0aGUgMjU2LWJ5dGUgdGhyZXNob2xkLCBzbyBpdCBpcyBzaWduZWQgYXMtaXNcbiAgICAgIHNpZ25hYmxlUGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmJlbG93T3JFcXVhbCgyNTYpO1xuICAgICAgc2lnbmFibGVQYXlsb2FkLmxlbmd0aC5zaG91bGQubm90LmVxdWFsKDMyKTtcbiAgICAgIC8vIGZvciBhIHN1Yi0yNTYtYnl0ZSBwYXlsb2FkLCBzaWduYWJsZVBheWxvYWQgaXMgZXhhY3RseSB0aGUgcmF3IGV4dHJpbnNpYyBwYXlsb2FkXG4gICAgICBjb25zdCByYXdFeHRyaW5zaWNQYXlsb2FkID0gQnVmZmVyLmZyb20odHgucmF3RXh0cmluc2ljUGF5bG9hZCk7XG4gICAgICByYXdFeHRyaW5zaWNQYXlsb2FkLnNob3VsZC5kZWVwRXF1YWwoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIC8vIHRvSnNvbiBzdXJmYWNlcyB0aGUgZnVsbCByYXcgcGF5bG9hZCBhcyByYXdTaWduYWJsZUhleCBldmVuIHdoZW4gaXQgZXF1YWxzIHNpZ25hYmxlUGF5bG9hZFxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnJhd1NpZ25hYmxlSGV4LCByYXdFeHRyaW5zaWNQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgMzItYnl0ZSBibGFrZTJfMjU2IGhhc2ggd2hlbiB0aGUgZXh0cmluc2ljIGV4Y2VlZHMgMjU2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRWFjaCBub21pbmF0ZSB0YXJnZXQgYWRkcyBhIDMzLWJ5dGUgTXVsdGlBZGRyZXNzICgxLWJ5dGUgdmFyaWFudCArIDMyLWJ5dGUgYWNjb3VudCBpZCkgb25cbiAgICAgIC8vIHRvcCBvZiA3OSBieXRlcyBvZiBmaXhlZCBzaWduaW5nLXBheWxvYWQgb3ZlcmhlYWQgKGNhbGwgaW5kZXgsIGVyYSwgbm9uY2UsIHRpcCxcbiAgICAgIC8vIHNwZWMvdHJhbnNhY3Rpb24gdmVyc2lvbnMsIGdlbmVzaXMgKyBibG9jayBoYXNoKS4gU28gNSB0YXJnZXRzIHN0YXkgcmF3IGF0IDI0NCBieXRlcyBhbmRcbiAgICAgIC8vIDYgYWxyZWFkeSBjcm9zcyB0byAyNzcgYnl0ZXMgKGhhc2hlZCkuIDggd291bGQgYWxzbyBleGNlZWQgdGhlIHRocmVzaG9sZDsgdGhpcyB1c2VzIDkgdG9cbiAgICAgIC8vIG1pcnJvciB0aGUgbXVsdGktbm9taW5hdGlvbiBzY2VuYXJpbyBmcm9tIFNJLTkyNiB3aXRoIG1hcmdpbiAoMzc2IGJ5dGVzKS5cbiAgICAgIGNvbnN0IG1hbnlWYWxpZGF0b3JzID0gQXJyYXkoOSkuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGROb21pbmF0ZVR4KG1hbnlWYWxpZGF0b3JzKTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduYWJsZVBheWxvYWQubGVuZ3RoLCAzMik7XG4gICAgICAvLyB0aGUgcmF3IGV4dHJpbnNpYyBwYXlsb2FkIHN0YXlzIGZ1bGwtbGVuZ3RoIGFuZCBkaXZlcmdlcyBmcm9tIHRoZSBoYXNoZWQgc2lnbmFibGVQYXlsb2FkXG4gICAgICBjb25zdCByYXdFeHRyaW5zaWNQYXlsb2FkID0gQnVmZmVyLmZyb20odHgucmF3RXh0cmluc2ljUGF5bG9hZCk7XG4gICAgICByYXdFeHRyaW5zaWNQYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMjU2KTtcbiAgICAgIHJhd0V4dHJpbnNpY1BheWxvYWQuc2hvdWxkLm5vdC5kZWVwRXF1YWwoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIC8vIHNpZ25hYmxlUGF5bG9hZCBpcyB0aGUgYmxha2UyXzI1NiBoYXNoIG9mIHRoZSByYXcgZXh0cmluc2ljIHBheWxvYWRcbiAgICAgIHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyh0eC5yYXdFeHRyaW5zaWNQYXlsb2FkKS5zaG91bGQuZGVlcEVxdWFsKHNpZ25hYmxlUGF5bG9hZCk7XG4gICAgICAvLyB0b0pzb24gc3VyZmFjZXMgdGhlIGZ1bGwgcmF3IHBheWxvYWQgYXMgcmF3U2lnbmFibGVIZXggZm9yIHRoZSBIU00gc2lnbmluZyBwYXRoXG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkucmF3U2lnbmFibGVIZXgsIHJhd0V4dHJpbnNpY1BheWxvYWQudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSAyNTYtYnl0ZSBib3VuZGFyeSBpcyBpbXByYWN0aWNhbCB0byBoaXQgd2l0aCBhIHJlYWwgZXh0cmluc2ljLCBzbyBleGVyY2lzZSB0aGVcbiAgICAvLyByYXctdnMtaGFzaCBkZWNpc2lvbiBkaXJlY3RseSB0aHJvdWdoIHRoZSBzaGFyZWQgU3Vic3RyYXRlIHNpZ25pbmctYnl0ZXMgaGVscGVyLlxuICAgIGl0KCdzaG91bGQga2VlcCBwYXlsb2FkcyBvZiBleGFjdGx5IDI1NiBieXRlcyByYXcgYW5kIG9ubHkgaGFzaCBzdHJpY3RseSBsYXJnZXIgb25lcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF0ID0gdXRpbHMuZ2V0U3Vic3RyYXRlU2lnbmluZ0J5dGVzKG5ldyBVaW50OEFycmF5KDI1NikuZmlsbCg3KSk7XG4gICAgICBzaG91bGQuZXF1YWwoYXQubGVuZ3RoLCAyNTYpO1xuICAgICAgYXQuc2hvdWxkLmRlZXBFcXVhbChCdWZmZXIuYWxsb2MoMjU2LCA3KSk7XG5cbiAgICAgIGNvbnN0IGJlbG93ID0gdXRpbHMuZ2V0U3Vic3RyYXRlU2lnbmluZ0J5dGVzKG5ldyBVaW50OEFycmF5KDI1NSkuZmlsbCg3KSk7XG4gICAgICBzaG91bGQuZXF1YWwoYmVsb3cubGVuZ3RoLCAyNTUpO1xuXG4gICAgICBjb25zdCBhYm92ZSA9IHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyhuZXcgVWludDhBcnJheSgyNTcpLmZpbGwoNykpO1xuICAgICAgc2hvdWxkLmVxdWFsKGFib3ZlLmxlbmd0aCwgMzIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSByb3V0aW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcm91dGUgcmF3IG5vbWluYXRlIGV4dHJpbnNpYyB0byBOb21pbmF0ZUJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKHJlc29sdmVkQnVpbGRlciBpbnN0YW5jZW9mIE5vbWluYXRlQnVpbGRlciwgJ2V4cGVjdGVkIE5vbWluYXRlQnVpbGRlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSBiYXRjaEFsbCBib25kK25vbWluYXRlIHRvIEJhdGNoQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnNpZ25lZCk7XG4gICAgICBzaG91bGQub2socmVzb2x2ZWRCdWlsZGVyIGluc3RhbmNlb2YgQmF0Y2hCdWlsZGVyLCAnZXhwZWN0ZWQgQmF0Y2hCdWlsZGVyJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8HexTokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8HexTokenTransferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const lib_1 = require("../../../src/lib");
|
|
8
|
+
const resources_1 = require("../../resources");
|
|
9
|
+
const resources_2 = require("../../../src/resources");
|
|
10
|
+
const base_1 = require("./base");
|
|
11
|
+
const FROM_DID = '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342';
|
|
12
|
+
const TO_DID = '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61';
|
|
13
|
+
const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
|
|
14
|
+
describe('V8HexTokenTransferBuilder', () => {
|
|
15
|
+
describe('v8 material', () => {
|
|
16
|
+
it('carries v8 specVersion and txVersion', () => {
|
|
17
|
+
const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)());
|
|
18
|
+
const material = builder._material;
|
|
19
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
20
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('factory method', () => {
|
|
24
|
+
it('getV8HexTokenTransferBuilder returns a V8HexTokenTransferBuilder', () => {
|
|
25
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
26
|
+
should_1.default.ok(factory.getV8HexTokenTransferBuilder() instanceof lib_1.V8HexTokenTransferBuilder);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('memo encoding', () => {
|
|
30
|
+
it('encodes memo in NEW (hex) format', () => {
|
|
31
|
+
const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)());
|
|
32
|
+
builder.memo('56594');
|
|
33
|
+
const memo = builder._memo;
|
|
34
|
+
should_1.default.ok(memo.startsWith('0x'), `expected 0x-prefixed hex memo, got: ${memo}`);
|
|
35
|
+
should_1.default.equal(memo.length, 66);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('build transaction', () => {
|
|
39
|
+
const sender = resources_1.accounts.account1;
|
|
40
|
+
it('should build a v8 hex token transfer transaction with v8 specVersion in output', async () => {
|
|
41
|
+
const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)())
|
|
42
|
+
.assetId(ASSET_ID)
|
|
43
|
+
.amount('1000000')
|
|
44
|
+
.fromDID(FROM_DID)
|
|
45
|
+
.toDID(TO_DID)
|
|
46
|
+
.memo('56594')
|
|
47
|
+
.sender({ address: sender.address })
|
|
48
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
49
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
50
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
51
|
+
.fee({ amount: 0, type: 'tip' });
|
|
52
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
53
|
+
const tx = await builder.build();
|
|
54
|
+
const txJson = tx.toJson();
|
|
55
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
56
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBd0Y7QUFDeEYsK0NBQTZEO0FBQzdELHNEQUEyRDtBQUMzRCxpQ0FBeUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsb0VBQW9FLENBQUM7QUFDdEYsTUFBTSxNQUFNLEdBQUcsb0VBQW9FLENBQUM7QUFDcEYsTUFBTSxRQUFRLEdBQUcsb0NBQW9DLENBQUM7QUFFdEQsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUNqRSxNQUFNLFFBQVEsR0FBSSxPQUFlLENBQUMsU0FBUyxDQUFDO1lBQzVDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSw2QkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1lBQzFFLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUNqRSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsWUFBWSwrQkFBeUIsQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxHQUFJLE9BQWUsQ0FBQyxLQUFlLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSx1Q0FBdUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO1FBRWpDLEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5RixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDO2lCQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDO2lCQUNqQixNQUFNLENBQUMsU0FBUyxDQUFDO2lCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDO2lCQUNqQixLQUFLLENBQUMsTUFBTSxDQUFDO2lCQUNiLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2IsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IGFjY291bnRzLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5jb25zdCBGUk9NX0RJRCA9ICcweDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDInO1xuY29uc3QgVE9fRElEID0gJzB4YmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MSc7XG5jb25zdCBBU1NFVF9JRCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcblxuZGVzY3JpYmUoJ1Y4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCd2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICBpdCgnY2FycmllcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmYWN0b3J5IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnZ2V0VjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciByZXR1cm5zIGEgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soZmFjdG9yeS5nZXRWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCkgaW5zdGFuY2VvZiBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21lbW8gZW5jb2RpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2VuY29kZXMgbWVtbyBpbiBORVcgKGhleCkgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGJ1aWxkZXIubWVtbygnNTY1OTQnKTtcbiAgICAgIGNvbnN0IG1lbW8gPSAoYnVpbGRlciBhcyBhbnkpLl9tZW1vIGFzIHN0cmluZztcbiAgICAgIHNob3VsZC5vayhtZW1vLnN0YXJ0c1dpdGgoJzB4JyksIGBleHBlY3RlZCAweC1wcmVmaXhlZCBoZXggbWVtbywgZ290OiAke21lbW99YCk7XG4gICAgICBzaG91bGQuZXF1YWwobWVtby5sZW5ndGgsIDY2KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHNlbmRlciA9IGFjY291bnRzLmFjY291bnQxO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHY4IGhleCB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aXRoIHY4IHNwZWNWZXJzaW9uIGluIG91dHB1dCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAuZnJvbURJRChGUk9NX0RJRClcbiAgICAgICAgLnRvRElEKFRPX0RJRClcbiAgICAgICAgLm1lbW8oJzU2NTk0JylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8HexTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8HexTransferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const lib_1 = require("../../../src/lib");
|
|
8
|
+
const resources_1 = require("../../resources");
|
|
9
|
+
const resources_2 = require("../../../src/resources");
|
|
10
|
+
const base_1 = require("./base");
|
|
11
|
+
describe('V8HexTransferBuilder', () => {
|
|
12
|
+
describe('v8 material', () => {
|
|
13
|
+
it('carries v8 specVersion and txVersion', () => {
|
|
14
|
+
const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
|
|
15
|
+
const material = builder._material;
|
|
16
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
17
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('factory method', () => {
|
|
21
|
+
it('getV8HexTransferBuilder returns a V8HexTransferBuilder', () => {
|
|
22
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
23
|
+
should_1.default.ok(factory.getV8HexTransferBuilder() instanceof lib_1.V8HexTransferBuilder);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('memo encoding', () => {
|
|
27
|
+
it('encodes memo in NEW (hex) format', () => {
|
|
28
|
+
const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
|
|
29
|
+
builder.memo('56594');
|
|
30
|
+
const memo = builder._memo;
|
|
31
|
+
should_1.default.ok(memo.startsWith('0x'), `expected 0x-prefixed hex memo, got: ${memo}`);
|
|
32
|
+
should_1.default.equal(memo.length, 66);
|
|
33
|
+
});
|
|
34
|
+
it('stores an already-encoded hex memo as-is', () => {
|
|
35
|
+
const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
|
|
36
|
+
const encoded = '0x3536353934000000000000000000000000000000000000000000000000000000';
|
|
37
|
+
builder.memo(encoded);
|
|
38
|
+
should_1.default.equal(builder._memo, encoded);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('build transaction', () => {
|
|
42
|
+
const sender = resources_1.accounts.account1;
|
|
43
|
+
const receiver = resources_1.accounts.account2;
|
|
44
|
+
it('should build a v8 hex transfer transaction', async () => {
|
|
45
|
+
const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)())
|
|
46
|
+
.amount('1000000')
|
|
47
|
+
.to({ address: receiver.address })
|
|
48
|
+
.sender({ address: sender.address })
|
|
49
|
+
.memo('56594')
|
|
50
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
51
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
52
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
53
|
+
.fee({ amount: 0, type: 'tip' });
|
|
54
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
55
|
+
const tx = await builder.build();
|
|
56
|
+
const txJson = tx.toJson();
|
|
57
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
58
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhIZXhUcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Y4SGV4VHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUFtRjtBQUNuRiwrQ0FBNkQ7QUFDN0Qsc0RBQTJEO0FBQzNELGlDQUF5QztBQUV6QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQzNCLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFJLE9BQWUsQ0FBQyxTQUFTLENBQUM7WUFDNUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSw2QkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQ2pFLGdCQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLDBCQUFvQixDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUksT0FBZSxDQUFDLEtBQWUsQ0FBQztZQUM5QyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLHVDQUF1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLE9BQU8sR0FBRyxvRUFBb0UsQ0FBQztZQUNyRixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLGdCQUFNLENBQUMsS0FBSyxDQUFFLE9BQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsTUFBTSxNQUFNLEdBQUcsb0JBQVEsQ0FBQyxRQUFRLENBQUM7UUFDakMsTUFBTSxRQUFRLEdBQUcsb0JBQVEsQ0FBQyxRQUFRLENBQUM7UUFFbkMsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUM7aUJBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUM7aUJBQ2pCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ2pDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ25DLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2IsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFY4SGV4VHJhbnNmZXJCdWlsZGVyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBhY2NvdW50cywgbW9ja1Rzc1NpZ25hdHVyZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyB0ZXN0bmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnIH0gZnJvbSAnLi9iYXNlJztcblxuZGVzY3JpYmUoJ1Y4SGV4VHJhbnNmZXJCdWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgndjggbWF0ZXJpYWwnLCAoKSA9PiB7XG4gICAgaXQoJ2NhcnJpZXMgdjggc3BlY1ZlcnNpb24gYW5kIHR4VmVyc2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSAoYnVpbGRlciBhcyBhbnkpLl9tYXRlcmlhbDtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnR4VmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3RvcnkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdnZXRWOEhleFRyYW5zZmVyQnVpbGRlciByZXR1cm5zIGEgVjhIZXhUcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgc2hvdWxkLm9rKGZhY3RvcnkuZ2V0VjhIZXhUcmFuc2ZlckJ1aWxkZXIoKSBpbnN0YW5jZW9mIFY4SGV4VHJhbnNmZXJCdWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21lbW8gZW5jb2RpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2VuY29kZXMgbWVtbyBpbiBORVcgKGhleCkgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBidWlsZGVyLm1lbW8oJzU2NTk0Jyk7XG4gICAgICBjb25zdCBtZW1vID0gKGJ1aWxkZXIgYXMgYW55KS5fbWVtbyBhcyBzdHJpbmc7XG4gICAgICBzaG91bGQub2sobWVtby5zdGFydHNXaXRoKCcweCcpLCBgZXhwZWN0ZWQgMHgtcHJlZml4ZWQgaGV4IG1lbW8sIGdvdDogJHttZW1vfWApO1xuICAgICAgc2hvdWxkLmVxdWFsKG1lbW8ubGVuZ3RoLCA2Nik7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RvcmVzIGFuIGFscmVhZHktZW5jb2RlZCBoZXggbWVtbyBhcy1pcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgZW5jb2RlZCA9ICcweDM1MzYzNTM5MzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICAgICAgYnVpbGRlci5tZW1vKGVuY29kZWQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChidWlsZGVyIGFzIGFueSkuX21lbW8sIGVuY29kZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG4gICAgY29uc3QgcmVjZWl2ZXIgPSBhY2NvdW50cy5hY2NvdW50MjtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2OCBoZXggdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4SGV4VHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzU2NTk0JylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8PreApproveAssetBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8PreApproveAssetBuilder.ts"],"names":[],"mappings":""}
|