agenticpool 1.0.13 → 1.0.14
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/auth/AuthHelper.js +6 -6
- package/dist/commands/auth.js +23 -20
- package/dist/commands/config.js +13 -10
- package/dist/commands/connections.js +48 -45
- package/dist/commands/contacts.js +47 -44
- package/dist/commands/conversations.js +13 -13
- package/dist/commands/errors.js +4 -4
- package/dist/commands/humans.js +58 -56
- package/dist/commands/identities.js +24 -21
- package/dist/commands/messages.js +6 -6
- package/dist/commands/networks.js +30 -30
- package/dist/commands/profile.js +41 -38
- package/dist/datamodel/toon/index.js +63 -65
- package/dist/index.js +0 -0
- package/dist/utils/colors.d.ts +16 -0
- package/dist/utils/colors.js +23 -0
- package/dist/utils/logger.js +7 -7
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ const AuthHelper_1 = require("../auth/AuthHelper");
|
|
|
9
9
|
const LimitsManager_1 = require("../limits/LimitsManager");
|
|
10
10
|
const datamodel_1 = require("../datamodel");
|
|
11
11
|
const logger_1 = require("../utils/logger");
|
|
12
|
-
const
|
|
12
|
+
const colors_1 = __importDefault(require("../utils/colors"));
|
|
13
13
|
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
14
14
|
function registerNetworkCommands(program) {
|
|
15
15
|
const networks = program.command('networks').description('Network management commands');
|
|
@@ -44,7 +44,7 @@ function registerNetworkCommands(program) {
|
|
|
44
44
|
}
|
|
45
45
|
else if (format === 'human') {
|
|
46
46
|
const table = new cli_table3_1.default({
|
|
47
|
-
head: [
|
|
47
|
+
head: [colors_1.default.cyan('ID'), colors_1.default.cyan('Title'), colors_1.default.cyan('Users'), colors_1.default.cyan('Description')],
|
|
48
48
|
colWidths: [20, 30, 10, 50],
|
|
49
49
|
wordWrap: true
|
|
50
50
|
});
|
|
@@ -105,7 +105,7 @@ function registerNetworkCommands(program) {
|
|
|
105
105
|
}
|
|
106
106
|
else if (format === 'human') {
|
|
107
107
|
logger_1.logger.success('✓ Network created successfully!');
|
|
108
|
-
console.log(
|
|
108
|
+
console.log(colors_1.default.gray('ID:'), networkId);
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
console.log((0, datamodel_1.encode)(response.data));
|
|
@@ -117,7 +117,7 @@ function registerNetworkCommands(program) {
|
|
|
117
117
|
if (format === 'human') {
|
|
118
118
|
logger_1.logger.info(`Profile Questions (${questionsRes.data.length}):\n`);
|
|
119
119
|
questionsRes.data.forEach((q) => {
|
|
120
|
-
console.log(`${
|
|
120
|
+
console.log(`${colors_1.default.cyan(q.order + '.')} ${q.question}${q.required ? colors_1.default.red(' *') : ''}`);
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
else if (format === 'json') {
|
|
@@ -160,14 +160,14 @@ function registerNetworkCommands(program) {
|
|
|
160
160
|
}
|
|
161
161
|
else if (format === 'human') {
|
|
162
162
|
const network = response.data;
|
|
163
|
-
console.log(
|
|
164
|
-
console.log(
|
|
165
|
-
console.log(
|
|
166
|
-
console.log(
|
|
167
|
-
console.log(
|
|
168
|
-
console.log(
|
|
163
|
+
console.log(colors_1.default.cyan.bold(`\n${network.name}\n`));
|
|
164
|
+
console.log(colors_1.default.gray('ID:'), network.id);
|
|
165
|
+
console.log(colors_1.default.gray('Description:'), network.description);
|
|
166
|
+
console.log(colors_1.default.gray('Status:'), network.status);
|
|
167
|
+
console.log(colors_1.default.gray('Public:'), network.isPublic ? 'Yes' : 'No');
|
|
168
|
+
console.log(colors_1.default.gray('Users:'), network.users);
|
|
169
169
|
if (network.longDescription) {
|
|
170
|
-
console.log(
|
|
170
|
+
console.log(colors_1.default.gray('\nParticipation Rules (Long Description):'));
|
|
171
171
|
console.log(network.longDescription);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
@@ -204,7 +204,7 @@ function registerNetworkCommands(program) {
|
|
|
204
204
|
else if (format === 'human') {
|
|
205
205
|
logger_1.logger.success(`\nProfile Questions for ${networkId}:\n`);
|
|
206
206
|
response.data.forEach((q) => {
|
|
207
|
-
console.log(`${
|
|
207
|
+
console.log(`${colors_1.default.cyan(q.order + '.')} ${q.question}${q.required ? colors_1.default.red(' *') : ''}`);
|
|
208
208
|
});
|
|
209
209
|
console.log();
|
|
210
210
|
}
|
|
@@ -249,9 +249,9 @@ function registerNetworkCommands(program) {
|
|
|
249
249
|
}
|
|
250
250
|
logger_1.logger.success(`\nYour networks (${response.data.length}):\n`);
|
|
251
251
|
response.data.forEach((network) => {
|
|
252
|
-
console.log(
|
|
253
|
-
console.log(
|
|
254
|
-
console.log(
|
|
252
|
+
console.log(colors_1.default.cyan.bold(network.name || network.id));
|
|
253
|
+
console.log(colors_1.default.gray(' ID:'), network.id);
|
|
254
|
+
console.log(colors_1.default.gray(' Description:'), network.description);
|
|
255
255
|
console.log();
|
|
256
256
|
});
|
|
257
257
|
}
|
|
@@ -286,9 +286,9 @@ function registerNetworkCommands(program) {
|
|
|
286
286
|
}
|
|
287
287
|
logger_1.logger.success(`\nLocal Network History (${history.length}):\n`);
|
|
288
288
|
history.forEach(item => {
|
|
289
|
-
console.log(
|
|
289
|
+
console.log(colors_1.default.cyan.bold(item.id));
|
|
290
290
|
if (item.reason) {
|
|
291
|
-
console.log(
|
|
291
|
+
console.log(colors_1.default.gray(' Reason:'), item.reason);
|
|
292
292
|
}
|
|
293
293
|
console.log();
|
|
294
294
|
});
|
|
@@ -322,9 +322,9 @@ function registerNetworkCommands(program) {
|
|
|
322
322
|
else if (format === 'human') {
|
|
323
323
|
logger_1.logger.success(`\nMembers (${response.data.length}):\n`);
|
|
324
324
|
response.data.forEach((member) => {
|
|
325
|
-
console.log(
|
|
326
|
-
console.log(
|
|
327
|
-
console.log(
|
|
325
|
+
console.log(colors_1.default.cyan(member.publicToken));
|
|
326
|
+
console.log(colors_1.default.gray(' Role:'), member.role);
|
|
327
|
+
console.log(colors_1.default.gray(' Description:'), member.shortDescription || '(none)');
|
|
328
328
|
console.log();
|
|
329
329
|
});
|
|
330
330
|
}
|
|
@@ -362,8 +362,8 @@ function registerNetworkCommands(program) {
|
|
|
362
362
|
else {
|
|
363
363
|
logger_1.logger.success('✓ Already authenticated to network.');
|
|
364
364
|
}
|
|
365
|
-
console.log(
|
|
366
|
-
console.log(
|
|
365
|
+
console.log(colors_1.default.gray('Network:'), networkId);
|
|
366
|
+
console.log(colors_1.default.gray('Public Token:'), result.credentials.publicToken);
|
|
367
367
|
}
|
|
368
368
|
catch (error) {
|
|
369
369
|
logger_1.logger.error('Error:', error instanceof Error ? error.message : 'Unknown error');
|
|
@@ -398,18 +398,18 @@ function registerNetworkCommands(program) {
|
|
|
398
398
|
const data = response.data;
|
|
399
399
|
logger_1.logger.success(`\nDiscovered ${data.totalFound} networks (${options.strategy} strategy):\n`);
|
|
400
400
|
data.networks.forEach((network) => {
|
|
401
|
-
console.log(
|
|
402
|
-
console.log(
|
|
403
|
-
console.log(
|
|
404
|
-
console.log(
|
|
405
|
-
console.log(
|
|
401
|
+
console.log(colors_1.default.cyan.bold(network.name || network.id));
|
|
402
|
+
console.log(colors_1.default.gray(' ID:'), network.id);
|
|
403
|
+
console.log(colors_1.default.gray(' Description:'), network.description);
|
|
404
|
+
console.log(colors_1.default.gray(' Users:'), network.users);
|
|
405
|
+
console.log(colors_1.default.gray(' Status:'), network.status);
|
|
406
406
|
console.log();
|
|
407
407
|
});
|
|
408
408
|
if (data.recommendedForYou && data.recommendedForYou.length > 0) {
|
|
409
409
|
logger_1.logger.info('\nRecommended for you:\n');
|
|
410
410
|
data.recommendedForYou.forEach((rec) => {
|
|
411
|
-
console.log(
|
|
412
|
-
console.log(
|
|
411
|
+
console.log(colors_1.default.cyan(` ${rec.networkId}`));
|
|
412
|
+
console.log(colors_1.default.gray(' Reason:'), rec.reason);
|
|
413
413
|
console.log();
|
|
414
414
|
});
|
|
415
415
|
}
|
|
@@ -427,4 +427,4 @@ function registerNetworkCommands(program) {
|
|
|
427
427
|
}
|
|
428
428
|
});
|
|
429
429
|
}
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbmV0d29ya3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSwwREFzYUM7QUE5YUQsc0NBQTBDO0FBQzFDLG1EQUFnRDtBQUNoRCwyREFBd0Q7QUFDeEQsNENBQXNDO0FBQ3RDLDRDQUF5QztBQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsNERBQStCO0FBRS9CLFNBQWdCLHVCQUF1QixDQUFDLE9BQWdCO0lBQ3RELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFeEYsUUFBUTtTQUNMLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixXQUFXLENBQUMsc0JBQXNCLENBQUM7U0FDbkMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLG9DQUFvQyxDQUFDO1NBQ25FLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO1NBQ3JELE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLENBQUM7U0FDdkUsTUFBTSxDQUFDLFNBQVMsRUFBRSw2QkFBNkIsQ0FBQztTQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV4RCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7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QUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBQ2pELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFBLGtCQUFNLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksNkJBQTZCLENBQUMsQ0FBQztZQUNuRixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vYXV0aC9BdXRoSGVscGVyJztcbmltcG9ydCB7IGxpbWl0c01hbmFnZXIgfSBmcm9tICcuLi9saW1pdHMvTGltaXRzTWFuYWdlcic7XG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tICcuLi9kYXRhbW9kZWwnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcbmNvbnN0IGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKTtcbmltcG9ydCBUYWJsZSBmcm9tICdjbGktdGFibGUzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmV0d29ya0NvbW1hbmRzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgY29uc3QgbmV0d29ya3MgPSBwcm9ncmFtLmNvbW1hbmQoJ25ldHdvcmtzJykuZGVzY3JpcHRpb24oJ05ldHdvcmsgbWFuYWdlbWVudCBjb21tYW5kcycpO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ2xpc3QnKVxuICAgIC5kZXNjcmlwdGlvbignTGlzdCBwdWJsaWMgbmV0d29ya3MnKVxuICAgIC5vcHRpb24oJy1mLCAtLWZpbHRlciA8dHlwZT4nLCAnRmlsdGVyOiBwb3B1bGFyLCBuZXdlc3QsIHVucG9wdWxhcicpXG4gICAgLm9wdGlvbignLWwsIC0tbGltaXQgPG51bWJlcj4nLCAnTGltaXQgcmVzdWx0cycsICc1MCcpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIFxuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oJ0ZldGNoaW5nIHB1YmxpYyBuZXR3b3Jrcy4uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRBcGlDbGllbnQoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PGFueVtdPignL3YxL25ldHdvcmtzJywge1xuICAgICAgICAgIHN0cmF0ZWd5OiBvcHRpb25zLmZpbHRlcixcbiAgICAgICAgICBsaW1pdDogb3B0aW9ucy5saW1pdCxcbiAgICAgICAgICBzaG9ydDogJ3RydWUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSByZXNwb25zZS5kYXRhLm1hcChuZXQgPT4gKHtcbiAgICAgICAgICAgIGlkOiBuZXQuaWQsXG4gICAgICAgICAgICB0aXRsZTogbmV0Lm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogbmV0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdXNlcnM6IG5ldC51c2Vyc1xuICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWREYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKHtcbiAgICAgICAgICAgICAgaGVhZDogW2NoYWxrLmN5YW4oJ0lEJyksIGNoYWxrLmN5YW4oJ1RpdGxlJyksIGNoYWxrLmN5YW4oJ1VzZXJzJyksIGNoYWxrLmN5YW4oJ0Rlc2NyaXB0aW9uJyldLFxuICAgICAgICAgICAgICBjb2xXaWR0aHM6IFsyMCwgMzAsIDEwLCA1MF0sXG4gICAgICAgICAgICAgIHdvcmRXcmFwOiB0cnVlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZmlsdGVyZWREYXRhLmZvckVhY2gobmV0ID0+IHtcbiAgICAgICAgICAgICAgdGFibGUucHVzaChbbmV0LmlkLCBuZXQudGl0bGUsIG5ldC51c2VycywgbmV0LmRlc2NyaXB0aW9uXSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc29sZS5sb2codGFibGUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIERlZmF1bHQ6IFRPT05cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVuY29kZShmaWx0ZXJlZERhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxpc3QgbmV0d29ya3MnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgbmV0d29ya3NcbiAgICAuY29tbWFuZCgnY3JlYXRlJylcbiAgICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5ldyBuZXR3b3JrJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ05ldHdvcmsgbmFtZScpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctZCwgLS1kZXNjcmlwdGlvbiA8ZGVzYz4nLCAnU2hvcnQgZGVzY3JpcHRpb24nKVxuICAgIC5vcHRpb24oJy1sLCAtLWxvbmctZGVzY3JpcHRpb24gPGRlc2M+JywgJ0xvbmcgZGVzY3JpcHRpb24gKG1hcmtkb3duKScpXG4gICAgLm9wdGlvbignLS1sb2dvIDx1cmw+JywgJ0xvZ28gVVJMJylcbiAgICAub3B0aW9uKCctLXByaXZhdGUnLCAnTWFrZSBuZXR3b3JrIHByaXZhdGUnKVxuICAgIC5vcHRpb24oJy0tcXVlc3Rpb25zJywgJ1Nob3cgcHJvZmlsZSBxdWVzdGlvbnMgYWZ0ZXIgY3JlYXRpb24nKVxuICAgIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRvb24sIGpzb24sIGh1bWFuJywgJ3Rvb24nKVxuICAgIC5vcHRpb24oJy0taHVtYW4nLCAnU2hvcnRjdXQgZm9yIC0tZm9ybWF0IGh1bWFuJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKCdDcmVhdGluZyBuZXcgbmV0d29yayBjb21tdW5pdHkuLi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgY2xpZW50IH0gPSBhd2FpdCBBdXRoSGVscGVyLmdldEZpcnN0QXV0aGVudGljYXRlZENsaWVudCgpO1xuXG4gICAgICAgIGNvbnN0IG1pbmVSZXMgPSBhd2FpdCBjbGllbnQuZ2V0PGFueVtdPignL3YxL25ldHdvcmtzL21pbmUnKTtcbiAgICAgICAgY29uc3QgY3VycmVudENvdW50ID0gbWluZVJlcy5zdWNjZXNzICYmIG1pbmVSZXMuZGF0YSA/IG1pbmVSZXMuZGF0YS5sZW5ndGggOiAwO1xuICAgICAgICBjb25zdCBsaW1pdENoZWNrID0gYXdhaXQgbGltaXRzTWFuYWdlci5jYW5DcmVhdGVOZXR3b3JrKGN1cnJlbnRDb3VudCk7XG4gICAgICAgIGlmICghbGltaXRDaGVjay5hbGxvd2VkKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdMaW1pdDonLCBsaW1pdENoZWNrLnJlYXNvbik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxhbnk+KCcvdjEvbmV0d29ya3MnLCB7XG4gICAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGxvbmdEZXNjcmlwdGlvbjogb3B0aW9ucy5sb25nRGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgbG9nb1VybDogb3B0aW9ucy5sb2dvIHx8ICcnLFxuICAgICAgICAgIGlzUHVibGljOiAhb3B0aW9ucy5wcml2YXRlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBjb25zdCBuZXR3b3JrSWQgPSByZXNwb25zZS5kYXRhLmlkO1xuXG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgTmV0d29yayBjcmVhdGVkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0lEOicpLCBuZXR3b3JrSWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRpb25zLnF1ZXN0aW9ucyAmJiBuZXR3b3JrSWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgICBjb25zdCBxdWVzdGlvbnNSZXMgPSBhd2FpdCBjbGllbnQuZ2V0PGFueVtdPihgL3YxL25ldHdvcmtzLyR7bmV0d29ya0lkfS9wcm9maWxlL3F1ZXN0aW9uc2ApO1xuICAgICAgICAgICAgaWYgKHF1ZXN0aW9uc1Jlcy5zdWNjZXNzICYmIHF1ZXN0aW9uc1Jlcy5kYXRhICYmIHF1ZXN0aW9uc1Jlcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBQcm9maWxlIFF1ZXN0aW9ucyAoJHtxdWVzdGlvbnNSZXMuZGF0YS5sZW5ndGh9KTpcXG5gKTtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnNSZXMuZGF0YS5mb3JFYWNoKChxOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmN5YW4ocS5vcmRlciArICcuJyl9ICR7cS5xdWVzdGlvbn0ke3EucmVxdWlyZWQgPyBjaGFsay5yZWQoJyAqJykgOiAnJ31gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHF1ZXN0aW9uc1Jlcy5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHF1ZXN0aW9uc1Jlcy5kYXRhKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyBwcm9maWxlIHF1ZXN0aW9ucyBkZWZpbmVkIGZvciB0aGlzIG5ldHdvcmsuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgcmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBjcmVhdGUgbmV0d29yaycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdzaG93JylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgZnVsbCBuZXR3b3JrIGRldGFpbHMgKHByb2ZpbGUgY2FyZCknKVxuICAgIC5hcmd1bWVudCgnPG5ldHdvcmtJZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG5ldHdvcmtJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5odW1hbiA/ICdodW1hbicgOiBvcHRpb25zLmZvcm1hdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgRmV0Y2hpbmcgZGV0YWlscyBmb3IgbmV0d29yazogJHtuZXR3b3JrSWR9Li4uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55PihgL3YxL25ldHdvcmtzLyR7bmV0d29ya0lkfWApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgY29uc3QgbmV0d29yayA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoYFxcbiR7bmV0d29yay5uYW1lfVxcbmApKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0lEOicpLCBuZXR3b3JrLmlkKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ0Rlc2NyaXB0aW9uOicpLCBuZXR3b3JrLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1N0YXR1czonKSwgbmV0d29yay5zdGF0dXMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnUHVibGljOicpLCBuZXR3b3JrLmlzUHVibGljID8gJ1llcycgOiAnTm8nKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1VzZXJzOicpLCBuZXR3b3JrLnVzZXJzKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKG5ldHdvcmsubG9uZ0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1xcblBhcnRpY2lwYXRpb24gUnVsZXMgKExvbmcgRGVzY3JpcHRpb24pOicpKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cobmV0d29yay5sb25nRGVzY3JpcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdOZXR3b3JrIG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdxdWVzdGlvbnMnKVxuICAgIC5kZXNjcmlwdGlvbignR2V0IHByb2ZpbGUgcXVlc3Rpb25zIGZvciBhIG5ldHdvcmsnKVxuICAgIC5hcmd1bWVudCgnPG5ldHdvcmtJZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG5ldHdvcmtJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5odW1hbiA/ICdodW1hbicgOiBvcHRpb25zLmZvcm1hdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgRmV0Y2hpbmcgcHJvZmlsZSBxdWVzdGlvbnMgZm9yICR7bmV0d29ya0lkfS4uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRBcGlDbGllbnQoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PGFueVtdPihgL3YxL25ldHdvcmtzLyR7bmV0d29ya0lkfS9wcm9maWxlL3F1ZXN0aW9uc2ApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFxcblByb2ZpbGUgUXVlc3Rpb25zIGZvciAke25ldHdvcmtJZH06XFxuYCk7XG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLmZvckVhY2goKHE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5jeWFuKHEub3JkZXIgKyAnLicpfSAke3EucXVlc3Rpb259JHtxLnJlcXVpcmVkID8gY2hhbGsucmVkKCcgKicpIDogJyd9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVuY29kZShyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykgY29uc29sZS5sb2coJ1tdJyk7XG4gICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSAndG9vbicpIGNvbnNvbGUubG9nKGVuY29kZShbXSkpO1xuICAgICAgICAgIGVsc2UgbG9nZ2VyLndhcm4oJ05vIHF1ZXN0aW9ucyBmb3VuZCBmb3IgdGhpcyBuZXR3b3JrLicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdtaW5lJylcbiAgICAuZGVzY3JpcHRpb24oJ0xpc3QgeW91ciBuZXR3b3JrcycpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIFxuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oJ0ZldGNoaW5nIHlvdXIgcmVnaXN0ZXJlZCBuZXR3b3Jrcy4uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjbGllbnQgfSA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0Rmlyc3RBdXRoZW50aWNhdGVkQ2xpZW50KCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PGFueVtdPignL3YxL25ldHdvcmtzL21pbmUnKTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBsb2dnZXIud2FybignTm8gbmV0d29ya3MgZm91bmQuJyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFxcbllvdXIgbmV0d29ya3MgKCR7cmVzcG9uc2UuZGF0YS5sZW5ndGh9KTpcXG5gKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZm9yRWFjaCgobmV0d29yazogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChuZXR3b3JrLm5hbWUgfHwgbmV0d29yay5pZCkpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIElEOicpLCBuZXR3b3JrLmlkKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBEZXNjcmlwdGlvbjonKSwgbmV0d29yay5kZXNjcmlwdGlvbik7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxpc3QgbmV0d29ya3MnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgbmV0d29ya3NcbiAgICAuY29tbWFuZCgnaGlzdG9yeScpXG4gICAgLmRlc2NyaXB0aW9uKCdTaG93IGxvY2FsIG5ldHdvcmsgaGlzdG9yeSAoc29jaWFsIG1lbW9yeSknKVxuICAgIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRvb24sIGpzb24sIGh1bWFuJywgJ3Rvb24nKVxuICAgIC5vcHRpb24oJy0taHVtYW4nLCAnU2hvcnRjdXQgZm9yIC0tZm9ybWF0IGh1bWFuJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gYXdhaXQgY29uZmlnTWFuYWdlci5nZXROZXR3b3JrSGlzdG9yeSgpO1xuXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGhpc3RvcnksIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBpZiAoaGlzdG9yeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyBsb2NhbCBoaXN0b3J5IGZvdW5kLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKGBcXG5Mb2NhbCBOZXR3b3JrIEhpc3RvcnkgKCR7aGlzdG9yeS5sZW5ndGh9KTpcXG5gKTtcbiAgICAgICAgICBoaXN0b3J5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoaXRlbS5pZCkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0ucmVhc29uKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgUmVhc29uOicpLCBpdGVtLnJlYXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVuY29kZShoaXN0b3J5KSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ21lbWJlcnMnKVxuICAgIC5kZXNjcmlwdGlvbignTGlzdCBuZXR3b3JrIG1lbWJlcnMnKVxuICAgIC5hcmd1bWVudCgnPG5ldHdvcmtJZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG5ldHdvcmtJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5odW1hbiA/ICdodW1hbicgOiBvcHRpb25zLmZvcm1hdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgRmV0Y2hpbmcgbWVtYmVycyBmb3IgJHtuZXR3b3JrSWR9Li4uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KGAvdjEvbmV0d29ya3MvJHtuZXR3b3JrSWR9L21lbWJlcnNgKTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKGBcXG5NZW1iZXJzICgke3Jlc3BvbnNlLmRhdGEubGVuZ3RofSk6XFxuYCk7XG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLmZvckVhY2goKG1lbWJlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4obWVtYmVyLnB1YmxpY1Rva2VuKSk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgUm9sZTonKSwgbWVtYmVyLnJvbGUpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIERlc2NyaXB0aW9uOicpLCBtZW1iZXIuc2hvcnREZXNjcmlwdGlvbiB8fCAnKG5vbmUpJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxpc3QgbWVtYmVycycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdqb2luJylcbiAgICAuZGVzY3JpcHRpb24oJ0pvaW4gYSBuZXR3b3JrIChhdXRvLXJlZ2lzdGVyIGlmIG5lZWRlZCknKVxuICAgIC5hcmd1bWVudCgnPG5ldHdvcmtJZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgSm9pbmluZyBuZXR3b3JrIGNvbW11bml0eTogJHtuZXR3b3JrSWR9Li4uYCk7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50OiBhdXRoQ2xpZW50IH0gPSBhd2FpdCBBdXRoSGVscGVyLmdldEZpcnN0QXV0aGVudGljYXRlZENsaWVudCgpO1xuICAgICAgICBjb25zdCBtaW5lUmVzID0gYXdhaXQgYXV0aENsaWVudC5nZXQ8YW55W10+KCcvdjEvbmV0d29ya3MvbWluZScpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBtaW5lUmVzLnN1Y2Nlc3MgJiYgbWluZVJlcy5kYXRhID8gbWluZVJlcy5kYXRhLmxlbmd0aCA6IDA7XG4gICAgICAgIGNvbnN0IGxpbWl0Q2hlY2sgPSBhd2FpdCBsaW1pdHNNYW5hZ2VyLmNhbkpvaW5OZXR3b3JrKGN1cnJlbnRDb3VudCk7XG4gICAgICAgIGlmICghbGltaXRDaGVjay5hbGxvd2VkKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdMaW1pdDonLCBsaW1pdENoZWNrLnJlYXNvbik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgQXV0aEhlbHBlci5lbnN1cmVBdXRoZW50aWNhdGVkKG5ldHdvcmtJZCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5pc05ld1VzZXIpIHtcbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIEpvaW5lZCBuZXR3b3JrIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuc3VjY2Vzcygn4pyTIEFscmVhZHkgYXV0aGVudGljYXRlZCB0byBuZXR3b3JrLicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ05ldHdvcms6JyksIG5ldHdvcmtJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJ1B1YmxpYyBUb2tlbjonKSwgcmVzdWx0LmNyZWRlbnRpYWxzLnB1YmxpY1Rva2VuKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ2Rpc2NvdmVyJylcbiAgICAuZGVzY3JpcHRpb24oJ0Rpc2NvdmVyIG5ldHdvcmtzIGJ5IHN0cmF0ZWd5JylcbiAgICAub3B0aW9uKCctcywgLS1zdHJhdGVneSA8dHlwZT4nLCAnU3RyYXRlZ3k6IHBvcHVsYXIsIG5ld2VzdCwgdW5wb3B1bGFyLCByZWNvbW1lbmRlZCcsICdwb3B1bGFyJylcbiAgICAub3B0aW9uKCctbCwgLS1saW1pdCA8bnVtYmVyPicsICdMaW1pdCByZXN1bHRzJywgJzIwJylcbiAgICAub3B0aW9uKCctbiwgLS1uZXR3b3JrIDxpZD4nLCAnVGFyZ2V0IG5ldHdvcmsgKGZvciByZWNvbW1lbmRlZCBzdHJhdGVneSknKVxuICAgIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRvb24sIGpzb24sIGh1bWFuJywgJ3Rvb24nKVxuICAgIC5vcHRpb24oJy0taHVtYW4nLCAnU2hvcnRjdXQgZm9yIC0tZm9ybWF0IGh1bWFuJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBSdW5uaW5nIGRpc2NvdmVyeSBzdHJhdGVneTogJHtvcHRpb25zLnN0cmF0ZWd5fS4uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRBcGlDbGllbnQoKTtcbiAgICAgICAgY2xpZW50LnNldEZvcm1hdCgnanNvbicpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55PignL3YxL25ldHdvcmtzL2Rpc2NvdmVyJywge1xuICAgICAgICAgIHN0cmF0ZWd5OiBvcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgICAgIGxpbWl0OiBvcHRpb25zLmxpbWl0LFxuICAgICAgICAgIG5ldHdvcms6IG9wdGlvbnMubmV0d29ya1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFxcbkRpc2NvdmVyZWQgJHtkYXRhLnRvdGFsRm91bmR9IG5ldHdvcmtzICgke29wdGlvbnMuc3RyYXRlZ3l9IHN0cmF0ZWd5KTpcXG5gKTtcblxuICAgICAgICAgICAgZGF0YS5uZXR3b3Jrcy5mb3JFYWNoKChuZXR3b3JrOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKG5ldHdvcmsubmFtZSB8fCBuZXR3b3JrLmlkKSk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgSUQ6JyksIG5ldHdvcmsuaWQpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIERlc2NyaXB0aW9uOicpLCBuZXR3b3JrLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBVc2VyczonKSwgbmV0d29yay51c2Vycyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgU3RhdHVzOicpLCBuZXR3b3JrLnN0YXR1cyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGRhdGEucmVjb21tZW5kZWRGb3JZb3UgJiYgZGF0YS5yZWNvbW1lbmRlZEZvcllvdS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdcXG5SZWNvbW1lbmRlZCBmb3IgeW91OlxcbicpO1xuICAgICAgICAgICAgICBkYXRhLnJlY29tbWVuZGVkRm9yWW91LmZvckVhY2goKHJlYzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgICAke3JlYy5uZXR3b3JrSWR9YCkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgUmVhc29uOicpLCByZWMucmVhc29uKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGRpc2NvdmVyIG5ldHdvcmtzJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbmV0d29ya3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSwwREFzYUM7QUE5YUQsc0NBQTBDO0FBQzFDLG1EQUFnRDtBQUNoRCwyREFBd0Q7QUFDeEQsNENBQXNDO0FBQ3RDLDRDQUF5QztBQUN6Qyw2REFBb0M7QUFDcEMsNERBQStCO0FBRS9CLFNBQWdCLHVCQUF1QixDQUFDLE9BQWdCO0lBQ3RELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFeEYsUUFBUTtTQUNMLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixXQUFXLENBQUMsc0JBQXNCLENBQUM7U0FDbkMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLG9DQUFvQyxDQUFDO1NBQ25FLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO1NBQ3JELE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLENBQUM7U0FDdkUsTUFBTSxDQUFDLFNBQVMsRUFBRSw2QkFBNkIsQ0FBQztTQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV4RCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENB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LGdCQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7NEJBQ2pELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFBLGtCQUFNLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksNkJBQTZCLENBQUMsQ0FBQztZQUNuRixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixlQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgY29uZmlnTWFuYWdlciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vYXV0aC9BdXRoSGVscGVyJztcbmltcG9ydCB7IGxpbWl0c01hbmFnZXIgfSBmcm9tICcuLi9saW1pdHMvTGltaXRzTWFuYWdlcic7XG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tICcuLi9kYXRhbW9kZWwnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcbmltcG9ydCBjaGFsayBmcm9tICcuLi91dGlscy9jb2xvcnMnO1xuaW1wb3J0IFRhYmxlIGZyb20gJ2NsaS10YWJsZTMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJOZXR3b3JrQ29tbWFuZHMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBjb25zdCBuZXR3b3JrcyA9IHByb2dyYW0uY29tbWFuZCgnbmV0d29ya3MnKS5kZXNjcmlwdGlvbignTmV0d29yayBtYW5hZ2VtZW50IGNvbW1hbmRzJyk7XG5cbiAgbmV0d29ya3NcbiAgICAuY29tbWFuZCgnbGlzdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdMaXN0IHB1YmxpYyBuZXR3b3JrcycpXG4gICAgLm9wdGlvbignLWYsIC0tZmlsdGVyIDx0eXBlPicsICdGaWx0ZXI6IHBvcHVsYXIsIG5ld2VzdCwgdW5wb3B1bGFyJylcbiAgICAub3B0aW9uKCctbCwgLS1saW1pdCA8bnVtYmVyPicsICdMaW1pdCByZXN1bHRzJywgJzUwJylcbiAgICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0b29uLCBqc29uLCBodW1hbicsICd0b29uJylcbiAgICAub3B0aW9uKCctLWh1bWFuJywgJ1Nob3J0Y3V0IGZvciAtLWZvcm1hdCBodW1hbicpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5odW1hbiA/ICdodW1hbicgOiBvcHRpb25zLmZvcm1hdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgcHVibGljIG5ldHdvcmtzLi4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KCcvdjEvbmV0d29ya3MnLCB7XG4gICAgICAgICAgc3RyYXRlZ3k6IG9wdGlvbnMuZmlsdGVyLFxuICAgICAgICAgIGxpbWl0OiBvcHRpb25zLmxpbWl0LFxuICAgICAgICAgIHNob3J0OiAndHJ1ZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHJlc3BvbnNlLmRhdGEubWFwKG5ldCA9PiAoe1xuICAgICAgICAgICAgaWQ6IG5ldC5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBuZXQubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBuZXQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB1c2VyczogbmV0LnVzZXJzXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShmaWx0ZXJlZERhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGUoe1xuICAgICAgICAgICAgICBoZWFkOiBbY2hhbGsuY3lhbignSUQnKSwgY2hhbGsuY3lhbignVGl0bGUnKSwgY2hhbGsuY3lhbignVXNlcnMnKSwgY2hhbGsuY3lhbignRGVzY3JpcHRpb24nKV0sXG4gICAgICAgICAgICAgIGNvbFdpZHRoczogWzIwLCAzMCwgMTAsIDUwXSxcbiAgICAgICAgICAgICAgd29yZFdyYXA6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmaWx0ZXJlZERhdGEuZm9yRWFjaChuZXQgPT4ge1xuICAgICAgICAgICAgICB0YWJsZS5wdXNoKFtuZXQuaWQsIG5ldC50aXRsZSwgbmV0LnVzZXJzLCBuZXQuZGVzY3JpcHRpb25dKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0YWJsZS50b1N0cmluZygpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRGVmYXVsdDogVE9PTlxuICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKGZpbHRlcmVkRGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gbGlzdCBuZXR3b3JrcycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdjcmVhdGUnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmV3IG5ldHdvcmsnKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLW4sIC0tbmFtZSA8bmFtZT4nLCAnTmV0d29yayBuYW1lJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1kLCAtLWRlc2NyaXB0aW9uIDxkZXNjPicsICdTaG9ydCBkZXNjcmlwdGlvbicpXG4gICAgLm9wdGlvbignLWwsIC0tbG9uZy1kZXNjcmlwdGlvbiA8ZGVzYz4nLCAnTG9uZyBkZXNjcmlwdGlvbiAobWFya2Rvd24pJylcbiAgICAub3B0aW9uKCctLWxvZ28gPHVybD4nLCAnTG9nbyBVUkwnKVxuICAgIC5vcHRpb24oJy0tcHJpdmF0ZScsICdNYWtlIG5ldHdvcmsgcHJpdmF0ZScpXG4gICAgLm9wdGlvbignLS1xdWVzdGlvbnMnLCAnU2hvdyBwcm9maWxlIHF1ZXN0aW9ucyBhZnRlciBjcmVhdGlvbicpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIFxuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oJ0NyZWF0aW5nIG5ldyBuZXR3b3JrIGNvbW11bml0eS4uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjbGllbnQgfSA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0Rmlyc3RBdXRoZW50aWNhdGVkQ2xpZW50KCk7XG5cbiAgICAgICAgY29uc3QgbWluZVJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KCcvdjEvbmV0d29ya3MvbWluZScpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBtaW5lUmVzLnN1Y2Nlc3MgJiYgbWluZVJlcy5kYXRhID8gbWluZVJlcy5kYXRhLmxlbmd0aCA6IDA7XG4gICAgICAgIGNvbnN0IGxpbWl0Q2hlY2sgPSBhd2FpdCBsaW1pdHNNYW5hZ2VyLmNhbkNyZWF0ZU5ldHdvcmsoY3VycmVudENvdW50KTtcbiAgICAgICAgaWYgKCFsaW1pdENoZWNrLmFsbG93ZWQpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0xpbWl0OicsIGxpbWl0Q2hlY2sucmVhc29uKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PGFueT4oJy92MS9uZXR3b3JrcycsIHtcbiAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgbG9uZ0Rlc2NyaXB0aW9uOiBvcHRpb25zLmxvbmdEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBsb2dvVXJsOiBvcHRpb25zLmxvZ28gfHwgJycsXG4gICAgICAgICAgaXNQdWJsaWM6ICFvcHRpb25zLnByaXZhdGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGNvbnN0IG5ldHdvcmtJZCA9IHJlc3BvbnNlLmRhdGEuaWQ7XG5cbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ+KckyBOZXR3b3JrIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnSUQ6JyksIG5ldHdvcmtJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVuY29kZShyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMucXVlc3Rpb25zICYmIG5ldHdvcmtJZCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uc1JlcyA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KGAvdjEvbmV0d29ya3MvJHtuZXR3b3JrSWR9L3Byb2ZpbGUvcXVlc3Rpb25zYCk7XG4gICAgICAgICAgICBpZiAocXVlc3Rpb25zUmVzLnN1Y2Nlc3MgJiYgcXVlc3Rpb25zUmVzLmRhdGEgJiYgcXVlc3Rpb25zUmVzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFByb2ZpbGUgUXVlc3Rpb25zICgke3F1ZXN0aW9uc1Jlcy5kYXRhLmxlbmd0aH0pOlxcbmApO1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uc1Jlcy5kYXRhLmZvckVhY2goKHE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7Y2hhbGsuY3lhbihxLm9yZGVyICsgJy4nKX0gJHtxLnF1ZXN0aW9ufSR7cS5yZXF1aXJlZCA/IGNoYWxrLnJlZCgnIConKSA6ICcnfWApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocXVlc3Rpb25zUmVzLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocXVlc3Rpb25zUmVzLmRhdGEpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ05vIHByb2ZpbGUgcXVlc3Rpb25zIGRlZmluZWQgZm9yIHRoaXMgbmV0d29yay4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGNyZWF0ZSBuZXR3b3JrJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ3Nob3cnKVxuICAgIC5kZXNjcmlwdGlvbignU2hvdyBmdWxsIG5ldHdvcmsgZGV0YWlscyAocHJvZmlsZSBjYXJkKScpXG4gICAgLmFyZ3VtZW50KCc8bmV0d29ya0lkPicsICdOZXR3b3JrIElEJylcbiAgICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0b29uLCBqc29uLCBodW1hbicsICd0b29uJylcbiAgICAub3B0aW9uKCctLWh1bWFuJywgJ1Nob3J0Y3V0IGZvciAtLWZvcm1hdCBodW1hbicpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkLCBvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBGZXRjaGluZyBkZXRhaWxzIGZvciBuZXR3b3JrOiAke25ldHdvcmtJZH0uLi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0QXBpQ2xpZW50KCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxhbnk+KGAvdjEvbmV0d29ya3MvJHtuZXR3b3JrSWR9YCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICBjb25zdCBuZXR3b3JrID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChgXFxuJHtuZXR3b3JrLm5hbWV9XFxuYCkpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnSUQ6JyksIG5ldHdvcmsuaWQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnRGVzY3JpcHRpb246JyksIG5ldHdvcmsuZGVzY3JpcHRpb24pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnU3RhdHVzOicpLCBuZXR3b3JrLnN0YXR1cyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdQdWJsaWM6JyksIG5ldHdvcmsuaXNQdWJsaWMgPyAnWWVzJyA6ICdObycpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnVXNlcnM6JyksIG5ldHdvcmsudXNlcnMpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAobmV0d29yay5sb25nRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnXFxuUGFydGljaXBhdGlvbiBSdWxlcyAoTG9uZyBEZXNjcmlwdGlvbik6JykpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXR3b3JrLmxvbmdEZXNjcmlwdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVuY29kZShyZXNwb25zZS5kYXRhKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgcmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ05ldHdvcmsgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ3F1ZXN0aW9ucycpXG4gICAgLmRlc2NyaXB0aW9uKCdHZXQgcHJvZmlsZSBxdWVzdGlvbnMgZm9yIGEgbmV0d29yaycpXG4gICAgLmFyZ3VtZW50KCc8bmV0d29ya0lkPicsICdOZXR3b3JrIElEJylcbiAgICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0b29uLCBqc29uLCBodW1hbicsICd0b29uJylcbiAgICAub3B0aW9uKCctLWh1bWFuJywgJ1Nob3J0Y3V0IGZvciAtLWZvcm1hdCBodW1hbicpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkLCBvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBGZXRjaGluZyBwcm9maWxlIHF1ZXN0aW9ucyBmb3IgJHtuZXR3b3JrSWR9Li4uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KGAvdjEvbmV0d29ya3MvJHtuZXR3b3JrSWR9L3Byb2ZpbGUvcXVlc3Rpb25zYCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICBsb2dnZXIuc3VjY2VzcyhgXFxuUHJvZmlsZSBRdWVzdGlvbnMgZm9yICR7bmV0d29ya0lkfTpcXG5gKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZm9yRWFjaCgocTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmN5YW4ocS5vcmRlciArICcuJyl9ICR7cS5xdWVzdGlvbn0ke3EucmVxdWlyZWQgPyBjaGFsay5yZWQoJyAqJykgOiAnJ31gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHJlc3BvbnNlLmRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSBjb25zb2xlLmxvZygnW10nKTtcbiAgICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09ICd0b29uJykgY29uc29sZS5sb2coZW5jb2RlKFtdKSk7XG4gICAgICAgICAgZWxzZSBsb2dnZXIud2FybignTm8gcXVlc3Rpb25zIGZvdW5kIGZvciB0aGlzIG5ldHdvcmsuJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ21pbmUnKVxuICAgIC5kZXNjcmlwdGlvbignTGlzdCB5b3VyIG5ldHdvcmtzJylcbiAgICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0b29uLCBqc29uLCBodW1hbicsICd0b29uJylcbiAgICAub3B0aW9uKCctLWh1bWFuJywgJ1Nob3J0Y3V0IGZvciAtLWZvcm1hdCBodW1hbicpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5odW1hbiA/ICdodW1hbicgOiBvcHRpb25zLmZvcm1hdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgeW91ciByZWdpc3RlcmVkIG5ldHdvcmtzLi4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGNsaWVudCB9ID0gYXdhaXQgQXV0aEhlbHBlci5nZXRGaXJzdEF1dGhlbnRpY2F0ZWRDbGllbnQoKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KCcvdjEvbmV0d29ya3MvbWluZScpO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyBuZXR3b3JrcyBmb3VuZC4nKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2dnZXIuc3VjY2VzcyhgXFxuWW91ciBuZXR3b3JrcyAoJHtyZXNwb25zZS5kYXRhLmxlbmd0aH0pOlxcbmApO1xuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5mb3JFYWNoKChuZXR3b3JrOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKG5ldHdvcmsubmFtZSB8fCBuZXR3b3JrLmlkKSk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgSUQ6JyksIG5ldHdvcmsuaWQpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIERlc2NyaXB0aW9uOicpLCBuZXR3b3JrLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gbGlzdCBuZXR3b3JrcycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBuZXR3b3Jrc1xuICAgIC5jb21tYW5kKCdoaXN0b3J5JylcbiAgICAuZGVzY3JpcHRpb24oJ1Nob3cgbG9jYWwgbmV0d29yayBoaXN0b3J5IChzb2NpYWwgbWVtb3J5KScpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBhd2FpdCBjb25maWdNYW5hZ2VyLmdldE5ldHdvcmtIaXN0b3J5KCk7XG5cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoaGlzdG9yeSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ05vIGxvY2FsIGhpc3RvcnkgZm91bmQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFxcbkxvY2FsIE5ldHdvcmsgSGlzdG9yeSAoJHtoaXN0b3J5Lmxlbmd0aH0pOlxcbmApO1xuICAgICAgICAgIGhpc3RvcnkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChpdGVtLmlkKSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5yZWFzb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBSZWFzb246JyksIGl0ZW0ucmVhc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKGhpc3RvcnkpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgbmV0d29ya3NcbiAgICAuY29tbWFuZCgnbWVtYmVycycpXG4gICAgLmRlc2NyaXB0aW9uKCdMaXN0IG5ldHdvcmsgbWVtYmVycycpXG4gICAgLmFyZ3VtZW50KCc8bmV0d29ya0lkPicsICdOZXR3b3JrIElEJylcbiAgICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0b29uLCBqc29uLCBodW1hbicsICd0b29uJylcbiAgICAub3B0aW9uKCctLWh1bWFuJywgJ1Nob3J0Y3V0IGZvciAtLWZvcm1hdCBodW1hbicpXG4gICAgLmFjdGlvbihhc3luYyAobmV0d29ya0lkLCBvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBGZXRjaGluZyBtZW1iZXJzIGZvciAke25ldHdvcmtJZH0uLi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0QXBpQ2xpZW50KCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxhbnlbXT4oYC92MS9uZXR3b3Jrcy8ke25ldHdvcmtJZH0vbWVtYmVyc2ApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYFxcbk1lbWJlcnMgKCR7cmVzcG9uc2UuZGF0YS5sZW5ndGh9KTpcXG5gKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuZm9yRWFjaCgobWVtYmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihtZW1iZXIucHVibGljVG9rZW4pKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBSb2xlOicpLCBtZW1iZXIucm9sZSk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgRGVzY3JpcHRpb246JyksIG1lbWJlci5zaG9ydERlc2NyaXB0aW9uIHx8ICcobm9uZSknKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gbGlzdCBtZW1iZXJzJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG5ldHdvcmtzXG4gICAgLmNvbW1hbmQoJ2pvaW4nKVxuICAgIC5kZXNjcmlwdGlvbignSm9pbiBhIG5ldHdvcmsgKGF1dG8tcmVnaXN0ZXIgaWYgbmVlZGVkKScpXG4gICAgLmFyZ3VtZW50KCc8bmV0d29ya0lkPicsICdOZXR3b3JrIElEJylcbiAgICAuYWN0aW9uKGFzeW5jIChuZXR3b3JrSWQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBKb2luaW5nIG5ldHdvcmsgY29tbXVuaXR5OiAke25ldHdvcmtJZH0uLi5gKTtcbiAgICAgICAgY29uc3QgeyBjbGllbnQ6IGF1dGhDbGllbnQgfSA9IGF3YWl0IEF1dGhIZWxwZXIuZ2V0Rmlyc3RBdXRoZW50aWNhdGVkQ2xpZW50KCk7XG4gICAgICAgIGNvbnN0IG1pbmVSZXMgPSBhd2FpdCBhdXRoQ2xpZW50LmdldDxhbnlbXT4oJy92MS9uZXR3b3Jrcy9taW5lJyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb3VudCA9IG1pbmVSZXMuc3VjY2VzcyAmJiBtaW5lUmVzLmRhdGEgPyBtaW5lUmVzLmRhdGEubGVuZ3RoIDogMDtcbiAgICAgICAgY29uc3QgbGltaXRDaGVjayA9IGF3YWl0IGxpbWl0c01hbmFnZXIuY2FuSm9pbk5ldHdvcmsoY3VycmVudENvdW50KTtcbiAgICAgICAgaWYgKCFsaW1pdENoZWNrLmFsbG93ZWQpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0xpbWl0OicsIGxpbWl0Q2hlY2sucmVhc29uKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBBdXRoSGVscGVyLmVuc3VyZUF1dGhlbnRpY2F0ZWQobmV0d29ya0lkKTtcblxuICAgICAgICBpZiAocmVzdWx0LmlzTmV3VXNlcikge1xuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgSm9pbmVkIG5ldHdvcmsgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgQWxyZWFkeSBhdXRoZW50aWNhdGVkIHRvIG5ldHdvcmsuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnTmV0d29yazonKSwgbmV0d29ya0lkKTtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnUHVibGljIFRva2VuOicpLCByZXN1bHQuY3JlZGVudGlhbHMucHVibGljVG9rZW4pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgbmV0d29ya3NcbiAgICAuY29tbWFuZCgnZGlzY292ZXInKVxuICAgIC5kZXNjcmlwdGlvbignRGlzY292ZXIgbmV0d29ya3MgYnkgc3RyYXRlZ3knKVxuICAgIC5vcHRpb24oJy1zLCAtLXN0cmF0ZWd5IDx0eXBlPicsICdTdHJhdGVneTogcG9wdWxhciwgbmV3ZXN0LCB1bnBvcHVsYXIsIHJlY29tbWVuZGVkJywgJ3BvcHVsYXInKVxuICAgIC5vcHRpb24oJy1sLCAtLWxpbWl0IDxudW1iZXI+JywgJ0xpbWl0IHJlc3VsdHMnLCAnMjAnKVxuICAgIC5vcHRpb24oJy1uLCAtLW5ldHdvcmsgPGlkPicsICdUYXJnZXQgbmV0d29yayAoZm9yIHJlY29tbWVuZGVkIHN0cmF0ZWd5KScpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIFxuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFJ1bm5pbmcgZGlzY292ZXJ5IHN0cmF0ZWd5OiAke29wdGlvbnMuc3RyYXRlZ3l9Li4uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBBdXRoSGVscGVyLmdldEFwaUNsaWVudCgpO1xuICAgICAgICBjbGllbnQuc2V0Rm9ybWF0KCdqc29uJyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxhbnk+KCcvdjEvbmV0d29ya3MvZGlzY292ZXInLCB7XG4gICAgICAgICAgc3RyYXRlZ3k6IG9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnMubGltaXQsXG4gICAgICAgICAgbmV0d29yazogb3B0aW9ucy5uZXR3b3JrXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2h1bWFuJykge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICBsb2dnZXIuc3VjY2VzcyhgXFxuRGlzY292ZXJlZCAke2RhdGEudG90YWxGb3VuZH0gbmV0d29ya3MgKCR7b3B0aW9ucy5zdHJhdGVneX0gc3RyYXRlZ3kpOlxcbmApO1xuXG4gICAgICAgICAgICBkYXRhLm5ldHdvcmtzLmZvckVhY2goKG5ldHdvcms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQobmV0d29yay5uYW1lIHx8IG5ldHdvcmsuaWQpKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBJRDonKSwgbmV0d29yay5pZCk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoJyAgRGVzY3JpcHRpb246JyksIG5ldHdvcmsuZGVzY3JpcHRpb24pO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCcgIFVzZXJzOicpLCBuZXR3b3JrLnVzZXJzKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBTdGF0dXM6JyksIG5ldHdvcmsuc3RhdHVzKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoZGF0YS5yZWNvbW1lbmRlZEZvcllvdSAmJiBkYXRhLnJlY29tbWVuZGVkRm9yWW91Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1xcblJlY29tbWVuZGVkIGZvciB5b3U6XFxuJyk7XG4gICAgICAgICAgICAgIGRhdGEucmVjb21tZW5kZWRGb3JZb3UuZm9yRWFjaCgocmVjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKGAgICR7cmVjLm5ldHdvcmtJZH1gKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnICBSZWFzb246JyksIHJlYy5yZWFzb24pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gZGlzY292ZXIgbmV0d29ya3MnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|