@bitgo-beta/sdk-core 8.2.1-beta.1889 → 8.2.1-beta.1890
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.
|
@@ -166,17 +166,6 @@ describe('verifyEddsaTssWalletAddress', function () {
|
|
|
166
166
|
result.should.be.false();
|
|
167
167
|
});
|
|
168
168
|
});
|
|
169
|
-
describe('legacy Silence Labs formula', function () {
|
|
170
|
-
it('rejects an address derived with the old Silence Labs single-HMAC formula', async function () {
|
|
171
|
-
const verifyEddsaTssWalletAddress = getVerifyEddsaTssWalletAddress();
|
|
172
|
-
// The Silence Labs and BIP32-Ed25519 formulas produce different addresses for the same keychain.
|
|
173
|
-
// Addresses derived with the old formula no longer verify against the current derivation.
|
|
174
|
-
const { deriveUnhardenedMps: deriveSL } = await Promise.resolve().then(() => __importStar(require('@bitgo-beta/sdk-lib-mpc')));
|
|
175
|
-
const silenceLabsAddress = deriveSL(TEST_KEYCHAIN, 'm/0').slice(0, 64);
|
|
176
|
-
const result = await verifyEddsaTssWalletAddress({ address: silenceLabsAddress, keychains, index: 0 }, isValidAddress, getAddressFromPublicKey);
|
|
177
|
-
result.should.be.false();
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
169
|
});
|
|
181
170
|
describe('verifyMPCWalletAddress - ECDSA (secp256k1)', function () {
|
|
182
171
|
const ecdsaKeychains = [
|
|
@@ -259,4 +248,4 @@ describe('deriveMPCWalletAddress', function () {
|
|
|
259
248
|
});
|
|
260
249
|
});
|
|
261
250
|
});
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc1ZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy90c3MvYWRkcmVzc1ZlcmlmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxrQkFBZ0I7QUFDaEIseURBQTREO0FBQzVELDREQUEyRDtBQUMzRCxzREFBNEQ7QUFFNUQsU0FBUyw0QkFBNEI7SUFDbkMsT0FBTyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLHFCQUFxQixDQUFDO0FBQzVGLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztBQUN4RyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixFQUFFLENBQUMsc0JBQXNCLENBQUM7QUFDOUYsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLHNCQUFzQixDQUFDO0FBRTlGLDhGQUE4RjtBQUM5RixNQUFNLE9BQU8sR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixNQUFNLGNBQWMsR0FBRyxrRUFBa0UsQ0FBQztBQUMxRixNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsY0FBYyxDQUFDO0FBRS9DLGdHQUFnRztBQUNoRyxNQUFNLFFBQVEsR0FBRyxvRUFBb0UsQ0FBQztBQUN0RixNQUFNLGNBQWMsR0FBRyxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBRWpELFFBQVEsQ0FBQyx3REFBd0QsRUFBRTtJQUNqRSxNQUFNLGNBQWMsR0FDbEIsa0lBQWtJLENBQUM7SUFFckksUUFBUSxDQUFDLHVCQUF1QixFQUFFO1FBQ2hDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRTtZQUN2RCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBRS9FLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFO1lBQ2hELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFnQixDQUFDLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztRQUNuRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRTtZQUNwRCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsU0FBZ0IsQ0FBQyxFQUFFLHVDQUF1QyxDQUFDLENBQUM7UUFDeEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUU7WUFDcEUsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxpREFBaUQsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1lBQ2xELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFFaEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBRyxJQUFBLCtCQUFpQixFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVyQyw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU1Qiw4QkFBOEI7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDZCQUE2QixFQUFFO0lBQ3RDLE1BQU0sU0FBUyxHQUFHO1FBQ2hCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRTtRQUNqQyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUU7UUFDakMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFO0tBQ2xDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5ELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRTtRQUNoRCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztZQUMvQyxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixFQUFFLENBQUM7WUFDckUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztpQkFDdEMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUM5QyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEVBQy9FLGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7WUFDL0MsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxrQkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3JFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7aUJBQ3RDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUMvRSxjQUFjLEVBQ2QsdUJBQXVCLENBQ3hCLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLO1lBQ3pELE1BQU0sMkJBQTJCLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztZQUNyRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBTSxrQkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3ZFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7aUJBQ3RDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEVBQ2pGLGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlFQUFpRSxFQUFFLEtBQUs7WUFDekUsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7WUFFckUsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUM3RSxjQUFjLEVBQ2QsdUJBQXVCLENBQ3hCLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpRkFBaUYsRUFBRSxLQUFLO1lBQ3pGLE1BQU0sMkJBQTJCLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBQSwrQkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sa0JBQVksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2lCQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQztpQkFDOUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUM5QztnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsU0FBUztnQkFDVCxLQUFLLEVBQUUsQ0FBQztnQkFDUixtQkFBbUIsRUFBRSxPQUFPO2dCQUM1Qix5QkFBeUIsRUFBRSxJQUFJO2FBQ2hDLEVBQ0QsY0FBYyxFQUNkLHVCQUF1QixDQUN4QixDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkZBQTJGLEVBQUUsS0FBSztZQUNuRyxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDO1lBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUEsK0JBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUM7aUJBQzlDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUM7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFNBQVM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsbUJBQW1CLEVBQUUsT0FBTztnQkFDNUIseUJBQXlCLEVBQUUsSUFBSTthQUNoQyxFQUNELGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsNkJBQTZCLEVBQUU7UUFDdEMsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEtBQUs7WUFDbEYsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JFLGlHQUFpRztZQUNqRywwRkFBMEY7WUFDMUYsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxHQUFHLHdEQUFhLHlCQUF5QixHQUFDLENBQUM7WUFDbEYsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFDcEQsY0FBYyxFQUNkLHVCQUF1QixDQUN4QixDQUFDO1lBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELE1BQU0sY0FBYyxHQUFHO1FBQ3JCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRTtRQUNsQyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUU7UUFDbEMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO0tBQ25DLENBQUM7SUFDRiw2REFBNkQ7SUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDakUsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5ELEVBQUUsQ0FBQyxtRkFBbUYsRUFBRSxLQUFLO1FBQzNGLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLGVBQWUsR0FBRyxJQUFJLFdBQUssRUFBRSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpGLE1BQU0sTUFBTSxHQUFHLE1BQU0sc0JBQXNCLENBQ3pDO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsU0FBUyxFQUFFLGNBQWM7WUFDekIsS0FBSyxFQUFFLENBQUM7WUFDUixtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLFFBQVEsRUFBRSxXQUFXO1NBQ3RCLEVBQ0QsbUJBQW1CLEVBQ25CLHVCQUF1QixDQUN4QixDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztRQUN6RCxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7UUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFDeEYsbUJBQW1CLEVBQ25CLHVCQUF1QixDQUN4QixDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztRQUN6RCxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7UUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFDeEYsbUJBQW1CLEVBQ25CLHVCQUF1QixDQUN4QixDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtJQUNqQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFbkQsUUFBUSxDQUFDLGlCQUFpQixFQUFFO1FBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUV6RixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztpQkFDdEMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQzFFLHVCQUF1QixDQUN4QixDQUFDO1lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxLQUFLO1lBQ3hFLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBQSwrQkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sa0JBQVksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2lCQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQztpQkFDOUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUMzRyx1QkFBdUIsQ0FDeEIsQ0FBQztZQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsV0FBVyxFQUFFO1FBQ3BCLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVoRyxFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSztZQUN4RCxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6RixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQzlELHVCQUF1QixDQUN4QixDQUFDO1lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdDQUF3QyxFQUFFO1FBQ2pELEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxLQUFLO1lBQ3hFLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO1lBRWpFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLHNCQUFzQixDQUM5QyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQzlELHVCQUF1QixDQUN4QixDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxzQkFBc0IsQ0FDM0MsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsRUFDdkUsbUJBQW1CLEVBQ25CLHVCQUF1QixDQUN4QixDQUFDO1lBRUYsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBnZXREZXJpdmF0aW9uUGF0aCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEVjZHNhIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYyc7XG5pbXBvcnQgeyBFRERTQU1ldGhvZHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzJztcblxuZnVuY3Rpb24gZ2V0QWRkcmVzc1ZlcmlmaWNhdGlvbk1vZHVsZSgpIHtcbiAgcmV0dXJuIHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvYWRkcmVzc1ZlcmlmaWNhdGlvbicpO1xufVxuXG5jb25zdCBnZXRFeHRyYWN0Q29tbW9uS2V5Y2hhaW4gPSAoKSA9PiBnZXRBZGRyZXNzVmVyaWZpY2F0aW9uTW9kdWxlKCkuZXh0cmFjdENvbW1vbktleWNoYWluO1xuY29uc3QgZ2V0VmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzID0gKCkgPT4gZ2V0QWRkcmVzc1ZlcmlmaWNhdGlvbk1vZHVsZSgpLnZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcztcbmNvbnN0IGdldFZlcmlmeU1QQ1dhbGxldEFkZHJlc3MgPSAoKSA9PiBnZXRBZGRyZXNzVmVyaWZpY2F0aW9uTW9kdWxlKCkudmVyaWZ5TVBDV2FsbGV0QWRkcmVzcztcbmNvbnN0IGdldERlcml2ZU1QQ1dhbGxldEFkZHJlc3MgPSAoKSA9PiBnZXRBZGRyZXNzVmVyaWZpY2F0aW9uTW9kdWxlKCkuZGVyaXZlTVBDV2FsbGV0QWRkcmVzcztcblxuLy8gUkZDIDgwMzIgdGVzdCB2ZWN0b3I6IGtub3duIHZhbGlkIEVkMjU1MTkgcHVibGljIGtleSArIGFyYml0cmFyeSBjaGFpbmNvZGUgPSAxMjggaGV4IGNoYXJzLlxuY29uc3QgVEVTVF9QSyA9ICdkNzVhOTgwMTgyYjEwYWI3ZDU0YmZlZDNjOTY0MDczYTBlZTE3MmYzZGFhNjIzMjVhZjAyMWE2OGY3MDc1MTFhJztcbmNvbnN0IFRFU1RfQ0hBSU5DT0RFID0gJ2RlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYnO1xuY29uc3QgVEVTVF9LRVlDSEFJTiA9IFRFU1RfUEsgKyBURVNUX0NIQUlOQ09ERTtcblxuLy8gc2VjcDI1NmsxIGdlbmVyYXRvciBwb2ludCBHIChjb21wcmVzc2VkLCAzMyBieXRlcyA9IDY2IGhleCkgKyBzYW1lIGNoYWluY29kZSA9IDEzMCBoZXggY2hhcnMuXG5jb25zdCBFQ0RTQV9QSyA9ICcwMjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnO1xuY29uc3QgRUNEU0FfS0VZQ0hBSU4gPSBFQ0RTQV9QSyArIFRFU1RfQ0hBSU5DT0RFO1xuXG5kZXNjcmliZSgnVFNTIEFkZHJlc3MgVmVyaWZpY2F0aW9uIC0gRGVyaXZhdGlvbiBQYXRoIHdpdGggUHJlZml4JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb21tb25LZXljaGFpbiA9XG4gICAgJzhlYTMyZWNhY2ZjODNlZmZiZDJlMjc5MGVlNDRmYTdjNTliNGQ4NmMyOWExMmYwOWZiNjEzZDgxOTVmOTNmNGUyMTg3NWNhZDNiOThhZGFkYTQwYzA0MGM1NGMzNTY5NDY3ZGY0MWEwMjA4ODFhNjE4NDA5NjM3ODcwMTg2MmJkJztcblxuICBkZXNjcmliZSgnZXh0cmFjdENvbW1vbktleWNoYWluJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZXh0cmFjdCBjb21tb25LZXljaGFpbiBmcm9tIGtleWNoYWlucyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4dHJhY3RDb21tb25LZXljaGFpbiA9IGdldEV4dHJhY3RDb21tb25LZXljaGFpbigpO1xuICAgICAgY29uc3Qga2V5Y2hhaW5zID0gW3sgY29tbW9uS2V5Y2hhaW4gfSwgeyBjb21tb25LZXljaGFpbiB9LCB7IGNvbW1vbktleWNoYWluIH1dO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0Q29tbW9uS2V5Y2hhaW4oa2V5Y2hhaW5zKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwoY29tbW9uS2V5Y2hhaW4pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiBrZXljaGFpbnMgYXJlIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHRyYWN0Q29tbW9uS2V5Y2hhaW4gPSBnZXRFeHRyYWN0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZXh0cmFjdENvbW1vbktleWNoYWluKFtdKSwgL21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zLyk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGV4dHJhY3RDb21tb25LZXljaGFpbih1bmRlZmluZWQgYXMgYW55KSwgL21pc3NpbmcgcmVxdWlyZWQgcGFyYW0ga2V5Y2hhaW5zLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIGNvbW1vbktleWNoYWluIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHRyYWN0Q29tbW9uS2V5Y2hhaW4gPSBnZXRFeHRyYWN0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGlkOiAnMScgfV07XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGV4dHJhY3RDb21tb25LZXljaGFpbihrZXljaGFpbnMgYXMgYW55KSwgL21pc3NpbmcgcmVxdWlyZWQgcGFyYW0gY29tbW9uS2V5Y2hhaW4vKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYga2V5Y2hhaW5zIGhhdmUgbWlzbWF0Y2hlZCBjb21tb25LZXljaGFpbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHRyYWN0Q29tbW9uS2V5Y2hhaW4gPSBnZXRFeHRyYWN0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGNvbW1vbktleWNoYWluIH0sIHsgY29tbW9uS2V5Y2hhaW46ICdkaWZmZXJlbnQta2V5Y2hhaW4nIH1dO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBleHRyYWN0Q29tbW9uS2V5Y2hhaW4oa2V5Y2hhaW5zKSwgL2FsbCBrZXljaGFpbnMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbW1vbktleWNoYWluLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdEZXJpdmF0aW9uIFBhdGggRm9ybWF0IFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGNvcnJlY3QgZGVyaXZhdGlvbiBwYXRoIGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRlc3RTZWVkcyA9IFsnc2VlZDEnLCAnc2VlZC0yJywgJzEyMzQ1JywgJ3Rlc3Rfc2VlZF8xMjMnXTtcblxuICAgICAgdGVzdFNlZWRzLmZvckVhY2goKHNlZWQpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGdldERlcml2YXRpb25QYXRoKHNlZWQpO1xuXG4gICAgICAgIC8vIEV4cGVjdGVkIGZvcm1hdDogXCJtLzk5OTk5OS97cGFydDF9L3twYXJ0Mn1cIlxuICAgICAgICBwYXRoLnNob3VsZC5tYXRjaCgvXm1cXC85OTk5OTlcXC9cXGQrXFwvXFxkKyQvKTtcblxuICAgICAgICBwYXRoLnNob3VsZC5zdGFydFdpdGgoJ20vJyk7XG5cbiAgICAgICAgLy8gU2hvdWxkIGhhdmUgZXhhY3RseSAzIHBhcnRzXG4gICAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgICAgICBwYXJ0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDQpO1xuICAgICAgICBwYXJ0c1swXS5zaG91bGQuZXF1YWwoJ20nKTtcbiAgICAgICAgcGFydHNbMV0uc2hvdWxkLmVxdWFsKCc5OTk5OTknKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgndmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBrZXljaGFpbnMgPSBbXG4gICAgeyBjb21tb25LZXljaGFpbjogVEVTVF9LRVlDSEFJTiB9LFxuICAgIHsgY29tbW9uS2V5Y2hhaW46IFRFU1RfS0VZQ0hBSU4gfSxcbiAgICB7IGNvbW1vbktleWNoYWluOiBURVNUX0tFWUNIQUlOIH0sXG4gIF07XG4gIGNvbnN0IGlzVmFsaWRBZGRyZXNzID0gKGFkZHI6IHN0cmluZykgPT4gYWRkci5sZW5ndGggPT09IDY0O1xuICBjb25zdCBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSA9IChwazogc3RyaW5nKSA9PiBwaztcblxuICBkZXNjcmliZSgnTVBDdjIgd2FsbGV0cyAoQklQMzItRWQyNTUxOSBmb3JtdWxhKScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgndmVyaWZpZXMgYSBjb3JyZWN0IGFkZHJlc3MgYXQgaW5kZXggMCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sICdtLzAnKVxuICAgICAgICAuc2xpY2UoMCwgNjQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICAgIHsgYWRkcmVzczogZXhwZWN0ZWRBZGRyZXNzLCBrZXljaGFpbnMsIGluZGV4OiAwLCBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAnTVBDdjInIH0sXG4gICAgICAgIGlzVmFsaWRBZGRyZXNzLFxuICAgICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICAgKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZlcmlmaWVzIGEgY29ycmVjdCBhZGRyZXNzIGF0IGluZGV4IDEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MgPSBnZXRWZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IChhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpKVxuICAgICAgICAuZGVyaXZlVW5oYXJkZW5lZChURVNUX0tFWUNIQUlOLCAnbS8xJylcbiAgICAgICAgLnNsaWNlKDAsIDY0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGFkZHJlc3M6IGV4cGVjdGVkQWRkcmVzcywga2V5Y2hhaW5zLCBpbmRleDogMSwgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyB9LFxuICAgICAgICBpc1ZhbGlkQWRkcmVzcyxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGFkZHJlc3MgZGVyaXZlZCBhdCBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgYWRkcmVzc0Zyb21JbmRleDAgPSAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSlcbiAgICAgICAgLmRlcml2ZVVuaGFyZGVuZWQoVEVTVF9LRVlDSEFJTiwgJ20vMCcpXG4gICAgICAgIC5zbGljZSgwLCA2NCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzOiBhZGRyZXNzRnJvbUluZGV4MCwga2V5Y2hhaW5zLCBpbmRleDogMSwgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyB9LFxuICAgICAgICBpc1ZhbGlkQWRkcmVzcyxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHJhbmRvbSBhZGRyZXNzIHRoYXQgd2FzIG5vdCBkZXJpdmVkIGZyb20gdGhlIGtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKCk7XG4gICAgICBjb25zdCByYW5kb21BZGRyZXNzID0gJ2FiJy5yZXBlYXQoMzIpOyAvLyA2NCBoZXggY2hhcnMsIHdyb25nIGFkZHJlc3NcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGFkZHJlc3M6IHJhbmRvbUFkZHJlc3MsIGtleWNoYWlucywgaW5kZXg6IDAsIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicgfSxcbiAgICAgICAgaXNWYWxpZEFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZlcmlmaWVzIGEgY29ycmVjdCBNUEN2MiBhZGRyZXNzIGZvciBTTUMgd2FsbGV0IHVzaW5nIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MgPSBnZXRWZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IHNlZWQgPSAnc21jLXNlZWQtMTIzJztcbiAgICAgIGNvbnN0IHByZWZpeCA9IGdldERlcml2YXRpb25QYXRoKHNlZWQpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sIGAke3ByZWZpeH0vMGApXG4gICAgICAgIC5zbGljZSgwLCA2NCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGV4cGVjdGVkQWRkcmVzcyxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyxcbiAgICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiBzZWVkLFxuICAgICAgICB9LFxuICAgICAgICBpc1ZhbGlkQWRkcmVzcyxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIE1QQ3YyIGFkZHJlc3MgZGVyaXZlZCBhdCB0aGUgd3JvbmcgaW5kZXggd2hlbiBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkIGlzIHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3Qgc2VlZCA9ICdzbWMtc2VlZC0xMjMnO1xuICAgICAgY29uc3QgcHJlZml4ID0gZ2V0RGVyaXZhdGlvblBhdGgoc2VlZCk7XG4gICAgICBjb25zdCBhZGRyZXNzQXRJbmRleDEgPSAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSlcbiAgICAgICAgLmRlcml2ZVVuaGFyZGVuZWQoVEVTVF9LRVlDSEFJTiwgYCR7cHJlZml4fS8xYClcbiAgICAgICAgLnNsaWNlKDAsIDY0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWRkcmVzc0F0SW5kZXgxLFxuICAgICAgICAgIGtleWNoYWlucyxcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAnTVBDdjInLFxuICAgICAgICAgIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQ6IHNlZWQsXG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWRBZGRyZXNzLFxuICAgICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICAgKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xlZ2FjeSBTaWxlbmNlIExhYnMgZm9ybXVsYScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmVqZWN0cyBhbiBhZGRyZXNzIGRlcml2ZWQgd2l0aCB0aGUgb2xkIFNpbGVuY2UgTGFicyBzaW5nbGUtSE1BQyBmb3JtdWxhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKCk7XG4gICAgICAvLyBUaGUgU2lsZW5jZSBMYWJzIGFuZCBCSVAzMi1FZDI1NTE5IGZvcm11bGFzIHByb2R1Y2UgZGlmZmVyZW50IGFkZHJlc3NlcyBmb3IgdGhlIHNhbWUga2V5Y2hhaW4uXG4gICAgICAvLyBBZGRyZXNzZXMgZGVyaXZlZCB3aXRoIHRoZSBvbGQgZm9ybXVsYSBubyBsb25nZXIgdmVyaWZ5IGFnYWluc3QgdGhlIGN1cnJlbnQgZGVyaXZhdGlvbi5cbiAgICAgIGNvbnN0IHsgZGVyaXZlVW5oYXJkZW5lZE1wczogZGVyaXZlU0wgfSA9IGF3YWl0IGltcG9ydCgnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnKTtcbiAgICAgIGNvbnN0IHNpbGVuY2VMYWJzQWRkcmVzcyA9IGRlcml2ZVNMKFRFU1RfS0VZQ0hBSU4sICdtLzAnKS5zbGljZSgwLCA2NCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzOiBzaWxlbmNlTGFic0FkZHJlc3MsIGtleWNoYWlucywgaW5kZXg6IDAgfSxcbiAgICAgICAgaXNWYWxpZEFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd2ZXJpZnlNUENXYWxsZXRBZGRyZXNzIC0gRUNEU0EgKHNlY3AyNTZrMSknLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVjZHNhS2V5Y2hhaW5zID0gW1xuICAgIHsgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH0sXG4gICAgeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfSxcbiAgICB7IGNvbW1vbktleWNoYWluOiBFQ0RTQV9LRVlDSEFJTiB9LFxuICBdO1xuICAvLyBzZWNwMjU2azEgY29tcHJlc3NlZCBwdWJsaWMga2V5IGlzIDMzIGJ5dGVzID0gNjYgaGV4IGNoYXJzXG4gIGNvbnN0IGlzVmFsaWRFY2RzYUFkZHJlc3MgPSAoYWRkcjogc3RyaW5nKSA9PiBhZGRyLmxlbmd0aCA9PT0gNjY7XG4gIGNvbnN0IGdldEFkZHJlc3NGcm9tUHVibGljS2V5ID0gKHBrOiBzdHJpbmcpID0+IHBrO1xuXG4gIGl0KCdpZ25vcmVzIG11bHRpc2lnVHlwZVZlcnNpb24gTVBDdjIgYW5kIHVzZXMgRWNkc2EgZGVyaXZhdGlvbiBmb3Igc2VjcDI1NmsxIHdhbGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeU1QQ1dhbGxldEFkZHJlc3MoKTtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSBuZXcgRWNkc2EoKS5kZXJpdmVVbmhhcmRlbmVkKEVDRFNBX0tFWUNIQUlOLCAnbS8wJykuc2xpY2UoMCwgNjYpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogZXhwZWN0ZWRBZGRyZXNzLFxuICAgICAgICBrZXljaGFpbnM6IGVjZHNhS2V5Y2hhaW5zLFxuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyxcbiAgICAgICAga2V5Q3VydmU6ICdzZWNwMjU2azEnLFxuICAgICAgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZmllcyBhIGNvcnJlY3Qgc2VjcDI1NmsxIGFkZHJlc3MgYXQgaW5kZXggMScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5TVBDV2FsbGV0QWRkcmVzcygpO1xuICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IG5ldyBFY2RzYSgpLmRlcml2ZVVuaGFyZGVuZWQoRUNEU0FfS0VZQ0hBSU4sICdtLzEnKS5zbGljZSgwLCA2Nik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyBhZGRyZXNzOiBleHBlY3RlZEFkZHJlc3MsIGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAxLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIGFuIGFkZHJlc3MgZGVyaXZlZCBhdCBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5TVBDV2FsbGV0QWRkcmVzcygpO1xuICAgIGNvbnN0IGFkZHJlc3NBdEluZGV4MCA9IG5ldyBFY2RzYSgpLmRlcml2ZVVuaGFyZGVuZWQoRUNEU0FfS0VZQ0hBSU4sICdtLzAnKS5zbGljZSgwLCA2Nik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyBhZGRyZXNzOiBhZGRyZXNzQXRJbmRleDAsIGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAxLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS5mYWxzZSgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZGVyaXZlTVBDV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkgPSAocGs6IHN0cmluZykgPT4gcGs7XG5cbiAgZGVzY3JpYmUoJ2VkMjU1MTkgKE1QQ3YyKScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBjb21tb25LZXljaGFpbjogVEVTVF9LRVlDSEFJTiB9LCB7IGNvbW1vbktleWNoYWluOiBURVNUX0tFWUNIQUlOIH1dO1xuXG4gICAgaXQoJ2Rlcml2ZXMgdGhlIGFkZHJlc3MgYW5kIHBhdGggZm9yIHRoZSBzaW1wbGUgbS97aW5kZXh9IHBhdGgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sICdtLzMnKVxuICAgICAgICAuc2xpY2UoMCwgNjQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWlucywgaW5kZXg6IDMsIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicsIGtleUN1cnZlOiAnZWQyNTUxOScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgICAgcmVzdWx0LmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbCgnbS8zJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndXNlcyB0aGUgU01DIHByZWZpeCBwYXRoIHdoZW4gZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCBpcyBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3Qgc2VlZCA9ICdzbWMtc2VlZC0xMjMnO1xuICAgICAgY29uc3QgcHJlZml4ID0gZ2V0RGVyaXZhdGlvblBhdGgoc2VlZCk7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSlcbiAgICAgICAgLmRlcml2ZVVuaGFyZGVuZWQoVEVTVF9LRVlDSEFJTiwgYCR7cHJlZml4fS8wYClcbiAgICAgICAgLnNsaWNlKDAsIDY0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVyaXZlTVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBrZXljaGFpbnMsIGluZGV4OiAwLCBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAnTVBDdjInLCBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiBzZWVkLCBrZXlDdXJ2ZTogJ2VkMjU1MTknIH0sXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuXG4gICAgICByZXN1bHQuYWRkcmVzcy5zaG91bGQuZXF1YWwoZXhwZWN0ZWRBZGRyZXNzKTtcbiAgICAgIHJlc3VsdC5kZXJpdmF0aW9uUGF0aC5zaG91bGQuZXF1YWwoYCR7cHJlZml4fS8wYCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZWNwMjU2azEnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZWNkc2FLZXljaGFpbnMgPSBbeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfSwgeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfV07XG5cbiAgICBpdCgnZGVyaXZlcyB0aGUgc2VjcDI1NmsxIGFkZHJlc3MgKDMzLWJ5dGUgcHVia2V5KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZU1QQ1dhbGxldEFkZHJlc3MgPSBnZXREZXJpdmVNUENXYWxsZXRBZGRyZXNzKCk7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSBuZXcgRWNkc2EoKS5kZXJpdmVVbmhhcmRlbmVkKEVDRFNBX0tFWUNIQUlOLCAnbS8yJykuc2xpY2UoMCwgNjYpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAyLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgICAgcmVzdWx0LmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbCgnbS8yJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwIHdpdGggdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYW4gYWRkcmVzcyBwcm9kdWNlZCBieSBkZXJpdmVNUENXYWxsZXRBZGRyZXNzIHZlcmlmaWVzIGFzIHRydWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeU1QQ1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IGVjZHNhS2V5Y2hhaW5zID0gW3sgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH0sIHsgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH1dO1xuICAgICAgY29uc3QgaXNWYWxpZEVjZHNhQWRkcmVzcyA9IChhZGRyOiBzdHJpbmcpID0+IGFkZHIubGVuZ3RoID09PSA2NjtcblxuICAgICAgY29uc3QgeyBhZGRyZXNzIH0gPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiA3LCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzLCBrZXljaGFpbnM6IGVjZHNhS2V5Y2hhaW5zLCBpbmRleDogNywga2V5Q3VydmU6ICdzZWNwMjU2azEnIH0sXG4gICAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuXG4gICAgICB2ZXJpZmllZC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc1ZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy90c3MvYWRkcmVzc1ZlcmlmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxrQkFBZ0I7QUFDaEIseURBQTREO0FBQzVELDREQUEyRDtBQUMzRCxzREFBNEQ7QUFFNUQsU0FBUyw0QkFBNEI7SUFDbkMsT0FBTyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLHFCQUFxQixDQUFDO0FBQzVGLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztBQUN4RyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixFQUFFLENBQUMsc0JBQXNCLENBQUM7QUFDOUYsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLHNCQUFzQixDQUFDO0FBRTlGLDhGQUE4RjtBQUM5RixNQUFNLE9BQU8sR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixNQUFNLGNBQWMsR0FBRyxrRUFBa0UsQ0FBQztBQUMxRixNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsY0FBYyxDQUFDO0FBRS9DLGdHQUFnRztBQUNoRyxNQUFNLFFBQVEsR0FBRyxvRUFBb0UsQ0FBQztBQUN0RixNQUFNLGNBQWMsR0FBRyxRQUFRLEdBQUcsY0FBYyxDQUFDO0FBRWpELFFBQVEsQ0FBQyx3REFBd0QsRUFBRTtJQUNqRSxNQUFNLGNBQWMsR0FDbEIsa0lBQWtJLENBQUM7SUFFckksUUFBUSxDQUFDLHVCQUF1QixFQUFFO1FBQ2hDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRTtZQUN2RCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBRS9FLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFO1lBQ2hELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFnQixDQUFDLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztRQUNuRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRTtZQUNwRCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsU0FBZ0IsQ0FBQyxFQUFFLHVDQUF1QyxDQUFDLENBQUM7UUFDeEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUU7WUFDcEUsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxpREFBaUQsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1lBQ2xELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFFaEUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBRyxJQUFBLCtCQUFpQixFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVyQyw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU1Qiw4QkFBOEI7Z0JBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDZCQUE2QixFQUFFO0lBQ3RDLE1BQU0sU0FBUyxHQUFHO1FBQ2hCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRTtRQUNqQyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUU7UUFDakMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFO0tBQ2xDLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5ELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRTtRQUNoRCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztZQUMvQyxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixFQUFFLENBQUM7WUFDckUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztpQkFDdEMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUM5QyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEVBQy9FLGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7WUFDL0MsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxrQkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3JFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7aUJBQ3RDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUMvRSxjQUFjLEVBQ2QsdUJBQXVCLENBQ3hCLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxLQUFLO1lBQ3pELE1BQU0sMkJBQTJCLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztZQUNyRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBTSxrQkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3ZFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7aUJBQ3RDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEVBQ2pGLGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlFQUFpRSxFQUFFLEtBQUs7WUFDekUsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7WUFFckUsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxFQUM3RSxjQUFjLEVBQ2QsdUJBQXVCLENBQ3hCLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpRkFBaUYsRUFBRSxLQUFLO1lBQ3pGLE1BQU0sMkJBQTJCLEdBQUcsOEJBQThCLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBQSwrQkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sa0JBQVksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2lCQUNyRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQztpQkFDOUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUM5QztnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsU0FBUztnQkFDVCxLQUFLLEVBQUUsQ0FBQztnQkFDUixtQkFBbUIsRUFBRSxPQUFPO2dCQUM1Qix5QkFBeUIsRUFBRSxJQUFJO2FBQ2hDLEVBQ0QsY0FBYyxFQUNkLHVCQUF1QixDQUN4QixDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkZBQTJGLEVBQUUsS0FBSztZQUNuRyxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDO1lBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUEsK0JBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUM7aUJBQzlDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSwyQkFBMkIsQ0FDOUM7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFNBQVM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsbUJBQW1CLEVBQUUsT0FBTztnQkFDNUIseUJBQXlCLEVBQUUsSUFBSTthQUNoQyxFQUNELGNBQWMsRUFDZCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyw0Q0FBNEMsRUFBRTtJQUNyRCxNQUFNLGNBQWMsR0FBRztRQUNyQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUU7UUFDbEMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO1FBQ2xDLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRTtLQUNuQyxDQUFDO0lBQ0YsNkRBQTZEO0lBQzdELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO0lBQ2pFLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuRCxFQUFFLENBQUMsbUZBQW1GLEVBQUUsS0FBSztRQUMzRixNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7UUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUN6QztZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsbUJBQW1CLEVBQUUsT0FBTztZQUM1QixRQUFRLEVBQUUsV0FBVztTQUN0QixFQUNELG1CQUFtQixFQUNuQix1QkFBdUIsQ0FDeEIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUs7UUFDekQsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLElBQUksV0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekYsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FDekMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQ3hGLG1CQUFtQixFQUNuQix1QkFBdUIsQ0FDeEIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEtBQUs7UUFDekQsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLElBQUksV0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekYsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FDekMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQ3hGLG1CQUFtQixFQUNuQix1QkFBdUIsQ0FDeEIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUU7SUFDakMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5ELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtRQUMxQixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFekYsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEtBQUs7WUFDcEUsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxrQkFBWSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3JFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7aUJBQ3RDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FDekMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUMxRSx1QkFBdUIsQ0FDeEIsQ0FBQztZQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsS0FBSztZQUN4RSxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDO1lBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUEsK0JBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLGtCQUFZLENBQUMseUJBQXlCLEVBQUUsQ0FBQztpQkFDckUsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUM7aUJBQzlDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FDekMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDM0csdUJBQXVCLENBQ3hCLENBQUM7WUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFdBQVcsRUFBRTtRQUNwQixNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFaEcsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEtBQUs7WUFDeEQsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sZUFBZSxHQUFHLElBQUksV0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFekYsTUFBTSxNQUFNLEdBQUcsTUFBTSxzQkFBc0IsQ0FDekMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUM5RCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx3Q0FBd0MsRUFBRTtRQUNqRCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsS0FBSztZQUN4RSxNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixFQUFFLENBQUM7WUFDM0QsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUNoRyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUVqRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxzQkFBc0IsQ0FDOUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUM5RCx1QkFBdUIsQ0FDeEIsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sc0JBQXNCLENBQzNDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQ3ZFLG1CQUFtQixFQUNuQix1QkFBdUIsQ0FDeEIsQ0FBQztZQUVGLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgZ2V0RGVyaXZhdGlvblBhdGggfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBFY2RzYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMnO1xuaW1wb3J0IHsgRUREU0FNZXRob2RzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcyc7XG5cbmZ1bmN0aW9uIGdldEFkZHJlc3NWZXJpZmljYXRpb25Nb2R1bGUoKSB7XG4gIHJldHVybiByZXF1aXJlKCcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2FkZHJlc3NWZXJpZmljYXRpb24nKTtcbn1cblxuY29uc3QgZ2V0RXh0cmFjdENvbW1vbktleWNoYWluID0gKCkgPT4gZ2V0QWRkcmVzc1ZlcmlmaWNhdGlvbk1vZHVsZSgpLmV4dHJhY3RDb21tb25LZXljaGFpbjtcbmNvbnN0IGdldFZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyA9ICgpID0+IGdldEFkZHJlc3NWZXJpZmljYXRpb25Nb2R1bGUoKS52ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3M7XG5jb25zdCBnZXRWZXJpZnlNUENXYWxsZXRBZGRyZXNzID0gKCkgPT4gZ2V0QWRkcmVzc1ZlcmlmaWNhdGlvbk1vZHVsZSgpLnZlcmlmeU1QQ1dhbGxldEFkZHJlc3M7XG5jb25zdCBnZXREZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gKCkgPT4gZ2V0QWRkcmVzc1ZlcmlmaWNhdGlvbk1vZHVsZSgpLmRlcml2ZU1QQ1dhbGxldEFkZHJlc3M7XG5cbi8vIFJGQyA4MDMyIHRlc3QgdmVjdG9yOiBrbm93biB2YWxpZCBFZDI1NTE5IHB1YmxpYyBrZXkgKyBhcmJpdHJhcnkgY2hhaW5jb2RlID0gMTI4IGhleCBjaGFycy5cbmNvbnN0IFRFU1RfUEsgPSAnZDc1YTk4MDE4MmIxMGFiN2Q1NGJmZWQzYzk2NDA3M2EwZWUxNzJmM2RhYTYyMzI1YWYwMjFhNjhmNzA3NTExYSc7XG5jb25zdCBURVNUX0NIQUlOQ09ERSA9ICdkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmJztcbmNvbnN0IFRFU1RfS0VZQ0hBSU4gPSBURVNUX1BLICsgVEVTVF9DSEFJTkNPREU7XG5cbi8vIHNlY3AyNTZrMSBnZW5lcmF0b3IgcG9pbnQgRyAoY29tcHJlc3NlZCwgMzMgYnl0ZXMgPSA2NiBoZXgpICsgc2FtZSBjaGFpbmNvZGUgPSAxMzAgaGV4IGNoYXJzLlxuY29uc3QgRUNEU0FfUEsgPSAnMDI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4JztcbmNvbnN0IEVDRFNBX0tFWUNIQUlOID0gRUNEU0FfUEsgKyBURVNUX0NIQUlOQ09ERTtcblxuZGVzY3JpYmUoJ1RTUyBBZGRyZXNzIFZlcmlmaWNhdGlvbiAtIERlcml2YXRpb24gUGF0aCB3aXRoIFByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPVxuICAgICc4ZWEzMmVjYWNmYzgzZWZmYmQyZTI3OTBlZTQ0ZmE3YzU5YjRkODZjMjlhMTJmMDlmYjYxM2Q4MTk1ZjkzZjRlMjE4NzVjYWQzYjk4YWRhZGE0MGMwNDBjNTRjMzU2OTQ2N2RmNDFhMDIwODgxYTYxODQwOTYzNzg3MDE4NjJiZCc7XG5cbiAgZGVzY3JpYmUoJ2V4dHJhY3RDb21tb25LZXljaGFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgY29tbW9uS2V5Y2hhaW4gZnJvbSBrZXljaGFpbnMgYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBleHRyYWN0Q29tbW9uS2V5Y2hhaW4gPSBnZXRFeHRyYWN0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICAgIGNvbnN0IGtleWNoYWlucyA9IFt7IGNvbW1vbktleWNoYWluIH0sIHsgY29tbW9uS2V5Y2hhaW4gfSwgeyBjb21tb25LZXljaGFpbiB9XTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdENvbW1vbktleWNoYWluKGtleWNoYWlucyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKGNvbW1vbktleWNoYWluKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYga2V5Y2hhaW5zIGFyZSBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXh0cmFjdENvbW1vbktleWNoYWluID0gZ2V0RXh0cmFjdENvbW1vbktleWNoYWluKCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGV4dHJhY3RDb21tb25LZXljaGFpbihbXSksIC9taXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucy8pO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBleHRyYWN0Q29tbW9uS2V5Y2hhaW4odW5kZWZpbmVkIGFzIGFueSksIC9taXNzaW5nIHJlcXVpcmVkIHBhcmFtIGtleWNoYWlucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpZiBjb21tb25LZXljaGFpbiBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXh0cmFjdENvbW1vbktleWNoYWluID0gZ2V0RXh0cmFjdENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBpZDogJzEnIH1dO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBleHRyYWN0Q29tbW9uS2V5Y2hhaW4oa2V5Y2hhaW5zIGFzIGFueSksIC9taXNzaW5nIHJlcXVpcmVkIHBhcmFtIGNvbW1vbktleWNoYWluLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIGtleWNoYWlucyBoYXZlIG1pc21hdGNoZWQgY29tbW9uS2V5Y2hhaW5zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXh0cmFjdENvbW1vbktleWNoYWluID0gZ2V0RXh0cmFjdENvbW1vbktleWNoYWluKCk7XG4gICAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBjb21tb25LZXljaGFpbiB9LCB7IGNvbW1vbktleWNoYWluOiAnZGlmZmVyZW50LWtleWNoYWluJyB9XTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZXh0cmFjdENvbW1vbktleWNoYWluKGtleWNoYWlucyksIC9hbGwga2V5Y2hhaW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBjb21tb25LZXljaGFpbi8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGVyaXZhdGlvbiBQYXRoIEZvcm1hdCBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcHJvZHVjZSBjb3JyZWN0IGRlcml2YXRpb24gcGF0aCBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0U2VlZHMgPSBbJ3NlZWQxJywgJ3NlZWQtMicsICcxMjM0NScsICd0ZXN0X3NlZWRfMTIzJ107XG5cbiAgICAgIHRlc3RTZWVkcy5mb3JFYWNoKChzZWVkKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBnZXREZXJpdmF0aW9uUGF0aChzZWVkKTtcblxuICAgICAgICAvLyBFeHBlY3RlZCBmb3JtYXQ6IFwibS85OTk5OTkve3BhcnQxfS97cGFydDJ9XCJcbiAgICAgICAgcGF0aC5zaG91bGQubWF0Y2goL15tXFwvOTk5OTk5XFwvXFxkK1xcL1xcZCskLyk7XG5cbiAgICAgICAgcGF0aC5zaG91bGQuc3RhcnRXaXRoKCdtLycpO1xuXG4gICAgICAgIC8vIFNob3VsZCBoYXZlIGV4YWN0bHkgMyBwYXJ0c1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgcGFydHMubGVuZ3RoLnNob3VsZC5lcXVhbCg0KTtcbiAgICAgICAgcGFydHNbMF0uc2hvdWxkLmVxdWFsKCdtJyk7XG4gICAgICAgIHBhcnRzWzFdLnNob3VsZC5lcXVhbCgnOTk5OTk5Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3ZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qga2V5Y2hhaW5zID0gW1xuICAgIHsgY29tbW9uS2V5Y2hhaW46IFRFU1RfS0VZQ0hBSU4gfSxcbiAgICB7IGNvbW1vbktleWNoYWluOiBURVNUX0tFWUNIQUlOIH0sXG4gICAgeyBjb21tb25LZXljaGFpbjogVEVTVF9LRVlDSEFJTiB9LFxuICBdO1xuICBjb25zdCBpc1ZhbGlkQWRkcmVzcyA9IChhZGRyOiBzdHJpbmcpID0+IGFkZHIubGVuZ3RoID09PSA2NDtcbiAgY29uc3QgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkgPSAocGs6IHN0cmluZykgPT4gcGs7XG5cbiAgZGVzY3JpYmUoJ01QQ3YyIHdhbGxldHMgKEJJUDMyLUVkMjU1MTkgZm9ybXVsYSknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3ZlcmlmaWVzIGEgY29ycmVjdCBhZGRyZXNzIGF0IGluZGV4IDAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MgPSBnZXRWZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IChhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpKVxuICAgICAgICAuZGVyaXZlVW5oYXJkZW5lZChURVNUX0tFWUNIQUlOLCAnbS8wJylcbiAgICAgICAgLnNsaWNlKDAsIDY0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGFkZHJlc3M6IGV4cGVjdGVkQWRkcmVzcywga2V5Y2hhaW5zLCBpbmRleDogMCwgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyB9LFxuICAgICAgICBpc1ZhbGlkQWRkcmVzcyxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCd2ZXJpZmllcyBhIGNvcnJlY3QgYWRkcmVzcyBhdCBpbmRleCAxJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKCk7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSlcbiAgICAgICAgLmRlcml2ZVVuaGFyZGVuZWQoVEVTVF9LRVlDSEFJTiwgJ20vMScpXG4gICAgICAgIC5zbGljZSgwLCA2NCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzOiBleHBlY3RlZEFkZHJlc3MsIGtleWNoYWlucywgaW5kZXg6IDEsIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicgfSxcbiAgICAgICAgaXNWYWxpZEFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhbiBhZGRyZXNzIGRlcml2ZWQgYXQgYSBkaWZmZXJlbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MgPSBnZXRWZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IGFkZHJlc3NGcm9tSW5kZXgwID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sICdtLzAnKVxuICAgICAgICAuc2xpY2UoMCwgNjQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICAgIHsgYWRkcmVzczogYWRkcmVzc0Zyb21JbmRleDAsIGtleWNoYWlucywgaW5kZXg6IDEsIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicgfSxcbiAgICAgICAgaXNWYWxpZEFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSByYW5kb20gYWRkcmVzcyB0aGF0IHdhcyBub3QgZGVyaXZlZCBmcm9tIHRoZSBrZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgcmFuZG9tQWRkcmVzcyA9ICdhYicucmVwZWF0KDMyKTsgLy8gNjQgaGV4IGNoYXJzLCB3cm9uZyBhZGRyZXNzXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzOiByYW5kb21BZGRyZXNzLCBrZXljaGFpbnMsIGluZGV4OiAwLCBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAnTVBDdjInIH0sXG4gICAgICAgIGlzVmFsaWRBZGRyZXNzLFxuICAgICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICAgKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCd2ZXJpZmllcyBhIGNvcnJlY3QgTVBDdjIgYWRkcmVzcyBmb3IgU01DIHdhbGxldCB1c2luZyBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzKCk7XG4gICAgICBjb25zdCBzZWVkID0gJ3NtYy1zZWVkLTEyMyc7XG4gICAgICBjb25zdCBwcmVmaXggPSBnZXREZXJpdmF0aW9uUGF0aChzZWVkKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IChhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpKVxuICAgICAgICAuZGVyaXZlVW5oYXJkZW5lZChURVNUX0tFWUNIQUlOLCBgJHtwcmVmaXh9LzBgKVxuICAgICAgICAuc2xpY2UoMCwgNjQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBleHBlY3RlZEFkZHJlc3MsXG4gICAgICAgICAga2V5Y2hhaW5zLFxuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicsXG4gICAgICAgICAgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZDogc2VlZCxcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZEFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuICAgICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhbiBNUEN2MiBhZGRyZXNzIGRlcml2ZWQgYXQgdGhlIHdyb25nIGluZGV4IHdoZW4gZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCBpcyBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MgPSBnZXRWZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IHNlZWQgPSAnc21jLXNlZWQtMTIzJztcbiAgICAgIGNvbnN0IHByZWZpeCA9IGdldERlcml2YXRpb25QYXRoKHNlZWQpO1xuICAgICAgY29uc3QgYWRkcmVzc0F0SW5kZXgxID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sIGAke3ByZWZpeH0vMWApXG4gICAgICAgIC5zbGljZSgwLCA2NCk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NBdEluZGV4MSxcbiAgICAgICAgICBrZXljaGFpbnMsXG4gICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyxcbiAgICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiBzZWVkLFxuICAgICAgICB9LFxuICAgICAgICBpc1ZhbGlkQWRkcmVzcyxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd2ZXJpZnlNUENXYWxsZXRBZGRyZXNzIC0gRUNEU0EgKHNlY3AyNTZrMSknLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVjZHNhS2V5Y2hhaW5zID0gW1xuICAgIHsgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH0sXG4gICAgeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfSxcbiAgICB7IGNvbW1vbktleWNoYWluOiBFQ0RTQV9LRVlDSEFJTiB9LFxuICBdO1xuICAvLyBzZWNwMjU2azEgY29tcHJlc3NlZCBwdWJsaWMga2V5IGlzIDMzIGJ5dGVzID0gNjYgaGV4IGNoYXJzXG4gIGNvbnN0IGlzVmFsaWRFY2RzYUFkZHJlc3MgPSAoYWRkcjogc3RyaW5nKSA9PiBhZGRyLmxlbmd0aCA9PT0gNjY7XG4gIGNvbnN0IGdldEFkZHJlc3NGcm9tUHVibGljS2V5ID0gKHBrOiBzdHJpbmcpID0+IHBrO1xuXG4gIGl0KCdpZ25vcmVzIG11bHRpc2lnVHlwZVZlcnNpb24gTVBDdjIgYW5kIHVzZXMgRWNkc2EgZGVyaXZhdGlvbiBmb3Igc2VjcDI1NmsxIHdhbGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeU1QQ1dhbGxldEFkZHJlc3MoKTtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSBuZXcgRWNkc2EoKS5kZXJpdmVVbmhhcmRlbmVkKEVDRFNBX0tFWUNIQUlOLCAnbS8wJykuc2xpY2UoMCwgNjYpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogZXhwZWN0ZWRBZGRyZXNzLFxuICAgICAgICBrZXljaGFpbnM6IGVjZHNhS2V5Y2hhaW5zLFxuICAgICAgICBpbmRleDogMCxcbiAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogJ01QQ3YyJyxcbiAgICAgICAga2V5Q3VydmU6ICdzZWNwMjU2azEnLFxuICAgICAgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCd2ZXJpZmllcyBhIGNvcnJlY3Qgc2VjcDI1NmsxIGFkZHJlc3MgYXQgaW5kZXggMScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5TVBDV2FsbGV0QWRkcmVzcygpO1xuICAgIGNvbnN0IGV4cGVjdGVkQWRkcmVzcyA9IG5ldyBFY2RzYSgpLmRlcml2ZVVuaGFyZGVuZWQoRUNEU0FfS0VZQ0hBSU4sICdtLzEnKS5zbGljZSgwLCA2Nik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyBhZGRyZXNzOiBleHBlY3RlZEFkZHJlc3MsIGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAxLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIGFuIGFkZHJlc3MgZGVyaXZlZCBhdCBhIGRpZmZlcmVudCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzID0gZ2V0VmVyaWZ5TVBDV2FsbGV0QWRkcmVzcygpO1xuICAgIGNvbnN0IGFkZHJlc3NBdEluZGV4MCA9IG5ldyBFY2RzYSgpLmRlcml2ZVVuaGFyZGVuZWQoRUNEU0FfS0VZQ0hBSU4sICdtLzAnKS5zbGljZSgwLCA2Nik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyBhZGRyZXNzOiBhZGRyZXNzQXRJbmRleDAsIGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAxLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleVxuICAgICk7XG4gICAgcmVzdWx0LnNob3VsZC5iZS5mYWxzZSgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZGVyaXZlTVBDV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkgPSAocGs6IHN0cmluZykgPT4gcGs7XG5cbiAgZGVzY3JpYmUoJ2VkMjU1MTkgKE1QQ3YyKScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBrZXljaGFpbnMgPSBbeyBjb21tb25LZXljaGFpbjogVEVTVF9LRVlDSEFJTiB9LCB7IGNvbW1vbktleWNoYWluOiBURVNUX0tFWUNIQUlOIH1dO1xuXG4gICAgaXQoJ2Rlcml2ZXMgdGhlIGFkZHJlc3MgYW5kIHBhdGggZm9yIHRoZSBzaW1wbGUgbS97aW5kZXh9IHBhdGgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gKGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCkpXG4gICAgICAgIC5kZXJpdmVVbmhhcmRlbmVkKFRFU1RfS0VZQ0hBSU4sICdtLzMnKVxuICAgICAgICAuc2xpY2UoMCwgNjQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWlucywgaW5kZXg6IDMsIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicsIGtleUN1cnZlOiAnZWQyNTUxOScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgICAgcmVzdWx0LmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbCgnbS8zJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndXNlcyB0aGUgU01DIHByZWZpeCBwYXRoIHdoZW4gZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCBpcyBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3Qgc2VlZCA9ICdzbWMtc2VlZC0xMjMnO1xuICAgICAgY29uc3QgcHJlZml4ID0gZ2V0RGVyaXZhdGlvblBhdGgoc2VlZCk7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSAoYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKSlcbiAgICAgICAgLmRlcml2ZVVuaGFyZGVuZWQoVEVTVF9LRVlDSEFJTiwgYCR7cHJlZml4fS8wYClcbiAgICAgICAgLnNsaWNlKDAsIDY0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVyaXZlTVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBrZXljaGFpbnMsIGluZGV4OiAwLCBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAnTVBDdjInLCBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiBzZWVkLCBrZXlDdXJ2ZTogJ2VkMjU1MTknIH0sXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuXG4gICAgICByZXN1bHQuYWRkcmVzcy5zaG91bGQuZXF1YWwoZXhwZWN0ZWRBZGRyZXNzKTtcbiAgICAgIHJlc3VsdC5kZXJpdmF0aW9uUGF0aC5zaG91bGQuZXF1YWwoYCR7cHJlZml4fS8wYCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZWNwMjU2azEnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZWNkc2FLZXljaGFpbnMgPSBbeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfSwgeyBjb21tb25LZXljaGFpbjogRUNEU0FfS0VZQ0hBSU4gfV07XG5cbiAgICBpdCgnZGVyaXZlcyB0aGUgc2VjcDI1NmsxIGFkZHJlc3MgKDMzLWJ5dGUgcHVia2V5KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRlcml2ZU1QQ1dhbGxldEFkZHJlc3MgPSBnZXREZXJpdmVNUENXYWxsZXRBZGRyZXNzKCk7XG4gICAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSBuZXcgRWNkc2EoKS5kZXJpdmVVbmhhcmRlbmVkKEVDRFNBX0tFWUNIQUlOLCAnbS8yJykuc2xpY2UoMCwgNjYpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiAyLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdC5hZGRyZXNzLnNob3VsZC5lcXVhbChleHBlY3RlZEFkZHJlc3MpO1xuICAgICAgcmVzdWx0LmRlcml2YXRpb25QYXRoLnNob3VsZC5lcXVhbCgnbS8yJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwIHdpdGggdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYW4gYWRkcmVzcyBwcm9kdWNlZCBieSBkZXJpdmVNUENXYWxsZXRBZGRyZXNzIHZlcmlmaWVzIGFzIHRydWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzID0gZ2V0RGVyaXZlTVBDV2FsbGV0QWRkcmVzcygpO1xuICAgICAgY29uc3QgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyA9IGdldFZlcmlmeU1QQ1dhbGxldEFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IGVjZHNhS2V5Y2hhaW5zID0gW3sgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH0sIHsgY29tbW9uS2V5Y2hhaW46IEVDRFNBX0tFWUNIQUlOIH1dO1xuICAgICAgY29uc3QgaXNWYWxpZEVjZHNhQWRkcmVzcyA9IChhZGRyOiBzdHJpbmcpID0+IGFkZHIubGVuZ3RoID09PSA2NjtcblxuICAgICAgY29uc3QgeyBhZGRyZXNzIH0gPSBhd2FpdCBkZXJpdmVNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgICB7IGtleWNoYWluczogZWNkc2FLZXljaGFpbnMsIGluZGV4OiA3LCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgICAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgICAgeyBhZGRyZXNzLCBrZXljaGFpbnM6IGVjZHNhS2V5Y2hhaW5zLCBpbmRleDogNywga2V5Q3VydmU6ICdzZWNwMjU2azEnIH0sXG4gICAgICAgIGlzVmFsaWRFY2RzYUFkZHJlc3MsXG4gICAgICAgIGdldEFkZHJlc3NGcm9tUHVibGljS2V5XG4gICAgICApO1xuXG4gICAgICB2ZXJpZmllZC5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|