@sendly/cli 3.36.0 → 3.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -1
- package/dist/commands/10dlc/assignments/list.d.ts +10 -0
- package/dist/commands/10dlc/assignments/list.js +67 -0
- package/dist/commands/10dlc/brands/create.d.ts +25 -0
- package/dist/commands/10dlc/brands/create.js +89 -0
- package/dist/commands/10dlc/brands/get.d.ts +13 -0
- package/dist/commands/10dlc/brands/get.js +63 -0
- package/dist/commands/10dlc/brands/list.d.ts +10 -0
- package/dist/commands/10dlc/brands/list.js +63 -0
- package/dist/commands/10dlc/campaigns/assign.d.ts +14 -0
- package/dist/commands/10dlc/campaigns/assign.js +64 -0
- package/dist/commands/10dlc/campaigns/create.d.ts +24 -0
- package/dist/commands/10dlc/campaigns/create.js +118 -0
- package/dist/commands/10dlc/campaigns/get.d.ts +13 -0
- package/dist/commands/10dlc/campaigns/get.js +84 -0
- package/dist/commands/10dlc/campaigns/list.d.ts +10 -0
- package/dist/commands/10dlc/campaigns/list.js +70 -0
- package/dist/commands/10dlc/qualify.d.ts +14 -0
- package/dist/commands/10dlc/qualify.js +56 -0
- package/dist/commands/keys/rotate.js +7 -12
- package/dist/commands/links/create.d.ts +24 -0
- package/dist/commands/links/create.js +71 -0
- package/dist/commands/links/disable.d.ts +21 -0
- package/dist/commands/links/disable.js +55 -0
- package/dist/commands/links/list.d.ts +19 -0
- package/dist/commands/links/list.js +85 -0
- package/dist/commands/numbers/buy.js +15 -1
- package/dist/commands/numbers/get.d.ts +20 -0
- package/dist/commands/numbers/get.js +52 -0
- package/dist/commands/numbers/list.js +18 -1
- package/dist/commands/numbers/release.d.ts +23 -0
- package/dist/commands/numbers/release.js +67 -0
- package/dist/commands/numbers/update.d.ts +25 -0
- package/dist/commands/numbers/update.js +70 -0
- package/dist/commands/sms/group.d.ts +25 -0
- package/dist/commands/sms/group.js +164 -0
- package/dist/commands/sms/upload-media.d.ts +1 -1
- package/dist/commands/sms/upload-media.js +4 -4
- package/dist/commands/templates/enhance.js +3 -3
- package/dist/commands/upgrade.d.ts +1 -16
- package/dist/commands/upgrade.js +131 -38
- package/oclif.manifest.json +3964 -2966
- package/package.json +16 -1
package/dist/commands/upgrade.js
CHANGED
|
@@ -1,67 +1,160 @@
|
|
|
1
1
|
import { Command, Flags } from "@oclif/core";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { detectInstallPath, upgradeCommandFor, } from "../lib/detect-install-path.js";
|
|
4
|
-
import { success, error, info } from "../lib/output.js";
|
|
4
|
+
import { colors, success, error, info, spinner, divider, } from "../lib/output.js";
|
|
5
5
|
/**
|
|
6
|
-
* `sendly upgrade` — bring the CLI up to the latest version
|
|
6
|
+
* `sendly upgrade` — bring the CLI up to the latest version with a guided,
|
|
7
|
+
* animated flow: an animated version check, a `vCURRENT → vLATEST` diff, and a
|
|
8
|
+
* success panel. The noisy package-manager output is hidden behind a spinner
|
|
9
|
+
* for Homebrew (which never needs sudo); for npm we keep inherited stdio so an
|
|
10
|
+
* auth/sudo prompt can never hang invisibly behind a spinner.
|
|
7
11
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* path is unknown we print both options for the user to pick.
|
|
12
|
+
* `--check` is a dry-run: it shows the detected install method and the command
|
|
13
|
+
* that would run, without changing anything.
|
|
11
14
|
*
|
|
12
|
-
* The
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* The unattended in-band update banner that prompts users to run this
|
|
17
|
-
* comes from the `@oclif/plugin-warn-if-update-available` plugin wired
|
|
18
|
-
* in package.json; this command is the companion action for that
|
|
19
|
-
* banner.
|
|
15
|
+
* The unattended banner that nudges users to run this comes from the
|
|
16
|
+
* `@oclif/plugin-warn-if-update-available` plugin wired in package.json; this
|
|
17
|
+
* command is the companion action for that banner.
|
|
20
18
|
*/
|
|
19
|
+
const REGISTRY_URL = "https://registry.npmjs.org/@sendly/cli";
|
|
20
|
+
const CHANGELOG_URL = "https://sendly.live/docs/changelog";
|
|
21
|
+
function bumpType(from, to) {
|
|
22
|
+
const a = from.split(".").map((n) => parseInt(n, 10));
|
|
23
|
+
const b = to.split(".").map((n) => parseInt(n, 10));
|
|
24
|
+
if (a.length < 3 || b.length < 3 || [...a, ...b].some(Number.isNaN))
|
|
25
|
+
return "";
|
|
26
|
+
if (b[0] > a[0])
|
|
27
|
+
return "major";
|
|
28
|
+
if (b[1] > a[1])
|
|
29
|
+
return "minor";
|
|
30
|
+
if (b[2] > a[2])
|
|
31
|
+
return "patch";
|
|
32
|
+
return "";
|
|
33
|
+
}
|
|
34
|
+
async function fetchLatest() {
|
|
35
|
+
try {
|
|
36
|
+
const controller = new AbortController();
|
|
37
|
+
const timer = setTimeout(() => controller.abort(), 4000);
|
|
38
|
+
const res = await fetch(REGISTRY_URL, {
|
|
39
|
+
headers: { accept: "application/vnd.npm.install-v1+json" },
|
|
40
|
+
signal: controller.signal,
|
|
41
|
+
});
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
if (!res.ok)
|
|
44
|
+
return null;
|
|
45
|
+
const body = (await res.json());
|
|
46
|
+
return body["dist-tags"]?.latest ?? null;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function runCaptured(command) {
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
const [bin, ...args] = command.split(" ");
|
|
55
|
+
const child = spawn(bin, args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
56
|
+
let output = "";
|
|
57
|
+
child.stdout?.on("data", (d) => (output += d.toString()));
|
|
58
|
+
child.stderr?.on("data", (d) => (output += d.toString()));
|
|
59
|
+
child.on("error", (err) => resolve({ code: 1, output: err.message }));
|
|
60
|
+
child.on("exit", (code) => resolve({ code: code ?? 1, output }));
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function runInherited(command) {
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
const [bin, ...args] = command.split(" ");
|
|
66
|
+
const child = spawn(bin, args, { stdio: "inherit" });
|
|
67
|
+
child.on("error", () => resolve(1));
|
|
68
|
+
child.on("exit", (code) => resolve(code ?? 1));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
21
71
|
export default class Upgrade extends Command {
|
|
22
|
-
static description = "Upgrade Sendly CLI to the latest version
|
|
72
|
+
static description = "Upgrade the Sendly CLI to the latest version with a guided, animated flow.";
|
|
23
73
|
static examples = [
|
|
24
74
|
"<%= config.bin %> upgrade",
|
|
25
75
|
"<%= config.bin %> upgrade --check",
|
|
26
76
|
];
|
|
27
77
|
static flags = {
|
|
28
78
|
check: Flags.boolean({
|
|
29
|
-
description: "
|
|
79
|
+
description: "Show what would happen without changing anything",
|
|
30
80
|
default: false,
|
|
31
81
|
}),
|
|
32
82
|
};
|
|
33
83
|
async run() {
|
|
34
84
|
const { flags } = await this.parse(Upgrade);
|
|
85
|
+
const current = this.config.version;
|
|
86
|
+
divider();
|
|
87
|
+
console.log(` ${colors.highlight("⚡ Sendly CLI")} ${colors.dim("upgrade")}`);
|
|
88
|
+
divider();
|
|
89
|
+
const spin = spinner("Checking for the latest version...").start();
|
|
90
|
+
const latest = await fetchLatest();
|
|
91
|
+
if (latest && latest === current) {
|
|
92
|
+
spin.succeed(`You're on the latest version ${colors.success.bold("v" + current)}`);
|
|
93
|
+
divider();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (latest) {
|
|
97
|
+
const kind = bumpType(current, latest);
|
|
98
|
+
spin.succeed(`Update available${kind ? " " + colors.dim(`(${kind})`) : ""}`);
|
|
99
|
+
console.log(` ${colors.dim("v" + current)} ${colors.primary("→")} ${colors.success.bold("v" + latest)}`);
|
|
100
|
+
divider();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
spin.succeed("Ready to upgrade");
|
|
104
|
+
}
|
|
35
105
|
const installPath = detectInstallPath();
|
|
36
106
|
const command = upgradeCommandFor(installPath);
|
|
37
107
|
if (installPath === "unknown") {
|
|
38
|
-
info("Can't detect how
|
|
39
|
-
"
|
|
40
|
-
"
|
|
108
|
+
info("Can't detect how the CLI was installed. Run whichever matches:\n" +
|
|
109
|
+
` ${colors.code("brew upgrade sendly")} ${colors.dim("(Homebrew)")}\n` +
|
|
110
|
+
` ${colors.code("npm install -g @sendly/cli@latest")} ${colors.dim("(npm)")}`);
|
|
41
111
|
return;
|
|
42
112
|
}
|
|
43
113
|
if (flags.check) {
|
|
44
|
-
info(`
|
|
114
|
+
info(`Install method: ${colors.bold(installPath)}\n` +
|
|
115
|
+
`Would run: ${colors.code(command)}`);
|
|
45
116
|
return;
|
|
46
117
|
}
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
118
|
+
const via = installPath === "homebrew" ? "Homebrew" : "npm";
|
|
119
|
+
const target = latest ? ` to ${colors.success("v" + latest)}` : "";
|
|
120
|
+
if (installPath === "homebrew") {
|
|
121
|
+
// Homebrew never needs sudo, so it's safe to hide its output behind a
|
|
122
|
+
// spinner for a clean, animated upgrade.
|
|
123
|
+
const upSpin = spinner(`Upgrading via ${via}${target}...`).start();
|
|
124
|
+
const { code, output } = await runCaptured(command);
|
|
125
|
+
if (code === 0) {
|
|
126
|
+
upSpin.stop();
|
|
127
|
+
this.renderSuccess(via, latest);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
upSpin.fail(`Upgrade failed via ${via}`);
|
|
131
|
+
const tail = output.trim().split("\n").slice(-6).join("\n");
|
|
132
|
+
if (tail)
|
|
133
|
+
console.log(colors.dim(tail));
|
|
134
|
+
error(`Try running it yourself: ${colors.code(command)}`);
|
|
135
|
+
}
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// npm: keep inherited stdio so any auth/sudo prompt stays visible.
|
|
139
|
+
info(`Upgrading via ${via}${target}`);
|
|
140
|
+
console.log(colors.dim(` ${command}`));
|
|
141
|
+
divider();
|
|
142
|
+
const code = await runInherited(command);
|
|
143
|
+
if (code === 0) {
|
|
144
|
+
this.renderSuccess(via, latest);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
error(`Upgrade command exited with code ${code}. Try running it yourself: ${colors.code(command)}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
renderSuccess(via, latest) {
|
|
151
|
+
success(latest
|
|
152
|
+
? `Upgraded to ${colors.success.bold("v" + latest)} via ${via}`
|
|
153
|
+
: `Upgrade complete via ${via}`);
|
|
154
|
+
divider();
|
|
155
|
+
info(`What's new: ${colors.code(CHANGELOG_URL)}`);
|
|
156
|
+
info("Run `sendly --version` to confirm.");
|
|
157
|
+
divider();
|
|
65
158
|
}
|
|
66
159
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy91cGdyYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixHQUNsQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sT0FBUSxTQUFRLE9BQU87SUFDMUMsTUFBTSxDQUFDLFdBQVcsR0FDaEIseUdBQXlHLENBQUM7SUFFNUcsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiwyQkFBMkI7UUFDM0IsbUNBQW1DO0tBQ3BDLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkIsV0FBVyxFQUNULHNFQUFzRTtZQUN4RSxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUNGLDZFQUE2RTtnQkFDM0UscUNBQXFDO2dCQUNyQyxpREFBaUQsQ0FDcEQsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUNGLDBCQUEwQixXQUFXLGdCQUFnQixPQUFPLEVBQUUsQ0FDL0QsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixXQUFXLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVqRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN4QixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQ0wsc0VBQXNFLENBQ3ZFLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssQ0FDSCxvQ0FBb0MsSUFBSSxtQkFBbUIsT0FBTyxjQUFjLENBQ2pGLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEIsS0FBSyxDQUNILHNDQUFzQyxHQUFHLENBQUMsT0FBTyxtQkFBbUIsT0FBTyxjQUFjLENBQzFGLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7XG4gIGRldGVjdEluc3RhbGxQYXRoLFxuICB1cGdyYWRlQ29tbWFuZEZvcixcbn0gZnJvbSBcIi4uL2xpYi9kZXRlY3QtaW5zdGFsbC1wYXRoLmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBlcnJvciwgaW5mbyB9IGZyb20gXCIuLi9saWIvb3V0cHV0LmpzXCI7XG5cbi8qKlxuICogYHNlbmRseSB1cGdyYWRlYCDigJQgYnJpbmcgdGhlIENMSSB1cCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gKlxuICogRGV0ZWN0cyB0aGUgaW5zdGFsbCBwYXRoIChIb21lYnJldyB2cyBucG0tZ2xvYmFsIHZzIHVua25vd24pIGFuZFxuICogZXhlY3V0ZXMgdGhlIG1hdGNoaW5nIHBhY2thZ2UtbWFuYWdlciB1cGdyYWRlIGNvbW1hbmQuIElmIHRoZSBpbnN0YWxsXG4gKiBwYXRoIGlzIHVua25vd24gd2UgcHJpbnQgYm90aCBvcHRpb25zIGZvciB0aGUgdXNlciB0byBwaWNrLlxuICpcbiAqIFRoZSBgLS1jaGVja2AgZmxhZyBkb2VzIGEgZHJ5LXJ1bjogcHJpbnRzIHdoYXQgd291bGQgaGFwcGVuIHdpdGhvdXRcbiAqIGV4ZWN1dGluZyBhbnl0aGluZy4gVXNlZnVsIGluIHJlc3RyaWN0ZWQgc2hlbGxzIHdoZXJlIHdlIGRvbid0IHdhbnRcbiAqIHRvIHRyaWdnZXIgYSBicmV3L25wbSBydW4gYWNjaWRlbnRhbGx5LlxuICpcbiAqIFRoZSB1bmF0dGVuZGVkIGluLWJhbmQgdXBkYXRlIGJhbm5lciB0aGF0IHByb21wdHMgdXNlcnMgdG8gcnVuIHRoaXNcbiAqIGNvbWVzIGZyb20gdGhlIGBAb2NsaWYvcGx1Z2luLXdhcm4taWYtdXBkYXRlLWF2YWlsYWJsZWAgcGx1Z2luIHdpcmVkXG4gKiBpbiBwYWNrYWdlLmpzb247IHRoaXMgY29tbWFuZCBpcyB0aGUgY29tcGFuaW9uIGFjdGlvbiBmb3IgdGhhdFxuICogYmFubmVyLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGdyYWRlIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJVcGdyYWRlIFNlbmRseSBDTEkgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIHVzaW5nIHRoZSBwYWNrYWdlIG1hbmFnZXIgdGhhdCBpbnN0YWxsZWQgaXQgKEhvbWVicmV3IG9yIG5wbSkuXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdXBncmFkZVwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdXBncmFkZSAtLWNoZWNrXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIGNoZWNrOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByaW50IHRoZSB1cGdyYWRlIGNvbW1hbmQgZm9yIHlvdXIgaW5zdGFsbCBwYXRoIHdpdGhvdXQgZXhlY3V0aW5nIGl0XCIsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShVcGdyYWRlKTtcblxuICAgIGNvbnN0IGluc3RhbGxQYXRoID0gZGV0ZWN0SW5zdGFsbFBhdGgoKTtcbiAgICBjb25zdCBjb21tYW5kID0gdXBncmFkZUNvbW1hbmRGb3IoaW5zdGFsbFBhdGgpO1xuXG4gICAgaWYgKGluc3RhbGxQYXRoID09PSBcInVua25vd25cIikge1xuICAgICAgaW5mbyhcbiAgICAgICAgXCJDYW4ndCBkZXRlY3QgaG93IHlvdSBpbnN0YWxsZWQgdGhlIFNlbmRseSBDTEkuIFBpY2sgdGhlIG1hdGNoaW5nIGNvbW1hbmQ6XFxuXCIgK1xuICAgICAgICAgIFwiICDigKIgSG9tZWJyZXc6IGJyZXcgdXBncmFkZSBzZW5kbHlcXG5cIiArXG4gICAgICAgICAgXCIgIOKAoiBucG06ICAgICAgbnBtIGluc3RhbGwgLWcgQHNlbmRseS9jbGlAbGF0ZXN0XCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmbGFncy5jaGVjaykge1xuICAgICAgaW5mbyhcbiAgICAgICAgYERldGVjdGVkIGluc3RhbGwgcGF0aDogJHtpbnN0YWxsUGF0aH1cXG5Xb3VsZCBydW46ICR7Y29tbWFuZH1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbmZvKGBVcGdyYWRpbmcgdmlhICR7aW5zdGFsbFBhdGh9OiAke2NvbW1hbmR9YCk7XG5cbiAgICBjb25zdCBbYmluLCAuLi5hcmdzXSA9IGNvbW1hbmQuc3BsaXQoXCIgXCIpO1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oYmluLCBhcmdzLCB7IHN0ZGlvOiBcImluaGVyaXRcIiB9KTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjaGlsZC5vbihcImV4aXRcIiwgKGNvZGUpID0+IHtcbiAgICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgICBzdWNjZXNzKFxuICAgICAgICAgICAgXCJVcGdyYWRlIGNvbXBsZXRlLiBSdW4gYHNlbmRseSAtLXZlcnNpb25gIHRvIGNvbmZpcm0gdGhlIG5ldyB2ZXJzaW9uLlwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IoXG4gICAgICAgICAgICBgVXBncmFkZSBjb21tYW5kIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfS4gVHJ5IHJ1bm5pbmcgXFxgJHtjb21tYW5kfVxcYCBtYW51YWxseS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBjaGlsZC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgZXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBleGVjdXRlIHVwZ3JhZGUgY29tbWFuZDogJHtlcnIubWVzc2FnZX0uIFRyeSBydW5uaW5nIFxcYCR7Y29tbWFuZH1cXGAgbWFudWFsbHkuYCxcbiAgICAgICAgKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy91cGdyYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixHQUNsQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osT0FBTyxFQUNQLE9BQU8sR0FDUixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxNQUFNLFlBQVksR0FBRyx3Q0FBd0MsQ0FBQztBQUM5RCxNQUFNLGFBQWEsR0FBRyxvQ0FBb0MsQ0FBQztBQUUzRCxTQUFTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsRUFBVTtJQUN4QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMvRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUNoQyxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVztJQUN4QixJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3BDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxxQ0FBcUMsRUFBRTtZQUMxRCxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBRTdCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLE9BQWU7SUFFZixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE9BQWU7SUFDbkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMs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QUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEVBQUU7WUFDL0QsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FDbEMsQ0FBQztRQUNGLE9BQU8sRUFBRSxDQUFDO1FBQ1YsSUFBSSxDQUFDLGVBQWUsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDM0MsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHtcbiAgZGV0ZWN0SW5zdGFsbFBhdGgsXG4gIHVwZ3JhZGVDb21tYW5kRm9yLFxufSBmcm9tIFwiLi4vbGliL2RldGVjdC1pbnN0YWxsLXBhdGguanNcIjtcbmltcG9ydCB7XG4gIGNvbG9ycyxcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGluZm8sXG4gIHNwaW5uZXIsXG4gIGRpdmlkZXIsXG59IGZyb20gXCIuLi9saWIvb3V0cHV0LmpzXCI7XG5cbi8qKlxuICogYHNlbmRseSB1cGdyYWRlYCDigJQgYnJpbmcgdGhlIENMSSB1cCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gd2l0aCBhIGd1aWRlZCxcbiAqIGFuaW1hdGVkIGZsb3c6IGFuIGFuaW1hdGVkIHZlcnNpb24gY2hlY2ssIGEgYHZDVVJSRU5UIOKGkiB2TEFURVNUYCBkaWZmLCBhbmQgYVxuICogc3VjY2VzcyBwYW5lbC4gVGhlIG5vaXN5IHBhY2thZ2UtbWFuYWdlciBvdXRwdXQgaXMgaGlkZGVuIGJlaGluZCBhIHNwaW5uZXJcbiAqIGZvciBIb21lYnJldyAod2hpY2ggbmV2ZXIgbmVlZHMgc3Vkbyk7IGZvciBucG0gd2Uga2VlcCBpbmhlcml0ZWQgc3RkaW8gc28gYW5cbiAqIGF1dGgvc3VkbyBwcm9tcHQgY2FuIG5ldmVyIGhhbmcgaW52aXNpYmx5IGJlaGluZCBhIHNwaW5uZXIuXG4gKlxuICogYC0tY2hlY2tgIGlzIGEgZHJ5LXJ1bjogaXQgc2hvd3MgdGhlIGRldGVjdGVkIGluc3RhbGwgbWV0aG9kIGFuZCB0aGUgY29tbWFuZFxuICogdGhhdCB3b3VsZCBydW4sIHdpdGhvdXQgY2hhbmdpbmcgYW55dGhpbmcuXG4gKlxuICogVGhlIHVuYXR0ZW5kZWQgYmFubmVyIHRoYXQgbnVkZ2VzIHVzZXJzIHRvIHJ1biB0aGlzIGNvbWVzIGZyb20gdGhlXG4gKiBgQG9jbGlmL3BsdWdpbi13YXJuLWlmLXVwZGF0ZS1hdmFpbGFibGVgIHBsdWdpbiB3aXJlZCBpbiBwYWNrYWdlLmpzb247IHRoaXNcbiAqIGNvbW1hbmQgaXMgdGhlIGNvbXBhbmlvbiBhY3Rpb24gZm9yIHRoYXQgYmFubmVyLlxuICovXG5cbmNvbnN0IFJFR0lTVFJZX1VSTCA9IFwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQHNlbmRseS9jbGlcIjtcbmNvbnN0IENIQU5HRUxPR19VUkwgPSBcImh0dHBzOi8vc2VuZGx5LmxpdmUvZG9jcy9jaGFuZ2Vsb2dcIjtcblxuZnVuY3Rpb24gYnVtcFR5cGUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogXCJtYWpvclwiIHwgXCJtaW5vclwiIHwgXCJwYXRjaFwiIHwgXCJcIiB7XG4gIGNvbnN0IGEgPSBmcm9tLnNwbGl0KFwiLlwiKS5tYXAoKG4pID0+IHBhcnNlSW50KG4sIDEwKSk7XG4gIGNvbnN0IGIgPSB0by5zcGxpdChcIi5cIikubWFwKChuKSA9PiBwYXJzZUludChuLCAxMCkpO1xuICBpZiAoYS5sZW5ndGggPCAzIHx8IGIubGVuZ3RoIDwgMyB8fCBbLi4uYSwgLi4uYl0uc29tZShOdW1iZXIuaXNOYU4pKSByZXR1cm4gXCJcIjtcbiAgaWYgKGJbMF0gPiBhWzBdKSByZXR1cm4gXCJtYWpvclwiO1xuICBpZiAoYlsxXSA+IGFbMV0pIHJldHVybiBcIm1pbm9yXCI7XG4gIGlmIChiWzJdID4gYVsyXSkgcmV0dXJuIFwicGF0Y2hcIjtcbiAgcmV0dXJuIFwiXCI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoTGF0ZXN0KCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgNDAwMCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goUkVHSVNUUllfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7IGFjY2VwdDogXCJhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvblwiIH0sXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgaWYgKCFyZXMub2spIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMge1xuICAgICAgXCJkaXN0LXRhZ3NcIj86IHsgbGF0ZXN0Pzogc3RyaW5nIH07XG4gICAgfTtcbiAgICByZXR1cm4gYm9keVtcImRpc3QtdGFnc1wiXT8ubGF0ZXN0ID8/IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkNhcHR1cmVkKFxuICBjb21tYW5kOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgY29kZTogbnVtYmVyOyBvdXRwdXQ6IHN0cmluZyB9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IFtiaW4sIC4uLmFyZ3NdID0gY29tbWFuZC5zcGxpdChcIiBcIik7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihiaW4sIGFyZ3MsIHsgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCJdIH0pO1xuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGNoaWxkLnN0ZG91dD8ub24oXCJkYXRhXCIsIChkKSA9PiAob3V0cHV0ICs9IGQudG9TdHJpbmcoKSkpO1xuICAgIGNoaWxkLnN0ZGVycj8ub24oXCJkYXRhXCIsIChkKSA9PiAob3V0cHV0ICs9IGQudG9TdHJpbmcoKSkpO1xuICAgIGNoaWxkLm9uKFwiZXJyb3JcIiwgKGVycikgPT4gcmVzb2x2ZSh7IGNvZGU6IDEsIG91dHB1dDogZXJyLm1lc3NhZ2UgfSkpO1xuICAgIGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSkgPT4gcmVzb2x2ZSh7IGNvZGU6IGNvZGUgPz8gMSwgb3V0cHV0IH0pKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkluaGVyaXRlZChjb21tYW5kOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBbYmluLCAuLi5hcmdzXSA9IGNvbW1hbmQuc3BsaXQoXCIgXCIpO1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oYmluLCBhcmdzLCB7IHN0ZGlvOiBcImluaGVyaXRcIiB9KTtcbiAgICBjaGlsZC5vbihcImVycm9yXCIsICgpID0+IHJlc29sdmUoMSkpO1xuICAgIGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID8/IDEpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwZ3JhZGUgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlVwZ3JhZGUgdGhlIFNlbmRseSBDTEkgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBndWlkZWQsIGFuaW1hdGVkIGZsb3cuXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdXBncmFkZVwiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gdXBncmFkZSAtLWNoZWNrXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIGNoZWNrOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNob3cgd2hhdCB3b3VsZCBoYXBwZW4gd2l0aG91dCBjaGFuZ2luZyBhbnl0aGluZ1wiLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoVXBncmFkZSk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuY29uZmlnLnZlcnNpb247XG5cbiAgICBkaXZpZGVyKCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAke2NvbG9ycy5oaWdobGlnaHQoXCLimqEgU2VuZGx5IENMSVwiKX0gICR7Y29sb3JzLmRpbShcInVwZ3JhZGVcIil9YCxcbiAgICApO1xuICAgIGRpdmlkZXIoKTtcblxuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiQ2hlY2tpbmcgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbi4uLlwiKS5zdGFydCgpO1xuICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0KCk7XG5cbiAgICBpZiAobGF0ZXN0ICYmIGxhdGVzdCA9PT0gY3VycmVudCkge1xuICAgICAgc3Bpbi5zdWNjZWVkKFxuICAgICAgICBgWW91J3JlIG9uIHRoZSBsYXRlc3QgdmVyc2lvbiAke2NvbG9ycy5zdWNjZXNzLmJvbGQoXCJ2XCIgKyBjdXJyZW50KX1gLFxuICAgICAgKTtcbiAgICAgIGRpdmlkZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGF0ZXN0KSB7XG4gICAgICBjb25zdCBraW5kID0gYnVtcFR5cGUoY3VycmVudCwgbGF0ZXN0KTtcbiAgICAgIHNwaW4uc3VjY2VlZChcbiAgICAgICAgYFVwZGF0ZSBhdmFpbGFibGUke2tpbmQgPyBcIiBcIiArIGNvbG9ycy5kaW0oYCgke2tpbmR9KWApIDogXCJcIn1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgICAke2NvbG9ycy5kaW0oXCJ2XCIgKyBjdXJyZW50KX0gICR7Y29sb3JzLnByaW1hcnkoXCLihpJcIil9ICAke2NvbG9ycy5zdWNjZXNzLmJvbGQoXCJ2XCIgKyBsYXRlc3QpfWAsXG4gICAgICApO1xuICAgICAgZGl2aWRlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzcGluLnN1Y2NlZWQoXCJSZWFkeSB0byB1cGdyYWRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbGxQYXRoID0gZGV0ZWN0SW5zdGFsbFBhdGgoKTtcbiAgICBjb25zdCBjb21tYW5kID0gdXBncmFkZUNvbW1hbmRGb3IoaW5zdGFsbFBhdGgpO1xuXG4gICAgaWYgKGluc3RhbGxQYXRoID09PSBcInVua25vd25cIikge1xuICAgICAgaW5mbyhcbiAgICAgICAgXCJDYW4ndCBkZXRlY3QgaG93IHRoZSBDTEkgd2FzIGluc3RhbGxlZC4gUnVuIHdoaWNoZXZlciBtYXRjaGVzOlxcblwiICtcbiAgICAgICAgICBgICAke2NvbG9ycy5jb2RlKFwiYnJldyB1cGdyYWRlIHNlbmRseVwiKX0gICAgICAgICAgICAgICAgJHtjb2xvcnMuZGltKFwiKEhvbWVicmV3KVwiKX1cXG5gICtcbiAgICAgICAgICBgICAke2NvbG9ycy5jb2RlKFwibnBtIGluc3RhbGwgLWcgQHNlbmRseS9jbGlAbGF0ZXN0XCIpfSAgJHtjb2xvcnMuZGltKFwiKG5wbSlcIil9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZsYWdzLmNoZWNrKSB7XG4gICAgICBpbmZvKFxuICAgICAgICBgSW5zdGFsbCBtZXRob2Q6ICR7Y29sb3JzLmJvbGQoaW5zdGFsbFBhdGgpfVxcbmAgK1xuICAgICAgICAgIGBXb3VsZCBydW46ICAgICAgJHtjb2xvcnMuY29kZShjb21tYW5kKX1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2aWEgPSBpbnN0YWxsUGF0aCA9PT0gXCJob21lYnJld1wiID8gXCJIb21lYnJld1wiIDogXCJucG1cIjtcbiAgICBjb25zdCB0YXJnZXQgPSBsYXRlc3QgPyBgIHRvICR7Y29sb3JzLnN1Y2Nlc3MoXCJ2XCIgKyBsYXRlc3QpfWAgOiBcIlwiO1xuXG4gICAgaWYgKGluc3RhbGxQYXRoID09PSBcImhvbWVicmV3XCIpIHtcbiAgICAgIC8vIEhvbWVicmV3IG5ldmVyIG5lZWRzIHN1ZG8sIHNvIGl0J3Mgc2FmZSB0byBoaWRlIGl0cyBvdXRwdXQgYmVoaW5kIGFcbiAgICAgIC8vIHNwaW5uZXIgZm9yIGEgY2xlYW4sIGFuaW1hdGVkIHVwZ3JhZGUuXG4gICAgICBjb25zdCB1cFNwaW4gPSBzcGlubmVyKGBVcGdyYWRpbmcgdmlhICR7dmlhfSR7dGFyZ2V0fS4uLmApLnN0YXJ0KCk7XG4gICAgICBjb25zdCB7IGNvZGUsIG91dHB1dCB9ID0gYXdhaXQgcnVuQ2FwdHVyZWQoY29tbWFuZCk7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICB1cFNwaW4uc3RvcCgpO1xuICAgICAgICB0aGlzLnJlbmRlclN1Y2Nlc3ModmlhLCBsYXRlc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBTcGluLmZhaWwoYFVwZ3JhZGUgZmFpbGVkIHZpYSAke3ZpYX1gKTtcbiAgICAgICAgY29uc3QgdGFpbCA9IG91dHB1dC50cmltKCkuc3BsaXQoXCJcXG5cIikuc2xpY2UoLTYpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIGlmICh0YWlsKSBjb25zb2xlLmxvZyhjb2xvcnMuZGltKHRhaWwpKTtcbiAgICAgICAgZXJyb3IoYFRyeSBydW5uaW5nIGl0IHlvdXJzZWxmOiAke2NvbG9ycy5jb2RlKGNvbW1hbmQpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5wbToga2VlcCBpbmhlcml0ZWQgc3RkaW8gc28gYW55IGF1dGgvc3VkbyBwcm9tcHQgc3RheXMgdmlzaWJsZS5cbiAgICBpbmZvKGBVcGdyYWRpbmcgdmlhICR7dmlhfSR7dGFyZ2V0fWApO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oYCAgJHtjb21tYW5kfWApKTtcbiAgICBkaXZpZGVyKCk7XG4gICAgY29uc3QgY29kZSA9IGF3YWl0IHJ1bkluaGVyaXRlZChjb21tYW5kKTtcbiAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgdGhpcy5yZW5kZXJTdWNjZXNzKHZpYSwgbGF0ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3IoXG4gICAgICAgIGBVcGdyYWRlIGNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LiBUcnkgcnVubmluZyBpdCB5b3Vyc2VsZjogJHtjb2xvcnMuY29kZShjb21tYW5kKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN1Y2Nlc3ModmlhOiBzdHJpbmcsIGxhdGVzdDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHN1Y2Nlc3MoXG4gICAgICBsYXRlc3RcbiAgICAgICAgPyBgVXBncmFkZWQgdG8gJHtjb2xvcnMuc3VjY2Vzcy5ib2xkKFwidlwiICsgbGF0ZXN0KX0gdmlhICR7dmlhfWBcbiAgICAgICAgOiBgVXBncmFkZSBjb21wbGV0ZSB2aWEgJHt2aWF9YCxcbiAgICApO1xuICAgIGRpdmlkZXIoKTtcbiAgICBpbmZvKGBXaGF0J3MgbmV3OiAke2NvbG9ycy5jb2RlKENIQU5HRUxPR19VUkwpfWApO1xuICAgIGluZm8oXCJSdW4gYHNlbmRseSAtLXZlcnNpb25gIHRvIGNvbmZpcm0uXCIpO1xuICAgIGRpdmlkZXIoKTtcbiAgfVxufVxuIl19
|