@pipeline-builder/pipeline-manager 4.1.15 → 4.1.16
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/config.yml +16 -37
- package/dist/boilerplate.js +10 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +97 -79
- package/dist/commands/audit-stacks.js +3 -3
- package/dist/commands/create-pat.d.ts +2 -3
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +3 -4
- package/dist/commands/create-pipeline.d.ts.map +1 -1
- package/dist/commands/create-pipeline.js +198 -190
- package/dist/commands/list-pipelines.js +2 -2
- package/dist/commands/list-plugins.js +2 -2
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.js +3 -3
- package/dist/commands/new-plugin.d.ts +48 -5
- package/dist/commands/new-plugin.d.ts.map +1 -1
- package/dist/commands/new-plugin.js +261 -95
- package/dist/commands/plugin-lifecycle.d.ts +29 -0
- package/dist/commands/plugin-lifecycle.d.ts.map +1 -0
- package/dist/commands/plugin-lifecycle.js +147 -0
- package/dist/commands/provision.d.ts +42 -2
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +184 -147
- package/dist/commands/publish-plugin.d.ts +62 -0
- package/dist/commands/publish-plugin.d.ts.map +1 -0
- package/dist/commands/publish-plugin.js +224 -0
- package/dist/commands/redrive-events.d.ts +1 -1
- package/dist/commands/redrive-events.js +2 -2
- package/dist/commands/store-token.d.ts +46 -1
- package/dist/commands/store-token.d.ts.map +1 -1
- package/dist/commands/store-token.js +127 -102
- package/dist/commands/test-plugin.d.ts +72 -0
- package/dist/commands/test-plugin.d.ts.map +1 -0
- package/dist/commands/test-plugin.js +285 -0
- package/dist/commands/upload-plugin.d.ts +6 -7
- package/dist/commands/upload-plugin.d.ts.map +1 -1
- package/dist/commands/upload-plugin.js +127 -189
- package/dist/commands/validate-plugin.d.ts +37 -4
- package/dist/commands/validate-plugin.d.ts.map +1 -1
- package/dist/commands/validate-plugin.js +129 -144
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +8 -9
- package/dist/config/plugin-catalog-assets.d.ts +13 -0
- package/dist/config/plugin-catalog-assets.d.ts.map +1 -0
- package/dist/config/plugin-catalog-assets.js +21 -0
- package/dist/config.yml +16 -37
- package/dist/lambda/token-renew-handler.d.ts.map +1 -1
- package/dist/lambda/token-renew-handler.js +109 -154
- package/dist/types/config.d.ts +2 -6
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +1 -1
- package/dist/types/plugin.d.ts +21 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js +1 -1
- package/dist/utils/aws-env.d.ts +1 -2
- package/dist/utils/aws-env.d.ts.map +1 -1
- package/dist/utils/aws-env.js +2 -3
- package/dist/utils/catalog-prompt.d.ts +26 -0
- package/dist/utils/catalog-prompt.d.ts.map +1 -0
- package/dist/utils/catalog-prompt.js +113 -0
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +14 -3
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +4 -6
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +57 -2
- package/dist/utils/deploy-runner.d.ts.map +1 -1
- package/dist/utils/deploy-runner.js +7 -2
- package/dist/utils/pipeline-config.d.ts +1 -2
- package/dist/utils/pipeline-config.d.ts.map +1 -1
- package/dist/utils/pipeline-config.js +1 -1
- package/dist/utils/plugin-docker.d.ts +44 -0
- package/dist/utils/plugin-docker.d.ts.map +1 -0
- package/dist/utils/plugin-docker.js +71 -0
- package/dist/utils/plugin-package.d.ts +40 -0
- package/dist/utils/plugin-package.d.ts.map +1 -0
- package/dist/utils/plugin-package.js +159 -0
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +43 -29
- package/dist/utils/plugin-scan.d.ts +22 -0
- package/dist/utils/plugin-scan.d.ts.map +1 -0
- package/dist/utils/plugin-scan.js +52 -0
- package/dist/utils/plugin-zip.d.ts +15 -0
- package/dist/utils/plugin-zip.d.ts.map +1 -0
- package/dist/utils/plugin-zip.js +96 -0
- package/dist/utils/registry.d.ts +15 -0
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +17 -2
- package/dist/utils/service-account.d.ts.map +1 -1
- package/dist/utils/service-account.js +9 -10
- package/package.json +45 -8
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* The ACCEPT-OR-EDIT step for `plugin publish`: every descriptive
|
|
5
|
+
* catalog field is shown with its detected value and source, and the author
|
|
6
|
+
* accepts it, edits it or clears it. `--yes` accepts everything detected;
|
|
7
|
+
* `--metadata <file.yaml>` supplies edits non-interactively. Edits pass the
|
|
8
|
+
* same api-core validator the server applies (contract keys refused).
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'fs';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { parseCatalogEdits, validateCatalogField, } from '@pipeline-builder/api-core';
|
|
13
|
+
import YAML from 'yaml';
|
|
14
|
+
import { ValidationError } from './error-handler.js';
|
|
15
|
+
import { SOURCE_LABELS, formatCatalogValue } from './plugin-package.js';
|
|
16
|
+
/** Fields whose value is long markdown: edited by naming a file. */
|
|
17
|
+
const FILE_FIELDS = new Set(['readme', 'changelog']);
|
|
18
|
+
/** Read and validate a `--metadata` edits file (YAML or JSON). */
|
|
19
|
+
export function readMetadataFile(file) {
|
|
20
|
+
const abs = path.resolve(file);
|
|
21
|
+
if (!fs.existsSync(abs))
|
|
22
|
+
throw new ValidationError(`--metadata file not found: ${abs}`, 'metadata', abs);
|
|
23
|
+
let raw;
|
|
24
|
+
try {
|
|
25
|
+
raw = YAML.parse(fs.readFileSync(abs, 'utf-8'), { maxAliasCount: 100 });
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw new ValidationError(`--metadata: invalid YAML (${err.message.split('\n')[0]})`, 'metadata', abs);
|
|
29
|
+
}
|
|
30
|
+
const parsed = parseCatalogEdits(raw);
|
|
31
|
+
if (!parsed.ok)
|
|
32
|
+
throw new ValidationError(`--metadata: ${parsed.error}`, 'metadata', abs);
|
|
33
|
+
return parsed.value;
|
|
34
|
+
}
|
|
35
|
+
/** Turn a typed answer into a field value (before validation). */
|
|
36
|
+
export function parseTypedValue(field, text, cwd = process.cwd()) {
|
|
37
|
+
if (FILE_FIELDS.has(field)) {
|
|
38
|
+
const file = path.resolve(cwd, text);
|
|
39
|
+
if (!fs.existsSync(file))
|
|
40
|
+
throw new Error(`file not found: ${file}`);
|
|
41
|
+
return fs.readFileSync(file, 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
if (field === 'keywords')
|
|
44
|
+
return text.split(',').map(k => k.trim()).filter(Boolean);
|
|
45
|
+
if (field === 'icon') {
|
|
46
|
+
const [key, badge] = text.split(':').map(s => s.trim());
|
|
47
|
+
return badge ? { key, badge } : key;
|
|
48
|
+
}
|
|
49
|
+
return text;
|
|
50
|
+
}
|
|
51
|
+
/** One line describing a detected field for the prompt. */
|
|
52
|
+
export function describeDetected(d) {
|
|
53
|
+
const source = d.source ? SOURCE_LABELS[d.source] ?? d.source : null;
|
|
54
|
+
if (d.error)
|
|
55
|
+
return `${d.field}: (blank — detected ${source ?? 'value'} is invalid: ${d.error})`;
|
|
56
|
+
if (d.value === null)
|
|
57
|
+
return `${d.field}: (empty)`;
|
|
58
|
+
return `${d.field}: ${formatCatalogValue(d.value)} [${source}]`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Walk every field: Enter/`a` accepts, `e` edits (validated, re-asked on a bad
|
|
62
|
+
* value), `c` clears. Returns only the fields the author changed.
|
|
63
|
+
*/
|
|
64
|
+
export async function promptCatalogEdits(detected, ask) {
|
|
65
|
+
const edits = {};
|
|
66
|
+
for (const d of detected) {
|
|
67
|
+
console.log(` ${describeDetected(d)}`);
|
|
68
|
+
for (;;) {
|
|
69
|
+
const answer = (await ask(' [A]ccept, [e]dit, [c]lear? ')).trim().toLowerCase();
|
|
70
|
+
if (answer === '' || answer === 'a')
|
|
71
|
+
break;
|
|
72
|
+
if (answer === 'c') {
|
|
73
|
+
edits[d.field] = null;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
if (answer !== 'e')
|
|
77
|
+
continue;
|
|
78
|
+
const hint = FILE_FIELDS.has(d.field) ? 'path to a markdown file' : d.field === 'keywords' ? 'comma-separated' : d.field === 'icon' ? 'key or key:badge' : 'value';
|
|
79
|
+
const typed = (await ask(` New ${d.field} (${hint}): `)).trim();
|
|
80
|
+
try {
|
|
81
|
+
const checked = validateCatalogField(d.field, parseTypedValue(d.field, typed));
|
|
82
|
+
if (!checked.ok)
|
|
83
|
+
throw new Error(checked.error);
|
|
84
|
+
edits[d.field] = checked.value;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.log(` ✗ ${err.message} — try again`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const parsed = parseCatalogEdits(edits);
|
|
93
|
+
if (!parsed.ok)
|
|
94
|
+
throw new ValidationError(parsed.error);
|
|
95
|
+
return parsed.value;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve the author's edits, non-interactively when asked: `--metadata` edits
|
|
99
|
+
* (every other detected value accepted) or `--yes` (everything detected
|
|
100
|
+
* accepted); otherwise the interactive prompt. Without a terminal, `--yes` or
|
|
101
|
+
* `--metadata` is required — nothing is accepted silently.
|
|
102
|
+
*/
|
|
103
|
+
export async function collectCatalogEdits(detected, opts) {
|
|
104
|
+
if (opts.metadataFile)
|
|
105
|
+
return readMetadataFile(opts.metadataFile);
|
|
106
|
+
if (opts.yes)
|
|
107
|
+
return {};
|
|
108
|
+
if (!opts.ask) {
|
|
109
|
+
throw new ValidationError('No terminal to prompt on: pass --yes to accept the detected metadata, or --metadata <file.yaml> with your edits');
|
|
110
|
+
}
|
|
111
|
+
return promptCatalogEdits(detected, opts.ask);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9tcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2F0YWxvZy1wcm9tcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxvQkFBb0IsR0FFeEMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxvRUFBb0U7QUFDcEUsTUFBTSxXQUFXLEdBQW9DLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFLdEYsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsTUFBTSxJQUFJLGVBQWUsQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pHLElBQUksR0FBWSxDQUFDO0lBQ2pCLElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUFDLE9BQU8sR0FBRyxF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QUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDL0IsTUFBTTtZQUNSLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBVSxHQUFhLENBQUMsT0FBTyxjQUFjLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFBRSxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsUUFBeUIsRUFDekIsSUFBeUQ7SUFFekQsSUFBSSxJQUFJLENBQUMsWUFBWTtRQUFFLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLElBQUksSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLGVBQWUsQ0FBQyxpSEFBaUgsQ0FBQyxDQUFDO0lBQy9JLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBBQ0NFUFQtT1ItRURJVCBzdGVwIGZvciBgcGx1Z2luIHB1Ymxpc2hgOiBldmVyeSBkZXNjcmlwdGl2ZVxuICogY2F0YWxvZyBmaWVsZCBpcyBzaG93biB3aXRoIGl0cyBkZXRlY3RlZCB2YWx1ZSBhbmQgc291cmNlLCBhbmQgdGhlIGF1dGhvclxuICogYWNjZXB0cyBpdCwgZWRpdHMgaXQgb3IgY2xlYXJzIGl0LiBgLS15ZXNgIGFjY2VwdHMgZXZlcnl0aGluZyBkZXRlY3RlZDtcbiAqIGAtLW1ldGFkYXRhIDxmaWxlLnlhbWw+YCBzdXBwbGllcyBlZGl0cyBub24taW50ZXJhY3RpdmVseS4gRWRpdHMgcGFzcyB0aGVcbiAqIHNhbWUgYXBpLWNvcmUgdmFsaWRhdG9yIHRoZSBzZXJ2ZXIgYXBwbGllcyAoY29udHJhY3Qga2V5cyByZWZ1c2VkKS5cbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBwYXJzZUNhdGFsb2dFZGl0cywgdmFsaWRhdGVDYXRhbG9nRmllbGQsXG4gIHR5cGUgRGV0ZWN0ZWRGaWVsZCwgdHlwZSBQbHVnaW5DYXRhbG9nRWRpdHMsIHR5cGUgUGx1Z2luQ2F0YWxvZ0ZpZWxkLFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgWUFNTCBmcm9tICd5YW1sJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBTT1VSQ0VfTEFCRUxTLCBmb3JtYXRDYXRhbG9nVmFsdWUgfSBmcm9tICcuL3BsdWdpbi1wYWNrYWdlLmpzJztcblxuLyoqIEZpZWxkcyB3aG9zZSB2YWx1ZSBpcyBsb25nIG1hcmtkb3duOiBlZGl0ZWQgYnkgbmFtaW5nIGEgZmlsZS4gKi9cbmNvbnN0IEZJTEVfRklFTERTOiBSZWFkb25seVNldDxQbHVnaW5DYXRhbG9nRmllbGQ+ID0gbmV3IFNldChbJ3JlYWRtZScsICdjaGFuZ2Vsb2cnXSk7XG5cbi8qKiBBc2tzIG9uZSBxdWVzdGlvbiwgcmV0dXJucyB0aGUgYW5zd2VyICh0cmltbWVkIGJ5IHRoZSBjYWxsZXIpLiAqL1xuZXhwb3J0IHR5cGUgQXNrID0gKHF1ZXN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcblxuLyoqIFJlYWQgYW5kIHZhbGlkYXRlIGEgYC0tbWV0YWRhdGFgIGVkaXRzIGZpbGUgKFlBTUwgb3IgSlNPTikuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZE1ldGFkYXRhRmlsZShmaWxlOiBzdHJpbmcpOiBQbHVnaW5DYXRhbG9nRWRpdHMge1xuICBjb25zdCBhYnMgPSBwYXRoLnJlc29sdmUoZmlsZSk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhhYnMpKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGAtLW1ldGFkYXRhIGZpbGUgbm90IGZvdW5kOiAke2Fic31gLCAnbWV0YWRhdGEnLCBhYnMpO1xuICBsZXQgcmF3OiB1bmtub3duO1xuICB0cnkge1xuICAgIHJhdyA9IFlBTUwucGFyc2UoZnMucmVhZEZpbGVTeW5jKGFicywgJ3V0Zi04JyksIHsgbWF4QWxpYXNDb3VudDogMTAwIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGAtLW1ldGFkYXRhOiBpbnZhbGlkIFlBTUwgKCR7KGVyciBhcyBFcnJvcikubWVzc2FnZS5zcGxpdCgnXFxuJylbMF19KWAsICdtZXRhZGF0YScsIGFicyk7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VDYXRhbG9nRWRpdHMocmF3KTtcbiAgaWYgKCFwYXJzZWQub2spIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYC0tbWV0YWRhdGE6ICR7cGFyc2VkLmVycm9yfWAsICdtZXRhZGF0YScsIGFicyk7XG4gIHJldHVybiBwYXJzZWQudmFsdWU7XG59XG5cbi8qKiBUdXJuIGEgdHlwZWQgYW5zd2VyIGludG8gYSBmaWVsZCB2YWx1ZSAoYmVmb3JlIHZhbGlkYXRpb24pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHlwZWRWYWx1ZShmaWVsZDogUGx1Z2luQ2F0YWxvZ0ZpZWxkLCB0ZXh0OiBzdHJpbmcsIGN3ZCA9IHByb2Nlc3MuY3dkKCkpOiB1bmtub3duIHtcbiAgaWYgKEZJTEVfRklFTERTLmhhcyhmaWVsZCkpIHtcbiAgICBjb25zdCBmaWxlID0gcGF0aC5yZXNvbHZlKGN3ZCwgdGV4dCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSB0aHJvdyBuZXcgRXJyb3IoYGZpbGUgbm90IGZvdW5kOiAke2ZpbGV9YCk7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlLCAndXRmLTgnKTtcbiAgfVxuICBpZiAoZmllbGQgPT09ICdrZXl3b3JkcycpIHJldHVybiB0ZXh0LnNwbGl0KCcsJykubWFwKGsgPT4gay50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKGZpZWxkID09PSAnaWNvbicpIHtcbiAgICBjb25zdCBba2V5LCBiYWRnZV0gPSB0ZXh0LnNwbGl0KCc6JykubWFwKHMgPT4gcy50cmltKCkpO1xuICAgIHJldHVybiBiYWRnZSA/IHsga2V5LCBiYWRnZSB9IDoga2V5O1xuICB9XG4gIHJldHVybiB0ZXh0O1xufVxuXG4vKiogT25lIGxpbmUgZGVzY3JpYmluZyBhIGRldGVjdGVkIGZpZWxkIGZvciB0aGUgcHJvbXB0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlRGV0ZWN0ZWQoZDogRGV0ZWN0ZWRGaWVsZCk6IHN0cmluZyB7XG4gIGNvbnN0IHNvdXJjZSA9IGQuc291cmNlID8gU09VUkNFX0xBQkVMU1tkLnNvdXJjZV0gPz8gZC5zb3VyY2UgOiBudWxsO1xuICBpZiAoZC5lcnJvcikgcmV0dXJuIGAke2QuZmllbGR9OiAoYmxhbmsg4oCUIGRldGVjdGVkICR7c291cmNlID8/ICd2YWx1ZSd9IGlzIGludmFsaWQ6ICR7ZC5lcnJvcn0pYDtcbiAgaWYgKGQudmFsdWUgPT09IG51bGwpIHJldHVybiBgJHtkLmZpZWxkfTogKGVtcHR5KWA7XG4gIHJldHVybiBgJHtkLmZpZWxkfTogJHtmb3JtYXRDYXRhbG9nVmFsdWUoZC52YWx1ZSl9ICBbJHtzb3VyY2V9XWA7XG59XG5cbi8qKlxuICogV2FsayBldmVyeSBmaWVsZDogRW50ZXIvYGFgIGFjY2VwdHMsIGBlYCBlZGl0cyAodmFsaWRhdGVkLCByZS1hc2tlZCBvbiBhIGJhZFxuICogdmFsdWUpLCBgY2AgY2xlYXJzLiBSZXR1cm5zIG9ubHkgdGhlIGZpZWxkcyB0aGUgYXV0aG9yIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9tcHRDYXRhbG9nRWRpdHMoZGV0ZWN0ZWQ6IERldGVjdGVkRmllbGRbXSwgYXNrOiBBc2spOiBQcm9taXNlPFBsdWdpbkNhdGFsb2dFZGl0cz4ge1xuICBjb25zdCBlZGl0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBkIG9mIGRldGVjdGVkKSB7XG4gICAgY29uc29sZS5sb2coYCAgJHtkZXNjcmliZURldGVjdGVkKGQpfWApO1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IGFuc3dlciA9IChhd2FpdCBhc2soJyAgICBbQV1jY2VwdCwgW2VdZGl0LCBbY11sZWFyPyAnKSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAoYW5zd2VyID09PSAnJyB8fCBhbnN3ZXIgPT09ICdhJykgYnJlYWs7XG4gICAgICBpZiAoYW5zd2VyID09PSAnYycpIHtcbiAgICAgICAgZWRpdHNbZC5maWVsZF0gPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChhbnN3ZXIgIT09ICdlJykgY29udGludWU7XG4gICAgICBjb25zdCBoaW50ID0gRklMRV9GSUVMRFMuaGFzKGQuZmllbGQpID8gJ3BhdGggdG8gYSBtYXJrZG93biBmaWxlJyA6IGQuZmllbGQgPT09ICdrZXl3b3JkcycgPyAnY29tbWEtc2VwYXJhdGVkJyA6IGQuZmllbGQgPT09ICdpY29uJyA/ICdrZXkgb3Iga2V5OmJhZGdlJyA6ICd2YWx1ZSc7XG4gICAgICBjb25zdCB0eXBlZCA9IChhd2FpdCBhc2soYCAgICBOZXcgJHtkLmZpZWxkfSAoJHtoaW50fSk6IGApKS50cmltKCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjaGVja2VkID0gdmFsaWRhdGVDYXRhbG9nRmllbGQoZC5maWVsZCwgcGFyc2VUeXBlZFZhbHVlKGQuZmllbGQsIHR5cGVkKSk7XG4gICAgICAgIGlmICghY2hlY2tlZC5vaykgdGhyb3cgbmV3IEVycm9yKGNoZWNrZWQuZXJyb3IpO1xuICAgICAgICBlZGl0c1tkLmZpZWxkXSA9IGNoZWNrZWQudmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICAg4pyXICR7KGVyciBhcyBFcnJvcikubWVzc2FnZX0g4oCUIHRyeSBhZ2FpbmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZUNhdGFsb2dFZGl0cyhlZGl0cyk7XG4gIGlmICghcGFyc2VkLm9rKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKHBhcnNlZC5lcnJvcik7XG4gIHJldHVybiBwYXJzZWQudmFsdWU7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgYXV0aG9yJ3MgZWRpdHMsIG5vbi1pbnRlcmFjdGl2ZWx5IHdoZW4gYXNrZWQ6IGAtLW1ldGFkYXRhYCBlZGl0c1xuICogKGV2ZXJ5IG90aGVyIGRldGVjdGVkIHZhbHVlIGFjY2VwdGVkKSBvciBgLS15ZXNgIChldmVyeXRoaW5nIGRldGVjdGVkXG4gKiBhY2NlcHRlZCk7IG90aGVyd2lzZSB0aGUgaW50ZXJhY3RpdmUgcHJvbXB0LiBXaXRob3V0IGEgdGVybWluYWwsIGAtLXllc2Agb3JcbiAqIGAtLW1ldGFkYXRhYCBpcyByZXF1aXJlZCDigJQgbm90aGluZyBpcyBhY2NlcHRlZCBzaWxlbnRseS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RDYXRhbG9nRWRpdHMoXG4gIGRldGVjdGVkOiBEZXRlY3RlZEZpZWxkW10sXG4gIG9wdHM6IHsgeWVzPzogYm9vbGVhbjsgbWV0YWRhdGFGaWxlPzogc3RyaW5nOyBhc2s/OiBBc2sgfSxcbik6IFByb21pc2U8UGx1Z2luQ2F0YWxvZ0VkaXRzPiB7XG4gIGlmIChvcHRzLm1ldGFkYXRhRmlsZSkgcmV0dXJuIHJlYWRNZXRhZGF0YUZpbGUob3B0cy5tZXRhZGF0YUZpbGUpO1xuICBpZiAob3B0cy55ZXMpIHJldHVybiB7fTtcbiAgaWYgKCFvcHRzLmFzaykge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ05vIHRlcm1pbmFsIHRvIHByb21wdCBvbjogcGFzcyAtLXllcyB0byBhY2NlcHQgdGhlIGRldGVjdGVkIG1ldGFkYXRhLCBvciAtLW1ldGFkYXRhIDxmaWxlLnlhbWw+IHdpdGggeW91ciBlZGl0cycpO1xuICB9XG4gIHJldHVybiBwcm9tcHRDYXRhbG9nRWRpdHMoZGV0ZWN0ZWQsIG9wdHMuYXNrKTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/command-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAQvG;AAED;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAI3D;AAED;;gCAEgC;AAChC,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE7D;AAED;;8EAE8E;AAC9E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAKzD;
|
|
1
|
+
{"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/command-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAQvG;AAED;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAI3D;AAED;;gCAEgC;AAChC,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE7D;AAED;;8EAE8E;AAC9E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAKzD;AA8CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBnF"}
|
|
@@ -6,7 +6,7 @@ import pico from 'picocolors';
|
|
|
6
6
|
import { ApiClient } from './api-client.js';
|
|
7
7
|
import { getSecretValue } from './aws-secrets.js';
|
|
8
8
|
import { getApiConfig, getConfigWithOptions } from './config-loader.js';
|
|
9
|
-
import { clearSession, isSessionUsable, loadSession, saveSession } from './credential-store.js';
|
|
9
|
+
import { clearSession, isSessionUsable, loadSession, saveSession, withRefreshLock } from './credential-store.js';
|
|
10
10
|
import { printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from './output-utils.js';
|
|
11
11
|
import { formatDuration, generateExecutionId } from '../config/cli.constants.js';
|
|
12
12
|
const { bold, cyan, green, magenta } = pico;
|
|
@@ -76,7 +76,18 @@ export function printSslWarning(verifySsl) {
|
|
|
76
76
|
* `X-Pb-Client` is mandatory on /auth/refresh (the CSRF gate) and its value also
|
|
77
77
|
* picks the transport: anything but `web` keeps the body flow the CLI uses.
|
|
78
78
|
*/
|
|
79
|
-
async function refreshStoredSession(baseUrl,
|
|
79
|
+
async function refreshStoredSession(baseUrl, stale) {
|
|
80
|
+
// One refresh at a time per machine (see `withRefreshLock`): a second process
|
|
81
|
+
// re-reads the store under the lock and uses the pair the first one saved,
|
|
82
|
+
// rather than spending the same single-use refresh token again.
|
|
83
|
+
return withRefreshLock(async () => {
|
|
84
|
+
const current = loadSession(baseUrl);
|
|
85
|
+
if (isSessionUsable(current))
|
|
86
|
+
return current.accessToken;
|
|
87
|
+
return renewSession(baseUrl, current ?? stale);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async function renewSession(baseUrl, session) {
|
|
80
91
|
if (!session.refreshToken)
|
|
81
92
|
return undefined;
|
|
82
93
|
try {
|
|
@@ -208,4 +219,4 @@ export function validateEntityId(id, entityName) {
|
|
|
208
219
|
}
|
|
209
220
|
return trimmed;
|
|
210
221
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tYW5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFlLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7QUFDcEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpGLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFNUM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsUUFBaUIsRUFBRSxJQUEwQjtJQUM3RixNQUFNLFdBQVcsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDakIsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxXQUFXLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7bUZBRW1GO0FBQ25GLE1BQU0sVUFBVSxjQUFjLENBQW9CLEdBQU07SUFDdEQsT0FBTyxHQUFHO1NBQ1AsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQU0sQ0FBQztBQUM1RSxDQUFDO0FBRUQ7O2dDQUVnQztBQUNoQyxNQUFNLFVBQVUsZ0JBQWdCLENBQW9CLEdBQU07SUFDeEQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHNFQUFzRSxDQUFNLENBQUM7QUFDdEgsQ0FBQztBQUVEOzs4RUFFOEU7QUFDOUUsTUFBTSxVQUFVLGlCQUFpQixDQUFvQixHQUFNO0lBQ3pELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxpRUFBaUUsQ0FBTSxDQUFDO0FBQ25ILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxXQUFtQixFQUFFLFFBQWdCO0lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsYUFBYSxDQUFDO1FBQ1osY0FBYyxFQUFFLFdBQVc7UUFDM0IsVUFBVSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUM7S0FDN0IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFtQjtJQUNqRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUN4QixZQUFZLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUsb0JBQW9CLENBQUMsT0FBZSxFQUFFLE9BQXNCO0lBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FDL0IsR0FBRyxPQUFPLG1CQUFtQixFQUM3QixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQ3RDLEVBQUUsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQzNGLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVc7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ25CLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSTtZQUN6RCxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDOUUsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQzdCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsWUFBWSxDQUFDLG1GQUFtRixDQUFDLENBQUM7UUFDbEcsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BS2xDO0lBQ0MsaUNBQWlDO0lBQ2pDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQixTQUFTLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNuRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0lBQ3BDLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLHNEQUFzRDtJQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDeEQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxPQUFPLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixTQUFTLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsU0FBUyxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFMUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUEyQixDQUFDO1FBQ2hFLFlBQVksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBRXRELDhFQUE4RTtRQUM5RSxpRUFBaUU7UUFDakUsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkdBQTJHLENBQUMsQ0FBQztRQUMvSCxDQUFDO1FBRUQsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLHdDQUF3QztRQUN4QyxxRkFBcUY7UUFDckYsNEVBQTRFO1FBQzVFLDJEQUEyRCxDQUM1RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDhCQUE4QixDQUFDLE9BS3BEO0lBQ0MscUVBQXFFO0lBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWdDO0lBQ3hFLE1BQU0sTUFBTSxHQUFXLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSw4RUFBOEUsRUFBRSxDQUFDLENBQUM7UUFDMUgsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBc0IsRUFBRSxVQUFrQjtJQUN6RSxJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLFVBQVUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsZ0NBQWdDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTFCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNuRCxZQUFZLENBQUMsR0FBRyxVQUFVLDJCQUEyQixFQUFFO1lBQ3JELFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGNBQWMsRUFBRSw4Q0FBOEM7WUFDOUQsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB0eXBlIENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0VmFsdWUgfSBmcm9tICcuL2F3cy1zZWNyZXRzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnLCBnZXRBcGlDb25maWcsIGdldENvbmZpZ1dpdGhPcHRpb25zIH0gZnJvbSAnLi9jb25maWctbG9hZGVyLmpzJztcbmltcG9ydCB7IGNsZWFyU2Vzc2lvbiwgaXNTZXNzaW9uVXNhYmxlLCBsb2FkU2Vzc2lvbiwgc2F2ZVNlc3Npb24sIHR5cGUgU3RvcmVkU2Vzc2lvbiB9IGZyb20gJy4vY3JlZGVudGlhbC1zdG9yZS5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZ2VuZXJhdGVFeGVjdXRpb25JZCB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBncmVlbiwgbWFnZW50YSB9ID0gcGljbztcblxuLyoqXG4gKiBQcmludCBjb21tYW5kIGhlYWRlciB3aXRoIHNlY3Rpb24gdGl0bGUgYW5kIGV4ZWN1dGlvbiBJRC5cbiAqIFJldHVybnMgdGhlIGV4ZWN1dGlvbiBJRCBmb3IgdXNlIGluIGVycm9yIGhhbmRsZXJzIGFuZCBzdW1tYXJpZXMuXG4gKlxuICogUGFzcyBgeyBxdWlldDogdHJ1ZSB9YCB0byBzdXBwcmVzcyB0aGUgZGVjb3JhdGl2ZSBvdXRwdXQgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGVcbiAqIGlkIOKAlCB1c2VkIGJvdGggYnkgYC0tcXVpZXRgIGNhbGxlcnMgYW5kIGJ5IGAtLWpzb25gIGNvbW1hbmRzIChzbyB0aGUgYmFubmVyXG4gKiBkb2Vzbid0IGxhbmQgb24gc3Rkb3V0IGFoZWFkIG9mIHRoZSBKU09OIHBheWxvYWQgYW5kIGJyZWFrIGDigKYgLS1qc29uIHwganFgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50Q29tbWFuZEhlYWRlcih0aXRsZTogc3RyaW5nLCBzdWJ0aXRsZT86IHN0cmluZywgb3B0cz86IHsgcXVpZXQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcbiAgaWYgKCFvcHRzPy5xdWlldCkge1xuICAgIHByaW50U2VjdGlvbih0aXRsZSk7XG4gICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoc3VidGl0bGUgfHwgdGl0bGUpKX1gKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cbiAgcmV0dXJuIGV4ZWN1dGlvbklkO1xufVxuXG4vKiogQXR0YWNoIHRoZSBzdGFuZGFyZCBgLS12ZXJpZnktc3NsYCAvIGAtLW5vLXZlcmlmeS1zc2xgIHBhaXIuIFRoZSB0d28gdG9nZXRoZXJcbiAqICBnaXZlIENvbW1hbmRlciBhbiBleHBsaWNpdCB0cmktc3RhdGUgYG9wdGlvbnMudmVyaWZ5U3NsYCAodHJ1ZS9mYWxzZS91bmRlZmluZWQpLlxuICogIFJldHVybnMgdGhlIGNvbW1hbmQgc28gaXQgY29tcG9zZXM6IGB3aXRoU3NsT3B0aW9ucyhwcm9ncmFtLmNvbW1hbmQoJ3gnKSnigKZgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTc2xPcHRpb25zPFQgZXh0ZW5kcyBDb21tYW5kPihjbWQ6IFQpOiBUIHtcbiAgcmV0dXJuIGNtZFxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpIGFzIFQ7XG59XG5cbi8qKiBBdHRhY2ggdGhlIHN0YW5kYXJkIGAtLXJlZ2lvbiA8cmVnaW9uPmAgb3B0aW9uIChvbmUgY2Fub25pY2FsIGRlc2NyaXB0aW9uKS5cbiAqICBSZWdpb24gcmVzb2x1dGlvbiAoZmxhZyDihpIgQVdTX1JFR0lPTiDihpIgQ0RLX0RFRkFVTFRfUkVHSU9OIOKGkiB1cy1lYXN0LTEpIGxpdmVzIGluXG4gKiAgYXdzLWVudi5yZXNvbHZlQXdzUmVnaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZWdpb25PcHRpb248VCBleHRlbmRzIENvbW1hbmQ+KGNtZDogVCk6IFQge1xuICByZXR1cm4gY21kLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZGVmYXVsdHMgdG8gQVdTX1JFR0lPTiAvIENES19ERUZBVUxUX1JFR0lPTiAvIHVzLWVhc3QtMSknKSBhcyBUO1xufVxuXG4vKiogQXR0YWNoIHRoZSBzdGFuZGFyZCBgLS1wcm9maWxlIDxwcm9maWxlPmAgb3B0aW9uIChvbmUgY2Fub25pY2FsIGRlc2NyaXB0aW9uKS5cbiAqICBObyBkZWZhdWx0IGlzIHBpbm5lZCBzbyB0aGUgQVdTIGRlZmF1bHQgY3JlZGVudGlhbCBjaGFpbiAoZW52IHZhcnMsIFNTTywgcm9sZXMpXG4gKiAgd29ya3Mgb3V0IG9mIHRoZSBib3g7IC0tcHJvZmlsZSBvbmx5IHNlbGVjdHMgYSBzaGFyZWQgcHJvZmlsZSB3aGVuIHNldC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUHJvZmlsZU9wdGlvbjxUIGV4dGVuZHMgQ29tbWFuZD4oY21kOiBUKTogVCB7XG4gIHJldHVybiBjbWQub3B0aW9uKCctLXByb2ZpbGUgPHByb2ZpbGU+JywgJ0FXUyBDTEkgcHJvZmlsZSAoZGVmYXVsdHMgdG8gdGhlIHN0YW5kYXJkIEFXUyBjcmVkZW50aWFsIGNoYWluKScpIGFzIFQ7XG59XG5cbi8qKlxuICogUHJpbnQgZXhlY3V0aW9uIHN1bW1hcnkgd2l0aCBJRCwgZHVyYXRpb24sIGFuZCBzdGF0dXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQ6IHN0cmluZywgZHVyYXRpb246IG51bWJlcik6IHZvaWQge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50S2V5VmFsdWUoe1xuICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAnRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbiksXG4gICAgJ1N0YXR1cyc6IGdyZWVuKCfinJMgU3VjY2VzcycpLFxuICB9KTtcbn1cblxuLyoqXG4gKiBXYXJuIGlmIFNTTCB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFNzbFdhcm5pbmcodmVyaWZ5U3NsPzogYm9vbGVhbik6IHZvaWQge1xuICBpZiAodmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgIHByaW50V2FybmluZygnU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBESVNBQkxFRCcpO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmV3IGEgc3RvcmVkIHNlc3Npb24gd2l0aCBpdHMgcmVmcmVzaCB0b2tlbiwgcGVyc2lzdCB0aGUgcm90YXRlZCBwYWlyLCBhbmRcbiAqIHJldHVybiB0aGUgbmV3IGFjY2VzcyB0b2tlbi4gUmV0dXJucyB1bmRlZmluZWQgKGFuZCBmb3JnZXRzIHRoZSBzZXNzaW9uKSB3aGVuXG4gKiB0aGUgcGxhdGZvcm0gcmVmdXNlcyBpdCDigJQgYSByb3RhdGVkLWF3YXkgb3IgcmV2b2tlZCB0b2tlbiBpcyBkZWFkLCBhbmQga2VlcGluZ1xuICogaXQgd291bGQgbWFrZSBldmVyeSBsYXRlciBjb21tYW5kIGZhaWwgdGhlIHNhbWUgd2F5LlxuICpcbiAqIGBYLVBiLUNsaWVudGAgaXMgbWFuZGF0b3J5IG9uIC9hdXRoL3JlZnJlc2ggKHRoZSBDU1JGIGdhdGUpIGFuZCBpdHMgdmFsdWUgYWxzb1xuICogcGlja3MgdGhlIHRyYW5zcG9ydDogYW55dGhpbmcgYnV0IGB3ZWJgIGtlZXBzIHRoZSBib2R5IGZsb3cgdGhlIENMSSB1c2VzLlxuICovXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoU3RvcmVkU2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcsIHNlc3Npb246IFN0b3JlZFNlc3Npb24pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIXNlc3Npb24ucmVmcmVzaFRva2VuKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGRhdGE/OiB7IGFjY2Vzc1Rva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH0+KFxuICAgICAgYCR7YmFzZVVybH0vYXBpL2F1dGgvcmVmcmVzaGAsXG4gICAgICB7IHJlZnJlc2hUb2tlbjogc2Vzc2lvbi5yZWZyZXNoVG9rZW4gfSxcbiAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnWC1QYi1DbGllbnQnOiAnY2xpJyB9LCB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICApO1xuICAgIGNvbnN0IHJlbmV3ZWQgPSByZXNwb25zZS5kYXRhPy5kYXRhO1xuICAgIGlmICghcmVuZXdlZD8uYWNjZXNzVG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgc2F2ZVNlc3Npb24oYmFzZVVybCwge1xuICAgICAgYWNjZXNzVG9rZW46IHJlbmV3ZWQuYWNjZXNzVG9rZW4sXG4gICAgICAuLi4ocmVuZXdlZC5yZWZyZXNoVG9rZW4gPyB7IHJlZnJlc2hUb2tlbjogcmVuZXdlZC5yZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIChyZW5ld2VkLmV4cGlyZXNJbiA/PyA5MDApICogMTAwMCxcbiAgICAgIC4uLihzZXNzaW9uLm9yZ2FuaXphdGlvbklkID8geyBvcmdhbml6YXRpb25JZDogc2Vzc2lvbi5vcmdhbml6YXRpb25JZCB9IDoge30pLFxuICAgIH0pO1xuICAgIHJldHVybiByZW5ld2VkLmFjY2Vzc1Rva2VuO1xuICB9IGNhdGNoIHtcbiAgICBjbGVhclNlc3Npb24oYmFzZVVybCk7XG4gICAgcHJpbnRXYXJuaW5nKCdUaGUgc3RvcmVkIHNlc3Npb24gY291bGQgbm90IGJlIHJlbmV3ZWQg4oCUIHJ1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiIGFnYWluJyk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgYSBwbGF0Zm9ybSBjcmVkZW50aWFsIHVzaW5nIHRocmVlIG1ldGhvZHMgKGluIHByaW9yaXR5IG9yZGVyKTpcbiAqXG4gKiAxLiBQTEFURk9STV9UT0tFTiBlbnYgdmFyIChhIEpXVCwgb3IgYW4gb3BhcXVlIGBwYl9wYXRf4oCmYC9gcGJfc2Ff4oCmYCBrZXkpXG4gKiAyLiB0aGUgc2Vzc2lvbiBgYXV0aCBsb2dpbmAgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtIChyZW5ld2VkIGlmIGl0IGhhcyBleHBpcmVkKVxuICogMy4gLS1zdG9yZS10b2tlbnMgZmxhZyDihpIgdGhlIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEByZXR1cm5zIHRoZSBiZWFyZXIgY3JlZGVudGlhbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVUb2tlbihvcHRpb25zOiB7XG4gIHN0b3JlVG9rZW5zPzogYm9vbGVhbjtcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIFBhdGggMTogUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICBpZiAocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pIHtcbiAgICBwcmludEluZm8oJ1VzaW5nIFBMQVRGT1JNX1RPS0VOIGZyb20gZW52aXJvbm1lbnQnKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU47XG4gIH1cblxuICAvLyBQYXRoIDI6IHRoZSBzdG9yZWQgYnJvd3NlciBzaWduLWluLiBTa2lwcGVkIGVudGlyZWx5IHdoZW4gLS1zdG9yZS10b2tlbnNcbiAgLy8gbmFtZXMgYSBtYWNoaW5lIGNyZWRlbnRpYWwsIHNvIGFuIG9wZXJhdG9yJ3MgbGFwdG9wIHNlc3Npb24gY2FuIG5ldmVyIGJlXG4gIC8vIHVzZWQgd2hlcmUgdGhlIGF1dG9tYXRpb24gY3JlZGVudGlhbCB3YXMgYXNrZWQgZm9yLlxuICBpZiAoIW9wdGlvbnMuc3RvcmVUb2tlbnMpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0QXBpQ29uZmlnKCkuYXBpLmJhc2VVcmw7XG4gICAgY29uc3Qgc3RvcmVkID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShzdG9yZWQpKSB7XG4gICAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2Vzc2lvbiBmcm9tIFwiYXV0aCBsb2dpblwiJyk7XG4gICAgICByZXR1cm4gc3RvcmVkLmFjY2Vzc1Rva2VuO1xuICAgIH1cbiAgICBpZiAoc3RvcmVkKSB7XG4gICAgICBjb25zdCByZW5ld2VkID0gYXdhaXQgcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybCwgc3RvcmVkKTtcbiAgICAgIGlmIChyZW5ld2VkKSB7XG4gICAgICAgIHByaW50SW5mbygnUmVuZXdlZCB0aGUgc3RvcmVkIHNlc3Npb24gZnJvbSBcImF1dGggbG9naW5cIicpO1xuICAgICAgICByZXR1cm4gcmVuZXdlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXRoIDM6IC0tc3RvcmUtdG9rZW5zIOKGkiByZWFkIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gIGlmIChvcHRpb25zLnN0b3JlVG9rZW5zKSB7XG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FO1xuICAgIGlmICghc2VjcmV0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyIGlzIHJlcXVpcmVkIHdpdGggLS1zdG9yZS10b2tlbnMnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ0ZldGNoaW5nIHNlY3JldCBmcm9tIFNlY3JldHMgTWFuYWdlcicsIHsgc2VjcmV0OiBzZWNyZXROYW1lIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0SnNvbiA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHNlY3JldE5hbWUsIHsgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgIGNvbnN0IHNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0SnNvbikgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcmludFN1Y2Nlc3MoJ1NlY3JldCByZXRyaWV2ZWQgZnJvbSBTZWNyZXRzIE1hbmFnZXInKTtcblxuICAgIC8vIHN0b3JlLXRva2VuIHdyaXRlcyB0aGUgc2VydmljZS1hY2NvdW50IEtFWSB0byB0aGUgYHBhc3N3b3JkYCBmaWVsZCAoc2NoZW1hOlxuICAgIC8vIHsgdXNlcm5hbWU6IG9yZ0lkLCBwYXNzd29yZDogcGJfc2Ff4oCmIH0g4oCUIHNhdGlzZmllcyBDb2RlQnVpbGQnc1xuICAgIC8vIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHMpLCBub3QgYGFjY2Vzc1Rva2VuYC4gVGhlIGtleSBpcyBwcmVzZW50ZWQgYXMgYVxuICAgIC8vIGJlYXJlciBjcmVkZW50aWFsIGFuZCBleGNoYW5nZWQgc2VydmVyLXNpZGUsIHNvIG5vdGhpbmcgaGVyZSBkZWNvZGVzIGl0LlxuICAgIGlmICghc2VjcmV0LnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3JldCBtaXNzaW5nIHBhc3N3b3JkIChzZXJ2aWNlLWFjY291bnQga2V5KSDigJQgcnVuIFwicGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlblwiIHRvIHByb3Zpc2lvbiBvbmUnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2VydmljZS1hY2NvdW50IGtleScpO1xuICAgIHJldHVybiBzZWNyZXQucGFzc3dvcmQ7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkLiBVc2Ugb25lIG9mOlxcbicgK1xuICAgICcgIC0gUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIgKGJyb3dzZXIgc2lnbi1pbiwgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtKVxcbicgK1xuICAgICcgIC0gU2V0IFBMQVRGT1JNX1RPS0VOIHRvIGFuIGFjY2VzcyBrZXkgZnJvbSBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXRcIlxcbicgK1xuICAgICcgIC0gUGFzcyAtLXN0b3JlLXRva2VucyB3aXRoIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXInLFxuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYW5kIHJldHVybiBhbiBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQuXG4gKlxuICogU3VwcG9ydHMgdGhyZWUgYXV0aCBtZXRob2RzOlxuICogMS4gUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICogMi4gdGhlIHN0b3JlZCBgYXV0aCBsb2dpbmAgc2Vzc2lvbiBmb3IgdGhpcyBwbGF0Zm9ybSAocmVuZXdlZCBvbiBleHBpcnkpXG4gKiAzLiAtLXN0b3JlLXRva2VucyArIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIg4oaSIGZldGNoIHRva2VuIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9uczoge1xuICBzdG9yZVRva2Vucz86IGJvb2xlYW47XG4gIHZlcmlmeVNzbD86IGJvb2xlYW47XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbn0pOiBQcm9taXNlPEFwaUNsaWVudD4ge1xuICAvLyBSZXNvbHZlIHRva2VuIGFuZCBzZXQgaXQgaW4gZW52IHNvIEFwaUNsaWVudC9nZXRDb25maWcgY2FuIGZpbmQgaXRcbiAgaWYgKCFwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzb2x2ZVRva2VuKG9wdGlvbnMpO1xuICAgIHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOID0gdG9rZW47XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGFuZCByZXR1cm4gYW4gYXV0aGVudGljYXRlZCBBUEkgY2xpZW50IChzeW5jIOKAlCByZXF1aXJlcyBQTEFURk9STV9UT0tFTikuXG4gKiBVc2UgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIGZvciAtLXN0b3JlLXRva2VucyBzdXBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IEFwaUNsaWVudCB7XG4gIGNvbnN0IGNvbmZpZzogQ29uZmlnID0gZ2V0Q29uZmlnV2l0aE9wdGlvbnMob3B0aW9ucyk7XG4gIHByaW50SW5mbygnSW5pdGlhbGl6aW5nIEFQSSBjbGllbnQnLCB7IGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9KTtcbiAgY29uc3QgY2xpZW50ID0gbmV3IEFwaUNsaWVudChjb25maWcpO1xuXG4gIGlmICghY2xpZW50LmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgcHJpbnRFcnJvcignTm90IGF1dGhlbnRpY2F0ZWQnLCB7IGhpbnQ6ICdSdW4gXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW5cIiwgc2V0IFBMQVRGT1JNX1RPS0VOLCBvciB1c2UgLS1zdG9yZS10b2tlbnMnIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHByaW50U3VjY2VzcygnQVBJIGNsaWVudCBpbml0aWFsaXplZCcpO1xuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgcmVxdWlyZWQgZW50aXR5IElEIChVTElEIG9yIFVVSUQgZm9ybWF0KS5cbiAqIFJldHVybnMgdHJpbW1lZCBJRC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIElEIGlzIGVtcHR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUVudGl0eUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIGVudGl0eU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaWQgfHwgdHlwZW9mIGlkICE9PSAnc3RyaW5nJyB8fCBpZC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnRFcnJvcihgSW52YWxpZCAke2VudGl0eU5hbWV9IElEYCwgeyBwcm92aWRlZDogaWQgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2VudGl0eU5hbWV9IElEIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gIH1cblxuICBjb25zdCB0cmltbWVkID0gaWQudHJpbSgpO1xuXG4gIGlmICh0cmltbWVkLmxlbmd0aCAhPT0gMjYgJiYgdHJpbW1lZC5sZW5ndGggIT09IDM2KSB7XG4gICAgcHJpbnRXYXJuaW5nKGAke2VudGl0eU5hbWV9IElEIGZvcm1hdCBtYXkgYmUgaW52YWxpZGAsIHtcbiAgICAgIHByb3ZpZGVkOiB0cmltbWVkLFxuICAgICAgZXhwZWN0ZWRMZW5ndGg6ICcyNiBjaGFyYWN0ZXJzIChVTElEKSBvciAzNiBjaGFyYWN0ZXJzIChVVUlEKScsXG4gICAgICBhY3R1YWxMZW5ndGg6IHRyaW1tZWQubGVuZ3RoLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWQ7XG59XG5cbiJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tYW5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFlLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFzQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTVDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYSxFQUFFLFFBQWlCLEVBQUUsSUFBMEI7SUFDN0YsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsV0FBVyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O21GQUVtRjtBQUNuRixNQUFNLFVBQVUsY0FBYyxDQUFvQixHQUFNO0lBQ3RELE9BQU8sR0FBRztTQUNQLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFNLENBQUM7QUFDNUUsQ0FBQztBQUVEOztnQ0FFZ0M7QUFDaEMsTUFBTSxVQUFVLGdCQUFnQixDQUFvQixHQUFNO0lBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxzRUFBc0UsQ0FBTSxDQUFDO0FBQ3RILENBQUM7QUFFRDs7OEVBRThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBb0IsR0FBTTtJQUN6RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUVBQWlFLENBQU0sQ0FBQztBQUNuSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLGFBQWEsQ0FBQztRQUNaLGNBQWMsRUFBRSxXQUFXO1FBQzNCLFVBQVUsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO0tBQzdCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBbUI7SUFDakQsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDeEIsWUFBWSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxLQUFvQjtJQUN2RSw4RUFBOEU7SUFDOUUsMkVBQTJFO0lBQzNFLGdFQUFnRTtJQUNoRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pELE9BQU8sWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FBQyxPQUFlLEVBQUUsT0FBc0I7SUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUMvQixHQUFHLE9BQU8sbUJBQW1CLEVBQzdCLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFDdEMsRUFBRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FDM0YsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDbkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ3pELEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM5RSxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDN0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixZQUFZLENBQUMsbUZBQW1GLENBQUMsQ0FBQztRQUNsRyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsT0FLbEM7SUFDQyxpQ0FBaUM7SUFDakMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9CLFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFDcEMsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSwyRUFBMkU7SUFDM0Usc0RBQXNEO0lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1QixTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUN4RCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1RCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFNBQVMsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2dCQUMxRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFFRCxTQUFTLENBQUMsc0NBQXNDLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRSxNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQTJCLENBQUM7UUFDaEUsWUFBWSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFdEQsOEVBQThFO1FBQzlFLGlFQUFpRTtRQUNqRSwyRUFBMkU7UUFDM0UsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyR0FBMkcsQ0FBQyxDQUFDO1FBQy9ILENBQUM7UUFFRCxTQUFTLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0NBQXdDO1FBQ3hDLHFGQUFxRjtRQUNyRiw0RUFBNEU7UUFDNUUsMkRBQTJELENBQzVELENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsOEJBQThCLENBQUMsT0FLcEQ7SUFDQyxxRUFBcUU7SUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBZ0M7SUFDeEUsTUFBTSxNQUFNLEdBQVcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsU0FBUyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RSxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDOUIsVUFBVSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLDhFQUE4RSxFQUFFLENBQUMsQ0FBQztRQUMxSCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFzQixFQUFFLFVBQWtCO0lBQ3pFLElBQUksQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUQsVUFBVSxDQUFDLFdBQVcsVUFBVSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFMUIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25ELFlBQVksQ0FBQyxHQUFHLFVBQVUsMkJBQTJCLEVBQUU7WUFDckQsUUFBUSxFQUFFLE9BQU87WUFDakIsY0FBYyxFQUFFLDhDQUE4QztZQUM5RCxZQUFZLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHR5cGUgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSB9IGZyb20gJy4vYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgdHlwZSBDb25maWcsIGdldEFwaUNvbmZpZywgZ2V0Q29uZmlnV2l0aE9wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgY2xlYXJTZXNzaW9uLCBpc1Nlc3Npb25Vc2FibGUsIGxvYWRTZXNzaW9uLCBzYXZlU2Vzc2lvbiwgd2l0aFJlZnJlc2hMb2NrLCB0eXBlIFN0b3JlZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGdlbmVyYXRlRXhlY3V0aW9uSWQgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEgfSA9IHBpY287XG5cbi8qKlxuICogUHJpbnQgY29tbWFuZCBoZWFkZXIgd2l0aCBzZWN0aW9uIHRpdGxlIGFuZCBleGVjdXRpb24gSUQuXG4gKiBSZXR1cm5zIHRoZSBleGVjdXRpb24gSUQgZm9yIHVzZSBpbiBlcnJvciBoYW5kbGVycyBhbmQgc3VtbWFyaWVzLlxuICpcbiAqIFBhc3MgYHsgcXVpZXQ6IHRydWUgfWAgdG8gc3VwcHJlc3MgdGhlIGRlY29yYXRpdmUgb3V0cHV0IHdoaWxlIHN0aWxsIGdldHRpbmcgdGhlXG4gKiBpZCDigJQgdXNlZCBib3RoIGJ5IGAtLXF1aWV0YCBjYWxsZXJzIGFuZCBieSBgLS1qc29uYCBjb21tYW5kcyAoc28gdGhlIGJhbm5lclxuICogZG9lc24ndCBsYW5kIG9uIHN0ZG91dCBhaGVhZCBvZiB0aGUgSlNPTiBwYXlsb2FkIGFuZCBicmVhayBg4oCmIC0tanNvbiB8IGpxYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludENvbW1hbmRIZWFkZXIodGl0bGU6IHN0cmluZywgc3VidGl0bGU/OiBzdHJpbmcsIG9wdHM/OiB7IHF1aWV0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG4gIGlmICghb3B0cz8ucXVpZXQpIHtcbiAgICBwcmludFNlY3Rpb24odGl0bGUpO1xuICAgIGNvbnNvbGUubG9nKGAke21hZ2VudGEoYFtFWEUtJHtleGVjdXRpb25JZH1dYCl9ICR7Y3lhbihib2xkKHN1YnRpdGxlIHx8IHRpdGxlKSl9YCk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG4gIHJldHVybiBleGVjdXRpb25JZDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tdmVyaWZ5LXNzbGAgLyBgLS1uby12ZXJpZnktc3NsYCBwYWlyLiBUaGUgdHdvIHRvZ2V0aGVyXG4gKiAgZ2l2ZSBDb21tYW5kZXIgYW4gZXhwbGljaXQgdHJpLXN0YXRlIGBvcHRpb25zLnZlcmlmeVNzbGAgKHRydWUvZmFsc2UvdW5kZWZpbmVkKS5cbiAqICBSZXR1cm5zIHRoZSBjb21tYW5kIHNvIGl0IGNvbXBvc2VzOiBgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCd4Jykp4oCmYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3NsT3B0aW9uczxUIGV4dGVuZHMgQ29tbWFuZD4oY21kOiBUKTogVCB7XG4gIHJldHVybiBjbWRcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKSBhcyBUO1xufVxuXG4vKiogQXR0YWNoIHRoZSBzdGFuZGFyZCBgLS1yZWdpb24gPHJlZ2lvbj5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgUmVnaW9uIHJlc29sdXRpb24gKGZsYWcg4oaSIEFXU19SRUdJT04g4oaSIENES19ERUZBVUxUX1JFR0lPTiDihpIgdXMtZWFzdC0xKSBsaXZlcyBpblxuICogIGF3cy1lbnYucmVzb2x2ZUF3c1JlZ2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVnaW9uT3B0aW9uPFQgZXh0ZW5kcyBDb21tYW5kPihjbWQ6IFQpOiBUIHtcbiAgcmV0dXJuIGNtZC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gLyBDREtfREVGQVVMVF9SRUdJT04gLyB1cy1lYXN0LTEpJykgYXMgVDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tcHJvZmlsZSA8cHJvZmlsZT5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgTm8gZGVmYXVsdCBpcyBwaW5uZWQgc28gdGhlIEFXUyBkZWZhdWx0IGNyZWRlbnRpYWwgY2hhaW4gKGVudiB2YXJzLCBTU08sIHJvbGVzKVxuICogIHdvcmtzIG91dCBvZiB0aGUgYm94OyAtLXByb2ZpbGUgb25seSBzZWxlY3RzIGEgc2hhcmVkIHByb2ZpbGUgd2hlbiBzZXQuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFByb2ZpbGVPcHRpb248VCBleHRlbmRzIENvbW1hbmQ+KGNtZDogVCk6IFQge1xuICByZXR1cm4gY21kLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUgKGRlZmF1bHRzIHRvIHRoZSBzdGFuZGFyZCBBV1MgY3JlZGVudGlhbCBjaGFpbiknKSBhcyBUO1xufVxuXG4vKipcbiAqIFByaW50IGV4ZWN1dGlvbiBzdW1tYXJ5IHdpdGggSUQsIGR1cmF0aW9uLCBhbmQgc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRFeGVjdXRpb25TdW1tYXJ5KGV4ZWN1dGlvbklkOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgJ0R1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pLFxuICAgICdTdGF0dXMnOiBncmVlbign4pyTIFN1Y2Nlc3MnKSxcbiAgfSk7XG59XG5cbi8qKlxuICogV2FybiBpZiBTU0wgdmVyaWZpY2F0aW9uIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTc2xXYXJuaW5nKHZlcmlmeVNzbD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgaWYgKHZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgRElTQUJMRUQnKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5ldyBhIHN0b3JlZCBzZXNzaW9uIHdpdGggaXRzIHJlZnJlc2ggdG9rZW4sIHBlcnNpc3QgdGhlIHJvdGF0ZWQgcGFpciwgYW5kXG4gKiByZXR1cm4gdGhlIG5ldyBhY2Nlc3MgdG9rZW4uIFJldHVybnMgdW5kZWZpbmVkIChhbmQgZm9yZ2V0cyB0aGUgc2Vzc2lvbikgd2hlblxuICogdGhlIHBsYXRmb3JtIHJlZnVzZXMgaXQg4oCUIGEgcm90YXRlZC1hd2F5IG9yIHJldm9rZWQgdG9rZW4gaXMgZGVhZCwgYW5kIGtlZXBpbmdcbiAqIGl0IHdvdWxkIG1ha2UgZXZlcnkgbGF0ZXIgY29tbWFuZCBmYWlsIHRoZSBzYW1lIHdheS5cbiAqXG4gKiBgWC1QYi1DbGllbnRgIGlzIG1hbmRhdG9yeSBvbiAvYXV0aC9yZWZyZXNoICh0aGUgQ1NSRiBnYXRlKSBhbmQgaXRzIHZhbHVlIGFsc29cbiAqIHBpY2tzIHRoZSB0cmFuc3BvcnQ6IGFueXRoaW5nIGJ1dCBgd2ViYCBrZWVwcyB0aGUgYm9keSBmbG93IHRoZSBDTEkgdXNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybDogc3RyaW5nLCBzdGFsZTogU3RvcmVkU2Vzc2lvbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIC8vIE9uZSByZWZyZXNoIGF0IGEgdGltZSBwZXIgbWFjaGluZSAoc2VlIGB3aXRoUmVmcmVzaExvY2tgKTogYSBzZWNvbmQgcHJvY2Vzc1xuICAvLyByZS1yZWFkcyB0aGUgc3RvcmUgdW5kZXIgdGhlIGxvY2sgYW5kIHVzZXMgdGhlIHBhaXIgdGhlIGZpcnN0IG9uZSBzYXZlZCxcbiAgLy8gcmF0aGVyIHRoYW4gc3BlbmRpbmcgdGhlIHNhbWUgc2luZ2xlLXVzZSByZWZyZXNoIHRva2VuIGFnYWluLlxuICByZXR1cm4gd2l0aFJlZnJlc2hMb2NrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShjdXJyZW50KSkgcmV0dXJuIGN1cnJlbnQuYWNjZXNzVG9rZW47XG4gICAgcmV0dXJuIHJlbmV3U2Vzc2lvbihiYXNlVXJsLCBjdXJyZW50ID8/IHN0YWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmV3U2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcsIHNlc3Npb246IFN0b3JlZFNlc3Npb24pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIXNlc3Npb24ucmVmcmVzaFRva2VuKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGRhdGE/OiB7IGFjY2Vzc1Rva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH0+KFxuICAgICAgYCR7YmFzZVVybH0vYXBpL2F1dGgvcmVmcmVzaGAsXG4gICAgICB7IHJlZnJlc2hUb2tlbjogc2Vzc2lvbi5yZWZyZXNoVG9rZW4gfSxcbiAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnWC1QYi1DbGllbnQnOiAnY2xpJyB9LCB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICApO1xuICAgIGNvbnN0IHJlbmV3ZWQgPSByZXNwb25zZS5kYXRhPy5kYXRhO1xuICAgIGlmICghcmVuZXdlZD8uYWNjZXNzVG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgc2F2ZVNlc3Npb24oYmFzZVVybCwge1xuICAgICAgYWNjZXNzVG9rZW46IHJlbmV3ZWQuYWNjZXNzVG9rZW4sXG4gICAgICAuLi4ocmVuZXdlZC5yZWZyZXNoVG9rZW4gPyB7IHJlZnJlc2hUb2tlbjogcmVuZXdlZC5yZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIChyZW5ld2VkLmV4cGlyZXNJbiA/PyA5MDApICogMTAwMCxcbiAgICAgIC4uLihzZXNzaW9uLm9yZ2FuaXphdGlvbklkID8geyBvcmdhbml6YXRpb25JZDogc2Vzc2lvbi5vcmdhbml6YXRpb25JZCB9IDoge30pLFxuICAgIH0pO1xuICAgIHJldHVybiByZW5ld2VkLmFjY2Vzc1Rva2VuO1xuICB9IGNhdGNoIHtcbiAgICBjbGVhclNlc3Npb24oYmFzZVVybCk7XG4gICAgcHJpbnRXYXJuaW5nKCdUaGUgc3RvcmVkIHNlc3Npb24gY291bGQgbm90IGJlIHJlbmV3ZWQg4oCUIHJ1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiIGFnYWluJyk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgYSBwbGF0Zm9ybSBjcmVkZW50aWFsIHVzaW5nIHRocmVlIG1ldGhvZHMgKGluIHByaW9yaXR5IG9yZGVyKTpcbiAqXG4gKiAxLiBQTEFURk9STV9UT0tFTiBlbnYgdmFyIChhIEpXVCwgb3IgYW4gb3BhcXVlIGBwYl9wYXRf4oCmYC9gcGJfc2Ff4oCmYCBrZXkpXG4gKiAyLiB0aGUgc2Vzc2lvbiBgYXV0aCBsb2dpbmAgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtIChyZW5ld2VkIGlmIGl0IGhhcyBleHBpcmVkKVxuICogMy4gLS1zdG9yZS10b2tlbnMgZmxhZyDihpIgdGhlIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEByZXR1cm5zIHRoZSBiZWFyZXIgY3JlZGVudGlhbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVUb2tlbihvcHRpb25zOiB7XG4gIHN0b3JlVG9rZW5zPzogYm9vbGVhbjtcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIFBhdGggMTogUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICBpZiAocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pIHtcbiAgICBwcmludEluZm8oJ1VzaW5nIFBMQVRGT1JNX1RPS0VOIGZyb20gZW52aXJvbm1lbnQnKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU47XG4gIH1cblxuICAvLyBQYXRoIDI6IHRoZSBzdG9yZWQgYnJvd3NlciBzaWduLWluLiBTa2lwcGVkIGVudGlyZWx5IHdoZW4gLS1zdG9yZS10b2tlbnNcbiAgLy8gbmFtZXMgYSBtYWNoaW5lIGNyZWRlbnRpYWwsIHNvIGFuIG9wZXJhdG9yJ3MgbGFwdG9wIHNlc3Npb24gY2FuIG5ldmVyIGJlXG4gIC8vIHVzZWQgd2hlcmUgdGhlIGF1dG9tYXRpb24gY3JlZGVudGlhbCB3YXMgYXNrZWQgZm9yLlxuICBpZiAoIW9wdGlvbnMuc3RvcmVUb2tlbnMpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0QXBpQ29uZmlnKCkuYXBpLmJhc2VVcmw7XG4gICAgY29uc3Qgc3RvcmVkID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShzdG9yZWQpKSB7XG4gICAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2Vzc2lvbiBmcm9tIFwiYXV0aCBsb2dpblwiJyk7XG4gICAgICByZXR1cm4gc3RvcmVkLmFjY2Vzc1Rva2VuO1xuICAgIH1cbiAgICBpZiAoc3RvcmVkKSB7XG4gICAgICBjb25zdCByZW5ld2VkID0gYXdhaXQgcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybCwgc3RvcmVkKTtcbiAgICAgIGlmIChyZW5ld2VkKSB7XG4gICAgICAgIHByaW50SW5mbygnUmVuZXdlZCB0aGUgc3RvcmVkIHNlc3Npb24gZnJvbSBcImF1dGggbG9naW5cIicpO1xuICAgICAgICByZXR1cm4gcmVuZXdlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXRoIDM6IC0tc3RvcmUtdG9rZW5zIOKGkiByZWFkIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gIGlmIChvcHRpb25zLnN0b3JlVG9rZW5zKSB7XG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FO1xuICAgIGlmICghc2VjcmV0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyIGlzIHJlcXVpcmVkIHdpdGggLS1zdG9yZS10b2tlbnMnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ0ZldGNoaW5nIHNlY3JldCBmcm9tIFNlY3JldHMgTWFuYWdlcicsIHsgc2VjcmV0OiBzZWNyZXROYW1lIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0SnNvbiA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHNlY3JldE5hbWUsIHsgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgIGNvbnN0IHNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0SnNvbikgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcmludFN1Y2Nlc3MoJ1NlY3JldCByZXRyaWV2ZWQgZnJvbSBTZWNyZXRzIE1hbmFnZXInKTtcblxuICAgIC8vIHN0b3JlLXRva2VuIHdyaXRlcyB0aGUgc2VydmljZS1hY2NvdW50IEtFWSB0byB0aGUgYHBhc3N3b3JkYCBmaWVsZCAoc2NoZW1hOlxuICAgIC8vIHsgdXNlcm5hbWU6IG9yZ0lkLCBwYXNzd29yZDogcGJfc2Ff4oCmIH0g4oCUIHNhdGlzZmllcyBDb2RlQnVpbGQnc1xuICAgIC8vIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHMpLCBub3QgYGFjY2Vzc1Rva2VuYC4gVGhlIGtleSBpcyBwcmVzZW50ZWQgYXMgYVxuICAgIC8vIGJlYXJlciBjcmVkZW50aWFsIGFuZCBleGNoYW5nZWQgc2VydmVyLXNpZGUsIHNvIG5vdGhpbmcgaGVyZSBkZWNvZGVzIGl0LlxuICAgIGlmICghc2VjcmV0LnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3JldCBtaXNzaW5nIHBhc3N3b3JkIChzZXJ2aWNlLWFjY291bnQga2V5KSDigJQgcnVuIFwicGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlblwiIHRvIHByb3Zpc2lvbiBvbmUnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2VydmljZS1hY2NvdW50IGtleScpO1xuICAgIHJldHVybiBzZWNyZXQucGFzc3dvcmQ7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkLiBVc2Ugb25lIG9mOlxcbicgK1xuICAgICcgIC0gUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIgKGJyb3dzZXIgc2lnbi1pbiwgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtKVxcbicgK1xuICAgICcgIC0gU2V0IFBMQVRGT1JNX1RPS0VOIHRvIGFuIGFjY2VzcyBrZXkgZnJvbSBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXRcIlxcbicgK1xuICAgICcgIC0gUGFzcyAtLXN0b3JlLXRva2VucyB3aXRoIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXInLFxuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYW5kIHJldHVybiBhbiBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQuXG4gKlxuICogU3VwcG9ydHMgdGhyZWUgYXV0aCBtZXRob2RzOlxuICogMS4gUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICogMi4gdGhlIHN0b3JlZCBgYXV0aCBsb2dpbmAgc2Vzc2lvbiBmb3IgdGhpcyBwbGF0Zm9ybSAocmVuZXdlZCBvbiBleHBpcnkpXG4gKiAzLiAtLXN0b3JlLXRva2VucyArIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIg4oaSIGZldGNoIHRva2VuIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9uczoge1xuICBzdG9yZVRva2Vucz86IGJvb2xlYW47XG4gIHZlcmlmeVNzbD86IGJvb2xlYW47XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbn0pOiBQcm9taXNlPEFwaUNsaWVudD4ge1xuICAvLyBSZXNvbHZlIHRva2VuIGFuZCBzZXQgaXQgaW4gZW52IHNvIEFwaUNsaWVudC9nZXRDb25maWcgY2FuIGZpbmQgaXRcbiAgaWYgKCFwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzb2x2ZVRva2VuKG9wdGlvbnMpO1xuICAgIHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOID0gdG9rZW47XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGFuZCByZXR1cm4gYW4gYXV0aGVudGljYXRlZCBBUEkgY2xpZW50IChzeW5jIOKAlCByZXF1aXJlcyBQTEFURk9STV9UT0tFTikuXG4gKiBVc2UgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIGZvciAtLXN0b3JlLXRva2VucyBzdXBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IEFwaUNsaWVudCB7XG4gIGNvbnN0IGNvbmZpZzogQ29uZmlnID0gZ2V0Q29uZmlnV2l0aE9wdGlvbnMob3B0aW9ucyk7XG4gIHByaW50SW5mbygnSW5pdGlhbGl6aW5nIEFQSSBjbGllbnQnLCB7IGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9KTtcbiAgY29uc3QgY2xpZW50ID0gbmV3IEFwaUNsaWVudChjb25maWcpO1xuXG4gIGlmICghY2xpZW50LmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgcHJpbnRFcnJvcignTm90IGF1dGhlbnRpY2F0ZWQnLCB7IGhpbnQ6ICdSdW4gXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW5cIiwgc2V0IFBMQVRGT1JNX1RPS0VOLCBvciB1c2UgLS1zdG9yZS10b2tlbnMnIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHByaW50U3VjY2VzcygnQVBJIGNsaWVudCBpbml0aWFsaXplZCcpO1xuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgcmVxdWlyZWQgZW50aXR5IElEIChVTElEIG9yIFVVSUQgZm9ybWF0KS5cbiAqIFJldHVybnMgdHJpbW1lZCBJRC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIElEIGlzIGVtcHR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUVudGl0eUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIGVudGl0eU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaWQgfHwgdHlwZW9mIGlkICE9PSAnc3RyaW5nJyB8fCBpZC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnRFcnJvcihgSW52YWxpZCAke2VudGl0eU5hbWV9IElEYCwgeyBwcm92aWRlZDogaWQgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2VudGl0eU5hbWV9IElEIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gIH1cblxuICBjb25zdCB0cmltbWVkID0gaWQudHJpbSgpO1xuXG4gIGlmICh0cmltbWVkLmxlbmd0aCAhPT0gMjYgJiYgdHJpbW1lZC5sZW5ndGggIT09IDM2KSB7XG4gICAgcHJpbnRXYXJuaW5nKGAke2VudGl0eU5hbWV9IElEIGZvcm1hdCBtYXkgYmUgaW52YWxpZGAsIHtcbiAgICAgIHByb3ZpZGVkOiB0cmltbWVkLFxuICAgICAgZXhwZWN0ZWRMZW5ndGg6ICcyNiBjaGFyYWN0ZXJzIChVTElEKSBvciAzNiBjaGFyYWN0ZXJzIChVVUlEKScsXG4gICAgICBhY3R1YWxMZW5ndGg6IHRyaW1tZWQubGVuZ3RoLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWQ7XG59XG5cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,YAAY,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,YAAY,EAAE,MAAM,EAAE,CAAC;AA2CvB;;;;;;;;;;;GAWG;AACH;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAaD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAU7E"}
|
|
@@ -19,12 +19,10 @@ const defaultConfig = {
|
|
|
19
19
|
api: {
|
|
20
20
|
baseUrl: 'https://localhost:8443',
|
|
21
21
|
timeout: 30_000,
|
|
22
|
-
pipelineUrl: '/api/
|
|
23
|
-
pipelineListUrl: '/api/pipelines',
|
|
22
|
+
pipelineUrl: '/api/pipelines',
|
|
24
23
|
pipelineTemplateUrl: '/api/pipeline-templates',
|
|
25
|
-
pluginUrl: '/api/
|
|
26
|
-
|
|
27
|
-
pluginUploadUrl: '/api/plugin/upload',
|
|
24
|
+
pluginUrl: '/api/plugins',
|
|
25
|
+
pluginUploadUrl: '/api/plugins/upload',
|
|
28
26
|
rejectUnauthorized: true,
|
|
29
27
|
},
|
|
30
28
|
};
|
|
@@ -162,4 +160,4 @@ export function getConfigWithOptions(options) {
|
|
|
162
160
|
}
|
|
163
161
|
return config;
|
|
164
162
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZUFBZTtRQUM1QixlQUFlLEVBQUUsZ0JBQWdCO1FBQ2pDLG1CQUFtQixFQUFFLHlCQUF5QjtRQUM5QyxTQUFTLEVBQUUsYUFBYTtRQUN4QixhQUFhLEVBQUUsY0FBYztRQUM3QixlQUFlLEVBQUUsb0JB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LEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDckMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7S0FDbEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNoQyx1RUFBdUU7UUFDdkUsNkVBQTZFO1FBQzdFLG1FQUFtRTtRQUNuRSx1QkFBdUIsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGlzU2Vzc2lvblVzYWJsZSwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQsIGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4vdGxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IHR5cGUgeyBDb25maWcgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24g4oCUIEFQSSBlbmRwb2ludCBwYXRocyBhbmQgY29ubmVjdGlvbiBzZXR0aW5ncy5cbiAqL1xuY29uc3QgZGVmYXVsdENvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4gPSB7XG4gIGFwaToge1xuICAgIGJhc2VVcmw6ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJyxcbiAgICB0aW1lb3V0OiAzMF8wMDAsXG4gICAgcGlwZWxpbmVVcmw6ICcvYXBpL3BpcGVsaW5lJyxcbiAgICBwaXBlbGluZUxpc3RVcmw6ICcvYXBpL3BpcGVsaW5lcycsXG4gICAgcGlwZWxpbmVUZW1wbGF0ZVVybDogJy9hcGkvcGlwZWxpbmUtdGVtcGxhdGVzJyxcbiAgICBwbHVnaW5Vcmw6ICcvYXBpL3BsdWdpbicsXG4gICAgcGx1Z2luTGlzdFVybDogJy9hcGkvcGx1Z2lucycsXG4gICAgcGx1Z2luVXBsb2FkVXJsOiAnL2FwaS9wbHVnaW4vdXBsb2FkJyxcbiAgICByZWplY3RVbmF1dGhvcml6ZWQ6IHRydWUsXG4gIH0sXG59O1xuXG4vKiogVXNlciBjb25maWcgZmlsZSBwYXRoOiB+Ly5waXBlbGluZS1tYW5hZ2VyL2NvbmZpZy55bWwgKi9cbmNvbnN0IFVTRVJfQ09ORklHX1BBVEggPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLnBpcGVsaW5lLW1hbmFnZXInLCAnY29uZmlnLnltbCcpO1xuXG4vKipcbiAqIExvYWQgYSBZQU1MIGNvbmZpZyBmaWxlIGFuZCBtZXJnZSBpdHMgYGFwaWAgc2VjdGlvbiBpbnRvIHRoZSBjb25maWcuXG4gKiBSZXR1cm5zIHRoZSBtZXJnZWQgY29uZmlnIG9yIHRoZSBvcmlnaW5hbCBpZiBmaWxlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMuXG4gKi9cbmZ1bmN0aW9uIGxvYWRDb25maWdGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIGNvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4pOiBPbWl0PENvbmZpZywgJ2F1dGgnPiB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHJldHVybiBjb25maWc7XG5cbiAgdHJ5IHtcbiAgICBwcmludERlYnVnKCdMb2FkaW5nIGNvbmZpZ3VyYXRpb24nLCB7IHBhdGg6IGZpbGVQYXRoIH0pO1xuICAgIGNvbnN0IHBhcnNlZCA9IHlhbWwucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKSk7XG4gICAgaWYgKHBhcnNlZD8uYXV0aCkge1xuICAgICAgcHJpbnRXYXJuaW5nKCdBdXRoIHNlY3Rpb24gaW4gY29uZmlnIGZpbGUgaXMgaWdub3JlZCDigJQgdXNlIFBMQVRGT1JNX1RPS0VOIGVudiB2YXInKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYXBpOiB7IC4uLmNvbmZpZy5hcGksIC4uLnBhcnNlZD8uYXBpIH0gfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludFdhcm5pbmcoJ0ZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlLCB1c2luZyBkZWZhdWx0cycsIHtcbiAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvciksXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIGZpbGVzIGFuZCBlbnZpcm9ubWVudC5cbiAqXG4gKiBQcmlvcml0eSAobGFzdCB3aW5zKTpcbiAqIDEuIEJ1aWx0LWluIGRlZmF1bHRzXG4gKiAyLiBVc2VyIGNvbmZpZyBmaWxlOiB+Ly5waXBlbGluZS1tYW5hZ2VyL2NvbmZpZy55bWxcbiAqIDMuIFByb2plY3QgY29uZmlnIGZpbGU6IENMSV9DT05GSUdfUEFUSCBvciAuL2NvbmZpZy55bWxcbiAqIDQuIEVudmlyb25tZW50IHZhcmlhYmxlc1xuICpcbiAqIEF1dGggdG9rZW4gY29tZXMgZnJvbSBQTEFURk9STV9UT0tFTiwgZWxzZSB0aGUgc3RvcmVkIGBhdXRoIGxvZ2luYCBzZXNzaW9uIOKAlFxuICogbmV2ZXIgZnJvbSBhIGNvbmZpZyBmaWxlLlxuICovXG4vKipcbiAqIFJlc29sdmUgdGhlIEFQSS9jb25uZWN0aW9uIGNvbmZpZyAoYmFzZSBVUkwsIFNTTCwgdGltZW91dHMpIGZyb20gZmlsZXMgYW5kXG4gKiBlbnZpcm9ubWVudCBXSVRIT1VUIHJlcXVpcmluZyBgUExBVEZPUk1fVE9LRU5gLlxuICpcbiAqIFRoaXMgaXMgdGhlIHRva2VuLW9wdGlvbmFsIHNsaWNlIG9mIHtAbGluayBnZXRDb25maWd9LiBUaGUgcHJlLWF1dGggbG9naW4gc3RlcFxuICogKGBlbnN1cmVQbGF0Zm9ybVRva2VuYCkgbmVlZHMgdGhlIHJlc29sdmVkIGJhc2UgVVJMIHRvIFBPU1QgYC9hcGkvYXV0aC9sb2dpbmBcbiAqICpiZWZvcmUqIGFueSB0b2tlbiBleGlzdHMg4oCUIGNhbGxpbmcgYGdldENvbmZpZygpYCB0aGVyZSB3b3VsZCB0aHJvdyBvbiB0aGVcbiAqIG1pc3NpbmcgdG9rZW4gYW5kIG1ha2UgaW5saW5lLWxvZ2luIGRlYWQtb24tYXJyaXZhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwaUNvbmZpZygpOiBPbWl0PENvbmZpZywgJ2F1dGgnPiB7XG4gIGNvbnN0IHByb2plY3RDb25maWdQYXRoID0gcHJvY2Vzcy5lbnYuQ0xJX0NPTkZJR19QQVRIIHx8IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9jb25maWcueW1sJyk7XG5cbiAgLy8gTGF5ZXIgMTogZGVmYXVsdHMg4oaSIExheWVyIDI6IHVzZXIgY29uZmlnIOKGkiBMYXllciAzOiBwcm9qZWN0IGNvbmZpZy5cbiAgLy8gYGFwaWAgaXMgY29waWVkIHRvbzogYSBzaGFsbG93IGB7IC4uLmRlZmF1bHRDb25maWcgfWAgc2hhcmVzIHRoZSBTQU1FIGBhcGlgXG4gIC8vIG9iamVjdCwgc28gdGhlIGBQTEFURk9STV9CQVNFX1VSTGAgYXNzaWdubWVudCBiZWxvdyBtdXRhdGVkIHRoZSBtb2R1bGUtbGV2ZWxcbiAgLy8gZGVmYXVsdHMgYW5kIGxlYWtlZCBvbmUgY2FsbGVyJ3MgYmFzZSBVUkwgaW50byBldmVyeSBsYXRlciByZXNvbHV0aW9uLlxuICBsZXQgY29uZmlnID0gbG9hZENvbmZpZ0ZpbGUoVVNFUl9DT05GSUdfUEFUSCwgeyBhcGk6IHsgLi4uZGVmYXVsdENvbmZpZy5hcGkgfSB9KTtcbiAgY29uZmlnID0gbG9hZENvbmZpZ0ZpbGUocHJvamVjdENvbmZpZ1BhdGgsIGNvbmZpZyk7XG5cbiAgLy8gTGF5ZXIgNDogZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzXG4gIGlmIChwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCkge1xuICAgIGNvbmZpZy5hcGkuYmFzZVVybCA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMO1xuICAgIHByaW50RGVidWcoJ1VzaW5nIFBMQVRGT1JNX0JBU0VfVVJMIGZyb20gZW52aXJvbm1lbnQnLCB7IGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9KTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGlzYWJsZSA9IHByb2Nlc3MuZW52LlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID09PSAnMCc7XG4gICAgaWYgKGRpc2FibGUgJiYgaXNQcm9kdWN0aW9uRW52KCkpIHtcbiAgICAgIHByaW50V2FybmluZygnSWdub3JpbmcgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCBpbiBwcm9kdWN0aW9uIOKAlCBTU0wgdmVyaWZpY2F0aW9uIHJlbWFpbnMgZW5hYmxlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuYXBpLnJlamVjdFVuYXV0aG9yaXplZCA9ICFkaXNhYmxlO1xuICAgICAgaWYgKGRpc2FibGUpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKCdTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBkaXNhYmxlZCB2aWEgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5VUExPQURfVElNRU9VVCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VULCAxMCk7XG4gICAgaWYgKCFpc05hTihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICAgIGNvbmZpZy5hcGkudXBsb2FkVGltZW91dCA9IHBhcnNlZDtcbiAgICAgIHByaW50RGVidWcoJ1VzaW5nIFVQTE9BRF9USU1FT1VUIGZyb20gZW52aXJvbm1lbnQnLCB7IHVwbG9hZFRpbWVvdXQ6IGAke3BhcnNlZH1tc2AgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByaW50V2FybmluZygnSW52YWxpZCBVUExPQURfVElNRU9VVCB2YWx1ZSwgdXNpbmcgZGVmYXVsdCcsIHsgcHJvdmlkZWQ6IHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0QXBpQ29uZmlnKCk7XG5cbiAgLy8gUExBVEZPUk1fVE9LRU4gd2lucyAoYW4gYWNjZXNzIGtleSBpbiBDSSwgb3IgYW4gZXhwbGljaXQgZXhwb3J0KTsgb3RoZXJ3aXNlXG4gIC8vIGZhbGwgYmFjayB0byB0aGUgc2Vzc2lvbiBgYXV0aCBsb2dpbmAgc3RvcmVkIGZvciBUSElTIHBsYXRmb3JtLiBBIHN0b3JlZFxuICAvLyBzZXNzaW9uIHRoYXQgaGFzIGFscmVhZHkgZXhwaXJlZCBpcyBpZ25vcmVkIHJhdGhlciB0aGFuIHNlbnQgYW5kIHJlamVjdGVkIOKAlFxuICAvLyB0aGUgYXN5bmMgcGF0aCAoYHJlc29sdmVUb2tlbmApIHJlZnJlc2hlcyBpdCwgYW5kIGV2ZXJ5dGhpbmcgZWxzZSB0ZWxscyB0aGVcbiAgLy8gdXNlciB0byBzaWduIGluIGFnYWluLlxuICBjb25zdCBzdG9yZWQgPSBsb2FkU2Vzc2lvbihjb25maWcuYXBpLmJhc2VVcmwpO1xuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOIHx8IChpc1Nlc3Npb25Vc2FibGUoc3RvcmVkKSA/IHN0b3JlZC5hY2Nlc3NUb2tlbiA6IHVuZGVmaW5lZCk7XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHByaW50RXJyb3IoJ05vdCBzaWduZWQgaW46IG5vIFBMQVRGT1JNX1RPS0VOLCBhbmQgbm8gdmFsaWQgc3RvcmVkIHNlc3Npb24gZm9yIHRoaXMgcGxhdGZvcm0nKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiLCBvciBzZXQgUExBVEZPUk1fVE9LRU4gdG8gYW4gYWNjZXNzIGtleScpO1xuICB9XG5cbiAgaWYgKHRva2VuLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX1RPS0VOIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAodG9rZW4uaW5jbHVkZXMoJyAnKSkge1xuICAgIHByaW50V2FybmluZygnUExBVEZPUk1fVE9LRU4gY29udGFpbnMgd2hpdGVzcGFjZSDigJQgdGhpcyBtYXkgY2F1c2UgaXNzdWVzJyk7XG4gIH1cblxuICBwcmludERlYnVnKCdDb25maWd1cmF0aW9uIGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBhdXRoOiB7IHRva2VuIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBgY29uZmlnYCB3aXRoIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWQuIE1vZHVsZS1wcml2YXRlIOKAlCB0aGVcbiAqIG9ubHkgY2FsbGVyIGlzIGBnZXRDb25maWdXaXRoT3B0aW9uc2AgYmVsb3cuXG4gKi9cbmZ1bmN0aW9uIHdpdGhTU0xEaXNhYmxlZChjb25maWc6IENvbmZpZyk6IENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGFwaTogeyAuLi5jb25maWcuYXBpLCByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uLCBvcHRpb25hbGx5IGRpc2FibGluZyBTU0wgYmFzZWQgb24gY29tbWFuZCBvcHRpb25zLlxuICogUmVwbGFjZXMgdGhlIHJlcGVhdGVkIHBhdHRlcm46XG4gKiAgIGBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyB3aXRoU1NMRGlzYWJsZWQoZ2V0Q29uZmlnKCkpIDogZ2V0Q29uZmlnKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdXaXRoT3B0aW9ucyhvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IENvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlKSB7XG4gICAgLy8gRXZlcnkgYXV0aGVudGljYXRlZCBjb21tYW5kIGZsb3dzIGl0cyB0b2tlbiB0aHJvdWdoIGhlcmUg4oCUIHJlZnVzZSB0b1xuICAgIC8vIGRpc2FibGUgY2VydCB2ZXJpZmljYXRpb24gaW4gcHJvZHVjdGlvbiAobWlycm9ycyB0aGUgbG9naW4vcmVuZXdhbCBndWFyZHMpXG4gICAgLy8gc28gYSBNSVRNIGNhbid0IGhhcnZlc3QgdGhlIEJlYXJlciBKV1QuIE5vLW9wIGluIG5vbi1wcm9kdWN0aW9uLlxuICAgIGFzc2VydFNzbERpc2FibGVBbGxvd2VkKCdhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQgKC0tbm8tdmVyaWZ5LXNzbCknKTtcbiAgICByZXR1cm4gd2l0aFNTTERpc2FibGVkKGNvbmZpZyk7XG4gIH1cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLG1CQUFtQixFQUFFLHlCQUF5QjtRQUM5QyxTQUFTLEVBQUUsY0FBYztRQUN6QixlQUFlLEVBQUUscUJBQXFCO1FBQ3RDLGtCQUFrQixFQUFFLElBQUk7S0FDekI7Q0FDRixDQUFDO0FBRUYsNERBQTREO0FBQzVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFcEY7OztHQUdHO0FBQ0gsU0FBUyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxNQUE0QjtJQUNwRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUU1QyxJQUFJLENBQUM7UUFDSCxVQUFVLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLFlBQVksQ0FBQyw0Q0FBNEMsRUFBRTtZQUN6RCxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQzNCLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZO0lBQzFCLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFL0Ysc0VBQXNFO0lBQ3RFLDhFQUE4RTtJQUM5RSwrRUFBK0U7SUFDL0UseUVBQXlFO0lBQ3pFLElBQUksTUFBTSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRixNQUFNLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRW5ELDBDQUEwQztJQUMxQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1FBQ25ELFVBQVUsQ0FBQywwQ0FBMEMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixLQUFLLEdBQUcsQ0FBQztRQUM1RCxJQUFJLE9BQU8sSUFBSSxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFlBQVksQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDeEcsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFOUIsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHlCQUF5QjtJQUN6QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsVUFBVSxDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDOUYsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDckMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7S0FDbEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNoQyx1RUFBdUU7UUFDdkUsNkVBQTZFO1FBQzdFLG1FQUFtRTtRQUNuRSx1QkFBdUIsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGlzU2Vzc2lvblVzYWJsZSwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQsIGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4vdGxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IHR5cGUgeyBDb25maWcgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24g4oCUIEFQSSBlbmRwb2ludCBwYXRocyBhbmQgY29ubmVjdGlvbiBzZXR0aW5ncy5cbiAqL1xuY29uc3QgZGVmYXVsdENvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4gPSB7XG4gIGFwaToge1xuICAgIGJhc2VVcmw6ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJyxcbiAgICB0aW1lb3V0OiAzMF8wMDAsXG4gICAgcGlwZWxpbmVVcmw6ICcvYXBpL3BpcGVsaW5lcycsXG4gICAgcGlwZWxpbmVUZW1wbGF0ZVVybDogJy9hcGkvcGlwZWxpbmUtdGVtcGxhdGVzJyxcbiAgICBwbHVnaW5Vcmw6ICcvYXBpL3BsdWdpbnMnLFxuICAgIHBsdWdpblVwbG9hZFVybDogJy9hcGkvcGx1Z2lucy91cGxvYWQnLFxuICAgIHJlamVjdFVuYXV0aG9yaXplZDogdHJ1ZSxcbiAgfSxcbn07XG5cbi8qKiBVc2VyIGNvbmZpZyBmaWxlIHBhdGg6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbCAqL1xuY29uc3QgVVNFUl9DT05GSUdfUEFUSCA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcucGlwZWxpbmUtbWFuYWdlcicsICdjb25maWcueW1sJyk7XG5cbi8qKlxuICogTG9hZCBhIFlBTUwgY29uZmlnIGZpbGUgYW5kIG1lcmdlIGl0cyBgYXBpYCBzZWN0aW9uIGludG8gdGhlIGNvbmZpZy5cbiAqIFJldHVybnMgdGhlIG1lcmdlZCBjb25maWcgb3IgdGhlIG9yaWdpbmFsIGlmIGZpbGUgZG9lc24ndCBleGlzdCBvciBmYWlscy5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbmZpZ0ZpbGUoZmlsZVBhdGg6IHN0cmluZywgY29uZmlnOiBPbWl0PENvbmZpZywgJ2F1dGgnPik6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkgcmV0dXJuIGNvbmZpZztcblxuICB0cnkge1xuICAgIHByaW50RGVidWcoJ0xvYWRpbmcgY29uZmlndXJhdGlvbicsIHsgcGF0aDogZmlsZVBhdGggfSk7XG4gICAgY29uc3QgcGFyc2VkID0geWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGYtOCcpKTtcbiAgICBpZiAocGFyc2VkPy5hdXRoKSB7XG4gICAgICBwcmludFdhcm5pbmcoJ0F1dGggc2VjdGlvbiBpbiBjb25maWcgZmlsZSBpcyBpZ25vcmVkIOKAlCB1c2UgUExBVEZPUk1fVE9LRU4gZW52IHZhcicpO1xuICAgIH1cbiAgICByZXR1cm4geyBhcGk6IHsgLi4uY29uZmlnLmFwaSwgLi4ucGFyc2VkPy5hcGkgfSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50V2FybmluZygnRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGUsIHVzaW5nIGRlZmF1bHRzJywge1xuICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gZmlsZXMgYW5kIGVudmlyb25tZW50LlxuICpcbiAqIFByaW9yaXR5IChsYXN0IHdpbnMpOlxuICogMS4gQnVpbHQtaW4gZGVmYXVsdHNcbiAqIDIuIFVzZXIgY29uZmlnIGZpbGU6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbFxuICogMy4gUHJvamVjdCBjb25maWcgZmlsZTogQ0xJX0NPTkZJR19QQVRIIG9yIC4vY29uZmlnLnltbFxuICogNC4gRW52aXJvbm1lbnQgdmFyaWFibGVzXG4gKlxuICogQXV0aCB0b2tlbiBjb21lcyBmcm9tIFBMQVRGT1JNX1RPS0VOLCBlbHNlIHRoZSBzdG9yZWQgYGF1dGggbG9naW5gIHNlc3Npb24g4oCUXG4gKiBuZXZlciBmcm9tIGEgY29uZmlnIGZpbGUuXG4gKi9cbi8qKlxuICogUmVzb2x2ZSB0aGUgQVBJL2Nvbm5lY3Rpb24gY29uZmlnIChiYXNlIFVSTCwgU1NMLCB0aW1lb3V0cykgZnJvbSBmaWxlcyBhbmRcbiAqIGVudmlyb25tZW50IFdJVEhPVVQgcmVxdWlyaW5nIGBQTEFURk9STV9UT0tFTmAuXG4gKlxuICogVGhpcyBpcyB0aGUgdG9rZW4tb3B0aW9uYWwgc2xpY2Ugb2Yge0BsaW5rIGdldENvbmZpZ30uIFRoZSBwcmUtYXV0aCBsb2dpbiBzdGVwXG4gKiAoYGVuc3VyZVBsYXRmb3JtVG9rZW5gKSBuZWVkcyB0aGUgcmVzb2x2ZWQgYmFzZSBVUkwgdG8gUE9TVCBgL2FwaS9hdXRoL2xvZ2luYFxuICogKmJlZm9yZSogYW55IHRva2VuIGV4aXN0cyDigJQgY2FsbGluZyBgZ2V0Q29uZmlnKClgIHRoZXJlIHdvdWxkIHRocm93IG9uIHRoZVxuICogbWlzc2luZyB0b2tlbiBhbmQgbWFrZSBpbmxpbmUtbG9naW4gZGVhZC1vbi1hcnJpdmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpQ29uZmlnKCk6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5DTElfQ09ORklHX1BBVEggfHwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2NvbmZpZy55bWwnKTtcblxuICAvLyBMYXllciAxOiBkZWZhdWx0cyDihpIgTGF5ZXIgMjogdXNlciBjb25maWcg4oaSIExheWVyIDM6IHByb2plY3QgY29uZmlnLlxuICAvLyBgYXBpYCBpcyBjb3BpZWQgdG9vOiBhIHNoYWxsb3cgYHsgLi4uZGVmYXVsdENvbmZpZyB9YCBzaGFyZXMgdGhlIFNBTUUgYGFwaWBcbiAgLy8gb2JqZWN0LCBzbyB0aGUgYFBMQVRGT1JNX0JBU0VfVVJMYCBhc3NpZ25tZW50IGJlbG93IG11dGF0ZWQgdGhlIG1vZHVsZS1sZXZlbFxuICAvLyBkZWZhdWx0cyBhbmQgbGVha2VkIG9uZSBjYWxsZXIncyBiYXNlIFVSTCBpbnRvIGV2ZXJ5IGxhdGVyIHJlc29sdXRpb24uXG4gIGxldCBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShVU0VSX0NPTkZJR19QQVRILCB7IGFwaTogeyAuLi5kZWZhdWx0Q29uZmlnLmFwaSB9IH0pO1xuICBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShwcm9qZWN0Q29uZmlnUGF0aCwgY29uZmlnKTtcblxuICAvLyBMYXllciA0OiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXNcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMKSB7XG4gICAgY29uZmlnLmFwaS5iYXNlVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gICAgcHJpbnREZWJ1ZygnVXNpbmcgUExBVEZPUk1fQkFTRV9VUkwgZnJvbSBlbnZpcm9ubWVudCcsIHsgYmFzZVVybDogY29uZmlnLmFwaS5iYXNlVXJsIH0pO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkaXNhYmxlID0gcHJvY2Vzcy5lbnYuVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPT09ICcwJztcbiAgICBpZiAoZGlzYWJsZSAmJiBpc1Byb2R1Y3Rpb25FbnYoKSkge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJZ25vcmluZyBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wIGluIHByb2R1Y3Rpb24g4oCUIFNTTCB2ZXJpZmljYXRpb24gcmVtYWlucyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZy5hcGkucmVqZWN0VW5hdXRob3JpemVkID0gIWRpc2FibGU7XG4gICAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGRpc2FibGVkIHZpYSBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQsIDEwKTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZCkgJiYgcGFyc2VkID4gMCkge1xuICAgICAgY29uZmlnLmFwaS51cGxvYWRUaW1lb3V0ID0gcGFyc2VkO1xuICAgICAgcHJpbnREZWJ1ZygnVXNpbmcgVVBMT0FEX1RJTUVPVVQgZnJvbSBlbnZpcm9ubWVudCcsIHsgdXBsb2FkVGltZW91dDogYCR7cGFyc2VkfW1zYCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJbnZhbGlkIFVQTE9BRF9USU1FT1VUIHZhbHVlLCB1c2luZyBkZWZhdWx0JywgeyBwcm92aWRlZDogcHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZygpOiBDb25maWcge1xuICBjb25zdCBjb25maWcgPSBnZXRBcGlDb25maWcoKTtcblxuICAvLyBQTEFURk9STV9UT0tFTiB3aW5zIChhbiBhY2Nlc3Mga2V5IGluIENJLCBvciBhbiBleHBsaWNpdCBleHBvcnQpOyBvdGhlcndpc2VcbiAgLy8gZmFsbCBiYWNrIHRvIHRoZSBzZXNzaW9uIGBhdXRoIGxvZ2luYCBzdG9yZWQgZm9yIFRISVMgcGxhdGZvcm0uIEEgc3RvcmVkXG4gIC8vIHNlc3Npb24gdGhhdCBoYXMgYWxyZWFkeSBleHBpcmVkIGlzIGlnbm9yZWQgcmF0aGVyIHRoYW4gc2VudCBhbmQgcmVqZWN0ZWQg4oCUXG4gIC8vIHRoZSBhc3luYyBwYXRoIChgcmVzb2x2ZVRva2VuYCkgcmVmcmVzaGVzIGl0LCBhbmQgZXZlcnl0aGluZyBlbHNlIHRlbGxzIHRoZVxuICAvLyB1c2VyIHRvIHNpZ24gaW4gYWdhaW4uXG4gIGNvbnN0IHN0b3JlZCA9IGxvYWRTZXNzaW9uKGNvbmZpZy5hcGkuYmFzZVVybCk7XG4gIGNvbnN0IHRva2VuID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4gfHwgKGlzU2Vzc2lvblVzYWJsZShzdG9yZWQpID8gc3RvcmVkLmFjY2Vzc1Rva2VuIDogdW5kZWZpbmVkKTtcblxuICBpZiAoIXRva2VuKSB7XG4gICAgcHJpbnRFcnJvcignTm90IHNpZ25lZCBpbjogbm8gUExBVEZPUk1fVE9LRU4sIGFuZCBubyB2YWxpZCBzdG9yZWQgc2Vzc2lvbiBmb3IgdGhpcyBwbGF0Zm9ybScpO1xuICAgIHRocm93IG5ldyBFcnJvcignUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIsIG9yIHNldCBQTEFURk9STV9UT0tFTiB0byBhbiBhY2Nlc3Mga2V5Jyk7XG4gIH1cblxuICBpZiAodG9rZW4udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUExBVEZPUk1fVE9LRU4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgfVxuXG4gIGlmICh0b2tlbi5pbmNsdWRlcygnICcpKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdQTEFURk9STV9UT0tFTiBjb250YWlucyB3aGl0ZXNwYWNlIOKAlCB0aGlzIG1heSBjYXVzZSBpc3N1ZXMnKTtcbiAgfVxuXG4gIHByaW50RGVidWcoJ0NvbmZpZ3VyYXRpb24gbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGF1dGg6IHsgdG9rZW4gfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBjb3B5IG9mIGBjb25maWdgIHdpdGggU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZC4gTW9kdWxlLXByaXZhdGUg4oCUIHRoZVxuICogb25seSBjYWxsZXIgaXMgYGdldENvbmZpZ1dpdGhPcHRpb25zYCBiZWxvdy5cbiAqL1xuZnVuY3Rpb24gd2l0aFNTTERpc2FibGVkKGNvbmZpZzogQ29uZmlnKTogQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgYXBpOiB7IC4uLmNvbmZpZy5hcGksIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsbHkgZGlzYWJsaW5nIFNTTCBiYXNlZCBvbiBjb21tYW5kIG9wdGlvbnMuXG4gKiBSZXBsYWNlcyB0aGUgcmVwZWF0ZWQgcGF0dGVybjpcbiAqICAgYG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSA/IHdpdGhTU0xEaXNhYmxlZChnZXRDb25maWcoKSkgOiBnZXRDb25maWcoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnM6IHsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9KTogQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIGlmIChvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICAvLyBFdmVyeSBhdXRoZW50aWNhdGVkIGNvbW1hbmQgZmxvd3MgaXRzIHRva2VuIHRocm91Z2ggaGVyZSDigJQgcmVmdXNlIHRvXG4gICAgLy8gZGlzYWJsZSBjZXJ0IHZlcmlmaWNhdGlvbiBpbiBwcm9kdWN0aW9uIChtaXJyb3JzIHRoZSBsb2dpbi9yZW5ld2FsIGd1YXJkcylcbiAgICAvLyBzbyBhIE1JVE0gY2FuJ3QgaGFydmVzdCB0aGUgQmVhcmVyIEpXVC4gTm8tb3AgaW4gbm9uLXByb2R1Y3Rpb24uXG4gICAgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQoJ2F1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudCAoLS1uby12ZXJpZnktc3NsKScpO1xuICAgIHJldHVybiB3aXRoU1NMRGlzYWJsZWQoY29uZmlnKTtcbiAgfVxuICByZXR1cm4gY29uZmlnO1xufVxuIl19
|
|
@@ -20,4 +20,20 @@ export declare function loadSession(baseUrl: string): StoredSession | undefined;
|
|
|
20
20
|
export declare function clearSession(baseUrl: string): void;
|
|
21
21
|
/** True when the stored access token is still usable (with a little slack). */
|
|
22
22
|
export declare function isSessionUsable(session: StoredSession | undefined): session is StoredSession;
|
|
23
|
+
/**
|
|
24
|
+
* Run `fn` holding the machine-wide REFRESH LOCK (`~/.pipeline-manager/refresh.lock`,
|
|
25
|
+
* created exclusively).
|
|
26
|
+
*
|
|
27
|
+
* A refresh token is single-use: two CLI processes renewing the same stored
|
|
28
|
+
* session at once (a script fanning out commands, two terminals) would present
|
|
29
|
+
* the same token twice, and outside the platform's short rotation grace the
|
|
30
|
+
* second use reads as REUSE — which revokes the session. Serializing the refresh
|
|
31
|
+
* means the second process waits, then (re-reading the store) finds the pair the
|
|
32
|
+
* first one already saved instead of spending the old token again.
|
|
33
|
+
*
|
|
34
|
+
* A lock left behind by a crashed process is broken after
|
|
35
|
+
* {@link REFRESH_LOCK_STALE_MS}; waiting gives up after {@link REFRESH_LOCK_WAIT_MS}
|
|
36
|
+
* and runs `fn` anyway (the platform grace still covers a near-simultaneous use).
|
|
37
|
+
*/
|
|
38
|
+
export declare function withRefreshLock<T>(fn: () => Promise<T>): Promise<T>;
|
|
23
39
|
//# sourceMappingURL=credential-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"AAuCA,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD,kEAAkE;AAClE,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAgCD,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,IAAI,CAK1F;AAED;2DAC2D;AAC3D,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtE;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAalD;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,IAAI,aAAa,CAE5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA2BzE"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* It holds a real session — the access token AND its refresh token — because
|
|
11
11
|
* that is what the device flow hands back and what lets the CLI keep working for
|
|
12
12
|
* days without another browser round trip. Nothing else about the account is
|
|
13
|
-
* stored: no password (the CLI
|
|
13
|
+
* stored: no password (the CLI never holds one) and no identifier.
|
|
14
14
|
*
|
|
15
15
|
* Resolution order everywhere else in the CLI is unchanged in spirit: an
|
|
16
16
|
* explicit `PLATFORM_TOKEN` in the environment always wins, so CI keeps using an
|
|
@@ -23,6 +23,12 @@ import { errorMessage } from '@pipeline-builder/api-core';
|
|
|
23
23
|
import { printDebug, printWarning } from './output-utils.js';
|
|
24
24
|
const STORE_DIR = path.join(os.homedir(), '.pipeline-manager');
|
|
25
25
|
const STORE_FILE = path.join(STORE_DIR, 'credentials.json');
|
|
26
|
+
const REFRESH_LOCK_FILE = path.join(STORE_DIR, 'refresh.lock');
|
|
27
|
+
/** A lock older than this belongs to a process that died mid-refresh. */
|
|
28
|
+
const REFRESH_LOCK_STALE_MS = 30_000;
|
|
29
|
+
/** How long a second process waits for the first one's refresh to finish. */
|
|
30
|
+
const REFRESH_LOCK_WAIT_MS = 15_000;
|
|
31
|
+
const REFRESH_LOCK_POLL_MS = 100;
|
|
26
32
|
/** Re-authenticate rather than hand out a token this close to expiry. */
|
|
27
33
|
const EXPIRY_SKEW_MS = 60_000;
|
|
28
34
|
/** Where the sessions live — surfaced in help text and errors. */
|
|
@@ -90,4 +96,53 @@ export function clearSession(baseUrl) {
|
|
|
90
96
|
export function isSessionUsable(session) {
|
|
91
97
|
return !!session?.accessToken && session.expiresAt - EXPIRY_SKEW_MS > Date.now();
|
|
92
98
|
}
|
|
93
|
-
|
|
99
|
+
/**
|
|
100
|
+
* Run `fn` holding the machine-wide REFRESH LOCK (`~/.pipeline-manager/refresh.lock`,
|
|
101
|
+
* created exclusively).
|
|
102
|
+
*
|
|
103
|
+
* A refresh token is single-use: two CLI processes renewing the same stored
|
|
104
|
+
* session at once (a script fanning out commands, two terminals) would present
|
|
105
|
+
* the same token twice, and outside the platform's short rotation grace the
|
|
106
|
+
* second use reads as REUSE — which revokes the session. Serializing the refresh
|
|
107
|
+
* means the second process waits, then (re-reading the store) finds the pair the
|
|
108
|
+
* first one already saved instead of spending the old token again.
|
|
109
|
+
*
|
|
110
|
+
* A lock left behind by a crashed process is broken after
|
|
111
|
+
* {@link REFRESH_LOCK_STALE_MS}; waiting gives up after {@link REFRESH_LOCK_WAIT_MS}
|
|
112
|
+
* and runs `fn` anyway (the platform grace still covers a near-simultaneous use).
|
|
113
|
+
*/
|
|
114
|
+
export async function withRefreshLock(fn) {
|
|
115
|
+
fs.mkdirSync(STORE_DIR, { recursive: true, mode: 0o700 });
|
|
116
|
+
const deadline = Date.now() + REFRESH_LOCK_WAIT_MS;
|
|
117
|
+
let held = false;
|
|
118
|
+
while (!held) {
|
|
119
|
+
try {
|
|
120
|
+
fs.closeSync(fs.openSync(REFRESH_LOCK_FILE, 'wx', 0o600));
|
|
121
|
+
held = true;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (error.code !== 'EEXIST')
|
|
125
|
+
break; // can't lock at all — proceed unlocked
|
|
126
|
+
try {
|
|
127
|
+
if (Date.now() - fs.statSync(REFRESH_LOCK_FILE).mtimeMs > REFRESH_LOCK_STALE_MS) {
|
|
128
|
+
fs.rmSync(REFRESH_LOCK_FILE, { force: true });
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
continue; // vanished between open and stat — try again
|
|
134
|
+
}
|
|
135
|
+
if (Date.now() >= deadline)
|
|
136
|
+
break;
|
|
137
|
+
await new Promise((resolve) => setTimeout(resolve, REFRESH_LOCK_POLL_MS));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
return await fn();
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
if (held)
|
|
145
|
+
fs.rmSync(REFRESH_LOCK_FILE, { force: true });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jcmVkZW50aWFsLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFL0QseUVBQXlFO0FBQ3pFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLDZFQUE2RTtBQUM3RSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUNwQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUVqQyx5RUFBeUU7QUFDekUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0FBbUI5QixrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxRQUFRLENBQUMsT0FBZTtJQUMvQixPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxP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RSxNQUFNO1lBQ2xDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7WUFBUyxDQUFDO1FBQ1QsSUFBSSxJQUFJO1lBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogT24tZGlzayBzZXNzaW9uIHN0b3JlIGZvciBgYXV0aCBsb2dpbmAuXG4gKlxuICogYH4vLnBpcGVsaW5lLW1hbmFnZXIvY3JlZGVudGlhbHMuanNvbmAsIG93bmVyLW9ubHkgKDA2MDAgZmlsZSBpbnNpZGUgdGhlIDA3MDBcbiAqIGRpcmVjdG9yeSB0aGUgYXVkaXQgbG9nIGFscmVhZHkgY3JlYXRlcyksIGtleWVkIGJ5IHBsYXRmb3JtIGJhc2UgVVJMIHNvIG9uZVxuICogbWFjaGluZSBjYW4gaG9sZCBzZXNzaW9ucyBmb3Igc2V2ZXJhbCBwbGF0Zm9ybXMgYXQgb25jZS5cbiAqXG4gKiBJdCBob2xkcyBhIHJlYWwgc2Vzc2lvbiDigJQgdGhlIGFjY2VzcyB0b2tlbiBBTkQgaXRzIHJlZnJlc2ggdG9rZW4g4oCUIGJlY2F1c2VcbiAqIHRoYXQgaXMgd2hhdCB0aGUgZGV2aWNlIGZsb3cgaGFuZHMgYmFjayBhbmQgd2hhdCBsZXRzIHRoZSBDTEkga2VlcCB3b3JraW5nIGZvclxuICogZGF5cyB3aXRob3V0IGFub3RoZXIgYnJvd3NlciByb3VuZCB0cmlwLiBOb3RoaW5nIGVsc2UgYWJvdXQgdGhlIGFjY291bnQgaXNcbiAqIHN0b3JlZDogbm8gcGFzc3dvcmQgKHRoZSBDTEkgbmV2ZXIgaG9sZHMgb25lKSBhbmQgbm8gaWRlbnRpZmllci5cbiAqXG4gKiBSZXNvbHV0aW9uIG9yZGVyIGV2ZXJ5d2hlcmUgZWxzZSBpbiB0aGUgQ0xJIGlzIHVuY2hhbmdlZCBpbiBzcGlyaXQ6IGFuXG4gKiBleHBsaWNpdCBgUExBVEZPUk1fVE9LRU5gIGluIHRoZSBlbnZpcm9ubWVudCBhbHdheXMgd2lucywgc28gQ0kga2VlcHMgdXNpbmcgYW5cbiAqIGFjY2VzcyBrZXkgYW5kIGlzIG5ldmVyIGFmZmVjdGVkIGJ5IHdoYXRldmVyIGEgZGV2ZWxvcGVyJ3MgbGFwdG9wIGhhcyBjYWNoZWQuXG4gKi9cblxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50V2FybmluZyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgU1RPUkVfRElSID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5waXBlbGluZS1tYW5hZ2VyJyk7XG5jb25zdCBTVE9SRV9GSUxFID0gcGF0aC5qb2luKFNUT1JFX0RJUiwgJ2NyZWRlbnRpYWxzLmpzb24nKTtcbmNvbnN0IFJFRlJFU0hfTE9DS19GSUxFID0gcGF0aC5qb2luKFNUT1JFX0RJUiwgJ3JlZnJlc2gubG9jaycpO1xuXG4vKiogQSBsb2NrIG9sZGVyIHRoYW4gdGhpcyBiZWxvbmdzIHRvIGEgcHJvY2VzcyB0aGF0IGRpZWQgbWlkLXJlZnJlc2guICovXG5jb25zdCBSRUZSRVNIX0xPQ0tfU1RBTEVfTVMgPSAzMF8wMDA7XG4vKiogSG93IGxvbmcgYSBzZWNvbmQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGZpcnN0IG9uZSdzIHJlZnJlc2ggdG8gZmluaXNoLiAqL1xuY29uc3QgUkVGUkVTSF9MT0NLX1dBSVRfTVMgPSAxNV8wMDA7XG5jb25zdCBSRUZSRVNIX0xPQ0tfUE9MTF9NUyA9IDEwMDtcblxuLyoqIFJlLWF1dGhlbnRpY2F0ZSByYXRoZXIgdGhhbiBoYW5kIG91dCBhIHRva2VuIHRoaXMgY2xvc2UgdG8gZXhwaXJ5LiAqL1xuY29uc3QgRVhQSVJZX1NLRVdfTVMgPSA2MF8wMDA7XG5cbi8qKiBPbmUgcGxhdGZvcm0ncyBzdG9yZWQgc2Vzc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkU2Vzc2lvbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIC8qKiBSb3RhdGVkIG9uIGV2ZXJ5IHJlZnJlc2g7IGFic2VudCBvbmx5IGlmIHRoZSBwbGF0Zm9ybSBzdG9wcGVkIGlzc3Vpbmcgb25lLiAqL1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBFcG9jaCBtcyB0aGUgYWNjZXNzIHRva2VuIGV4cGlyZXMuICovXG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICAvKiogVGhlIG9yZyB0aGUgc2Vzc2lvbiB3YXMgc2NvcGVkIHRvIHdoZW4gaXQgd2FzIHN0b3JlZCAoaW5mb3JtYXRpb25hbCkuICovXG4gIG9yZ2FuaXphdGlvbklkPzogc3RyaW5nO1xuICBzYXZlZEF0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdG9yZUZpbGUge1xuICB2ZXJzaW9uOiAxO1xuICBzZXNzaW9uczogUmVjb3JkPHN0cmluZywgU3RvcmVkU2Vzc2lvbj47XG59XG5cbi8qKiBXaGVyZSB0aGUgc2Vzc2lvbnMgbGl2ZSDigJQgc3VyZmFjZWQgaW4gaGVscCB0ZXh0IGFuZCBlcnJvcnMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlZGVudGlhbFN0b3JlUGF0aCgpOiBzdHJpbmcge1xuICByZXR1cm4gU1RPUkVfRklMRTtcbn1cblxuLyoqXG4gKiBUcmFpbGluZyBzbGFzaGVzIGFuZCBjYXNlIGRpZmZlcmVuY2VzIGluIHRoZSBob3N0IHdvdWxkIG90aGVyd2lzZSBzcGxpdCBvbmVcbiAqIHBsYXRmb3JtIGludG8gc2V2ZXJhbCBlbnRyaWVzLlxuICovXG5mdW5jdGlvbiBzdG9yZUtleShiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYmFzZVVybC50cmltKCkucmVwbGFjZSgvXFwvKyQvLCAnJykudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gcmVhZFN0b3JlKCk6IFN0b3JlRmlsZSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoU1RPUkVfRklMRSwgJ3V0Zi04JykpO1xuICAgIGlmIChwYXJzZWQ/LnZlcnNpb24gPT09IDEgJiYgcGFyc2VkLnNlc3Npb25zICYmIHR5cGVvZiBwYXJzZWQuc2Vzc2lvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gcGFyc2VkIGFzIFN0b3JlRmlsZTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIE1pc3Npbmcgb3IgdW5yZWFkYWJsZTogdHJlYXQgYXMgZW1wdHkuIEEgY29ycnVwdCBmaWxlIG11c3Qgbm90IGJyZWFrIGV2ZXJ5XG4gICAgLy8gY29tbWFuZCDigJQgdGhlIG5leHQgc3VjY2Vzc2Z1bCBsb2dpbiByZXdyaXRlcyBpdC5cbiAgfVxuICByZXR1cm4geyB2ZXJzaW9uOiAxLCBzZXNzaW9uczoge30gfTtcbn1cblxuZnVuY3Rpb24gd3JpdGVTdG9yZShzdG9yZTogU3RvcmVGaWxlKTogdm9pZCB7XG4gIGZzLm1rZGlyU3luYyhTVE9SRV9ESVIsIHsgcmVjdXJzaXZlOiB0cnVlLCBtb2RlOiAwbzcwMCB9KTtcbiAgLy8gV3JpdGUgdGhyb3VnaCBhIHRlbXAgZmlsZSBzbyBhbiBpbnRlcnJ1cHRlZCB3cml0ZSBjYW4ndCBsZWF2ZSBhIHRydW5jYXRlZFxuICAvLyBzdG9yZSBiZWhpbmQsIGFuZCBjcmVhdGUgaXQgMDYwMCBmcm9tIHRoZSBzdGFydCAobmV2ZXIgYnJpZWZseSB3b3JsZC1yZWFkYWJsZSkuXG4gIGNvbnN0IHRtcCA9IGAke1NUT1JFX0ZJTEV9LnRtcGA7XG4gIGZzLndyaXRlRmlsZVN5bmModG1wLCBgJHtKU09OLnN0cmluZ2lmeShzdG9yZSwgbnVsbCwgMil9XFxuYCwgeyBtb2RlOiAwbzYwMCB9KTtcbiAgZnMucmVuYW1lU3luYyh0bXAsIFNUT1JFX0ZJTEUpO1xufVxuXG4vKiogUGVyc2lzdCB0aGUgc2Vzc2lvbiBmb3IgYGJhc2VVcmxgLCByZXBsYWNpbmcgYW55IHByZXZpb3VzIG9uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXZlU2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcsIHNlc3Npb246IE9taXQ8U3RvcmVkU2Vzc2lvbiwgJ3NhdmVkQXQnPik6IHZvaWQge1xuICBjb25zdCBzdG9yZSA9IHJlYWRTdG9yZSgpO1xuICBzdG9yZS5zZXNzaW9uc1tzdG9yZUtleShiYXNlVXJsKV0gPSB7IC4uLnNlc3Npb24sIHNhdmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9O1xuICB3cml0ZVN0b3JlKHN0b3JlKTtcbiAgcHJpbnREZWJ1ZygnU2Vzc2lvbiBzdG9yZWQnLCB7IHBhdGg6IFNUT1JFX0ZJTEUsIHBsYXRmb3JtOiBzdG9yZUtleShiYXNlVXJsKSB9KTtcbn1cblxuLyoqIFRoZSBzdG9yZWQgc2Vzc2lvbiBmb3IgYGJhc2VVcmxgLCBvciB1bmRlZmluZWQuIEV4cGlyeSBpcyBOT1QgY2hlY2tlZCBoZXJlIOKAlFxuICogIGNhbGxlcnMgZGVjaWRlIHdoZXRoZXIgdG8gdXNlLCByZWZyZXNoIG9yIGlnbm9yZSBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcpOiBTdG9yZWRTZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHJlYWRTdG9yZSgpLnNlc3Npb25zW3N0b3JlS2V5KGJhc2VVcmwpXTtcbn1cblxuLyoqIEZvcmdldCB0aGUgc2Vzc2lvbiBmb3IgYGJhc2VVcmxgIChzaWduLW91dCwgb3IgYSByZWZyZXNoIHRoZSBwbGF0Zm9ybSByZWplY3RlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTZXNzaW9uKGJhc2VVcmw6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBzdG9yZSA9IHJlYWRTdG9yZSgpO1xuICBpZiAoIShzdG9yZUtleShiYXNlVXJsKSBpbiBzdG9yZS5zZXNzaW9ucykpIHJldHVybjtcbiAgZGVsZXRlIHN0b3JlLnNlc3Npb25zW3N0b3JlS2V5KGJhc2VVcmwpXTtcbiAgdHJ5IHtcbiAgICB3cml0ZVN0b3JlKHN0b3JlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBMb3NpbmcgdGhlIGFiaWxpdHkgdG8gY2xlYXIgYSBkZWFkIHNlc3Npb24gaXMgYSBudWlzYW5jZSwgbm90IGEgZmFpbHVyZS5cbiAgICBwcmludFdhcm5pbmcoJ0NvdWxkIG5vdCB1cGRhdGUgdGhlIHN0b3JlZCBjcmVkZW50aWFscycsIHtcbiAgICAgIHBhdGg6IFNUT1JFX0ZJTEUsXG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKiogVHJ1ZSB3aGVuIHRoZSBzdG9yZWQgYWNjZXNzIHRva2VuIGlzIHN0aWxsIHVzYWJsZSAod2l0aCBhIGxpdHRsZSBzbGFjaykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZXNzaW9uVXNhYmxlKHNlc3Npb246IFN0b3JlZFNlc3Npb24gfCB1bmRlZmluZWQpOiBzZXNzaW9uIGlzIFN0b3JlZFNlc3Npb24ge1xuICByZXR1cm4gISFzZXNzaW9uPy5hY2Nlc3NUb2tlbiAmJiBzZXNzaW9uLmV4cGlyZXNBdCAtIEVYUElSWV9TS0VXX01TID4gRGF0ZS5ub3coKTtcbn1cblxuLyoqXG4gKiBSdW4gYGZuYCBob2xkaW5nIHRoZSBtYWNoaW5lLXdpZGUgUkVGUkVTSCBMT0NLIChgfi8ucGlwZWxpbmUtbWFuYWdlci9yZWZyZXNoLmxvY2tgLFxuICogY3JlYXRlZCBleGNsdXNpdmVseSkuXG4gKlxuICogQSByZWZyZXNoIHRva2VuIGlzIHNpbmdsZS11c2U6IHR3byBDTEkgcHJvY2Vzc2VzIHJlbmV3aW5nIHRoZSBzYW1lIHN0b3JlZFxuICogc2Vzc2lvbiBhdCBvbmNlIChhIHNjcmlwdCBmYW5uaW5nIG91dCBjb21tYW5kcywgdHdvIHRlcm1pbmFscykgd291bGQgcHJlc2VudFxuICogdGhlIHNhbWUgdG9rZW4gdHdpY2UsIGFuZCBvdXRzaWRlIHRoZSBwbGF0Zm9ybSdzIHNob3J0IHJvdGF0aW9uIGdyYWNlIHRoZVxuICogc2Vjb25kIHVzZSByZWFkcyBhcyBSRVVTRSDigJQgd2hpY2ggcmV2b2tlcyB0aGUgc2Vzc2lvbi4gU2VyaWFsaXppbmcgdGhlIHJlZnJlc2hcbiAqIG1lYW5zIHRoZSBzZWNvbmQgcHJvY2VzcyB3YWl0cywgdGhlbiAocmUtcmVhZGluZyB0aGUgc3RvcmUpIGZpbmRzIHRoZSBwYWlyIHRoZVxuICogZmlyc3Qgb25lIGFscmVhZHkgc2F2ZWQgaW5zdGVhZCBvZiBzcGVuZGluZyB0aGUgb2xkIHRva2VuIGFnYWluLlxuICpcbiAqIEEgbG9jayBsZWZ0IGJlaGluZCBieSBhIGNyYXNoZWQgcHJvY2VzcyBpcyBicm9rZW4gYWZ0ZXJcbiAqIHtAbGluayBSRUZSRVNIX0xPQ0tfU1RBTEVfTVN9OyB3YWl0aW5nIGdpdmVzIHVwIGFmdGVyIHtAbGluayBSRUZSRVNIX0xPQ0tfV0FJVF9NU31cbiAqIGFuZCBydW5zIGBmbmAgYW55d2F5ICh0aGUgcGxhdGZvcm0gZ3JhY2Ugc3RpbGwgY292ZXJzIGEgbmVhci1zaW11bHRhbmVvdXMgdXNlKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhSZWZyZXNoTG9jazxUPihmbjogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBmcy5ta2RpclN5bmMoU1RPUkVfRElSLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgbW9kZTogMG83MDAgfSk7XG4gIGNvbnN0IGRlYWRsaW5lID0gRGF0ZS5ub3coKSArIFJFRlJFU0hfTE9DS19XQUlUX01TO1xuICBsZXQgaGVsZCA9IGZhbHNlO1xuICB3aGlsZSAoIWhlbGQpIHtcbiAgICB0cnkge1xuICAgICAgZnMuY2xvc2VTeW5jKGZzLm9wZW5TeW5jKFJFRlJFU0hfTE9DS19GSUxFLCAnd3gnLCAwbzYwMCkpO1xuICAgICAgaGVsZCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJykgYnJlYWs7IC8vIGNhbid0IGxvY2sgYXQgYWxsIOKAlCBwcm9jZWVkIHVubG9ja2VkXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIGZzLnN0YXRTeW5jKFJFRlJFU0hfTE9DS19GSUxFKS5tdGltZU1zID4gUkVGUkVTSF9MT0NLX1NUQUxFX01TKSB7XG4gICAgICAgICAgZnMucm1TeW5jKFJFRlJFU0hfTE9DS19GSUxFLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29udGludWU7IC8vIHZhbmlzaGVkIGJldHdlZW4gb3BlbiBhbmQgc3RhdCDigJQgdHJ5IGFnYWluXG4gICAgICB9XG4gICAgICBpZiAoRGF0ZS5ub3coKSA+PSBkZWFkbGluZSkgYnJlYWs7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBSRUZSRVNIX0xPQ0tfUE9MTF9NUykpO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChoZWxkKSBmcy5ybVN5bmMoUkVGUkVTSF9MT0NLX0ZJTEUsIHsgZm9yY2U6IHRydWUgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../src/utils/deploy-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,uEAAuE;AACvE,UAAU,cAAc;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../src/utils/deploy-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,uEAAuE;AACvE,UAAU,cAAc;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGpE"}
|