@pipeline-builder/pipeline-manager 3.4.70 → 3.4.71
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/README.md +32 -2
- package/dist/agent/ai.d.ts +55 -0
- package/dist/agent/ai.d.ts.map +1 -0
- package/dist/agent/ai.js +130 -0
- package/dist/agent/executor.d.ts +24 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +54 -0
- package/dist/agent/health.d.ts +22 -0
- package/dist/agent/health.d.ts.map +1 -0
- package/dist/agent/health.js +55 -0
- package/dist/agent/prereqs.d.ts +16 -0
- package/dist/agent/prereqs.d.ts.map +1 -0
- package/dist/agent/prereqs.js +73 -0
- package/dist/agent/targets.d.ts +83 -0
- package/dist/agent/targets.d.ts.map +1 -0
- package/dist/agent/targets.js +142 -0
- package/dist/agent/troubleshoot.d.ts +30 -0
- package/dist/agent/troubleshoot.d.ts.map +1 -0
- package/dist/agent/troubleshoot.js +87 -0
- package/dist/boilerplate.js +8 -13
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +114 -116
- package/dist/commands/audit-stacks.js +22 -24
- package/dist/commands/audit-tokens.js +25 -27
- package/dist/commands/bootstrap.js +29 -37
- package/dist/commands/create-pipeline.js +55 -92
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +58 -62
- package/dist/commands/get-pipeline.js +24 -28
- package/dist/commands/get-plugin.js +24 -28
- package/dist/commands/list-pipelines.js +30 -31
- package/dist/commands/list-plugins.js +32 -33
- package/dist/commands/login.js +44 -49
- package/dist/commands/org-export.js +22 -60
- package/dist/commands/provision.d.ts +12 -0
- package/dist/commands/provision.d.ts.map +1 -0
- package/dist/commands/provision.js +362 -0
- package/dist/commands/register.js +29 -30
- package/dist/commands/setup-events.d.ts.map +1 -1
- package/dist/commands/setup-events.js +42 -77
- package/dist/commands/status.js +20 -25
- package/dist/commands/store-token.js +44 -82
- package/dist/commands/synth.d.ts.map +1 -1
- package/dist/commands/synth.js +36 -35
- package/dist/commands/upload-plugin.js +59 -96
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +23 -29
- package/dist/commands/version.js +42 -47
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +24 -31
- package/dist/types/config.js +2 -3
- package/dist/types/error.js +3 -7
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -21
- package/dist/types/pipeline.js +2 -3
- package/dist/types/plugin.js +2 -3
- package/dist/utils/api-client.d.ts +1 -1
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +23 -28
- package/dist/utils/audit-log.js +16 -22
- package/dist/utils/auth-guard.js +2 -5
- package/dist/utils/aws-secrets.js +17 -23
- package/dist/utils/banner.js +16 -23
- package/dist/utils/cdk-utils.js +14 -24
- package/dist/utils/command-utils.d.ts +1 -1
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +32 -44
- package/dist/utils/config-loader.d.ts +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +24 -58
- package/dist/utils/error-handler.d.ts +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +16 -24
- package/dist/utils/list-command-utils.js +15 -20
- package/dist/utils/output-utils.d.ts +1 -1
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +35 -55
- package/dist/utils/plugin-resolver.d.ts +1 -1
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +6 -8
- package/dist/utils/rate-limiter.js +11 -19
- package/dist/utils/registry.js +16 -22
- package/package.json +26 -17
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const error_handler_1 = require("../utils/error-handler");
|
|
12
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
13
|
-
const { bold, dim, green } = picocolors_1.default;
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import {} from '../types/index.js';
|
|
6
|
+
import { createAuthenticatedClient, printCommandHeader, printExecutionSummary, printSslWarning, validateEntityId } from '../utils/command-utils.js';
|
|
7
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
8
|
+
import { extractSingleResponse, outputData, printError, printInfo, printKeyValue, printSection, printSuccess } from '../utils/output-utils.js';
|
|
9
|
+
const { bold, dim, green } = pico;
|
|
14
10
|
/**
|
|
15
11
|
* Registers the `get-plugin` command with the CLI program.
|
|
16
12
|
*
|
|
@@ -21,7 +17,7 @@ const { bold, dim, green } = picocolors_1.default;
|
|
|
21
17
|
* pipeline-manager get-plugin --id <plugin-id> --output plugin.json
|
|
22
18
|
* ```
|
|
23
19
|
*/
|
|
24
|
-
function getPlugin(program) {
|
|
20
|
+
export function getPlugin(program) {
|
|
25
21
|
program
|
|
26
22
|
.command('get-plugin')
|
|
27
23
|
.description('Get a single plugin by ID')
|
|
@@ -32,30 +28,30 @@ function getPlugin(program) {
|
|
|
32
28
|
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
33
29
|
.option('--show-metadata', 'Show full plugin metadata in table format', false)
|
|
34
30
|
.action(async (options) => {
|
|
35
|
-
const executionId =
|
|
31
|
+
const executionId = printCommandHeader('Get Plugin');
|
|
36
32
|
try {
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
printSslWarning(options.verifySsl);
|
|
34
|
+
printInfo('Request parameters', {
|
|
39
35
|
id: options.id,
|
|
40
36
|
format: options.format,
|
|
41
37
|
output: options.output || '(console)',
|
|
42
38
|
});
|
|
43
|
-
const pluginId =
|
|
44
|
-
const client =
|
|
39
|
+
const pluginId = validateEntityId(options.id, 'Plugin');
|
|
40
|
+
const client = createAuthenticatedClient(options);
|
|
45
41
|
// Fetch plugin
|
|
46
42
|
console.log('');
|
|
47
|
-
|
|
43
|
+
printSection('Fetching Plugin');
|
|
48
44
|
const startTime = Date.now();
|
|
49
45
|
const response = await client.get(`${client.getConfig().api.pluginUrl}/${pluginId}`);
|
|
50
46
|
const duration = Date.now() - startTime;
|
|
51
|
-
const plugin =
|
|
47
|
+
const plugin = extractSingleResponse(response, 'plugin', 'id');
|
|
52
48
|
if (!plugin) {
|
|
53
|
-
|
|
49
|
+
printError('No plugin returned from API');
|
|
54
50
|
throw new Error(`Failed to retrieve plugin with ID: ${pluginId}`);
|
|
55
51
|
}
|
|
56
52
|
console.log('');
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
printSection('Plugin Retrieved Successfully');
|
|
54
|
+
printKeyValue({
|
|
59
55
|
'Plugin ID': green(bold(plugin.id)),
|
|
60
56
|
'Name': plugin.name,
|
|
61
57
|
'Version': plugin.version,
|
|
@@ -70,24 +66,24 @@ function getPlugin(program) {
|
|
|
70
66
|
// Show metadata if requested
|
|
71
67
|
if (options.showMetadata && options.format === 'table' && plugin.metadata && Object.keys(plugin.metadata).length > 0) {
|
|
72
68
|
console.log('');
|
|
73
|
-
|
|
69
|
+
printInfo('Plugin Metadata', { keys: Object.keys(plugin.metadata).length });
|
|
74
70
|
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
75
71
|
console.log(JSON.stringify(plugin.metadata, null, 2));
|
|
76
72
|
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
77
73
|
}
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
printExecutionSummary(executionId, duration);
|
|
75
|
+
outputData(plugin, {
|
|
80
76
|
format: options.format,
|
|
81
77
|
file: options.output,
|
|
82
78
|
silent: false,
|
|
83
79
|
});
|
|
84
80
|
if (options.output) {
|
|
85
81
|
console.log('');
|
|
86
|
-
|
|
82
|
+
printSuccess('Plugin data saved', { path: options.output });
|
|
87
83
|
}
|
|
88
84
|
}
|
|
89
85
|
catch (error) {
|
|
90
|
-
|
|
86
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
91
87
|
debug: program.opts().debug,
|
|
92
88
|
exit: true,
|
|
93
89
|
context: { command: 'get-plugin', executionId, pluginId: options.id },
|
|
@@ -95,4 +91,4 @@ function getPlugin(program) {
|
|
|
95
91
|
}
|
|
96
92
|
});
|
|
97
93
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9nZXQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7OztBQXFCdEMsOEJBc0ZDO0FBeEdELDREQUE4QjtBQUU5QiwwREFBaUo7QUFDakosMERBQWtFO0FBQ2xFLHdEQUE0STtBQUU1SSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBRWxDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxPQUFPO1NBQ0osT0FBTyxDQUFDLFlBQVksQ0FBQztTQUNyQixXQUFXLENBQUMsMkJBQTJCLENBQUM7U0FDeEMsY0FBYyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7U0FDNUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQztTQUM1RSxNQUFNLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUM7U0FDcEQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FDakUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLDJDQUEyQyxFQUFFLEtBQUssQ0FBQztTQUM3RSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUEsa0NBQWtCLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDO1lBQ0gsSUFBQSwrQkFBZSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuQyxJQUFBLHdCQUFTLEVBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JB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Q29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBQbHVnaW4sIFBsdWdpblJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludEV4ZWN1dGlvblN1bW1hcnksIHByaW50U3NsV2FybmluZywgdmFsaWRhdGVFbnRpdHlJZCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UsIG91dHB1dERhdGEsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuXG5jb25zdCB7IGJvbGQsIGRpbSwgZ3JlZW4gfSA9IHBpY287XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgZ2V0LXBsdWdpbmAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBnZXQtcGx1Z2luIC0taWQgPHBsdWdpbi1pZD5cbiAqIHBpcGVsaW5lLW1hbmFnZXIgZ2V0LXBsdWdpbiAtLWlkIDxwbHVnaW4taWQ+IC0tZm9ybWF0IGpzb25cbiAqIHBpcGVsaW5lLW1hbmFnZXIgZ2V0LXBsdWdpbiAtLWlkIDxwbHVnaW4taWQ+IC0tb3V0cHV0IHBsdWdpbi5qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBsdWdpbihwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnZ2V0LXBsdWdpbicpXG4gICAgLmRlc2NyaXB0aW9uKCdHZXQgYSBzaW5nbGUgcGx1Z2luIGJ5IElEJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGx1Z2luIElEJylcbiAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUpJywgJ2pzb24nKVxuICAgIC5vcHRpb24oJy1vLCAtLW91dHB1dCA8ZmlsZT4nLCAnU2F2ZSBvdXRwdXQgdG8gZmlsZScpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLXNob3ctbWV0YWRhdGEnLCAnU2hvdyBmdWxsIHBsdWdpbiBtZXRhZGF0YSBpbiB0YWJsZSBmb3JtYXQnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignR2V0IFBsdWdpbicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgICAgICBwcmludEluZm8oJ1JlcXVlc3QgcGFyYW1ldGVycycsIHtcbiAgICAgICAgICBpZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQgfHwgJyhjb25zb2xlKScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBsdWdpbklkID0gdmFsaWRhdGVFbnRpdHlJZChvcHRpb25zLmlkLCAnUGx1Z2luJyk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQob3B0aW9ucyk7XG5cbiAgICAgICAgLy8gRmV0Y2ggcGx1Z2luXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdGZXRjaGluZyBQbHVnaW4nKTtcblxuICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UGx1Z2luUmVzcG9uc2U+KFxuICAgICAgICAgIGAke2NsaWVudC5nZXRDb25maWcoKS5hcGkucGx1Z2luVXJsfS8ke3BsdWdpbklkfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgICAgICBjb25zdCBwbHVnaW4gPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGx1Z2luPihyZXNwb25zZSwgJ3BsdWdpbicsICdpZCcpO1xuICAgICAgICBpZiAoIXBsdWdpbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ05vIHBsdWdpbiByZXR1cm5lZCBmcm9tIEFQSScpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHBsdWdpbiB3aXRoIElEOiAke3BsdWdpbklkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1BsdWdpbiBSZXRyaWV2ZWQgU3VjY2Vzc2Z1bGx5Jyk7XG5cbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1BsdWdpbiBJRCc6IGdyZWVuKGJvbGQocGx1Z2luLmlkKSksXG4gICAgICAgICAgJ05hbWUnOiBwbHVnaW4ubmFtZSxcbiAgICAgICAgICAnVmVyc2lvbic6IHBsdWdpbi52ZXJzaW9uLFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwbHVnaW4ub3JnYW5pemF0aW9uLFxuICAgICAgICAgICdEZXNjcmlwdGlvbic6IHBsdWdpbi5kZXNjcmlwdGlvbiB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnRmlsZSBTaXplJzogcGx1Z2luLmZpbGVTaXplID8gYCR7KHBsdWdpbi5maWxlU2l6ZSAvIDEwMjQpLnRvRml4ZWQoMil9IEtCYCA6ICcobm90IGF2YWlsYWJsZSknLFxuICAgICAgICAgICdQdWJsaWMnOiBwbHVnaW4uaXNQdWJsaWMgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IHBsdWdpbi5pc0FjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnQ3JlYXRlZCBBdCc6IHBsdWdpbi5jcmVhdGVkQXQgfHwgJyhub3QgYXZhaWxhYmxlKScsXG4gICAgICAgICAgJ1VwZGF0ZWQgQXQnOiBwbHVnaW4udXBkYXRlZEF0IHx8ICcobm90IGF2YWlsYWJsZSknLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTaG93IG1ldGFkYXRhIGlmIHJlcXVlc3RlZFxuICAgICAgICBpZiAob3B0aW9ucy5zaG93TWV0YWRhdGEgJiYgb3B0aW9ucy5mb3JtYXQgPT09ICd0YWJsZScgJiYgcGx1Z2luLm1ldGFkYXRhICYmIE9iamVjdC5rZXlzKHBsdWdpbi5tZXRhZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEluZm8oJ1BsdWdpbiBNZXRhZGF0YScsIHsga2V5czogT2JqZWN0LmtleXMocGx1Z2luLm1ldGFkYXRhKS5sZW5ndGggfSk7XG4gICAgICAgICAgY29uc29sZS5sb2coZGltKCfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKSkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBsdWdpbi5tZXRhZGF0YSwgbnVsbCwgMikpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50RXhlY3V0aW9uU3VtbWFyeShleGVjdXRpb25JZCwgZHVyYXRpb24pO1xuXG4gICAgICAgIG91dHB1dERhdGEocGx1Z2luLCB7XG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdQbHVnaW4gZGF0YSBzYXZlZCcsIHsgcGF0aDogb3B0aW9ucy5vdXRwdXQgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnZ2V0LXBsdWdpbicsIGV4ZWN1dGlvbklkLCBwbHVnaW5JZDogb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9nZXQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFvQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwSixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9JLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWdCO0lBQ3hDLE9BQU87U0FDSixPQUFPLENBQUMsWUFBWSxDQUFDO1NBQ3JCLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztTQUN4QyxjQUFjLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQztTQUM1QyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxDQUFDO1NBQzVFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQztTQUNwRCxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNqRSxNQUFNLENBQUMsaUJB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QUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTthQUN0RSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyB0eXBlIFBsdWdpbiwgdHlwZSBQbHVnaW5SZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRFeGVjdXRpb25TdW1tYXJ5LCBwcmludFNzbFdhcm5pbmcsIHZhbGlkYXRlRW50aXR5SWQgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBvdXRwdXREYXRhLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBkaW0sIGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGdldC1wbHVnaW5gIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgZ2V0LXBsdWdpbiAtLWlkIDxwbHVnaW4taWQ+XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGdldC1wbHVnaW4gLS1pZCA8cGx1Z2luLWlkPiAtLWZvcm1hdCBqc29uXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGdldC1wbHVnaW4gLS1pZCA8cGx1Z2luLWlkPiAtLW91dHB1dCBwbHVnaW4uanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW4ocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2dldC1wbHVnaW4nKVxuICAgIC5kZXNjcmlwdGlvbignR2V0IGEgc2luZ2xlIHBsdWdpbiBieSBJRCcpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BsdWdpbiBJRCcpXG4gICAgLm9wdGlvbignLWYsIC0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQgKGpzb24sIHlhbWwsIHRhYmxlKScsICdqc29uJylcbiAgICAub3B0aW9uKCctbywgLS1vdXRwdXQgPGZpbGU+JywgJ1NhdmUgb3V0cHV0IHRvIGZpbGUnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LW1ldGFkYXRhJywgJ1Nob3cgZnVsbCBwbHVnaW4gbWV0YWRhdGEgaW4gdGFibGUgZm9ybWF0JywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0dldCBQbHVnaW4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcbiAgICAgICAgcHJpbnRJbmZvKCdSZXF1ZXN0IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBvdXRwdXQ6IG9wdGlvbnMub3V0cHV0IHx8ICcoY29uc29sZSknLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwbHVnaW5JZCA9IHZhbGlkYXRlRW50aXR5SWQob3B0aW9ucy5pZCwgJ1BsdWdpbicpO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIEZldGNoIHBsdWdpblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmV0Y2hpbmcgUGx1Z2luJyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFBsdWdpblJlc3BvbnNlPihcbiAgICAgICAgICBgJHtjbGllbnQuZ2V0Q29uZmlnKCkuYXBpLnBsdWdpblVybH0vJHtwbHVnaW5JZH1gLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAgICAgY29uc3QgcGx1Z2luID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBsdWdpbj4ocmVzcG9uc2UsICdwbHVnaW4nLCAnaWQnKTtcbiAgICAgICAgaWYgKCFwbHVnaW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdObyBwbHVnaW4gcmV0dXJuZWQgZnJvbSBBUEknKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBwbHVnaW4gd2l0aCBJRDogJHtwbHVnaW5JZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdQbHVnaW4gUmV0cmlldmVkIFN1Y2Nlc3NmdWxseScpO1xuXG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdQbHVnaW4gSUQnOiBncmVlbihib2xkKHBsdWdpbi5pZCkpLFxuICAgICAgICAgICdOYW1lJzogcGx1Z2luLm5hbWUsXG4gICAgICAgICAgJ1ZlcnNpb24nOiBwbHVnaW4udmVyc2lvbixcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcGx1Z2luLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAnRGVzY3JpcHRpb24nOiBwbHVnaW4uZGVzY3JpcHRpb24gfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ0ZpbGUgU2l6ZSc6IHBsdWdpbi5maWxlU2l6ZSA/IGAkeyhwbHVnaW4uZmlsZVNpemUgLyAxMDI0KS50b0ZpeGVkKDIpfSBLQmAgOiAnKG5vdCBhdmFpbGFibGUpJyxcbiAgICAgICAgICAnUHVibGljJzogcGx1Z2luLmlzUHVibGljID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdBY3RpdmUnOiBwbHVnaW4uaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0NyZWF0ZWQgQXQnOiBwbHVnaW4uY3JlYXRlZEF0IHx8ICcobm90IGF2YWlsYWJsZSknLFxuICAgICAgICAgICdVcGRhdGVkIEF0JzogcGx1Z2luLnVwZGF0ZWRBdCB8fCAnKG5vdCBhdmFpbGFibGUpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2hvdyBtZXRhZGF0YSBpZiByZXF1ZXN0ZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd01ldGFkYXRhICYmIG9wdGlvbnMuZm9ybWF0ID09PSAndGFibGUnICYmIHBsdWdpbi5tZXRhZGF0YSAmJiBPYmplY3Qua2V5cyhwbHVnaW4ubWV0YWRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdQbHVnaW4gTWV0YWRhdGEnLCB7IGtleXM6IE9iamVjdC5rZXlzKHBsdWdpbi5tZXRhZGF0YSkubGVuZ3RoIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwbHVnaW4ubWV0YWRhdGEsIG51bGwsIDIpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ+KUgCcucmVwZWF0KHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgfHwgODApKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQsIGR1cmF0aW9uKTtcblxuICAgICAgICBvdXRwdXREYXRhKHBsdWdpbiwge1xuICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgc2lsZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnUGx1Z2luIGRhdGEgc2F2ZWQnLCB7IHBhdGg6IG9wdGlvbnMub3V0cHV0IH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2dldC1wbHVnaW4nLCBleGVjdXRpb25JZCwgcGx1Z2luSWQ6IG9wdGlvbnMuaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { formatDuration, validateBoolean } from '../config/cli.constants.js';
|
|
5
|
+
import {} from '../types/index.js';
|
|
6
|
+
import { printCommandHeader, printSslWarning, createAuthenticatedClient } from '../utils/command-utils.js';
|
|
7
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
8
|
+
import { buildCommonFilters, displayPaginationInfo, displayListResults } from '../utils/list-command-utils.js';
|
|
9
|
+
import { outputData, extractListResponse, printInfo, printKeyValue, printSection } from '../utils/output-utils.js';
|
|
11
10
|
/**
|
|
12
11
|
* Registers the `list-pipelines` command with the CLI program.
|
|
13
12
|
*
|
|
@@ -25,7 +24,7 @@ const output_utils_1 = require("../utils/output-utils");
|
|
|
25
24
|
* cli list-pipelines --format json --output pipelines.json
|
|
26
25
|
* ```
|
|
27
26
|
*/
|
|
28
|
-
function listPipelines(program) {
|
|
27
|
+
export function listPipelines(program) {
|
|
29
28
|
program
|
|
30
29
|
.command('list-pipelines')
|
|
31
30
|
.description('Query pipelines with comprehensive filters')
|
|
@@ -48,19 +47,19 @@ function listPipelines(program) {
|
|
|
48
47
|
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
49
48
|
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
50
49
|
.action(async (options) => {
|
|
51
|
-
const executionId =
|
|
50
|
+
const executionId = printCommandHeader('List Pipelines', 'Query Pipelines');
|
|
52
51
|
const startTime = Date.now();
|
|
53
52
|
try {
|
|
54
53
|
// Build filter parameters (common + pipeline-specific)
|
|
55
54
|
const filterParams = {
|
|
56
|
-
...
|
|
55
|
+
...buildCommonFilters(options),
|
|
57
56
|
};
|
|
58
57
|
// Pipeline-specific filters
|
|
59
58
|
if (options.accessModifier) {
|
|
60
59
|
filterParams.accessModifier = options.accessModifier;
|
|
61
60
|
}
|
|
62
61
|
if (options.isDefault !== undefined) {
|
|
63
|
-
filterParams.isDefault =
|
|
62
|
+
filterParams.isDefault = validateBoolean(options.isDefault, 'is-default');
|
|
64
63
|
}
|
|
65
64
|
if (options.project) {
|
|
66
65
|
filterParams.project = options.project;
|
|
@@ -88,38 +87,38 @@ function listPipelines(program) {
|
|
|
88
87
|
if (filterParams.pipelineName)
|
|
89
88
|
activeFilters['Pipeline Name'] = filterParams.pipelineName;
|
|
90
89
|
if (Object.keys(activeFilters).length > 0) {
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
printInfo('Active Filters');
|
|
91
|
+
printKeyValue(activeFilters);
|
|
93
92
|
}
|
|
94
93
|
else {
|
|
95
|
-
|
|
94
|
+
printInfo('No filters applied - fetching all pipelines');
|
|
96
95
|
}
|
|
97
|
-
|
|
96
|
+
displayPaginationInfo(filterParams);
|
|
98
97
|
// Security warning for SSL verification disabled
|
|
99
|
-
|
|
98
|
+
printSslWarning(options.verifySsl);
|
|
100
99
|
// Create authenticated API client
|
|
101
|
-
const client =
|
|
100
|
+
const client = createAuthenticatedClient(options);
|
|
102
101
|
const config = client.getConfig();
|
|
103
102
|
// Query pipelines
|
|
104
103
|
console.log('');
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
printSection('Querying Pipelines');
|
|
105
|
+
printInfo('Sending request to API...');
|
|
107
106
|
const requestStart = Date.now();
|
|
108
107
|
const response = await client.get(config.api.pipelineListUrl, filterParams);
|
|
109
108
|
const requestDuration = Date.now() - requestStart;
|
|
110
109
|
// Handle response
|
|
111
|
-
const { items: pipelines, total, hasMore } =
|
|
110
|
+
const { items: pipelines, total, hasMore } = extractListResponse(response, 'pipelines');
|
|
112
111
|
console.log('');
|
|
113
|
-
|
|
112
|
+
printSection('✓ Query Complete');
|
|
114
113
|
// Display results summary
|
|
115
|
-
|
|
114
|
+
displayListResults(pipelines, total, hasMore, 'Pipelines', requestDuration, filterParams);
|
|
116
115
|
// Display statistics
|
|
117
116
|
if (pipelines.length > 0 && options.format === 'table') {
|
|
118
117
|
const activeCount = pipelines.filter(p => p.isActive).length;
|
|
119
118
|
const defaultCount = pipelines.filter(p => p.isDefault).length;
|
|
120
119
|
console.log('');
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
printInfo('Statistics');
|
|
121
|
+
printKeyValue({
|
|
123
122
|
'Active Pipelines': `${activeCount}/${pipelines.length}`,
|
|
124
123
|
'Default Pipelines': `${defaultCount}/${pipelines.length}`,
|
|
125
124
|
});
|
|
@@ -127,7 +126,7 @@ function listPipelines(program) {
|
|
|
127
126
|
// Output data in requested format
|
|
128
127
|
console.log('');
|
|
129
128
|
if (options.output) {
|
|
130
|
-
|
|
129
|
+
printInfo('Saving to file', {
|
|
131
130
|
path: options.output,
|
|
132
131
|
format: options.format,
|
|
133
132
|
});
|
|
@@ -143,20 +142,20 @@ function listPipelines(program) {
|
|
|
143
142
|
'Active': p.isActive ? 'Yes' : 'No',
|
|
144
143
|
'Created At': p.createdAt || 'N/A',
|
|
145
144
|
}));
|
|
146
|
-
|
|
145
|
+
outputData(outputPipelines, {
|
|
147
146
|
format: options.format,
|
|
148
147
|
file: options.output,
|
|
149
148
|
});
|
|
150
149
|
// Performance metrics
|
|
151
150
|
console.log('');
|
|
152
|
-
|
|
151
|
+
printKeyValue({
|
|
153
152
|
'Execution ID': executionId,
|
|
154
|
-
'Total Duration':
|
|
153
|
+
'Total Duration': formatDuration(Date.now() - startTime),
|
|
155
154
|
});
|
|
156
155
|
console.log('');
|
|
157
156
|
}
|
|
158
157
|
catch (error) {
|
|
159
|
-
|
|
158
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
160
159
|
debug: program.opts().debug,
|
|
161
160
|
exit: true,
|
|
162
161
|
context: {
|
|
@@ -169,4 +168,4 @@ function listPipelines(program) {
|
|
|
169
168
|
}
|
|
170
169
|
});
|
|
171
170
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1waXBlbGluZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbGlzdC1waXBlbGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBeUN0QyxzQ0FzS0M7QUE1TUQsMkRBQTBFO0FBRTFFLDBEQUF3RztBQUN4RywwREFBa0U7QUFDbEUsb0VBQWdJO0FBQ2hJLHdEQUFnSDtBQWdCaEg7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixhQUFhLENBQUMsT0FBZ0I7SUFDNUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztTQUN6QixXQUFXLENBQUMsNENBQTRDLENBQUM7UUFFMUQsd0JBQXdCO1NBQ3ZCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsMERBQTBELENBQUM7U0FDL0UsTUFBTSxDQUFDLDhCQUE4QixFQUFFLDRDQUE0QyxDQUFDO1NBQ3BGLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSx1Q0FBdUMsQ0FBQztTQUN6RSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsc0NBQXNDLENBQUM7U0FDdkUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDOUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckUsTUFBTSxDQUFDLGVBQWUsRUFBRSx1RUFBdUUsQ0FBQztRQUVqRyxtQ0FBbUM7U0FDbEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLDhCQUE4QixDQUFDO1NBQzdELE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxtQ0FBbUMsQ0FBQztTQUM1RSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsK0JBQStCLENBQUM7UUFFbEUsaUJBQWlCO1NBQ2hCLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLENBQUM7U0FDbEYsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO1NBQ3BELE1BQU0sQ0FBQyxjQUFjLEVBQUUsd0RBQXdELEVBQUUsS0FBSyxDQUFDO1NBQ3ZGLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFDO1NBRWpFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBQSxrQ0FBa0IsRUFBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUM7WUFFSCx1REFBdUQ7WUFDdkQsTUFBTSxZQUFZLEdBQXlCO2dCQUN6QyxHQUFHLElBQUEsdUNBQWtCLEVBQUMsT0FBTyxDQUFDO2FBQy9CLENBQUM7WUFFRiw0QkFBNEI7WUFDNUIsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNCLFlBQVksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUEsK0JBQWUsRUFBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzVFLENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsWUFBWSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3pDLENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDekIsWUFBWSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ25ELENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDekIsWUFBWSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ25ELENBQUM7WUFFRCx5QkFBeUI7WUFDekIsTUFBTSxhQUFhLEdBQTRCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLFlBQVksQ0FBQyxFQUFFO2dCQUFFLGFBQWEsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLFlBQVksQ0FBQyxjQUFjO2dCQUFFLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUM7WUFDaEcsSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLFNBQVM7Z0JBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDL0YsSUFBSSxZQUFZLENBQUMsUUFBUSxLQUFLLFNBQVM7Z0JBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDNUYsSUFBSSxZQUFZLENBQUMsT0FBTztnQkFBRSxhQUFhLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDdkUsSUFBSSxZQUFZLENBQUMsWUFBWTtnQkFBRSxhQUFhLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDdEYsSUFBSSxZQUFZLENBQUMsWUFBWTtnQkFBRSxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUUxRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxJQUFBLHdCQUFTLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDNUIsSUFBQSw0QkFBYSxFQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFBLHdCQUFTLEVBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsSUFBQSwwQ0FBcUIsRUFBQyxZQUFZLENBQUMsQ0FBQztZQUVwQyxpREFBaUQ7WUFDakQsSUFBQSwrQkFBZSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVuQyxrQ0FBa0M7WUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBeUIsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbEMsa0JBQWtCO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsSUFBQSwyQkFBWSxFQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbkMsSUFBQSx3QkFBUyxFQUFDLDJCQUEyQixDQUFDLENBQUM7WUFFdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQzFCLFlBQXVDLENBQ3hDLENBQUM7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBRWxELGtCQUFrQjtZQUNsQixNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSxrQ0FBbUIsRUFBVyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFbEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFBLDJCQUFZLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUVqQywwQkFBMEI7WUFDMUIsSUFBQSx1Q0FBa0IsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRTFGLHFCQUFxQjtZQUNyQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3ZELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUM3RCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFFL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsSUFBQSx3QkFBUyxFQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN4QixJQUFBLDRCQUFhLEVBQUM7b0JBQ1osa0JBQWtCLEVBQUUsR0FBRyxXQUFXLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDeEQsbUJBQW1CLEVBQUUsR0FBRyxZQUFZLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtpQkFDM0QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixJQUFBLHdCQUFTLEVBQUMsZ0JBQWdCLEVBQUU7b0JBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDcEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQscUJBQXFCO1lBQ3JCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDVixTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU87Z0JBQ3BCLGNBQWMsRUFBRSxDQUFDLENBQUMsWUFBWTtnQkFDOUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSztnQkFDL0IsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLGNBQWMsSUFBSSxTQUFTO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNyQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNuQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxLQUFLO2FBQ25DLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBQSx5QkFBVSxFQUFDLGVBQWUsRUFBRTtnQkFDMUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07YUFDckIsQ0FBQyxDQUFDO1lBRUgsc0JBQXNCO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsSUFBQSw0QkFBYSxFQUFDO2dCQUNaLGNBQWMsRUFBRSxXQUFXO2dCQUMzQixnQkFBZ0IsRUFBRSxJQUFBLDhCQUFjLEVBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQzthQUN6RCxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBQSwyQkFBVyxFQUFDLEtBQUssRUFBRSwyQkFBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGdCQUFnQjtvQkFDekIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lCQUM3QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgdmFsaWRhdGVCb29sZWFuIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgUGlwZWxpbmVMaXN0UmVzcG9uc2UsIFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgYnVpbGRDb21tb25GaWx0ZXJzLCBDb21tb25GaWx0ZXJQYXJhbXMsIGRpc3BsYXlQYWdpbmF0aW9uSW5mbywgZGlzcGxheUxpc3RSZXN1bHRzIH0gZnJvbSAnLi4vdXRpbHMvbGlzdC1jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IG91dHB1dERhdGEsIGV4dHJhY3RMaXN0UmVzcG9uc2UsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuLyoqXG4gKiBRdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcGlwZWxpbmUgbGlzdCBBUEkgZW5kcG9pbnQuXG4gKiBDb21iaW5lcyBjb21tb24gZmlsdGVycyAocGFnaW5hdGlvbiwgc29ydCwgYWNjZXNzKSB3aXRoIHBpcGVsaW5lLXNwZWNpZmljIGZpbHRlcnMuXG4gKi9cbmludGVyZmFjZSBQaXBlbGluZUZpbHRlclBhcmFtcyBleHRlbmRzIENvbW1vbkZpbHRlclBhcmFtcyB7XG4gIGFjY2Vzc01vZGlmaWVyPzogc3RyaW5nO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xuXG4gIC8vIFBpcGVsaW5lLXNwZWNpZmljIGZpbHRlcnNcbiAgcHJvamVjdD86IHN0cmluZztcbiAgb3JnYW5pemF0aW9uPzogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgbGlzdC1waXBlbGluZXNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUXVlcmllcyBwaXBlbGluZXMgd2l0aCBmaWx0ZXJzIGZvciBwcm9qZWN0LCBvcmdhbml6YXRpb24sIG5hbWUsXG4gKiBhY2Nlc3MgbW9kaWZpZXIsIGFjdGl2ZS9kZWZhdWx0IHN0YXR1cywgcGx1cyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBjbGkgbGlzdC1waXBlbGluZXNcbiAqIGNsaSBsaXN0LXBpcGVsaW5lcyAtLXByb2plY3QgbXktYXBwIC0taXMtYWN0aXZlIHRydWVcbiAqIGNsaSBsaXN0LXBpcGVsaW5lcyAtLW9yZ2FuaXphdGlvbiBteS1vcmdcbiAqIGNsaSBsaXN0LXBpcGVsaW5lcyAtLWxpbWl0IDUwIC0tb2Zmc2V0IDEwMCAtLXNvcnQgXCJwaXBlbGluZU5hbWU6YXNjXCJcbiAqIGNsaSBsaXN0LXBpcGVsaW5lcyAtLWZvcm1hdCBqc29uIC0tb3V0cHV0IHBpcGVsaW5lcy5qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RQaXBlbGluZXMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2xpc3QtcGlwZWxpbmVzJylcbiAgICAuZGVzY3JpcHRpb24oJ1F1ZXJ5IHBpcGVsaW5lcyB3aXRoIGNvbXByZWhlbnNpdmUgZmlsdGVycycpXG5cbiAgICAvLyBDb21tb24gZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLWlkIDxpZD4nLCAnRmlsdGVyIGJ5IHBpcGVsaW5lIElEIChjYW4gc3BlY2lmeSBtdWx0aXBsZSB3aXRoIGNvbW1hcyknKVxuICAgIC5vcHRpb24oJy0tYWNjZXNzLW1vZGlmaWVyIDxtb2RpZmllcj4nLCAnRmlsdGVyIGJ5IGFjY2VzcyBtb2RpZmllciAocHVibGljL3ByaXZhdGUpJylcbiAgICAub3B0aW9uKCctLWlzLWRlZmF1bHQgPGJvb2xlYW4+JywgJ0ZpbHRlciBieSBkZWZhdWx0IHN0YXR1cyAodHJ1ZS9mYWxzZSknKVxuICAgIC5vcHRpb24oJy0taXMtYWN0aXZlIDxib29sZWFuPicsICdGaWx0ZXIgYnkgYWN0aXZlIHN0YXR1cyAodHJ1ZS9mYWxzZSknKVxuICAgIC5vcHRpb24oJy0tbGltaXQgPG51bWJlcj4nLCAnTWF4aW11bSBudW1iZXIgb2YgcmVzdWx0cyAoMS0xMDAwKScsIHBhcnNlSW50LCA1MClcbiAgICAub3B0aW9uKCctLW9mZnNldCA8bnVtYmVyPicsICdOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwJywgcGFyc2VJbnQsIDApXG4gICAgLm9wdGlvbignLS1zb3J0IDxzb3J0PicsICdTb3J0IGZvcm1hdDogZmllbGQ6ZGlyZWN0aW9uIChlLmcuLCBwaXBlbGluZU5hbWU6YXNjLCBjcmVhdGVkQXQ6ZGVzYyknKVxuXG4gICAgLy8gUGlwZWxpbmUtc3BlY2lmaWMgZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLXByb2plY3QgPHByb2plY3Q+JywgJ0ZpbHRlciBieSBleGFjdCBwcm9qZWN0IG5hbWUnKVxuICAgIC5vcHRpb24oJy0tb3JnYW5pemF0aW9uIDxvcmdhbml6YXRpb24+JywgJ0ZpbHRlciBieSBleGFjdCBvcmdhbml6YXRpb24gbmFtZScpXG4gICAgLm9wdGlvbignLS1waXBlbGluZS1uYW1lIDxuYW1lPicsICdGaWx0ZXIgYnkgZXhhY3QgcGlwZWxpbmUgbmFtZScpXG5cbiAgICAvLyBPdXRwdXQgb3B0aW9uc1xuICAgIC5vcHRpb24oJy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0IChqc29uLCB5YW1sLCB0YWJsZSwgY3N2KScsICd0YWJsZScpXG4gICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdTYXZlIG91dHB1dCB0byBmaWxlJylcbiAgICAub3B0aW9uKCctLXNob3ctcHJvcHMnLCAnSW5jbHVkZSBwaXBlbGluZSBwcm9wZXJ0aWVzIGluIG91dHB1dCAoanNvbi95YW1sIG9ubHkpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcblxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdMaXN0IFBpcGVsaW5lcycsICdRdWVyeSBQaXBlbGluZXMnKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gQnVpbGQgZmlsdGVyIHBhcmFtZXRlcnMgKGNvbW1vbiArIHBpcGVsaW5lLXNwZWNpZmljKVxuICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbXM6IFBpcGVsaW5lRmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIC4uLmJ1aWxkQ29tbW9uRmlsdGVycyhvcHRpb25zKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQaXBlbGluZS1zcGVjaWZpYyBmaWx0ZXJzXG4gICAgICAgIGlmIChvcHRpb25zLmFjY2Vzc01vZGlmaWVyKSB7XG4gICAgICAgICAgZmlsdGVyUGFyYW1zLmFjY2Vzc01vZGlmaWVyID0gb3B0aW9ucy5hY2Nlc3NNb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmlzRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsdGVyUGFyYW1zLmlzRGVmYXVsdCA9IHZhbGlkYXRlQm9vbGVhbihvcHRpb25zLmlzRGVmYXVsdCwgJ2lzLWRlZmF1bHQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnByb2plY3QpIHtcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMucHJvamVjdCA9IG9wdGlvbnMucHJvamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLm9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIGZpbHRlclBhcmFtcy5vcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnBpcGVsaW5lTmFtZSkge1xuICAgICAgICAgIGZpbHRlclBhcmFtcy5waXBlbGluZU5hbWUgPSBvcHRpb25zLnBpcGVsaW5lTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc3BsYXkgYWN0aXZlIGZpbHRlcnNcbiAgICAgICAgY29uc3QgYWN0aXZlRmlsdGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtcy5pZCkgYWN0aXZlRmlsdGVycy5JRCA9IGZpbHRlclBhcmFtcy5pZDtcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtcy5hY2Nlc3NNb2RpZmllcikgYWN0aXZlRmlsdGVyc1snQWNjZXNzIE1vZGlmaWVyJ10gPSBmaWx0ZXJQYXJhbXMuYWNjZXNzTW9kaWZpZXI7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuaXNEZWZhdWx0ICE9PSB1bmRlZmluZWQpIGFjdGl2ZUZpbHRlcnNbJ0lzIERlZmF1bHQnXSA9IGZpbHRlclBhcmFtcy5pc0RlZmF1bHQ7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkgYWN0aXZlRmlsdGVyc1snSXMgQWN0aXZlJ10gPSBmaWx0ZXJQYXJhbXMuaXNBY3RpdmU7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMucHJvamVjdCkgYWN0aXZlRmlsdGVycy5Qcm9qZWN0ID0gZmlsdGVyUGFyYW1zLnByb2plY3Q7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMub3JnYW5pemF0aW9uKSBhY3RpdmVGaWx0ZXJzLk9yZ2FuaXphdGlvbiA9IGZpbHRlclBhcmFtcy5vcmdhbml6YXRpb247XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMucGlwZWxpbmVOYW1lKSBhY3RpdmVGaWx0ZXJzWydQaXBlbGluZSBOYW1lJ10gPSBmaWx0ZXJQYXJhbXMucGlwZWxpbmVOYW1lO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3RpdmVGaWx0ZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdBY3RpdmUgRmlsdGVycycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoYWN0aXZlRmlsdGVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdObyBmaWx0ZXJzIGFwcGxpZWQgLSBmZXRjaGluZyBhbGwgcGlwZWxpbmVzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwbGF5UGFnaW5hdGlvbkluZm8oZmlsdGVyUGFyYW1zKTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gUXVlcnkgcGlwZWxpbmVzXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdRdWVyeWluZyBQaXBlbGluZXMnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdTZW5kaW5nIHJlcXVlc3QgdG8gQVBJLi4uJyk7XG5cbiAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFBpcGVsaW5lTGlzdFJlc3BvbnNlPihcbiAgICAgICAgICBjb25maWcuYXBpLnBpcGVsaW5lTGlzdFVybCxcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3REdXJhdGlvbiA9IERhdGUubm93KCkgLSByZXF1ZXN0U3RhcnQ7XG5cbiAgICAgICAgLy8gSGFuZGxlIHJlc3BvbnNlXG4gICAgICAgIGNvbnN0IHsgaXRlbXM6IHBpcGVsaW5lcywgdG90YWwsIGhhc01vcmUgfSA9IGV4dHJhY3RMaXN0UmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmVzJyk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ+KckyBRdWVyeSBDb21wbGV0ZScpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgcmVzdWx0cyBzdW1tYXJ5XG4gICAgICAgIGRpc3BsYXlMaXN0UmVzdWx0cyhwaXBlbGluZXMsIHRvdGFsLCBoYXNNb3JlLCAnUGlwZWxpbmVzJywgcmVxdWVzdER1cmF0aW9uLCBmaWx0ZXJQYXJhbXMpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgc3RhdGlzdGljc1xuICAgICAgICBpZiAocGlwZWxpbmVzLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5mb3JtYXQgPT09ICd0YWJsZScpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVDb3VudCA9IHBpcGVsaW5lcy5maWx0ZXIocCA9PiBwLmlzQWN0aXZlKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdENvdW50ID0gcGlwZWxpbmVzLmZpbHRlcihwID0+IHAuaXNEZWZhdWx0KS5sZW5ndGg7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdTdGF0aXN0aWNzJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnQWN0aXZlIFBpcGVsaW5lcyc6IGAke2FjdGl2ZUNvdW50fS8ke3BpcGVsaW5lcy5sZW5ndGh9YCxcbiAgICAgICAgICAgICdEZWZhdWx0IFBpcGVsaW5lcyc6IGAke2RlZmF1bHRDb3VudH0vJHtwaXBlbGluZXMubGVuZ3RofWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdXRwdXQgZGF0YSBpbiByZXF1ZXN0ZWQgZm9ybWF0XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdTYXZpbmcgdG8gZmlsZScsIHtcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvcm1hdCBvdXRwdXQgZGF0YVxuICAgICAgICBjb25zdCBvdXRwdXRQaXBlbGluZXMgPSBvcHRpb25zLnNob3dQcm9wcyA/IHBpcGVsaW5lcyA6IHBpcGVsaW5lcy5tYXAocCA9PiAoe1xuICAgICAgICAgICdJRCc6IHAuaWQsXG4gICAgICAgICAgJ1Byb2plY3QnOiBwLnByb2plY3QsXG4gICAgICAgICAgJ09yZ2FuaXphdGlvbic6IHAub3JnYW5pemF0aW9uLFxuICAgICAgICAgICdOYW1lJzogcC5waXBlbGluZU5hbWUgfHwgJ04vQScsXG4gICAgICAgICAgJ0FjY2VzcyBNb2RpZmllcic6IHAuYWNjZXNzTW9kaWZpZXIgfHwgJ3ByaXZhdGUnLFxuICAgICAgICAgICdEZWZhdWx0JzogcC5pc0RlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IHAuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0NyZWF0ZWQgQXQnOiBwLmNyZWF0ZWRBdCB8fCAnTi9BJyxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIG91dHB1dERhdGEob3V0cHV0UGlwZWxpbmVzLCB7XG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnbGlzdC1waXBlbGluZXMnLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBmaWx0ZXJzOiBvcHRpb25zLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1waXBlbGluZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbGlzdC1waXBlbGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUE0QyxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBMkIscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4SSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFnQm5IOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFnQjtJQUM1QyxPQUFPO1NBQ0osT0FBTyxDQUFDLGdCQUFnQixDQUFDO1NBQ3pCLFdBQVcsQ0FBQyw0Q0FBNEMsQ0FBQztRQUUxRCx3QkFBd0I7U0FDdkIsTUFBTSxDQUFDLFdBQVcsRUFBRSwwREFBMEQsQ0FBQztTQUMvRSxNQUFNLENBQUMsOEJBQThCLEVBQUUsNENBQTRDLENBQUM7U0FDcEYsTUFBTSxDQUFDLHdCQUF3QixFQUFFLHVDQUF1QyxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUN2RSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsb0NBQW9DLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUM5RSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNyRSxNQUFNLENBQUMsZUFBZSxFQUFFLHVFQUF1RSxDQUFDO1FBRWpHLG1DQUFtQztTQUNsQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsOEJBQThCLENBQUM7U0FDN0QsTUFBTSxDQUFDLCtCQUErQixFQUFFLG1DQUFtQyxDQUFDO1NBQzVFLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQztRQUVsRSxpQkFBaUI7U0FDaEIsTUFBTSxDQUFDLHVCQUF1QixFQUFFLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQztTQUNsRixNQUFNLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUM7U0FDcEQsTUFBTSxDQUFDLGNBQWMsRUFBRSx3REFBd0QsRUFBRSxLQUFLLENBQUM7U0FDdkYsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FFakUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4QixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUM7WUFFSCx1REFBdUQ7WUFDdkQsTUFBTSxZQUFZLEdBQXlCO2dCQUN6QyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUMvQixDQUFDO1lBRUYsNEJBQTRCO1lBQzVCLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMzQixZQUFZLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDcEMsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLFlBQVksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuRCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuRCxDQUFDO1lBRUQseUJBQXlCO1lBQ3pCLE1BQU0sYUFBYSxHQUE0QixFQUFFLENBQUM7WUFDbEQsSUFBSSxZQUFZLENBQUMsRUFBRTtnQkFBRSxhQUFhLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxZQUFZLENBQUMsY0FBYztnQkFBRSxhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDO1lBQ2hHLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxTQUFTO2dCQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQy9GLElBQUksWUFBWSxDQUFDLFFBQVEsS0FBSyxTQUFTO2dCQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQzVGLElBQUksWUFBWSxDQUFDLE9BQU87Z0JBQUUsYUFBYSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3ZFLElBQUksWUFBWSxDQUFDLFlBQVk7Z0JBQUUsYUFBYSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3RGLElBQUksWUFBWSxDQUFDLFlBQVk7Z0JBQUUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFFMUYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzVCLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUVELHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXBDLGlEQUFpRDtZQUNqRCxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRW5DLGtDQUFrQztZQUNsQyxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbEMsa0JBQWtCO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbkMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFFdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQzFCLFlBQXVDLENBQ3hDLENBQUM7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBRWxELGtCQUFrQjtZQUNsQixNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsbUJBQW1CLENBQVcsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRWxHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFakMsMEJBQTBCO1lBQzFCLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFMUYscUJBQXFCO1lBQ3JCLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQzdELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUUvRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3hCLGFBQWEsQ0FBQztvQkFDWixrQkFBa0IsRUFBRSxHQUFHLFdBQVcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO29CQUN4RCxtQkFBbUIsRUFBRSxHQUFHLFlBQVksSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO2lCQUMzRCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDMUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO29CQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3ZCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxxQkFBcUI7WUFDckIsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNWLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTztnQkFDcEIsY0FBYyxFQUFFLENBQUMsQ0FBQyxZQUFZO2dCQUM5QixNQUFNLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxLQUFLO2dCQUMvQixpQkFBaUIsRUFBRSxDQUFDLENBQUMsY0FBYyxJQUFJLFNBQVM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3JDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ25DLFlBQVksRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUs7YUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFFSixVQUFVLENBQUMsZUFBZSxFQUFFO2dCQUMxQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7WUFFSCxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixhQUFhLENBQUM7Z0JBQ1osY0FBYyxFQUFFLFdBQVc7Z0JBQzNCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO2FBQ3pELENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxnQkFBZ0I7b0JBQ3pCLFdBQVc7b0JBQ1gsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIHZhbGlkYXRlQm9vbGVhbiB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmVMaXN0UmVzcG9uc2UsIHR5cGUgUGlwZWxpbmUgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBidWlsZENvbW1vbkZpbHRlcnMsIHR5cGUgQ29tbW9uRmlsdGVyUGFyYW1zLCBkaXNwbGF5UGFnaW5hdGlvbkluZm8sIGRpc3BsYXlMaXN0UmVzdWx0cyB9IGZyb20gJy4uL3V0aWxzL2xpc3QtY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBvdXRwdXREYXRhLCBleHRyYWN0TGlzdFJlc3BvbnNlLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHBpcGVsaW5lIGxpc3QgQVBJIGVuZHBvaW50LlxuICogQ29tYmluZXMgY29tbW9uIGZpbHRlcnMgKHBhZ2luYXRpb24sIHNvcnQsIGFjY2Vzcykgd2l0aCBwaXBlbGluZS1zcGVjaWZpYyBmaWx0ZXJzLlxuICovXG5pbnRlcmZhY2UgUGlwZWxpbmVGaWx0ZXJQYXJhbXMgZXh0ZW5kcyBDb21tb25GaWx0ZXJQYXJhbXMge1xuICBhY2Nlc3NNb2RpZmllcj86IHN0cmluZztcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcblxuICAvLyBQaXBlbGluZS1zcGVjaWZpYyBmaWx0ZXJzXG4gIHByb2plY3Q/OiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbj86IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGxpc3QtcGlwZWxpbmVzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFF1ZXJpZXMgcGlwZWxpbmVzIHdpdGggZmlsdGVycyBmb3IgcHJvamVjdCwgb3JnYW5pemF0aW9uLCBuYW1lLFxuICogYWNjZXNzIG1vZGlmaWVyLCBhY3RpdmUvZGVmYXVsdCBzdGF0dXMsIHBsdXMgcGFnaW5hdGlvbiBhbmQgc29ydGluZy5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogY2xpIGxpc3QtcGlwZWxpbmVzXG4gKiBjbGkgbGlzdC1waXBlbGluZXMgLS1wcm9qZWN0IG15LWFwcCAtLWlzLWFjdGl2ZSB0cnVlXG4gKiBjbGkgbGlzdC1waXBlbGluZXMgLS1vcmdhbml6YXRpb24gbXktb3JnXG4gKiBjbGkgbGlzdC1waXBlbGluZXMgLS1saW1pdCA1MCAtLW9mZnNldCAxMDAgLS1zb3J0IFwicGlwZWxpbmVOYW1lOmFzY1wiXG4gKiBjbGkgbGlzdC1waXBlbGluZXMgLS1mb3JtYXQganNvbiAtLW91dHB1dCBwaXBlbGluZXMuanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0UGlwZWxpbmVzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsaXN0LXBpcGVsaW5lcycpXG4gICAgLmRlc2NyaXB0aW9uKCdRdWVyeSBwaXBlbGluZXMgd2l0aCBjb21wcmVoZW5zaXZlIGZpbHRlcnMnKVxuXG4gICAgLy8gQ29tbW9uIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1pZCA8aWQ+JywgJ0ZpbHRlciBieSBwaXBlbGluZSBJRCAoY2FuIHNwZWNpZnkgbXVsdGlwbGUgd2l0aCBjb21tYXMpJylcbiAgICAub3B0aW9uKCctLWFjY2Vzcy1tb2RpZmllciA8bW9kaWZpZXI+JywgJ0ZpbHRlciBieSBhY2Nlc3MgbW9kaWZpZXIgKHB1YmxpYy9wcml2YXRlKScpXG4gICAgLm9wdGlvbignLS1pcy1kZWZhdWx0IDxib29sZWFuPicsICdGaWx0ZXIgYnkgZGVmYXVsdCBzdGF0dXMgKHRydWUvZmFsc2UpJylcbiAgICAub3B0aW9uKCctLWlzLWFjdGl2ZSA8Ym9vbGVhbj4nLCAnRmlsdGVyIGJ5IGFjdGl2ZSBzdGF0dXMgKHRydWUvZmFsc2UpJylcbiAgICAub3B0aW9uKCctLWxpbWl0IDxudW1iZXI+JywgJ01heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgKDEtMTAwMCknLCBwYXJzZUludCwgNTApXG4gICAgLm9wdGlvbignLS1vZmZzZXQgPG51bWJlcj4nLCAnTnVtYmVyIG9mIHJlc3VsdHMgdG8gc2tpcCcsIHBhcnNlSW50LCAwKVxuICAgIC5vcHRpb24oJy0tc29ydCA8c29ydD4nLCAnU29ydCBmb3JtYXQ6IGZpZWxkOmRpcmVjdGlvbiAoZS5nLiwgcGlwZWxpbmVOYW1lOmFzYywgY3JlYXRlZEF0OmRlc2MpJylcblxuICAgIC8vIFBpcGVsaW5lLXNwZWNpZmljIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1wcm9qZWN0IDxwcm9qZWN0PicsICdGaWx0ZXIgYnkgZXhhY3QgcHJvamVjdCBuYW1lJylcbiAgICAub3B0aW9uKCctLW9yZ2FuaXphdGlvbiA8b3JnYW5pemF0aW9uPicsICdGaWx0ZXIgYnkgZXhhY3Qgb3JnYW5pemF0aW9uIG5hbWUnKVxuICAgIC5vcHRpb24oJy0tcGlwZWxpbmUtbmFtZSA8bmFtZT4nLCAnRmlsdGVyIGJ5IGV4YWN0IHBpcGVsaW5lIG5hbWUnKVxuXG4gICAgLy8gT3V0cHV0IG9wdGlvbnNcbiAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUsIGNzdiknLCAndGFibGUnKVxuICAgIC5vcHRpb24oJy1vLCAtLW91dHB1dCA8ZmlsZT4nLCAnU2F2ZSBvdXRwdXQgdG8gZmlsZScpXG4gICAgLm9wdGlvbignLS1zaG93LXByb3BzJywgJ0luY2x1ZGUgcGlwZWxpbmUgcHJvcGVydGllcyBpbiBvdXRwdXQgKGpzb24veWFtbCBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG5cbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignTGlzdCBQaXBlbGluZXMnLCAnUXVlcnkgUGlwZWxpbmVzJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIEJ1aWxkIGZpbHRlciBwYXJhbWV0ZXJzIChjb21tb24gKyBwaXBlbGluZS1zcGVjaWZpYylcbiAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1zOiBQaXBlbGluZUZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAuLi5idWlsZENvbW1vbkZpbHRlcnMob3B0aW9ucyksXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUGlwZWxpbmUtc3BlY2lmaWMgZmlsdGVyc1xuICAgICAgICBpZiAob3B0aW9ucy5hY2Nlc3NNb2RpZmllcikge1xuICAgICAgICAgIGZpbHRlclBhcmFtcy5hY2Nlc3NNb2RpZmllciA9IG9wdGlvbnMuYWNjZXNzTW9kaWZpZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5pc0RlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbHRlclBhcmFtcy5pc0RlZmF1bHQgPSB2YWxpZGF0ZUJvb2xlYW4ob3B0aW9ucy5pc0RlZmF1bHQsICdpcy1kZWZhdWx0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5wcm9qZWN0KSB7XG4gICAgICAgICAgZmlsdGVyUGFyYW1zLnByb2plY3QgPSBvcHRpb25zLnByb2plY3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5vcmdhbml6YXRpb24pIHtcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMub3JnYW5pemF0aW9uID0gb3B0aW9ucy5vcmdhbml6YXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5waXBlbGluZU5hbWUpIHtcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMucGlwZWxpbmVOYW1lID0gb3B0aW9ucy5waXBlbGluZU5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGFjdGl2ZSBmaWx0ZXJzXG4gICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuaWQpIGFjdGl2ZUZpbHRlcnMuSUQgPSBmaWx0ZXJQYXJhbXMuaWQ7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuYWNjZXNzTW9kaWZpZXIpIGFjdGl2ZUZpbHRlcnNbJ0FjY2VzcyBNb2RpZmllciddID0gZmlsdGVyUGFyYW1zLmFjY2Vzc01vZGlmaWVyO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlzRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSBhY3RpdmVGaWx0ZXJzWydJcyBEZWZhdWx0J10gPSBmaWx0ZXJQYXJhbXMuaXNEZWZhdWx0O1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlzQWN0aXZlICE9PSB1bmRlZmluZWQpIGFjdGl2ZUZpbHRlcnNbJ0lzIEFjdGl2ZSddID0gZmlsdGVyUGFyYW1zLmlzQWN0aXZlO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLnByb2plY3QpIGFjdGl2ZUZpbHRlcnMuUHJvamVjdCA9IGZpbHRlclBhcmFtcy5wcm9qZWN0O1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLm9yZ2FuaXphdGlvbikgYWN0aXZlRmlsdGVycy5Pcmdhbml6YXRpb24gPSBmaWx0ZXJQYXJhbXMub3JnYW5pemF0aW9uO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLnBpcGVsaW5lTmFtZSkgYWN0aXZlRmlsdGVyc1snUGlwZWxpbmUgTmFtZSddID0gZmlsdGVyUGFyYW1zLnBpcGVsaW5lTmFtZTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZlRmlsdGVycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHByaW50SW5mbygnQWN0aXZlIEZpbHRlcnMnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKGFjdGl2ZUZpbHRlcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50SW5mbygnTm8gZmlsdGVycyBhcHBsaWVkIC0gZmV0Y2hpbmcgYWxsIHBpcGVsaW5lcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVBhZ2luYXRpb25JbmZvKGZpbHRlclBhcmFtcyk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnRcbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgICAgIC8vIFF1ZXJ5IHBpcGVsaW5lc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignUXVlcnlpbmcgUGlwZWxpbmVzJyk7XG4gICAgICAgIHByaW50SW5mbygnU2VuZGluZyByZXF1ZXN0IHRvIEFQSS4uLicpO1xuXG4gICAgICAgIGNvbnN0IHJlcXVlc3RTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxQaXBlbGluZUxpc3RSZXNwb25zZT4oXG4gICAgICAgICAgY29uZmlnLmFwaS5waXBlbGluZUxpc3RVcmwsXG4gICAgICAgICAgZmlsdGVyUGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuXG4gICAgICAgIC8vIEhhbmRsZSByZXNwb25zZVxuICAgICAgICBjb25zdCB7IGl0ZW1zOiBwaXBlbGluZXMsIHRvdGFsLCBoYXNNb3JlIH0gPSBleHRyYWN0TGlzdFJlc3BvbnNlPFBpcGVsaW5lPihyZXNwb25zZSwgJ3BpcGVsaW5lcycpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUXVlcnkgQ29tcGxldGUnKTtcblxuICAgICAgICAvLyBEaXNwbGF5IHJlc3VsdHMgc3VtbWFyeVxuICAgICAgICBkaXNwbGF5TGlzdFJlc3VsdHMocGlwZWxpbmVzLCB0b3RhbCwgaGFzTW9yZSwgJ1BpcGVsaW5lcycsIHJlcXVlc3REdXJhdGlvbiwgZmlsdGVyUGFyYW1zKTtcblxuICAgICAgICAvLyBEaXNwbGF5IHN0YXRpc3RpY3NcbiAgICAgICAgaWYgKHBpcGVsaW5lcy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZm9ybWF0ID09PSAndGFibGUnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlQ291bnQgPSBwaXBlbGluZXMuZmlsdGVyKHAgPT4gcC5pc0FjdGl2ZSkubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb3VudCA9IHBpcGVsaW5lcy5maWx0ZXIocCA9PiBwLmlzRGVmYXVsdCkubGVuZ3RoO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnU3RhdGlzdGljcycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0FjdGl2ZSBQaXBlbGluZXMnOiBgJHthY3RpdmVDb3VudH0vJHtwaXBlbGluZXMubGVuZ3RofWAsXG4gICAgICAgICAgICAnRGVmYXVsdCBQaXBlbGluZXMnOiBgJHtkZWZhdWx0Q291bnR9LyR7cGlwZWxpbmVzLmxlbmd0aH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3V0cHV0IGRhdGEgaW4gcmVxdWVzdGVkIGZvcm1hdFxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dCkge1xuICAgICAgICAgIHByaW50SW5mbygnU2F2aW5nIHRvIGZpbGUnLCB7XG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3JtYXQgb3V0cHV0IGRhdGFcbiAgICAgICAgY29uc3Qgb3V0cHV0UGlwZWxpbmVzID0gb3B0aW9ucy5zaG93UHJvcHMgPyBwaXBlbGluZXMgOiBwaXBlbGluZXMubWFwKHAgPT4gKHtcbiAgICAgICAgICAnSUQnOiBwLmlkLFxuICAgICAgICAgICdQcm9qZWN0JzogcC5wcm9qZWN0LFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAnTmFtZSc6IHAucGlwZWxpbmVOYW1lIHx8ICdOL0EnLFxuICAgICAgICAgICdBY2Nlc3MgTW9kaWZpZXInOiBwLmFjY2Vzc01vZGlmaWVyIHx8ICdwcml2YXRlJyxcbiAgICAgICAgICAnRGVmYXVsdCc6IHAuaXNEZWZhdWx0ID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdBY3RpdmUnOiBwLmlzQWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdDcmVhdGVkIEF0JzogcC5jcmVhdGVkQXQgfHwgJ04vQScsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBvdXRwdXREYXRhKG91dHB1dFBpcGVsaW5lcywge1xuICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2xpc3QtcGlwZWxpbmVzJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgZmlsdGVyczogb3B0aW9ucyxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { formatDuration, formatFileSize } from '../config/cli.constants.js';
|
|
5
|
+
import {} from '../types/index.js';
|
|
6
|
+
import { printCommandHeader, printSslWarning, createAuthenticatedClient } from '../utils/command-utils.js';
|
|
7
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
8
|
+
import { buildCommonFilters, displayPaginationInfo, displayListResults } from '../utils/list-command-utils.js';
|
|
9
|
+
import { outputData, extractListResponse, printInfo, printKeyValue, printSection, printWarning } from '../utils/output-utils.js';
|
|
11
10
|
/**
|
|
12
11
|
* Registers the `list-plugins` command with the CLI program.
|
|
13
12
|
*
|
|
@@ -25,7 +24,7 @@ const output_utils_1 = require("../utils/output-utils");
|
|
|
25
24
|
* cli list-plugins --format json --output plugins.json
|
|
26
25
|
* ```
|
|
27
26
|
*/
|
|
28
|
-
function listPlugins(program) {
|
|
27
|
+
export function listPlugins(program) {
|
|
29
28
|
program
|
|
30
29
|
.command('list-plugins')
|
|
31
30
|
.description('Query plugins with comprehensive filters')
|
|
@@ -45,12 +44,12 @@ function listPlugins(program) {
|
|
|
45
44
|
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
46
45
|
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
47
46
|
.action(async (options) => {
|
|
48
|
-
const executionId =
|
|
47
|
+
const executionId = printCommandHeader('List Plugins', 'Query Plugins');
|
|
49
48
|
const startTime = Date.now();
|
|
50
49
|
try {
|
|
51
50
|
// Build filter parameters (common + plugin-specific)
|
|
52
51
|
const filterParams = {
|
|
53
|
-
...
|
|
52
|
+
...buildCommonFilters(options),
|
|
54
53
|
};
|
|
55
54
|
// Plugin-specific filters
|
|
56
55
|
if (options.name) {
|
|
@@ -60,7 +59,7 @@ function listPlugins(program) {
|
|
|
60
59
|
// Validate semver format
|
|
61
60
|
const versionPattern = /^(\^|~)?(\d+)\.(\d+)\.(\d+)(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
|
|
62
61
|
if (!versionPattern.test(options.version)) {
|
|
63
|
-
|
|
62
|
+
printWarning(`Version "${options.version}" may not be valid semver format`);
|
|
64
63
|
}
|
|
65
64
|
filterParams.version = options.version;
|
|
66
65
|
}
|
|
@@ -75,48 +74,48 @@ function listPlugins(program) {
|
|
|
75
74
|
if (filterParams.version)
|
|
76
75
|
activeFilters.Version = filterParams.version;
|
|
77
76
|
if (Object.keys(activeFilters).length > 0) {
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
printInfo('Active Filters');
|
|
78
|
+
printKeyValue(activeFilters);
|
|
80
79
|
}
|
|
81
80
|
else {
|
|
82
|
-
|
|
81
|
+
printInfo('No filters applied - fetching all plugins');
|
|
83
82
|
}
|
|
84
|
-
|
|
83
|
+
displayPaginationInfo(filterParams);
|
|
85
84
|
// Security warning for SSL verification disabled
|
|
86
|
-
|
|
85
|
+
printSslWarning(options.verifySsl);
|
|
87
86
|
// Create authenticated API client
|
|
88
|
-
const client =
|
|
87
|
+
const client = createAuthenticatedClient(options);
|
|
89
88
|
const config = client.getConfig();
|
|
90
89
|
// Query plugins
|
|
91
90
|
console.log('');
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
printSection('Querying Plugins');
|
|
92
|
+
printInfo('Sending request to API...');
|
|
94
93
|
const requestStart = Date.now();
|
|
95
94
|
const response = await client.get(config.api.pluginListUrl, filterParams);
|
|
96
95
|
const requestDuration = Date.now() - requestStart;
|
|
97
96
|
// Handle response
|
|
98
|
-
const { items: plugins, total, hasMore } =
|
|
97
|
+
const { items: plugins, total, hasMore } = extractListResponse(response, 'plugins');
|
|
99
98
|
console.log('');
|
|
100
|
-
|
|
99
|
+
printSection('✓ Query Complete');
|
|
101
100
|
// Display results summary
|
|
102
|
-
|
|
101
|
+
displayListResults(plugins, total, hasMore, 'Plugins', requestDuration, filterParams);
|
|
103
102
|
// Display statistics
|
|
104
103
|
if (plugins.length > 0 && options.format === 'table') {
|
|
105
104
|
const activeCount = plugins.filter(p => p.isActive).length;
|
|
106
105
|
const publicCount = plugins.filter(p => p.isPublic === true).length;
|
|
107
106
|
const totalSize = plugins.reduce((sum, p) => sum + (p.fileSize || 0), 0);
|
|
108
107
|
console.log('');
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
printInfo('Statistics');
|
|
109
|
+
printKeyValue({
|
|
111
110
|
'Active Plugins': `${activeCount}/${plugins.length}`,
|
|
112
111
|
'Public Plugins': `${publicCount}/${plugins.length}`,
|
|
113
|
-
'Total Size':
|
|
112
|
+
'Total Size': formatFileSize(totalSize),
|
|
114
113
|
});
|
|
115
114
|
}
|
|
116
115
|
// Output data in requested format
|
|
117
116
|
console.log('');
|
|
118
117
|
if (options.output) {
|
|
119
|
-
|
|
118
|
+
printInfo('Saving to file', {
|
|
120
119
|
path: options.output,
|
|
121
120
|
format: options.format,
|
|
122
121
|
});
|
|
@@ -129,23 +128,23 @@ function listPlugins(program) {
|
|
|
129
128
|
'Organization': p.organization,
|
|
130
129
|
'Active': p.isActive ? 'Yes' : 'No',
|
|
131
130
|
'Public': p.isPublic ? 'Yes' : 'No',
|
|
132
|
-
'Size': p.fileSize ?
|
|
131
|
+
'Size': p.fileSize ? formatFileSize(p.fileSize) : 'N/A',
|
|
133
132
|
'Created At': p.createdAt || 'N/A',
|
|
134
133
|
}));
|
|
135
|
-
|
|
134
|
+
outputData(outputPlugins, {
|
|
136
135
|
format: options.format,
|
|
137
136
|
file: options.output,
|
|
138
137
|
});
|
|
139
138
|
// Performance metrics
|
|
140
139
|
console.log('');
|
|
141
|
-
|
|
140
|
+
printKeyValue({
|
|
142
141
|
'Execution ID': executionId,
|
|
143
|
-
'Total Duration':
|
|
142
|
+
'Total Duration': formatDuration(Date.now() - startTime),
|
|
144
143
|
});
|
|
145
144
|
console.log('');
|
|
146
145
|
}
|
|
147
146
|
catch (error) {
|
|
148
|
-
|
|
147
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
149
148
|
debug: program.opts().debug,
|
|
150
149
|
exit: true,
|
|
151
150
|
context: {
|
|
@@ -158,4 +157,4 @@ function listPlugins(program) {
|
|
|
158
157
|
}
|
|
159
158
|
});
|
|
160
159
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFxQ3RDLGtDQTJKQztBQTdMRCwyREFBeUU7QUFFekUsMERBQXdHO0FBQ3hHLDBEQUFrRTtBQUNsRSxvRUFBZ0k7QUFDaEksd0RBQThIO0FBWTlIOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLE9BQU87U0FDSixPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ3ZCLFdBQVcsQ0FBQywwQ0FBMEMsQ0FBQztRQUV4RCx3QkFBd0I7U0FDdkIsTUFBTSxDQUFDLFdBQVcsRUFBRSx3REFBd0QsQ0FBQztTQUM3RSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsc0NBQXNDLENBQUM7U0FDdkUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDOUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckUsTUFBTSxDQUFDLGVBQWUsRUFBRSwrREFBK0QsQ0FBQztRQUV6RixpQ0FBaUM7U0FDaEMsTUFBTSxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQztTQUN0RCxNQUFNLENBQUMscUJBQXFCLEVBQUUscURBQXFELENBQUM7UUFFckYsaUJBQWlCO1NBQ2hCLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSx3Q0FBd0MsRUFBRSxPQUFPLENBQUM7U0FDbEYsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO1NBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxrREFBa0QsRUFBRSxLQUFLLENBQUM7U0FDcEYsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJB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T0FBTyxDQUFDLE1BQU07Z0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7WUFFSCxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFBLDRCQUFhLEVBQUM7Z0JBQ1osY0FBYyxFQUFFLFdBQVc7Z0JBQzNCLGdCQUFnQixFQUFFLElBQUEsOEJBQWMsRUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO2FBQ3pELENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsY0FBYztvQkFDdkIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lCQUM3QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZm9ybWF0RmlsZVNpemUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQbHVnaW5MaXN0UmVzcG9uc2UsIFBsdWdpbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50IH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IGJ1aWxkQ29tbW9uRmlsdGVycywgQ29tbW9uRmlsdGVyUGFyYW1zLCBkaXNwbGF5UGFnaW5hdGlvbkluZm8sIGRpc3BsYXlMaXN0UmVzdWx0cyB9IGZyb20gJy4uL3V0aWxzL2xpc3QtY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBvdXRwdXREYXRhLCBleHRyYWN0TGlzdFJlc3BvbnNlLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuLyoqXG4gKiBRdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcGx1Z2luIGxpc3QgQVBJIGVuZHBvaW50LlxuICogQ29tYmluZXMgY29tbW9uIGZpbHRlcnMgKHBhZ2luYXRpb24sIHNvcnQpIHdpdGggcGx1Z2luLXNwZWNpZmljIGZpbHRlcnMuXG4gKi9cbmludGVyZmFjZSBQbHVnaW5GaWx0ZXJQYXJhbXMgZXh0ZW5kcyBDb21tb25GaWx0ZXJQYXJhbXMge1xuICAvLyBQbHVnaW4tc3BlY2lmaWMgZmlsdGVyc1xuICBuYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGxpc3QtcGx1Z2luc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBRdWVyaWVzIHBsdWdpbnMgd2l0aCBmaWx0ZXJzIGZvciBuYW1lLCB2ZXJzaW9uLCBpbWFnZSB0YWcsXG4gKiBhY3RpdmUgc3RhdHVzLCBwbHVzIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIGNsaSBsaXN0LXBsdWdpbnNcbiAqIGNsaSBsaXN0LXBsdWdpbnMgLS1uYW1lIGF1dGgtcGx1Z2luIC0taXMtYWN0aXZlIHRydWVcbiAqIGNsaSBsaXN0LXBsdWdpbnMgLS12ZXJzaW9uIFwiXjEuMC4wXCJcbiAqIGNsaSBsaXN0LXBsdWdpbnMgLS1saW1pdCA1MCAtLW9mZnNldCAxMDAgLS1zb3J0IFwibmFtZTphc2NcIlxuICogY2xpIGxpc3QtcGx1Z2lucyAtLWZvcm1hdCBqc29uIC0tb3V0cHV0IHBsdWdpbnMuanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0UGx1Z2lucyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnbGlzdC1wbHVnaW5zJylcbiAgICAuZGVzY3JpcHRpb24oJ1F1ZXJ5IHBsdWdpbnMgd2l0aCBjb21wcmVoZW5zaXZlIGZpbHRlcnMnKVxuXG4gICAgLy8gQ29tbW9uIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1pZCA8aWQ+JywgJ0ZpbHRlciBieSBwbHVnaW4gSUQgKGNhbiBzcGVjaWZ5IG11bHRpcGxlIHdpdGggY29tbWFzKScpXG4gICAgLm9wdGlvbignLS1pcy1hY3RpdmUgPGJvb2xlYW4+JywgJ0ZpbHRlciBieSBhY3RpdmUgc3RhdHVzICh0cnVlL2ZhbHNlKScpXG4gICAgLm9wdGlvbignLS1saW1pdCA8bnVtYmVyPicsICdNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzICgxLTEwMDApJywgcGFyc2VJbnQsIDUwKVxuICAgIC5vcHRpb24oJy0tb2Zmc2V0IDxudW1iZXI+JywgJ051bWJlciBvZiByZXN1bHRzIHRvIHNraXAnLCBwYXJzZUludCwgMClcbiAgICAub3B0aW9uKCctLXNvcnQgPHNvcnQ+JywgJ1NvcnQgZm9ybWF0OiBmaWVsZDpkaXJlY3Rpb24gKGUuZy4sIG5hbWU6YXNjLCBjcmVhdGVkQXQ6ZGVzYyknKVxuXG4gICAgLy8gUGx1Z2luLXNwZWNpZmljIGZpbHRlciBvcHRpb25zXG4gICAgLm9wdGlvbignLS1uYW1lIDxuYW1lPicsICdGaWx0ZXIgYnkgZXhhY3QgcGx1Z2luIG5hbWUnKVxuICAgIC5vcHRpb24oJy0tdmVyc2lvbiA8dmVyc2lvbj4nLCAnRmlsdGVyIGJ5IHZlcnNpb24gKHN1cHBvcnRzIHNlbXZlciwgZS5nLiwgXCJeMS4wLjBcIiknKVxuXG4gICAgLy8gT3V0cHV0IG9wdGlvbnNcbiAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUsIGNzdiknLCAndGFibGUnKVxuICAgIC5vcHRpb24oJy1vLCAtLW91dHB1dCA8ZmlsZT4nLCAnU2F2ZSBvdXRwdXQgdG8gZmlsZScpXG4gICAgLm9wdGlvbignLS1zaG93LW1ldGFkYXRhJywgJ0luY2x1ZGUgZnVsbCBtZXRhZGF0YSBpbiBvdXRwdXQgKGpzb24veWFtbCBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG5cbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignTGlzdCBQbHVnaW5zJywgJ1F1ZXJ5IFBsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gQnVpbGQgZmlsdGVyIHBhcmFtZXRlcnMgKGNvbW1vbiArIHBsdWdpbi1zcGVjaWZpYylcbiAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1zOiBQbHVnaW5GaWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgLi4uYnVpbGRDb21tb25GaWx0ZXJzKG9wdGlvbnMpLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBsdWdpbi1zcGVjaWZpYyBmaWx0ZXJzXG4gICAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgICBmaWx0ZXJQYXJhbXMubmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgICAvLyBWYWxpZGF0ZSBzZW12ZXIgZm9ybWF0XG4gICAgICAgICAgY29uc3QgdmVyc2lvblBhdHRlcm4gPSAvXihcXF58fik/KFxcZCspXFwuKFxcZCspXFwuKFxcZCspKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kLztcbiAgICAgICAgICBpZiAoIXZlcnNpb25QYXR0ZXJuLnRlc3Qob3B0aW9ucy52ZXJzaW9uKSkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBWZXJzaW9uIFwiJHtvcHRpb25zLnZlcnNpb259XCIgbWF5IG5vdCBiZSB2YWxpZCBzZW12ZXIgZm9ybWF0YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbHRlclBhcmFtcy52ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzcGxheSBhY3RpdmUgZmlsdGVyc1xuICAgICAgICBjb25zdCBhY3RpdmVGaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlkKSBhY3RpdmVGaWx0ZXJzLklEID0gZmlsdGVyUGFyYW1zLmlkO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLmlzQWN0aXZlICE9PSB1bmRlZmluZWQpIGFjdGl2ZUZpbHRlcnNbJ0lzIEFjdGl2ZSddID0gZmlsdGVyUGFyYW1zLmlzQWN0aXZlO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLm5hbWUpIGFjdGl2ZUZpbHRlcnMuTmFtZSA9IGZpbHRlclBhcmFtcy5uYW1lO1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW1zLnZlcnNpb24pIGFjdGl2ZUZpbHRlcnMuVmVyc2lvbiA9IGZpbHRlclBhcmFtcy52ZXJzaW9uO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3RpdmVGaWx0ZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdBY3RpdmUgRmlsdGVycycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoYWN0aXZlRmlsdGVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdObyBmaWx0ZXJzIGFwcGxpZWQgLSBmZXRjaGluZyBhbGwgcGx1Z2lucycpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVBhZ2luYXRpb25JbmZvKGZpbHRlclBhcmFtcyk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnRcbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgICAgIC8vIFF1ZXJ5IHBsdWdpbnNcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1F1ZXJ5aW5nIFBsdWdpbnMnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdTZW5kaW5nIHJlcXVlc3QgdG8gQVBJLi4uJyk7XG5cbiAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFBsdWdpbkxpc3RSZXNwb25zZT4oXG4gICAgICAgICAgY29uZmlnLmFwaS5wbHVnaW5MaXN0VXJsLFxuICAgICAgICAgIGZpbHRlclBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHJlcXVlc3RTdGFydDtcblxuICAgICAgICAvLyBIYW5kbGUgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgeyBpdGVtczogcGx1Z2lucywgdG90YWwsIGhhc01vcmUgfSA9IGV4dHJhY3RMaXN0UmVzcG9uc2U8UGx1Z2luPihyZXNwb25zZSwgJ3BsdWdpbnMnKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbign4pyTIFF1ZXJ5IENvbXBsZXRlJyk7XG5cbiAgICAgICAgLy8gRGlzcGxheSByZXN1bHRzIHN1bW1hcnlcbiAgICAgICAgZGlzcGxheUxpc3RSZXN1bHRzKHBsdWdpbnMsIHRvdGFsLCBoYXNNb3JlLCAnUGx1Z2lucycsIHJlcXVlc3REdXJhdGlvbiwgZmlsdGVyUGFyYW1zKTtcblxuICAgICAgICAvLyBEaXNwbGF5IHN0YXRpc3RpY3NcbiAgICAgICAgaWYgKHBsdWdpbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zLmZvcm1hdCA9PT0gJ3RhYmxlJykge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvdW50ID0gcGx1Z2lucy5maWx0ZXIocCA9PiBwLmlzQWN0aXZlKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgcHVibGljQ291bnQgPSBwbHVnaW5zLmZpbHRlcihwID0+IHAuaXNQdWJsaWMgPT09IHRydWUpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB0b3RhbFNpemUgPSBwbHVnaW5zLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyAocC5maWxlU2l6ZSB8fCAwKSwgMCk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdTdGF0aXN0aWNzJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnQWN0aXZlIFBsdWdpbnMnOiBgJHthY3RpdmVDb3VudH0vJHtwbHVnaW5zLmxlbmd0aH1gLFxuICAgICAgICAgICAgJ1B1YmxpYyBQbHVnaW5zJzogYCR7cHVibGljQ291bnR9LyR7cGx1Z2lucy5sZW5ndGh9YCxcbiAgICAgICAgICAgICdUb3RhbCBTaXplJzogZm9ybWF0RmlsZVNpemUodG90YWxTaXplKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE91dHB1dCBkYXRhIGluIHJlcXVlc3RlZCBmb3JtYXRcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgICAgICBwcmludEluZm8oJ1NhdmluZyB0byBmaWxlJywge1xuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9ybWF0IG91dHB1dCBkYXRhXG4gICAgICAgIGNvbnN0IG91dHB1dFBsdWdpbnMgPSBvcHRpb25zLnNob3dNZXRhZGF0YSA/IHBsdWdpbnMgOiBwbHVnaW5zLm1hcChwID0+ICh7XG4gICAgICAgICAgJ0lEJzogcC5pZCxcbiAgICAgICAgICAnTmFtZSc6IHAubmFtZSxcbiAgICAgICAgICAnVmVyc2lvbic6IHAudmVyc2lvbixcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcC5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ0FjdGl2ZSc6IHAuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1B1YmxpYyc6IHAuaXNQdWJsaWMgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1NpemUnOiBwLmZpbGVTaXplID8gZm9ybWF0RmlsZVNpemUocC5maWxlU2l6ZSkgOiAnTi9BJyxcbiAgICAgICAgICAnQ3JlYXRlZCBBdCc6IHAuY3JlYXRlZEF0IHx8ICdOL0EnLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgb3V0cHV0RGF0YShvdXRwdXRQbHVnaW5zLCB7XG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnbGlzdC1wbHVnaW5zJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgZmlsdGVyczogb3B0aW9ucyxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQXdDLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUEyQixxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFZakk7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLE9BQU87U0FDSixPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ3ZCLFdBQVcsQ0FBQywwQ0FBMEMsQ0FBQztRQUV4RCx3QkFBd0I7U0FDdkIsTUFBTSxDQUFDLFdBQVcsRUFBRSx3REFBd0QsQ0FBQztTQUM3RSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsc0NBQXNDLENBQUM7U0FDdkUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDOUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FD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Q0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbkMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ3ZELFlBQVksRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUs7YUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFFSixVQUFVLENBQUMsYUFBYSxFQUFFO2dCQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUM7WUFFSCxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixhQUFhLENBQUM7Z0JBQ1osY0FBYyxFQUFFLFdBQVc7Z0JBQzNCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO2FBQ3pELENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxjQUFjO29CQUN2QixXQUFXO29CQUNYLE9BQU8sRUFBRSxPQUFPO29CQUNoQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7aUJBQzdCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBmb3JtYXRGaWxlU2l6ZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGx1Z2luTGlzdFJlc3BvbnNlLCB0eXBlIFBsdWdpbiB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50IH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGJ1aWxkQ29tbW9uRmlsdGVycywgdHlwZSBDb21tb25GaWx0ZXJQYXJhbXMsIGRpc3BsYXlQYWdpbmF0aW9uSW5mbywgZGlzcGxheUxpc3RSZXN1bHRzIH0gZnJvbSAnLi4vdXRpbHMvbGlzdC1jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IG91dHB1dERhdGEsIGV4dHJhY3RMaXN0UmVzcG9uc2UsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG4vKipcbiAqIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBwbHVnaW4gbGlzdCBBUEkgZW5kcG9pbnQuXG4gKiBDb21iaW5lcyBjb21tb24gZmlsdGVycyAocGFnaW5hdGlvbiwgc29ydCkgd2l0aCBwbHVnaW4tc3BlY2lmaWMgZmlsdGVycy5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbkZpbHRlclBhcmFtcyBleHRlbmRzIENvbW1vbkZpbHRlclBhcmFtcyB7XG4gIC8vIFBsdWdpbi1zcGVjaWZpYyBmaWx0ZXJzXG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgbGlzdC1wbHVnaW5zYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFF1ZXJpZXMgcGx1Z2lucyB3aXRoIGZpbHRlcnMgZm9yIG5hbWUsIHZlcnNpb24sIGltYWdlIHRhZyxcbiAqIGFjdGl2ZSBzdGF0dXMsIHBsdXMgcGFnaW5hdGlvbiBhbmQgc29ydGluZy5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogY2xpIGxpc3QtcGx1Z2luc1xuICogY2xpIGxpc3QtcGx1Z2lucyAtLW5hbWUgYXV0aC1wbHVnaW4gLS1pcy1hY3RpdmUgdHJ1ZVxuICogY2xpIGxpc3QtcGx1Z2lucyAtLXZlcnNpb24gXCJeMS4wLjBcIlxuICogY2xpIGxpc3QtcGx1Z2lucyAtLWxpbWl0IDUwIC0tb2Zmc2V0IDEwMCAtLXNvcnQgXCJuYW1lOmFzY1wiXG4gKiBjbGkgbGlzdC1wbHVnaW5zIC0tZm9ybWF0IGpzb24gLS1vdXRwdXQgcGx1Z2lucy5qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RQbHVnaW5zKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdsaXN0LXBsdWdpbnMnKVxuICAgIC5kZXNjcmlwdGlvbignUXVlcnkgcGx1Z2lucyB3aXRoIGNvbXByZWhlbnNpdmUgZmlsdGVycycpXG5cbiAgICAvLyBDb21tb24gZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLWlkIDxpZD4nLCAnRmlsdGVyIGJ5IHBsdWdpbiBJRCAoY2FuIHNwZWNpZnkgbXVsdGlwbGUgd2l0aCBjb21tYXMpJylcbiAgICAub3B0aW9uKCctLWlzLWFjdGl2ZSA8Ym9vbGVhbj4nLCAnRmlsdGVyIGJ5IGFjdGl2ZSBzdGF0dXMgKHRydWUvZmFsc2UpJylcbiAgICAub3B0aW9uKCctLWxpbWl0IDxudW1iZXI+JywgJ01heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgKDEtMTAwMCknLCBwYXJzZUludCwgNTApXG4gICAgLm9wdGlvbignLS1vZmZzZXQgPG51bWJlcj4nLCAnTnVtYmVyIG9mIHJlc3VsdHMgdG8gc2tpcCcsIHBhcnNlSW50LCAwKVxuICAgIC5vcHRpb24oJy0tc29ydCA8c29ydD4nLCAnU29ydCBmb3JtYXQ6IGZpZWxkOmRpcmVjdGlvbiAoZS5nLiwgbmFtZTphc2MsIGNyZWF0ZWRBdDpkZXNjKScpXG5cbiAgICAvLyBQbHVnaW4tc3BlY2lmaWMgZmlsdGVyIG9wdGlvbnNcbiAgICAub3B0aW9uKCctLW5hbWUgPG5hbWU+JywgJ0ZpbHRlciBieSBleGFjdCBwbHVnaW4gbmFtZScpXG4gICAgLm9wdGlvbignLS12ZXJzaW9uIDx2ZXJzaW9uPicsICdGaWx0ZXIgYnkgdmVyc2lvbiAoc3VwcG9ydHMgc2VtdmVyLCBlLmcuLCBcIl4xLjAuMFwiKScpXG5cbiAgICAvLyBPdXRwdXQgb3B0aW9uc1xuICAgIC5vcHRpb24oJy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0IChqc29uLCB5YW1sLCB0YWJsZSwgY3N2KScsICd0YWJsZScpXG4gICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdTYXZlIG91dHB1dCB0byBmaWxlJylcbiAgICAub3B0aW9uKCctLXNob3ctbWV0YWRhdGEnLCAnSW5jbHVkZSBmdWxsIG1ldGFkYXRhIGluIG91dHB1dCAoanNvbi95YW1sIG9ubHkpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcblxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdMaXN0IFBsdWdpbnMnLCAnUXVlcnkgUGx1Z2lucycpO1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICAvLyBCdWlsZCBmaWx0ZXIgcGFyYW1ldGVycyAoY29tbW9uICsgcGx1Z2luLXNwZWNpZmljKVxuICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbXM6IFBsdWdpbkZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAuLi5idWlsZENvbW1vbkZpbHRlcnMob3B0aW9ucyksXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUGx1Z2luLXNwZWNpZmljIGZpbHRlcnNcbiAgICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICAgIGZpbHRlclBhcmFtcy5uYW1lID0gb3B0aW9ucy5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudmVyc2lvbikge1xuICAgICAgICAgIC8vIFZhbGlkYXRlIHNlbXZlciBmb3JtYXRcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uUGF0dGVybiA9IC9eKFxcXnx+KT8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykoLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQvO1xuICAgICAgICAgIGlmICghdmVyc2lvblBhdHRlcm4udGVzdChvcHRpb25zLnZlcnNpb24pKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYFZlcnNpb24gXCIke29wdGlvbnMudmVyc2lvbn1cIiBtYXkgbm90IGJlIHZhbGlkIHNlbXZlciBmb3JtYXRgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlsdGVyUGFyYW1zLnZlcnNpb24gPSBvcHRpb25zLnZlcnNpb247XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGFjdGl2ZSBmaWx0ZXJzXG4gICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuaWQpIGFjdGl2ZUZpbHRlcnMuSUQgPSBmaWx0ZXJQYXJhbXMuaWQ7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMuaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkgYWN0aXZlRmlsdGVyc1snSXMgQWN0aXZlJ10gPSBmaWx0ZXJQYXJhbXMuaXNBY3RpdmU7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMubmFtZSkgYWN0aXZlRmlsdGVycy5OYW1lID0gZmlsdGVyUGFyYW1zLm5hbWU7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbXMudmVyc2lvbikgYWN0aXZlRmlsdGVycy5WZXJzaW9uID0gZmlsdGVyUGFyYW1zLnZlcnNpb247XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2ZUZpbHRlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwcmludEluZm8oJ0FjdGl2ZSBGaWx0ZXJzJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZShhY3RpdmVGaWx0ZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludEluZm8oJ05vIGZpbHRlcnMgYXBwbGllZCAtIGZldGNoaW5nIGFsbCBwbHVnaW5zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwbGF5UGFnaW5hdGlvbkluZm8oZmlsdGVyUGFyYW1zKTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gUXVlcnkgcGx1Z2luc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignUXVlcnlpbmcgUGx1Z2lucycpO1xuICAgICAgICBwcmludEluZm8oJ1NlbmRpbmcgcmVxdWVzdCB0byBBUEkuLi4nKTtcblxuICAgICAgICBjb25zdCByZXF1ZXN0U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UGx1Z2luTGlzdFJlc3BvbnNlPihcbiAgICAgICAgICBjb25maWcuYXBpLnBsdWdpbkxpc3RVcmwsXG4gICAgICAgICAgZmlsdGVyUGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuXG4gICAgICAgIC8vIEhhbmRsZSByZXNwb25zZVxuICAgICAgICBjb25zdCB7IGl0ZW1zOiBwbHVnaW5zLCB0b3RhbCwgaGFzTW9yZSB9ID0gZXh0cmFjdExpc3RSZXNwb25zZTxQbHVnaW4+KHJlc3BvbnNlLCAncGx1Z2lucycpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUXVlcnkgQ29tcGxldGUnKTtcblxuICAgICAgICAvLyBEaXNwbGF5IHJlc3VsdHMgc3VtbWFyeVxuICAgICAgICBkaXNwbGF5TGlzdFJlc3VsdHMocGx1Z2lucywgdG90YWwsIGhhc01vcmUsICdQbHVnaW5zJywgcmVxdWVzdER1cmF0aW9uLCBmaWx0ZXJQYXJhbXMpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgc3RhdGlzdGljc1xuICAgICAgICBpZiAocGx1Z2lucy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZm9ybWF0ID09PSAndGFibGUnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlQ291bnQgPSBwbHVnaW5zLmZpbHRlcihwID0+IHAuaXNBY3RpdmUpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCBwdWJsaWNDb3VudCA9IHBsdWdpbnMuZmlsdGVyKHAgPT4gcC5pc1B1YmxpYyA9PT0gdHJ1ZSkubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IHRvdGFsU2l6ZSA9IHBsdWdpbnMucmVkdWNlKChzdW0sIHApID0+IHN1bSArIChwLmZpbGVTaXplIHx8IDApLCAwKTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEluZm8oJ1N0YXRpc3RpY3MnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdBY3RpdmUgUGx1Z2lucyc6IGAke2FjdGl2ZUNvdW50fS8ke3BsdWdpbnMubGVuZ3RofWAsXG4gICAgICAgICAgICAnUHVibGljIFBsdWdpbnMnOiBgJHtwdWJsaWNDb3VudH0vJHtwbHVnaW5zLmxlbmd0aH1gLFxuICAgICAgICAgICAgJ1RvdGFsIFNpemUnOiBmb3JtYXRGaWxlU2l6ZSh0b3RhbFNpemUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3V0cHV0IGRhdGEgaW4gcmVxdWVzdGVkIGZvcm1hdFxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dCkge1xuICAgICAgICAgIHByaW50SW5mbygnU2F2aW5nIHRvIGZpbGUnLCB7XG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3JtYXQgb3V0cHV0IGRhdGFcbiAgICAgICAgY29uc3Qgb3V0cHV0UGx1Z2lucyA9IG9wdGlvbnMuc2hvd01ldGFkYXRhID8gcGx1Z2lucyA6IHBsdWdpbnMubWFwKHAgPT4gKHtcbiAgICAgICAgICAnSUQnOiBwLmlkLFxuICAgICAgICAgICdOYW1lJzogcC5uYW1lLFxuICAgICAgICAgICdWZXJzaW9uJzogcC52ZXJzaW9uLFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAnQWN0aXZlJzogcC5pc0FjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnUHVibGljJzogcC5pc1B1YmxpYyA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnU2l6ZSc6IHAuZmlsZVNpemUgPyBmb3JtYXRGaWxlU2l6ZShwLmZpbGVTaXplKSA6ICdOL0EnLFxuICAgICAgICAgICdDcmVhdGVkIEF0JzogcC5jcmVhdGVkQXQgfHwgJ04vQScsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBvdXRwdXREYXRhKG91dHB1dFBsdWdpbnMsIHtcbiAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBQZXJmb3JtYW5jZSBtZXRyaWNzXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICdUb3RhbCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKERhdGUubm93KCkgLSBzdGFydFRpbWUpLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdsaXN0LXBsdWdpbnMnLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBmaWx0ZXJzOiBvcHRpb25zLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|