@pipeline-builder/pipeline-manager 3.4.110 → 3.4.112

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.
@@ -1,6 +1,6 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { CloudFormationClient, ListStacksCommand, DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
3
+ import { CloudFormationClient, DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
4
4
  import { Command } from 'commander';
5
5
  import { createAuthenticatedClientAsync, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
6
6
  import { ERROR_CODES, handleError } from '../utils/error-handler.js';
@@ -52,23 +52,30 @@ export function auditStacks(program) {
52
52
  const entries = registryRes?.entries
53
53
  ?? registryRes?.data?.entries
54
54
  ?? [];
55
- // Fetch stacks from CloudFormation.
55
+ // Fetch stacks from CloudFormation. DescribeStacks (no StackName) returns every
56
+ // active stack WITH its tags in one paginated sweep — avoiding the N+1
57
+ // DescribeStacks-per-stack the old ListStacks path needed (ListStacks omits tags)
58
+ // and the API throttling it caused on accounts with many stacks.
56
59
  printInfo('Listing CloudFormation stacks', { region });
57
60
  const cfn = new CloudFormationClient({ region });
58
61
  const stacks = [];
62
+ const activeStatuses = new Set(ACTIVE_STATUSES);
59
63
  let nextToken;
60
64
  let pages = 0;
65
+ // Backstop only (~20k stacks at ~100/page), not an expected limit. A FULL scan
66
+ // matters: truncating would diff the registry against an incomplete stack set and
67
+ // report live stacks as `missing-stack`. So if this is ever hit, warn LOUDLY rather
68
+ // than silently under-reporting (the previous code capped at 20 pages silently).
69
+ const MAX_PAGES = 200;
70
+ let truncated = false;
61
71
  do {
62
- const listResp = await cfn.send(new ListStacksCommand({
63
- StackStatusFilter: ACTIVE_STATUSES,
64
- NextToken: nextToken,
65
- }));
66
- for (const summary of listResp.StackSummaries ?? []) {
67
- if (!summary.StackName)
72
+ const resp = await cfn.send(new DescribeStacksCommand({ NextToken: nextToken }));
73
+ for (const stack of resp.Stacks ?? []) {
74
+ if (!stack.StackName)
68
75
  continue;
69
- // Pull tags via DescribeStacks (ListStacks doesn't include them).
70
- const desc = await cfn.send(new DescribeStacksCommand({ StackName: summary.StackName }));
71
- const tags = desc.Stacks?.[0]?.Tags ?? [];
76
+ if (!activeStatuses.has(stack.StackStatus ?? ''))
77
+ continue; // skip in-progress/rolled-back/deleted
78
+ const tags = stack.Tags ?? [];
72
79
  const pbTag = tags.find((t) => t.Key === 'pipeline-builder')?.Value;
73
80
  const orgTag = tags.find((t) => t.Key === 'OrgId' || t.Key === 'orgId')?.Value;
74
81
  if (!pbTag)
@@ -76,17 +83,24 @@ export function auditStacks(program) {
76
83
  if (options.org && orgTag && orgTag !== options.org)
77
84
  continue; // Wrong org filter.
78
85
  stacks.push({
79
- stackName: summary.StackName,
80
- stackStatus: summary.StackStatus ?? 'UNKNOWN',
86
+ stackName: stack.StackName,
87
+ stackStatus: stack.StackStatus ?? 'UNKNOWN',
81
88
  region,
82
89
  pipelineBuilderTag: pbTag,
83
90
  orgIdTag: orgTag,
84
- creationTime: summary.CreationTime,
91
+ creationTime: stack.CreationTime,
85
92
  });
86
93
  }
87
- nextToken = listResp.NextToken;
94
+ nextToken = resp.NextToken;
88
95
  pages++;
89
- } while (nextToken && pages < 20);
96
+ if (nextToken && pages >= MAX_PAGES) {
97
+ truncated = true;
98
+ break;
99
+ }
100
+ } while (nextToken);
101
+ if (truncated) {
102
+ printWarning(`Stack scan hit the ${MAX_PAGES}-page safety cap — results may be INCOMPLETE and 'missing-stack' findings could be false. Narrow by --region/--org, or raise MAX_PAGES.`);
103
+ }
90
104
  // Diff.
91
105
  const registryStackNames = new Set(entries.map((e) => e.stackName).filter((n) => !!n));
92
106
  const cfnStackNames = new Set(stacks.map((s) => s.stackName));
@@ -157,4 +171,4 @@ export function auditStacks(program) {
157
171
  }
158
172
  });
159
173
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXN0YWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBb0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUE0QjNHLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQjtJQUNoRSxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDOUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLDZGQUE2RixDQUFDO1NBQzFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxlQUFlLEVBQUUscURBQXFELENBQUM7U0FDOUUsTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUM7U0FDakQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztT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QU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgTGlzdFN0YWNrc0NvbW1hbmQsIERlc2NyaWJlU3RhY2tzQ29tbWFuZCwgdHlwZSBTdGFja1N0YXR1cyB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuaW50ZXJmYWNlIFJlZ2lzdHJ5RW50cnkge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lQXJuOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICBzdGFja05hbWU/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHN0YWNrU3RhdHVzOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBwaXBlbGluZUJ1aWxkZXJUYWc/OiBzdHJpbmc7XG4gIG9yZ0lkVGFnPzogc3RyaW5nO1xuICBjcmVhdGlvblRpbWU/OiBEYXRlO1xufVxuXG5pbnRlcmZhY2UgQXVkaXRGaW5kaW5nIHtcbiAgdHlwZTogJ29ycGhhbmVkLXN0YWNrJyB8ICdtaXNzaW5nLXN0YWNrJztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICBwaXBlbGluZUlkPzogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xufVxuXG5jb25zdCBBQ1RJVkVfU1RBVFVTRVMgPSBbXG4gICdDUkVBVEVfQ09NUExFVEUnLCAnVVBEQVRFX0NPTVBMRVRFJywgJ1VQREFURV9ST0xMQkFDS19DT01QTEVURScsXG4gICdJTVBPUlRfQ09NUExFVEUnLCAnSU1QT1JUX1JPTExCQUNLX0NPTVBMRVRFJyxcbl07XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYXVkaXQtc3RhY2tzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIERpZmZzIENsb3VkRm9ybWF0aW9uIHN0YWNrcyAoZmlsdGVyZWQgdG8gdGhvc2UgdGFnZ2VkIHdpdGggYHBpcGVsaW5lLWJ1aWxkZXJgKVxuICogYWdhaW5zdCB0aGUgcGxhdGZvcm0ncyBgcGlwZWxpbmVfcmVnaXN0cnlgIHRhYmxlLiBTdXJmYWNlczpcbiAqICAgLSAqKk9ycGhhbmVkIHN0YWNrcyoqOiB0YWdnZWQgc3RhY2tzIHdpdGggbm8gREIgcmVjb3JkIChsaWtlbHkgbGVmdG92ZXJzIGFmdGVyXG4gKiAgICAgYSBwaXBlbGluZSB3YXMgZGVsZXRlZCBmcm9tIHRoZSBkYXNoYm9hcmQgYnV0IHRoZSBDREsgc3RhY2sgc3RheWVkIGluIEFXUykuXG4gKiAgIC0gKipNaXNzaW5nIHN0YWNrcyoqOiByZWdpc3RyeSBlbnRyaWVzIHBvaW50aW5nIHRvIHN0YWNrcyB0aGF0IG5vIGxvbmdlciBleGlzdFxuICogICAgIGluIENsb3VkRm9ybWF0aW9uIChsaWtlbHkgYWZ0ZXIgYSBtYW51YWwgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2tgKS5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIHRoZXJlIGFyZSBubyBmaW5kaW5ncy5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIG9ycGhhbmVkIG9yIG1pc3Npbmcgc3RhY2sgaXMgZm91bmQuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC1zdGFja3MgLS1yZWdpb24gdXMtZWFzdC0xXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0LXN0YWNrcyAtLW9yZyBhY21lIC0tanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdFN0YWNrcyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnYXVkaXQtc3RhY2tzJylcbiAgICAuZGVzY3JpcHRpb24oJ0RpZmYgQ2xvdWRGb3JtYXRpb24gc3RhY2tzIHZzIHBpcGVsaW5lX3JlZ2lzdHJ5IHRvIGZpbmQgb3JwaGFuZWQgb3IgbWlzc2luZyBDREsgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdGaWx0ZXIgYm90aCByZWdpc3RyeSBhbmQgc3RhY2sgc2NhbiB0byBhIHNpbmdsZSBvcmcnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0cyBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgU3RhY2tzJyk7XG4gICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gRmV0Y2ggdGhlIHBsYXRmb3JtJ3MgdmlldyBvZiByZWdpc3RlcmVkIHBpcGVsaW5lcy5cbiAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSByZWdpc3RyeSBmcm9tIHBsYXRmb3JtJywgeyBvcmc6IG9wdGlvbnMub3JnID8/ICcoYWxsKScgfSk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcmVnaXN0cnlSZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHsgZW50cmllczogUmVnaXN0cnlFbnRyeVtdIH0+KFxuICAgICAgICAgIGAvYXBpL3BpcGVsaW5lcy9yZWdpc3RyeSR7b3B0aW9ucy5vcmcgPyBgP29yZ0lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9wdGlvbnMub3JnKX1gIDogJyd9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZW50cmllczogUmVnaXN0cnlFbnRyeVtdID0gKHJlZ2lzdHJ5UmVzIGFzIHsgZW50cmllcz86IFJlZ2lzdHJ5RW50cnlbXSB9KT8uZW50cmllc1xuICAgICAgICAgID8/IChyZWdpc3RyeVJlcyBhcyB7IGRhdGE/OiB7IGVudHJpZXM/OiBSZWdpc3RyeUVudHJ5W10gfSB9KT8uZGF0YT8uZW50cmllc1xuICAgICAgICAgID8/IFtdO1xuXG4gICAgICAgIC8vIEZldGNoIHN0YWNrcyBmcm9tIENsb3VkRm9ybWF0aW9uLlxuICAgICAgICBwcmludEluZm8oJ0xpc3RpbmcgQ2xvdWRGb3JtYXRpb24gc3RhY2tzJywgeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IGNmbiA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICAgICAgY29uc3Qgc3RhY2tzOiBTdGFja0luZm9bXSA9IFtdO1xuICAgICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwYWdlcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCBsaXN0UmVzcCA9IGF3YWl0IGNmbi5zZW5kKG5ldyBMaXN0U3RhY2tzQ29tbWFuZCh7XG4gICAgICAgICAgICBTdGFja1N0YXR1c0ZpbHRlcjogQUNUSVZFX1NUQVRVU0VTIGFzIFN0YWNrU3RhdHVzW10sXG4gICAgICAgICAgICBOZXh0VG9rZW46IG5leHRUb2tlbixcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgZm9yIChjb25zdCBzdW1tYXJ5IG9mIGxpc3RSZXNwLlN0YWNrU3VtbWFyaWVzID8/IFtdKSB7XG4gICAgICAgICAgICBpZiAoIXN1bW1hcnkuU3RhY2tOYW1lKSBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIFB1bGwgdGFncyB2aWEgRGVzY3JpYmVTdGFja3MgKExpc3RTdGFja3MgZG9lc24ndCBpbmNsdWRlIHRoZW0pLlxuICAgICAgICAgICAgY29uc3QgZGVzYyA9IGF3YWl0IGNmbi5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lIH0pKTtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBkZXNjLlN0YWNrcz8uWzBdPy5UYWdzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcGJUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAncGlwZWxpbmUtYnVpbGRlcicpPy5WYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9yZ1RhZyA9IHRhZ3MuZmluZCgodCkgPT4gdC5LZXkgPT09ICdPcmdJZCcgfHwgdC5LZXkgPT09ICdvcmdJZCcpPy5WYWx1ZTtcbiAgICAgICAgICAgIGlmICghcGJUYWcpIGNvbnRpbnVlOyAvLyBOb3QgYSBwaXBlbGluZS1idWlsZGVyIHN0YWNrLlxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub3JnICYmIG9yZ1RhZyAmJiBvcmdUYWcgIT09IG9wdGlvbnMub3JnKSBjb250aW51ZTsgLy8gV3Jvbmcgb3JnIGZpbHRlci5cbiAgICAgICAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgc3RhY2tTdGF0dXM6IHN1bW1hcnkuU3RhY2tTdGF0dXMgPz8gJ1VOS05PV04nLFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIHBpcGVsaW5lQnVpbGRlclRhZzogcGJUYWcsXG4gICAgICAgICAgICAgIG9yZ0lkVGFnOiBvcmdUYWcsXG4gICAgICAgICAgICAgIGNyZWF0aW9uVGltZTogc3VtbWFyeS5DcmVhdGlvblRpbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFRva2VuID0gbGlzdFJlc3AuTmV4dFRva2VuO1xuICAgICAgICAgIHBhZ2VzKys7XG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbiAmJiBwYWdlcyA8IDIwKTtcblxuICAgICAgICAvLyBEaWZmLlxuICAgICAgICBjb25zdCByZWdpc3RyeVN0YWNrTmFtZXMgPSBuZXcgU2V0KGVudHJpZXMubWFwKChlKSA9PiBlLnN0YWNrTmFtZSkuZmlsdGVyKChuKTogbiBpcyBzdHJpbmcgPT4gISFuKSk7XG4gICAgICAgIGNvbnN0IGNmblN0YWNrTmFtZXMgPSBuZXcgU2V0KHN0YWNrcy5tYXAoKHMpID0+IHMuc3RhY2tOYW1lKSk7XG5cbiAgICAgICAgY29uc3QgZmluZGluZ3M6IEF1ZGl0RmluZGluZ1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzKSB7XG4gICAgICAgICAgaWYgKCFyZWdpc3RyeVN0YWNrTmFtZXMuaGFzKHN0YWNrLnN0YWNrTmFtZSkpIHtcbiAgICAgICAgICAgIGZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiAnb3JwaGFuZWQtc3RhY2snLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgQ2xvdWRGb3JtYXRpb24gc3RhY2sgdGFnZ2VkIHBpcGVsaW5lLWJ1aWxkZXI9JHtzdGFjay5waXBlbGluZUJ1aWxkZXJUYWcgPz8gJyh1bnNldCknfSBoYXMgbm8gbWF0Y2hpbmcgcGlwZWxpbmVfcmVnaXN0cnkgZW50cnlgLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmIChlbnRyeS5zdGFja05hbWUgJiYgIWNmblN0YWNrTmFtZXMuaGFzKGVudHJ5LnN0YWNrTmFtZSkpIHtcbiAgICAgICAgICAgIGZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiAnbWlzc2luZy1zdGFjaycsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogZW50cnkuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBwaXBlbGluZUlkOiBlbnRyeS5waXBlbGluZUlkLFxuICAgICAgICAgICAgICBwaXBlbGluZU5hbWU6IGVudHJ5LnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgUmVnaXN0cnkgZW50cnkgcmVmZXJlbmNlcyBzdGFjayAke2VudHJ5LnN0YWNrTmFtZX0gYnV0IG5vIHN1Y2ggc3RhY2sgZXhpc3RzIGluIENsb3VkRm9ybWF0aW9uYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4aXRDb2RlID0gZmluZGluZ3MubGVuZ3RoID4gMCA/IDEgOiAwO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzY2FubmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIG9yZ0ZpbHRlcjogb3B0aW9ucy5vcmcsXG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXM6IGVudHJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgY2ZuU3RhY2tzOiBzdGFja3MubGVuZ3RoLFxuICAgICAgICAgICAgZmluZGluZ3MsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdBdWRpdCBSZXN1bHRzJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdDb3VudHMnLCB7XG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXM6IFN0cmluZyhlbnRyaWVzLmxlbmd0aCksXG4gICAgICAgICAgICBjZm5TdGFja3M6IFN0cmluZyhzdGFja3MubGVuZ3RoKSxcbiAgICAgICAgICAgIGZpbmRpbmdzOiBTdHJpbmcoZmluZGluZ3MubGVuZ3RoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZmluZGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ05vIGRyaWZ0IGJldHdlZW4gcGlwZWxpbmVfcmVnaXN0cnkgYW5kIENsb3VkRm9ybWF0aW9uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZiBvZiBmaW5kaW5ncykge1xuICAgICAgICAgICAgICBpZiAoZi50eXBlID09PSAnb3JwaGFuZWQtc3RhY2snKSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBPUlBIQU5FRCAgJHtmLnN0YWNrTmFtZX0g4oCUICR7Zi5kZXRhaWx9YCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBNSVNTSU5HICAgJHtmLnN0YWNrTmFtZX0gKHBpcGVsaW5lICR7Zi5waXBlbGluZUlkID8/ICc/J30pIOKAlCAke2YuZGV0YWlsfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2ZpbmRpbmdzLmxlbmd0aH0gZHJpZnQgZmluZGluZyR7ZmluZGluZ3MubGVuZ3RoID09PSAxID8gJycgOiAncyd9LiBSZXZpZXcgYW5kIHJlY29uY2lsZSBtYW51YWxseS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdhdWRpdC1zdGFja3MnLCBleGVjdXRpb25JZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXN0YWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTRCM0csTUFBTSxlQUFlLEdBQUc7SUFDdEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQ2hFLGlCQUFpQixFQUFFLDBCQUEwQjtDQUM5QyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFnQjtJQUMxQyxPQUFPO1NBQ0osT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUN2QixXQUFXLENBQUMsNkZBQTZGLENBQUM7U0FDMUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHlDQUF5QyxDQUFDO1NBQ3RFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUM7U0FDM0QsTUFBTSxDQUFDLGVBQWUsRUFBRSxxREFBcUQsQ0FBQztTQUM5RSxNQUFNLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQztTQUNqRCxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FB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QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUU7YUFDbEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ2xpZW50LCBEZXNjcmliZVN0YWNrc0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmludGVyZmFjZSBSZWdpc3RyeUVudHJ5IHtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICBwaXBlbGluZUFybjogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YWNrSW5mbyB7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBzdGFja1N0YXR1czogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgcGlwZWxpbmVCdWlsZGVyVGFnPzogc3RyaW5nO1xuICBvcmdJZFRhZz86IHN0cmluZztcbiAgY3JlYXRpb25UaW1lPzogRGF0ZTtcbn1cblxuaW50ZXJmYWNlIEF1ZGl0RmluZGluZyB7XG4gIHR5cGU6ICdvcnBoYW5lZC1zdGFjaycgfCAnbWlzc2luZy1zdGFjayc7XG4gIHN0YWNrTmFtZT86IHN0cmluZztcbiAgcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICBkZXRhaWw6IHN0cmluZztcbn1cblxuY29uc3QgQUNUSVZFX1NUQVRVU0VTID0gW1xuICAnQ1JFQVRFX0NPTVBMRVRFJywgJ1VQREFURV9DT01QTEVURScsICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAnSU1QT1JUX0NPTVBMRVRFJywgJ0lNUE9SVF9ST0xMQkFDS19DT01QTEVURScsXG5dO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGF1ZGl0LXN0YWNrc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBEaWZmcyBDbG91ZEZvcm1hdGlvbiBzdGFja3MgKGZpbHRlcmVkIHRvIHRob3NlIHRhZ2dlZCB3aXRoIGBwaXBlbGluZS1idWlsZGVyYClcbiAqIGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgYHBpcGVsaW5lX3JlZ2lzdHJ5YCB0YWJsZS4gU3VyZmFjZXM6XG4gKiAgIC0gKipPcnBoYW5lZCBzdGFja3MqKjogdGFnZ2VkIHN0YWNrcyB3aXRoIG5vIERCIHJlY29yZCAobGlrZWx5IGxlZnRvdmVycyBhZnRlclxuICogICAgIGEgcGlwZWxpbmUgd2FzIGRlbGV0ZWQgZnJvbSB0aGUgZGFzaGJvYXJkIGJ1dCB0aGUgQ0RLIHN0YWNrIHN0YXllZCBpbiBBV1MpLlxuICogICAtICoqTWlzc2luZyBzdGFja3MqKjogcmVnaXN0cnkgZW50cmllcyBwb2ludGluZyB0byBzdGFja3MgdGhhdCBubyBsb25nZXIgZXhpc3RcbiAqICAgICBpbiBDbG91ZEZvcm1hdGlvbiAobGlrZWx5IGFmdGVyIGEgbWFudWFsIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrYCkuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiB0aGVyZSBhcmUgbm8gZmluZGluZ3MuXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBvcnBoYW5lZCBvciBtaXNzaW5nIHN0YWNrIGlzIGZvdW5kLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQtc3RhY2tzIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC1zdGFja3MgLS1vcmcgYWNtZSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRTdGFja3MocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2F1ZGl0LXN0YWNrcycpXG4gICAgLmRlc2NyaXB0aW9uKCdEaWZmIENsb3VkRm9ybWF0aW9uIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSB0byBmaW5kIG9ycGhhbmVkIG9yIG1pc3NpbmcgQ0RLIGRlcGxveW1lbnRzJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnRmlsdGVyIGJvdGggcmVnaXN0cnkgYW5kIHN0YWNrIHNjYW4gdG8gYSBzaW5nbGUgb3JnJylcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdHMgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0F1ZGl0IFN0YWNrcycpO1xuICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEZldGNoIHRoZSBwbGF0Zm9ybSdzIHZpZXcgb2YgcmVnaXN0ZXJlZCBwaXBlbGluZXMuXG4gICAgICAgIHByaW50SW5mbygnRmV0Y2hpbmcgcGlwZWxpbmUgcmVnaXN0cnkgZnJvbSBwbGF0Zm9ybScsIHsgb3JnOiBvcHRpb25zLm9yZyA/PyAnKGFsbCknIH0pO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5UmVzID0gYXdhaXQgY2xpZW50LmdldDx7IGVudHJpZXM6IFJlZ2lzdHJ5RW50cnlbXSB9PihcbiAgICAgICAgICBgL2FwaS9waXBlbGluZXMvcmVnaXN0cnkke29wdGlvbnMub3JnID8gYD9vcmdJZD0ke2VuY29kZVVSSUNvbXBvbmVudChvcHRpb25zLm9yZyl9YCA6ICcnfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFJlZ2lzdHJ5RW50cnlbXSA9IChyZWdpc3RyeVJlcyBhcyB7IGVudHJpZXM/OiBSZWdpc3RyeUVudHJ5W10gfSk/LmVudHJpZXNcbiAgICAgICAgICA/PyAocmVnaXN0cnlSZXMgYXMgeyBkYXRhPzogeyBlbnRyaWVzPzogUmVnaXN0cnlFbnRyeVtdIH0gfSk/LmRhdGE/LmVudHJpZXNcbiAgICAgICAgICA/PyBbXTtcblxuICAgICAgICAvLyBGZXRjaCBzdGFja3MgZnJvbSBDbG91ZEZvcm1hdGlvbi4gRGVzY3JpYmVTdGFja3MgKG5vIFN0YWNrTmFtZSkgcmV0dXJucyBldmVyeVxuICAgICAgICAvLyBhY3RpdmUgc3RhY2sgV0lUSCBpdHMgdGFncyBpbiBvbmUgcGFnaW5hdGVkIHN3ZWVwIOKAlCBhdm9pZGluZyB0aGUgTisxXG4gICAgICAgIC8vIERlc2NyaWJlU3RhY2tzLXBlci1zdGFjayB0aGUgb2xkIExpc3RTdGFja3MgcGF0aCBuZWVkZWQgKExpc3RTdGFja3Mgb21pdHMgdGFncylcbiAgICAgICAgLy8gYW5kIHRoZSBBUEkgdGhyb3R0bGluZyBpdCBjYXVzZWQgb24gYWNjb3VudHMgd2l0aCBtYW55IHN0YWNrcy5cbiAgICAgICAgcHJpbnRJbmZvKCdMaXN0aW5nIENsb3VkRm9ybWF0aW9uIHN0YWNrcycsIHsgcmVnaW9uIH0pO1xuICAgICAgICBjb25zdCBjZm4gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICAgICAgY29uc3QgYWN0aXZlU3RhdHVzZXMgPSBuZXcgU2V0KEFDVElWRV9TVEFUVVNFUyk7XG4gICAgICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBhZ2VzID0gMDtcbiAgICAgICAgLy8gQmFja3N0b3Agb25seSAofjIwayBzdGFja3MgYXQgfjEwMC9wYWdlKSwgbm90IGFuIGV4cGVjdGVkIGxpbWl0LiBBIEZVTEwgc2NhblxuICAgICAgICAvLyBtYXR0ZXJzOiB0cnVuY2F0aW5nIHdvdWxkIGRpZmYgdGhlIHJlZ2lzdHJ5IGFnYWluc3QgYW4gaW5jb21wbGV0ZSBzdGFjayBzZXQgYW5kXG4gICAgICAgIC8vIHJlcG9ydCBsaXZlIHN0YWNrcyBhcyBgbWlzc2luZy1zdGFja2AuIFNvIGlmIHRoaXMgaXMgZXZlciBoaXQsIHdhcm4gTE9VRExZIHJhdGhlclxuICAgICAgICAvLyB0aGFuIHNpbGVudGx5IHVuZGVyLXJlcG9ydGluZyAodGhlIHByZXZpb3VzIGNvZGUgY2FwcGVkIGF0IDIwIHBhZ2VzIHNpbGVudGx5KS5cbiAgICAgICAgY29uc3QgTUFYX1BBR0VTID0gMjAwO1xuICAgICAgICBsZXQgdHJ1bmNhdGVkID0gZmFsc2U7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2ZuLnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IE5leHRUb2tlbjogbmV4dFRva2VuIH0pKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHJlc3AuU3RhY2tzID8/IFtdKSB7XG4gICAgICAgICAgICBpZiAoIXN0YWNrLlN0YWNrTmFtZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVN0YXR1c2VzLmhhcyhzdGFjay5TdGFja1N0YXR1cyA/PyAnJykpIGNvbnRpbnVlOyAvLyBza2lwIGluLXByb2dyZXNzL3JvbGxlZC1iYWNrL2RlbGV0ZWRcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBzdGFjay5UYWdzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcGJUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAncGlwZWxpbmUtYnVpbGRlcicpPy5WYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9yZ1RhZyA9IHRhZ3MuZmluZCgodCkgPT4gdC5LZXkgPT09ICdPcmdJZCcgfHwgdC5LZXkgPT09ICdvcmdJZCcpPy5WYWx1ZTtcbiAgICAgICAgICAgIGlmICghcGJUYWcpIGNvbnRpbnVlOyAvLyBOb3QgYSBwaXBlbGluZS1idWlsZGVyIHN0YWNrLlxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub3JnICYmIG9yZ1RhZyAmJiBvcmdUYWcgIT09IG9wdGlvbnMub3JnKSBjb250aW51ZTsgLy8gV3Jvbmcgb3JnIGZpbHRlci5cbiAgICAgICAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5TdGFja05hbWUsXG4gICAgICAgICAgICAgIHN0YWNrU3RhdHVzOiBzdGFjay5TdGFja1N0YXR1cyA/PyAnVU5LTk9XTicsXG4gICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgcGlwZWxpbmVCdWlsZGVyVGFnOiBwYlRhZyxcbiAgICAgICAgICAgICAgb3JnSWRUYWc6IG9yZ1RhZyxcbiAgICAgICAgICAgICAgY3JlYXRpb25UaW1lOiBzdGFjay5DcmVhdGlvblRpbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFRva2VuID0gcmVzcC5OZXh0VG9rZW47XG4gICAgICAgICAgcGFnZXMrKztcbiAgICAgICAgICBpZiAobmV4dFRva2VuICYmIHBhZ2VzID49IE1BWF9QQUdFUykgeyB0cnVuY2F0ZWQgPSB0cnVlOyBicmVhazsgfVxuICAgICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuICAgICAgICBpZiAodHJ1bmNhdGVkKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKGBTdGFjayBzY2FuIGhpdCB0aGUgJHtNQVhfUEFHRVN9LXBhZ2Ugc2FmZXR5IGNhcCDigJQgcmVzdWx0cyBtYXkgYmUgSU5DT01QTEVURSBhbmQgJ21pc3Npbmctc3RhY2snIGZpbmRpbmdzIGNvdWxkIGJlIGZhbHNlLiBOYXJyb3cgYnkgLS1yZWdpb24vLS1vcmcsIG9yIHJhaXNlIE1BWF9QQUdFUy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpZmYuXG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5U3RhY2tOYW1lcyA9IG5ldyBTZXQoZW50cmllcy5tYXAoKGUpID0+IGUuc3RhY2tOYW1lKS5maWx0ZXIoKG4pOiBuIGlzIHN0cmluZyA9PiAhIW4pKTtcbiAgICAgICAgY29uc3QgY2ZuU3RhY2tOYW1lcyA9IG5ldyBTZXQoc3RhY2tzLm1hcCgocykgPT4gcy5zdGFja05hbWUpKTtcblxuICAgICAgICBjb25zdCBmaW5kaW5nczogQXVkaXRGaW5kaW5nW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3MpIHtcbiAgICAgICAgICBpZiAoIXJlZ2lzdHJ5U3RhY2tOYW1lcy5oYXMoc3RhY2suc3RhY2tOYW1lKSkge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdvcnBoYW5lZC1zdGFjaycsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBkZXRhaWw6IGBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdnZWQgcGlwZWxpbmUtYnVpbGRlcj0ke3N0YWNrLnBpcGVsaW5lQnVpbGRlclRhZyA/PyAnKHVuc2V0KSd9IGhhcyBubyBtYXRjaGluZyBwaXBlbGluZV9yZWdpc3RyeSBlbnRyeWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LnN0YWNrTmFtZSAmJiAhY2ZuU3RhY2tOYW1lcy5oYXMoZW50cnkuc3RhY2tOYW1lKSkge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdtaXNzaW5nLXN0YWNrJyxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBlbnRyeS5zdGFja05hbWUsXG4gICAgICAgICAgICAgIHBpcGVsaW5lSWQ6IGVudHJ5LnBpcGVsaW5lSWQsXG4gICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogZW50cnkucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICBkZXRhaWw6IGBSZWdpc3RyeSBlbnRyeSByZWZlcmVuY2VzIHN0YWNrICR7ZW50cnkuc3RhY2tOYW1lfSBidXQgbm8gc3VjaCBzdGFjayBleGlzdHMgaW4gQ2xvdWRGb3JtYXRpb25gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhpdENvZGUgPSBmaW5kaW5ncy5sZW5ndGggPiAwID8gMSA6IDA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHNjYW5uZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgb3JnRmlsdGVyOiBvcHRpb25zLm9yZyxcbiAgICAgICAgICAgIHJlZ2lzdHJ5RW50cmllczogZW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgICBjZm5TdGFja3M6IHN0YWNrcy5sZW5ndGgsXG4gICAgICAgICAgICBmaW5kaW5ncyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0F1ZGl0IFJlc3VsdHMnKTtcbiAgICAgICAgICBwcmludEluZm8oJ0NvdW50cycsIHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5RW50cmllczogU3RyaW5nKGVudHJpZXMubGVuZ3RoKSxcbiAgICAgICAgICAgIGNmblN0YWNrczogU3RyaW5nKHN0YWNrcy5sZW5ndGgpLFxuICAgICAgICAgICAgZmluZGluZ3M6IFN0cmluZyhmaW5kaW5ncy5sZW5ndGgpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChmaW5kaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHByaW50U3VjY2VzcygnTm8gZHJpZnQgYmV0d2VlbiBwaXBlbGluZV9yZWdpc3RyeSBhbmQgQ2xvdWRGb3JtYXRpb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgICAgIGlmIChmLnR5cGUgPT09ICdvcnBoYW5lZC1zdGFjaycpIHtcbiAgICAgICAgICAgICAgICBwcmludFdhcm5pbmcoYE9SUEhBTkVEICAke2Yuc3RhY2tOYW1lfSDigJQgJHtmLmRldGFpbH1gKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmludFdhcm5pbmcoYE1JU1NJTkcgICAke2Yuc3RhY2tOYW1lfSAocGlwZWxpbmUgJHtmLnBpcGVsaW5lSWQgPz8gJz8nfSkg4oCUICR7Zi5kZXRhaWx9YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW50RXJyb3IoYCR7ZmluZGluZ3MubGVuZ3RofSBkcmlmdCBmaW5kaW5nJHtmaW5kaW5ncy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30uIFJldmlldyBhbmQgcmVjb25jaWxlIG1hbnVhbGx5LmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IGZhbHNlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2F1ZGl0LXN0YWNrcycsIGV4ZWN1dGlvbklkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMik7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyQ7C"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0Q7C"}
@@ -44,15 +44,16 @@ export function deploy(program) {
44
44
  .option('--no-verify-ssl', 'Disable SSL certificate verification')
45
45
  .option('--show-resolved', 'Print the resolved pipeline config (with {{ ... }} templates expanded) and exit without deploying', false)
46
46
  .action(async (options) => {
47
- // Mutually exclusive input sources
48
- if (!options.id && !options.localSpec) {
49
- throw new Error('Either --id <pipeline-id> or --local-spec <path> is required');
50
- }
51
- if (options.id && options.localSpec) {
52
- throw new Error('--id and --local-spec are mutually exclusive');
53
- }
54
47
  const executionId = printCommandHeader('Pipeline Deploy');
55
48
  try {
49
+ // Mutually exclusive input sources — validated INSIDE the try so failures route
50
+ // through handleError (consistent exit code/format) like every other command.
51
+ if (!options.id && !options.localSpec) {
52
+ throw new Error('Either --id <pipeline-id> or --local-spec <path> is required');
53
+ }
54
+ if (options.id && options.localSpec) {
55
+ throw new Error('--id and --local-spec are mutually exclusive');
56
+ }
56
57
  auditLog('deploy', { executionId, pipelineId: options.id, profile: options.profile });
57
58
  printInfo('Deployment parameters', {
58
59
  id: options.id,
@@ -270,4 +271,4 @@ export function deploy(program) {
270
271
  }
271
272
  });
272
273
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEssT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdB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LEVBQUUsUUFBUSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzs0QkFDdEUsVUFBVSxFQUFFLFFBQVEsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7eUJBQzVFLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxRQUFRO29CQUNqQixXQUFXO29CQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lCQUM3QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1yZXNvbHZlci5qcyc7XG5pbXBvcnQgeyBidWlsZFJlZ2lzdHJ5UGF5bG9hZCwgd3JpdGVQZW5kaW5nSW50ZW50IH0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cnkuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgZGVwbG95YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEZldGNoZXMgcGlwZWxpbmUgcHJvcGVydGllcyBieSBJRCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEksIHRoZW5cbiAqIHJ1bnMgYGNkayBkZXBsb3lgIHRvIHByb3Zpc2lvbiB0aGUgcGlwZWxpbmUgaW5mcmFzdHJ1Y3R1cmUgaW4gQVdTLlxuICogRm9yIHN5bnRoZXNpcyBvbmx5LCB1c2UgYHBpcGVsaW5lLW1hbmFnZXIgc3ludGhgLlxuICpcbiAqIFJlcXVpcmVzIHNlcnZpY2UgY3JlZGVudGlhbHMgdG8gYmUgcHJlLXN0b3JlZCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICogQ3JlYXRlIHRoZW0gZmlyc3Qgd2l0aDogYHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW5gXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3kocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2RlcGxveScpXG4gICAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgcGlwZWxpbmUgYnkgSUQgdXNpbmcgQVdTIENESywgb3IgLS1sb2NhbC1zcGVjIHRvIGRlcGxveSBhIGxvY2FsIHBpcGVsaW5lLmpzb24gd2l0aG91dCB0aGUgcGxhdGZvcm0nKVxuICAgIC5vcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGlwZWxpbmUgSUQgKGZldGNoZXMgY29uZmlnIGZyb20gdGhlIHBsYXRmb3JtKScpXG4gICAgLm9wdGlvbignLS1sb2NhbC1zcGVjIDxwYXRoPicsICdQYXRoIHRvIGEgbG9jYWwgcGlwZWxpbmUuanNvbiDigJQgZGVwbG95cyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHBsYXRmb3JtIChubyBhdXRoLCBubyBjb21wbGlhbmNlLCBubyBwbHVnaW4gbG9va3VwKScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgcHJvZmlsZScsICdkZWZhdWx0JylcbiAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdBcHByb3ZhbCBsZXZlbDogbmV2ZXJ8YW55LWNoYW5nZXxicm9hZGVuaW5nJywgJ25ldmVyJylcbiAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeScsICdjZGsub3V0JylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBkZXBsb3lpbmcnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBNdXR1YWxseSBleGNsdXNpdmUgaW5wdXQgc291cmNlc1xuICAgICAgaWYgKCFvcHRpb25zLmlkICYmICFvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciAtLWlkIDxwaXBlbGluZS1pZD4gb3IgLS1sb2NhbC1zcGVjIDxwYXRoPiBpcyByZXF1aXJlZCcpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaWQgJiYgb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCctLWlkIGFuZCAtLWxvY2FsLXNwZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignUGlwZWxpbmUgRGVwbG95Jyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF1ZGl0TG9nKCdkZXBsb3knLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdEZXBsb3ltZW50IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgYXdzUHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dERpcjogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdFxuICAgICAgICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9ICcwJztcbiAgICAgICAgfVxuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgbGV0IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgICAgICAgbGV0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIC8vIFJlbW90ZS1tb2RlIHJlZ2lzdHJ5LXBvc3QgaGFuZGxlcyDigJQgbnVsbCBpbiAtLWxvY2FsLXNwZWMgbW9kZS5cbiAgICAgICAgbGV0IHBsYXRmb3JtQ2xpZW50OiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYz4+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGxhdGZvcm1Db25maWc6IHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmcgfSB9IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIC8vIC0tbG9jYWwtc3BlYzogcmVhZCBwaXBlbGluZS5qc29uIGZyb20gZGlzazsgbm8gcGxhdGZvcm0gY29udGFjdC5cbiAgICAgICAgICAvLyBDb21wbGlhbmNlIC8gcXVvdGEgLyBwbHVnaW4tbG9va3VwIGZlYXR1cmVzIGFsbCByZXF1aXJlIHRoZSBwbGF0Zm9ybSDigJRcbiAgICAgICAgICAvLyB0aGlzIG1vZGUgaXMgZm9yIGFpci1nYXBwZWQgb3Igc2ltcGxlIHN0YW5kYWxvbmUgQ0RLIGRlcGxveW1lbnRzLlxuICAgICAgICAgIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUob3B0aW9ucy5sb2NhbFNwZWMpO1xuICAgICAgICAgIHByaW50SW5mbygnTG9hZGluZyBsb2NhbCBwaXBlbGluZSBzcGVjJywgeyBwYXRoOiBhYnNQYXRoIH0pO1xuICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhhYnNQYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgbm90IGZvdW5kOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJhdyA9IGZzLnJlYWRGaWxlU3luYyhhYnNQYXRoLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdykgYXMgUGFydGlhbDxQaXBlbGluZT4gJiB7IHByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcbiAgICAgICAgICBpZiAoIXBhcnNlZC5wcm9wcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgaXMgbWlzc2luZyByZXF1aXJlZCAncHJvcHMnIGZpZWxkOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBpcGVsaW5lID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlZC5pZCA/PyAnbG9jYWwnLFxuICAgICAgICAgICAgcHJvamVjdDogcGFyc2VkLnByb2plY3QgPz8gJ2xvY2FsLXByb2plY3QnLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBwYXJzZWQub3JnYW5pemF0aW9uID8/ICdsb2NhbC1vcmcnLFxuICAgICAgICAgICAgb3JnSWQ6IHBhcnNlZC5vcmdJZCxcbiAgICAgICAgICAgIGlzRGVmYXVsdDogcGFyc2VkLmlzRGVmYXVsdCA/PyBmYWxzZSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiBwYXJzZWQuaXNBY3RpdmUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIHByb3BzOiBwYXJzZWQucHJvcHMsXG4gICAgICAgICAgfSBhcyBQaXBlbGluZTtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ0xvY2FsIHNwZWMgbG9hZGVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICBTb3VyY2U6IGFic1BhdGgsXG4gICAgICAgICAgICBQcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgT3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0ge1xuICAgICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgICAuLi4ocGlwZWxpbmUub3JnSWQgJiYgeyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSksXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbW90ZSBwYXRoOiBmZXRjaCBjb25maWcgZnJvbSBwbGF0Zm9ybSBBUElcbiAgICAgICAgICBwbGF0Zm9ybUNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICBwbGF0Zm9ybUNvbmZpZyA9IHBsYXRmb3JtQ2xpZW50LmdldENvbmZpZygpIGFzIHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmcgfSB9O1xuXG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogb3B0aW9ucy5pZCB9KTtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBsYXRmb3JtQ2xpZW50LmdldDxQaXBlbGluZVJlc3BvbnNlPihcbiAgICAgICAgICAgIGAke3BsYXRmb3JtQ29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtvcHRpb25zLmlkfWAsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGZldGNoZWQgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcblxuICAgICAgICAgIGlmICghZmV0Y2hlZD8ucHJvcHMpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcGlwZWxpbmUgcmVzcG9uc2UnLCB7XG4gICAgICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgICBoYXNQcm9wczogISFmZXRjaGVkPy5wcm9wcyxcbiAgICAgICAgICAgICAgcmVzcG9uc2VLZXlzOiByZXNwb25zZSA/IE9iamVjdC5rZXlzKHJlc3BvbnNlKSA6ICcobnVsbCknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSB2YWxpZCBwaXBlbGluZSBwcm9wZXJ0aWVzIGZvciBJRDogJHtvcHRpb25zLmlkfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwaXBlbGluZSA9IGZldGNoZWQ7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmV0cmlldmVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAgICdJcyBBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHByb3BzV2l0aElkcyA9IHtcbiAgICAgICAgICAgIC4uLnBpcGVsaW5lLnByb3BzLFxuICAgICAgICAgICAgLi4uKHBpcGVsaW5lLm9yZ0lkICYmIHsgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkIH0pLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIFByZS1yZXNvbHZlIHBsdWdpbnMgZnJvbSB0aGUgcGxhdGZvcm0gQVBJIHNvIHRoZSBzeW50aGVzaXplZFxuICAgICAgICAgIC8vIHRlbXBsYXRlIHNoaXBzIHdpdGggcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJcyBiYWtlZCBpbi4gV2l0aG91dFxuICAgICAgICAgIC8vIHRoaXMsIENESyBmYWxscyBiYWNrIHRvIHN0YW5kYXJkOjcuMCAodGhlIGRlcGxveS10aW1lIGN1c3RvbVxuICAgICAgICAgIC8vIHJlc291cmNlIGF0dHJpYnV0ZSBpcyB1bnJlc29sdmFibGUgYXQgc3ludGggdGltZSkuIFNraXBwZWQgaW5cbiAgICAgICAgICAvLyAtLWxvY2FsLXNwZWMgbW9kZSB3aGVyZSB0aGVyZSdzIG5vIHBsYXRmb3JtIGNsaWVudC5cbiAgICAgICAgICBjb25zdCByZXNvbHZlZFBsdWdpbnMgPSBhd2FpdCByZXNvbHZlUGx1Z2luc0ZvclByb3BzKHBsYXRmb3JtQ2xpZW50LCBwcm9wc1dpdGhJZHMpO1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHByb3BzV2l0aElkcy5yZXNvbHZlZFBsdWdpbnMgPSByZXNvbHZlZFBsdWdpbnM7XG4gICAgICAgICAgICBwcmludEluZm8oJ1ByZS1yZXNvbHZlZCBwbHVnaW5zJywgeyBjb3VudDogT2JqZWN0LmtleXMocmVzb2x2ZWRQbHVnaW5zKS5sZW5ndGggfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS1zaG93LXJlc29sdmVkOiBwcmludCByZXNvbHZlZCBjb25maWcgYW5kIGV4aXQgKG5vIENESyBkZXBsb3kpXG4gICAgICAgIGlmICgob3B0aW9ucyBhcyB7IHNob3dSZXNvbHZlZD86IGJvb2xlYW4gfSkuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgY29uc3QgeyByZXNvbHZlU2VsZlJlZmVyZW5jaW5nIH0gPSBhd2FpdCBpbXBvcnQoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgICAgICAgICBjb25zdCBwcm9wc0FueSA9IHByb3BzV2l0aElkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IHsgbWV0YWRhdGE6IHByb3BzQW55Lm1ldGFkYXRhID8/IHt9LCB2YXJzOiBwcm9wc0FueS52YXJzID8/IHt9IH07XG4gICAgICAgICAgY29uc3QgaXNUcGwgPSAoZjogc3RyaW5nKSA9PiBmID09PSAncHJvamVjdE5hbWUnIHx8IGYuc3RhcnRzV2l0aCgnbWV0YWRhdGEuJykgfHwgZi5zdGFydHNXaXRoKCd2YXJzLicpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcocHJvcHNBbnksIHNjb3BlLCBpc1RwbCwgKGY6IHN0cmluZykgPT4gaXNUcGwoZikgPyBmIDogbnVsbCwgJ3BpcGVsaW5lJyk7XG4gICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSZXNvbHV0aW9uIGVycm9yczonKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcywgbnVsbCwgMikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBvcHRpb25zLm91dHB1dDtcblxuICAgICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgICAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0UGF0aCB9KTtcbiAgICAgICAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dFBhdGgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIENESyBjb21tYW5kICh2YWxpZGF0ZSBFVkVSWSBpbnB1dCB0aGF0IGZsb3dzIGludG8gdGhlIHNoZWxsKS5cbiAgICAgICAgLy8gcmVxdWlyZUFwcHJvdmFsIGlzIGludGVycG9sYXRlZCB1bnF1b3RlZCBpbnRvIHRoZSBjb21tYW5kIGJlbG93LCBzbyBhXG4gICAgICAgIC8vIHZhbHVlIGxpa2UgYG5ldmVyOyBybSAtcmYgfmAgd291bGQgb3RoZXJ3aXNlIGV4ZWN1dGUg4oCUIHZhbGlkYXRlIGl0IHRvby5cbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcbiAgICAgICAgYXNzZXJ0U2hlbGxTYWZlKG91dHB1dFBhdGgsICdvdXRwdXQnKTtcbiAgICAgICAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLCAncmVxdWlyZS1hcHByb3ZhbCcpO1xuXG4gICAgICAgIGNvbnN0IHNjcmlwdFBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVBcmcgPSBvcHRpb25zLnByb2ZpbGUgPyBgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWAgOiAnJztcbiAgICAgICAgY29uc3Qgb3V0cHV0QXJnID0gYC0tb3V0cHV0PSR7b3V0cHV0UGF0aH1gO1xuICAgICAgICBjb25zdCBhcHBBcmcgPSBgLS1hcHA9XCJub2RlICR7c2NyaXB0UGF0aH1cImA7XG5cbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGBjZGsgZGVwbG95ICR7cHJvZmlsZUFyZ30gLS1yZXF1aXJlLWFwcHJvdmFsPSR7b3B0aW9ucy5yZXF1aXJlQXBwcm92YWx9ICR7b3V0cHV0QXJnfSAtLW5vdGljZXM9ZmFsc2UgJHthcHBBcmd9YDtcblxuICAgICAgICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgICAgICAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQuc3BsaXQoJyAtLScpWzBdICsgJyAuLi4nKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuXG4gICAgICAgIC8vIEV4ZWN1dGUgQ0RLIGNvbW1hbmRcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIHNob3dPdXRwdXQ6IHRydWUsXG4gICAgICAgICAgZW52OiB7IFBJUEVMSU5FX1BST1BTOiBlbmNvZGVkIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludFNlY3Rpb24oJ0RlcGxveW1lbnQgQ29tcGxldGUnKTtcblxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAnT3V0cHV0IERpcmVjdG9yeSc6IG91dHB1dFBhdGgsXG4gICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIFJlZ2lzdGVyIHBpcGVsaW5lIEFSTiBmb3IgZXZlbnQgcmVwb3J0aW5nIChub24tYmxvY2tpbmcpLlxuICAgICAgICAgIC8vIFNraXBwZWQgaW4gLS1sb2NhbC1zcGVjIG1vZGUgc2luY2UgdGhlcmUncyBubyBwbGF0Zm9ybSB0byByZWdpc3RlciB3aXRoLlxuICAgICAgICAgIGlmICghcGxhdGZvcm1DbGllbnQgfHwgIXBsYXRmb3JtQ29uZmlnKSB7XG4gICAgICAgICAgICBwcmludEluZm8oJ1NraXBwaW5nIHBpcGVsaW5lIHJlZ2lzdHJ5IChsb2NhbC1zcGVjIG1vZGUpJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEJ1aWxkIHRoZSBwYXlsb2FkIHVwLWZyb250IHNvIGEgcmVnaXN0cmF0aW9uIFBPU1QgZmFpbHVyZSBjYW4gd3JpdGVcbiAgICAgICAgICAvLyB0aGUgc2FtZSBwYXlsb2FkIHRvIGEgcGVuZGluZy1pbnRlbnQgZmlsZSBmb3IgYHBpcGVsaW5lLW1hbmFnZXJcbiAgICAgICAgICAvLyByZWdpc3RlcmAgdG8gZHJhaW4gbGF0ZXIuIFdlIG5ldmVyIHdhbnQgdG8gcmV0cnkgU1RTIGxvb2t1cHMg4oCUXG4gICAgICAgICAgLy8gdGhleSBjYW4gZmFpbCB0b28gKGUuZy4gY3JlZGVudGlhbCByb3RhdGlvbikgYW5kIHdvdWxkIGNvbXBvdW5kXG4gICAgICAgICAgLy8gdGhlIGlzc3VlLlxuICAgICAgICAgIGlmICghcGlwZWxpbmUub3JnSWQpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgaGFzIG5vIG9yZ0lkIOKAlCBza2lwcGluZyByZWdpc3RyYXRpb24nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHBheWxvYWQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBheWxvYWQgPSBhd2FpdCBidWlsZFJlZ2lzdHJ5UGF5bG9hZChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgICAgICAgICAgcGlwZWxpbmVOYW1lOiBwaXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgICAgcHJvamVjdDogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICAgICBvcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gY2F0Y2ggKGJ1aWxkRXJyb3IpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnQ291bGQgbm90IGJ1aWxkIHJlZ2lzdHJ5IHBheWxvYWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicsIHtcbiAgICAgICAgICAgICAgZXJyb3I6IGJ1aWxkRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGJ1aWxkRXJyb3IubWVzc2FnZSA6IFN0cmluZyhidWlsZEVycm9yKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBwbGF0Zm9ybUNsaWVudC5wb3N0KGAke3BsYXRmb3JtQ29uZmlnLmFwaS5waXBlbGluZVVybH0vcmVnaXN0cnlgLCBwYXlsb2FkKTtcbiAgICAgICAgICAgIHByaW50U3VjY2VzcygnUGlwZWxpbmUgcmVnaXN0ZXJlZCBmb3IgZXZlbnQgcmVwb3J0aW5nJywgeyBwaXBlbGluZUlkOiBwYXlsb2FkLnBpcGVsaW5lSWQgfSk7XG4gICAgICAgICAgfSBjYXRjaCAocmVnRXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFBlcnNpc3QgZm9yIHJldHJ5LiBUaGUgdXNlciBjYW4gZHJhaW4gd2l0aCBgcGlwZWxpbmUtbWFuYWdlclxuICAgICAgICAgICAgLy8gcmVnaXN0ZXJgIChvciBqdXN0IHJlLXJ1biB0aGF0IGNvbW1hbmQgYXQgYW55IHRpbWUg4oCUIGl0J3NcbiAgICAgICAgICAgIC8vIGlkZW1wb3RlbnQpLiBUaGUgZGVwbG95IGl0c2VsZiBkb2VzIE5PVCBmYWlsLlxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgaW50ZW50UGF0aCA9IGF3YWl0IHdyaXRlUGVuZGluZ0ludGVudChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkOyBxdWV1ZWQgZm9yIHJldHJ5Jywge1xuICAgICAgICAgICAgICAgIGVycm9yOiByZWdFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcmVnRXJyb3IubWVzc2FnZSA6IFN0cmluZyhyZWdFcnJvciksXG4gICAgICAgICAgICAgICAgcmV0cnk6ICdwaXBlbGluZS1tYW5hZ2VyIHJlZ2lzdGVyJyxcbiAgICAgICAgICAgICAgICBpbnRlbnQ6IGludGVudFBhdGgsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAod3JpdGVFcnIpIHtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkIChyZXRyeSBxdWV1ZSBhbHNvIGZhaWxlZCknLCB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlZ0Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByZWdFcnJvci5tZXNzYWdlIDogU3RyaW5nKHJlZ0Vycm9yKSxcbiAgICAgICAgICAgICAgICBxdWV1ZUVycm9yOiB3cml0ZUVyciBpbnN0YW5jZW9mIEVycm9yID8gd3JpdGVFcnIubWVzc2FnZSA6IFN0cmluZyh3cml0ZUVyciksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnZGVwbG95JyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEssT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdB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QUFFOzRCQUN4RSxLQUFLLEVBQUUsUUFBUSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzs0QkFDdEUsVUFBVSxFQUFFLFFBQVEsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7eUJBQzVFLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxRQUFRO29CQUNqQixXQUFXO29CQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lCQUM3QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1yZXNvbHZlci5qcyc7XG5pbXBvcnQgeyBidWlsZFJlZ2lzdHJ5UGF5bG9hZCwgd3JpdGVQZW5kaW5nSW50ZW50IH0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cnkuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLlxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgZGVwbG95YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEZldGNoZXMgcGlwZWxpbmUgcHJvcGVydGllcyBieSBJRCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEksIHRoZW5cbiAqIHJ1bnMgYGNkayBkZXBsb3lgIHRvIHByb3Zpc2lvbiB0aGUgcGlwZWxpbmUgaW5mcmFzdHJ1Y3R1cmUgaW4gQVdTLlxuICogRm9yIHN5bnRoZXNpcyBvbmx5LCB1c2UgYHBpcGVsaW5lLW1hbmFnZXIgc3ludGhgLlxuICpcbiAqIFJlcXVpcmVzIHNlcnZpY2UgY3JlZGVudGlhbHMgdG8gYmUgcHJlLXN0b3JlZCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICogQ3JlYXRlIHRoZW0gZmlyc3Qgd2l0aDogYHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW5gXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3kocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2RlcGxveScpXG4gICAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgcGlwZWxpbmUgYnkgSUQgdXNpbmcgQVdTIENESywgb3IgLS1sb2NhbC1zcGVjIHRvIGRlcGxveSBhIGxvY2FsIHBpcGVsaW5lLmpzb24gd2l0aG91dCB0aGUgcGxhdGZvcm0nKVxuICAgIC5vcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGlwZWxpbmUgSUQgKGZldGNoZXMgY29uZmlnIGZyb20gdGhlIHBsYXRmb3JtKScpXG4gICAgLm9wdGlvbignLS1sb2NhbC1zcGVjIDxwYXRoPicsICdQYXRoIHRvIGEgbG9jYWwgcGlwZWxpbmUuanNvbiDigJQgZGVwbG95cyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHBsYXRmb3JtIChubyBhdXRoLCBubyBjb21wbGlhbmNlLCBubyBwbHVnaW4gbG9va3VwKScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgcHJvZmlsZScsICdkZWZhdWx0JylcbiAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdBcHByb3ZhbCBsZXZlbDogbmV2ZXJ8YW55LWNoYW5nZXxicm9hZGVuaW5nJywgJ25ldmVyJylcbiAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeScsICdjZGsub3V0JylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBkZXBsb3lpbmcnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignUGlwZWxpbmUgRGVwbG95Jyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE11dHVhbGx5IGV4Y2x1c2l2ZSBpbnB1dCBzb3VyY2VzIOKAlCB2YWxpZGF0ZWQgSU5TSURFIHRoZSB0cnkgc28gZmFpbHVyZXMgcm91dGVcbiAgICAgICAgLy8gdGhyb3VnaCBoYW5kbGVFcnJvciAoY29uc2lzdGVudCBleGl0IGNvZGUvZm9ybWF0KSBsaWtlIGV2ZXJ5IG90aGVyIGNvbW1hbmQuXG4gICAgICAgIGlmICghb3B0aW9ucy5pZCAmJiAhb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciAtLWlkIDxwaXBlbGluZS1pZD4gb3IgLS1sb2NhbC1zcGVjIDxwYXRoPiBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmlkICYmIG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCctLWlkIGFuZCAtLWxvY2FsLXNwZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXVkaXRMb2coJ2RlcGxveScsIHsgZXhlY3V0aW9uSWQsIHBpcGVsaW5lSWQ6IG9wdGlvbnMuaWQsIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICBwcmludEluZm8oJ0RlcGxveW1lbnQgcGFyYW1ldGVycycsIHtcbiAgICAgICAgICBpZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICBhd3NQcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICAvLyBQcm9wYWdhdGUgdG8gcHJvY2Vzcy5lbnYgc28gQ0RLIGNvbnN0cnVjdHMgKExhbWJkYSwgQ29kZUJ1aWxkKSBpbmhlcml0IGl0XG4gICAgICAgIGlmIChvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID0gJzAnO1xuICAgICAgICB9XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICBsZXQgcGlwZWxpbmU6IFBpcGVsaW5lO1xuICAgICAgICBsZXQgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgLy8gUmVtb3RlLW1vZGUgcmVnaXN0cnktcG9zdCBoYW5kbGVzIOKAlCBudWxsIGluIC0tbG9jYWwtc3BlYyBtb2RlLlxuICAgICAgICBsZXQgcGxhdGZvcm1DbGllbnQ6IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jPj4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwbGF0Zm9ybUNvbmZpZzogeyBhcGk6IHsgcGlwZWxpbmVVcmw6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgLy8gLS1sb2NhbC1zcGVjOiByZWFkIHBpcGVsaW5lLmpzb24gZnJvbSBkaXNrOyBubyBwbGF0Zm9ybSBjb250YWN0LlxuICAgICAgICAgIC8vIENvbXBsaWFuY2UgLyBxdW90YSAvIHBsdWdpbi1sb29rdXAgZmVhdHVyZXMgYWxsIHJlcXVpcmUgdGhlIHBsYXRmb3JtIOKAlFxuICAgICAgICAgIC8vIHRoaXMgbW9kZSBpcyBmb3IgYWlyLWdhcHBlZCBvciBzaW1wbGUgc3RhbmRhbG9uZSBDREsgZGVwbG95bWVudHMuXG4gICAgICAgICAgY29uc3QgYWJzUGF0aCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmxvY2FsU3BlYyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdMb2FkaW5nIGxvY2FsIHBpcGVsaW5lIHNwZWMnLCB7IHBhdGg6IGFic1BhdGggfSk7XG4gICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGFic1BhdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBub3QgZm91bmQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGFic1BhdGgsICd1dGYtOCcpO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBQYXJ0aWFsPFBpcGVsaW5lPiAmIHsgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAgICAgICAgIGlmICghcGFyc2VkLnByb3BzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIHNwZWMgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkICdwcm9wcycgZmllbGQ6ICR7YWJzUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGlwZWxpbmUgPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VkLmlkID8/ICdsb2NhbCcsXG4gICAgICAgICAgICBwcm9qZWN0OiBwYXJzZWQucHJvamVjdCA/PyAnbG9jYWwtcHJvamVjdCcsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IHBhcnNlZC5vcmdhbml6YXRpb24gPz8gJ2xvY2FsLW9yZycsXG4gICAgICAgICAgICBvcmdJZDogcGFyc2VkLm9yZ0lkLFxuICAgICAgICAgICAgaXNEZWZhdWx0OiBwYXJzZWQuaXNEZWZhdWx0ID8/IGZhbHNlLFxuICAgICAgICAgICAgaXNBY3RpdmU6IHBhcnNlZC5pc0FjdGl2ZSA/PyB0cnVlLFxuICAgICAgICAgICAgcHJvcHM6IHBhcnNlZC5wcm9wcyxcbiAgICAgICAgICB9IGFzIFBpcGVsaW5lO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnTG9jYWwgc3BlYyBsb2FkZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgIFNvdXJjZTogYWJzUGF0aCxcbiAgICAgICAgICAgIFByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICBPcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgICAuLi5waXBlbGluZS5wcm9wcyxcbiAgICAgICAgICAgIC4uLihwaXBlbGluZS5vcmdJZCAmJiB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9KSxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3RlIHBhdGg6IGZldGNoIGNvbmZpZyBmcm9tIHBsYXRmb3JtIEFQSVxuICAgICAgICAgIHBsYXRmb3JtQ2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICAgIHBsYXRmb3JtQ29uZmlnID0gcGxhdGZvcm1DbGllbnQuZ2V0Q29uZmlnKCkgYXMgeyBhcGk6IHsgcGlwZWxpbmVVcmw6IHN0cmluZyB9IH07XG5cbiAgICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBvcHRpb25zLmlkIH0pO1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcGxhdGZvcm1DbGllbnQuZ2V0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgYCR7cGxhdGZvcm1Db25maWcuYXBpLnBpcGVsaW5lVXJsfS8ke29wdGlvbnMuaWR9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZmV0Y2hlZCA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmVzcG9uc2UsICdwaXBlbGluZScsICdwcm9wcycpO1xuXG4gICAgICAgICAgaWYgKCFmZXRjaGVkPy5wcm9wcykge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgICAgIGhhc1Byb3BzOiAhIWZldGNoZWQ/LnByb3BzLFxuICAgICAgICAgICAgICByZXNwb25zZUtleXM6IHJlc3BvbnNlID8gT2JqZWN0LmtleXMocmVzcG9uc2UpIDogJyhudWxsKScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHZhbGlkIHBpcGVsaW5lIHByb3BlcnRpZXMgZm9yIElEOiAke29wdGlvbnMuaWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBpcGVsaW5lID0gZmV0Y2hlZDtcblxuICAgICAgICAgIHByaW50U3VjY2VzcygnUGlwZWxpbmUgY29uZmlndXJhdGlvbiByZXRyaWV2ZWQnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdJRCc6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgJ09yZ2FuaXphdGlvbic6IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgICdJcyBEZWZhdWx0JzogcGlwZWxpbmUuaXNEZWZhdWx0LFxuICAgICAgICAgICAgJ0lzIEFjdGl2ZSc6IHBpcGVsaW5lLmlzQWN0aXZlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0ge1xuICAgICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgICAuLi4ocGlwZWxpbmUub3JnSWQgJiYgeyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSksXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gUHJlLXJlc29sdmUgcGx1Z2lucyBmcm9tIHRoZSBwbGF0Zm9ybSBBUEkgc28gdGhlIHN5bnRoZXNpemVkXG4gICAgICAgICAgLy8gdGVtcGxhdGUgc2hpcHMgd2l0aCByZWFsIENvZGVCdWlsZCBpbWFnZSBVUklzIGJha2VkIGluLiBXaXRob3V0XG4gICAgICAgICAgLy8gdGhpcywgQ0RLIGZhbGxzIGJhY2sgdG8gc3RhbmRhcmQ6Ny4wICh0aGUgZGVwbG95LXRpbWUgY3VzdG9tXG4gICAgICAgICAgLy8gcmVzb3VyY2UgYXR0cmlidXRlIGlzIHVucmVzb2x2YWJsZSBhdCBzeW50aCB0aW1lKS4gU2tpcHBlZCBpblxuICAgICAgICAgIC8vIC0tbG9jYWwtc3BlYyBtb2RlIHdoZXJlIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gY2xpZW50LlxuICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGx1Z2lucyA9IGF3YWl0IHJlc29sdmVQbHVnaW5zRm9yUHJvcHMocGxhdGZvcm1DbGllbnQsIHByb3BzV2l0aElkcyk7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc29sdmVkUGx1Z2lucykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcHJvcHNXaXRoSWRzLnJlc29sdmVkUGx1Z2lucyA9IHJlc29sdmVkUGx1Z2lucztcbiAgICAgICAgICAgIHByaW50SW5mbygnUHJlLXJlc29sdmVkIHBsdWdpbnMnLCB7IGNvdW50OiBPYmplY3Qua2V5cyhyZXNvbHZlZFBsdWdpbnMpLmxlbmd0aCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLXNob3ctcmVzb2x2ZWQ6IHByaW50IHJlc29sdmVkIGNvbmZpZyBhbmQgZXhpdCAobm8gQ0RLIGRlcGxveSlcbiAgICAgICAgaWYgKChvcHRpb25zIGFzIHsgc2hvd1Jlc29sdmVkPzogYm9vbGVhbiB9KS5zaG93UmVzb2x2ZWQpIHtcbiAgICAgICAgICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IGF3YWl0IGltcG9ydCgnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZScpO1xuICAgICAgICAgIGNvbnN0IHByb3BzQW55ID0gcHJvcHNXaXRoSWRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0geyBtZXRhZGF0YTogcHJvcHNBbnkubWV0YWRhdGEgPz8ge30sIHZhcnM6IHByb3BzQW55LnZhcnMgPz8ge30gfTtcbiAgICAgICAgICBjb25zdCBpc1RwbCA9IChmOiBzdHJpbmcpID0+IGYgPT09ICdwcm9qZWN0TmFtZScgfHwgZi5zdGFydHNXaXRoKCdtZXRhZGF0YS4nKSB8fCBmLnN0YXJ0c1dpdGgoJ3ZhcnMuJyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZVNlbGZSZWZlcmVuY2luZyhwcm9wc0FueSwgc2NvcGUsIGlzVHBsLCAoZjogc3RyaW5nKSA9PiBpc1RwbChmKSA/IGYgOiBudWxsLCAncGlwZWxpbmUnKTtcbiAgICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHJlc3VsdC5lcnJvcnMpIGNvbnNvbGUuZXJyb3IoYCAgWyR7ZS5maWVsZCA/PyAnPyd9XSAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzLCBudWxsLCAyKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcyksICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IG9wdGlvbnMub3V0cHV0O1xuXG4gICAgICAgIC8vIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBwcmludEluZm8oJ1ByZXBhcmluZyBvdXRwdXQgZGlyZWN0b3J5JywgeyBwYXRoOiBvdXRwdXRQYXRoIH0pO1xuICAgICAgICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0UGF0aCk7XG5cbiAgICAgICAgLy8gQnVpbGQgQ0RLIGNvbW1hbmQgKHZhbGlkYXRlIEVWRVJZIGlucHV0IHRoYXQgZmxvd3MgaW50byB0aGUgc2hlbGwpLlxuICAgICAgICAvLyByZXF1aXJlQXBwcm92YWwgaXMgaW50ZXJwb2xhdGVkIHVucXVvdGVkIGludG8gdGhlIGNvbW1hbmQgYmVsb3csIHNvIGFcbiAgICAgICAgLy8gdmFsdWUgbGlrZSBgbmV2ZXI7IHJtIC1yZiB+YCB3b3VsZCBvdGhlcndpc2UgZXhlY3V0ZSDigJQgdmFsaWRhdGUgaXQgdG9vLlxuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5wcm9maWxlLCAncHJvZmlsZScpO1xuICAgICAgICBhc3NlcnRTaGVsbFNhZmUob3V0cHV0UGF0aCwgJ291dHB1dCcpO1xuICAgICAgICBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsICdyZXF1aXJlLWFwcHJvdmFsJyk7XG5cbiAgICAgICAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZUFyZyA9IG9wdGlvbnMucHJvZmlsZSA/IGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCA6ICcnO1xuICAgICAgICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtvdXRwdXRQYXRofWA7XG4gICAgICAgIGNvbnN0IGFwcEFyZyA9IGAtLWFwcD1cIm5vZGUgJHtzY3JpcHRQYXRofVwiYDtcblxuICAgICAgICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtvcHRpb25zLnJlcXVpcmVBcHByb3ZhbH0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG5cbiAgICAgICAgLy8gRXhlY3V0ZSBDREsgY29tbWFuZFxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgc2hvd091dHB1dDogdHJ1ZSxcbiAgICAgICAgICBlbnY6IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICdPdXRwdXQgRGlyZWN0b3J5Jzogb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgcGlwZWxpbmUgQVJOIGZvciBldmVudCByZXBvcnRpbmcgKG5vbi1ibG9ja2luZykuXG4gICAgICAgICAgLy8gU2tpcHBlZCBpbiAtLWxvY2FsLXNwZWMgbW9kZSBzaW5jZSB0aGVyZSdzIG5vIHBsYXRmb3JtIHRvIHJlZ2lzdGVyIHdpdGguXG4gICAgICAgICAgaWYgKCFwbGF0Zm9ybUNsaWVudCB8fCAhcGxhdGZvcm1Db25maWcpIHtcbiAgICAgICAgICAgIHByaW50SW5mbygnU2tpcHBpbmcgcGlwZWxpbmUgcmVnaXN0cnkgKGxvY2FsLXNwZWMgbW9kZSknKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQnVpbGQgdGhlIHBheWxvYWQgdXAtZnJvbnQgc28gYSByZWdpc3RyYXRpb24gUE9TVCBmYWlsdXJlIGNhbiB3cml0ZVxuICAgICAgICAgIC8vIHRoZSBzYW1lIHBheWxvYWQgdG8gYSBwZW5kaW5nLWludGVudCBmaWxlIGZvciBgcGlwZWxpbmUtbWFuYWdlclxuICAgICAgICAgIC8vIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlci4gV2UgbmV2ZXIgd2FudCB0byByZXRyeSBTVFMgbG9va3VwcyDigJRcbiAgICAgICAgICAvLyB0aGV5IGNhbiBmYWlsIHRvbyAoZS5nLiBjcmVkZW50aWFsIHJvdGF0aW9uKSBhbmQgd291bGQgY29tcG91bmRcbiAgICAgICAgICAvLyB0aGUgaXNzdWUuXG4gICAgICAgICAgaWYgKCFwaXBlbGluZS5vcmdJZCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcGF5bG9hZDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IGF3YWl0IGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoYnVpbGRFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgICAgICAgICBlcnJvcjogYnVpbGRFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gYnVpbGRFcnJvci5tZXNzYWdlIDogU3RyaW5nKGJ1aWxkRXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7cGxhdGZvcm1Db25maWcuYXBpLnBpcGVsaW5lVXJsfS9yZWdpc3RyeWAsIHBheWxvYWQpO1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IHBpcGVsaW5lSWQ6IHBheWxvYWQucGlwZWxpbmVJZCB9KTtcbiAgICAgICAgICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgICAgICAgICAgLy8gUGVyc2lzdCBmb3IgcmV0cnkuIFRoZSB1c2VyIGNhbiBkcmFpbiB3aXRoIGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgICAgICAgICAvLyByZWdpc3RlcmAgKG9yIGp1c3QgcmUtcnVuIHRoYXQgY29tbWFuZCBhdCBhbnkgdGltZSDigJQgaXQnc1xuICAgICAgICAgICAgLy8gaWRlbXBvdGVudCkuIFRoZSBkZXBsb3kgaXRzZWxmIGRvZXMgTk9UIGZhaWwuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQ7IHF1ZXVlZCBmb3IgcmV0cnknLCB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlZ0Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByZWdFcnJvci5tZXNzYWdlIDogU3RyaW5nKHJlZ0Vycm9yKSxcbiAgICAgICAgICAgICAgICByZXRyeTogJ3BpcGVsaW5lLW1hbmFnZXIgcmVnaXN0ZXInLFxuICAgICAgICAgICAgICAgIGludGVudDogaW50ZW50UGF0aCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoICh3cml0ZUVycikge1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQgKHJldHJ5IHF1ZXVlIGFsc28gZmFpbGVkKScsIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgICAgIHF1ZXVlRXJyb3I6IHdyaXRlRXJyIGluc3RhbmNlb2YgRXJyb3IgPyB3cml0ZUVyci5tZXNzYWdlIDogU3RyaW5nKHdyaXRlRXJyKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}