picocode 0.6.1 → 0.7.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/dist/pico.js +47 -27
- package/package.json +2 -2
package/dist/pico.js
CHANGED
|
@@ -1194,6 +1194,7 @@ function createShellManager({ onChange = () => {
|
|
|
1194
1194
|
return {
|
|
1195
1195
|
id: shell.id,
|
|
1196
1196
|
command: shell.command,
|
|
1197
|
+
description: shell.description,
|
|
1197
1198
|
cwd: shell.cwd,
|
|
1198
1199
|
status: shell.status,
|
|
1199
1200
|
exitCode: shell.exitCode,
|
|
@@ -1204,7 +1205,7 @@ function createShellManager({ onChange = () => {
|
|
|
1204
1205
|
lineCount: shell.lines.length
|
|
1205
1206
|
};
|
|
1206
1207
|
}
|
|
1207
|
-
function start(command, { cwd } = {}) {
|
|
1208
|
+
function start(command, { cwd, description } = {}) {
|
|
1208
1209
|
const id = String(nextId++);
|
|
1209
1210
|
const child = spawn(command, {
|
|
1210
1211
|
shell: true,
|
|
@@ -1215,6 +1216,7 @@ function createShellManager({ onChange = () => {
|
|
|
1215
1216
|
const shell = {
|
|
1216
1217
|
id,
|
|
1217
1218
|
command,
|
|
1219
|
+
description: description || null,
|
|
1218
1220
|
cwd: cwd || process.cwd(),
|
|
1219
1221
|
child,
|
|
1220
1222
|
status: "running",
|
|
@@ -1805,11 +1807,13 @@ function compactProgress(streamed) {
|
|
|
1805
1807
|
if (sections === 0) return { phase: "analyzing", section: 0, chars };
|
|
1806
1808
|
return { phase: "writing", section: Math.min(8, sections), chars };
|
|
1807
1809
|
}
|
|
1808
|
-
async function summarizeText({ text, modelName }) {
|
|
1810
|
+
async function summarizeText({ text, modelName, auth }) {
|
|
1809
1811
|
const out = await compose(
|
|
1810
1812
|
model({
|
|
1811
1813
|
model: modelName,
|
|
1812
|
-
system: "Summarize the following conversation excerpt in 2-4 dense sentences. Capture decisions, changes made, and open questions. Output only the summary."
|
|
1814
|
+
system: "Summarize the following conversation excerpt in 2-4 dense sentences. Capture decisions, changes made, and open questions. Output only the summary.",
|
|
1815
|
+
...auth?.apiKey && { apiKey: auth.apiKey },
|
|
1816
|
+
...auth?.headers && { headers: auth.headers }
|
|
1813
1817
|
})
|
|
1814
1818
|
)(text.slice(0, 3e4));
|
|
1815
1819
|
return getText(out.lastResponse?.content || "").trim();
|
|
@@ -2152,16 +2156,17 @@ function capped(text) {
|
|
|
2152
2156
|
function createBash({ cwd, recorder, signal, shells: shells2 }) {
|
|
2153
2157
|
return {
|
|
2154
2158
|
name: "bash",
|
|
2155
|
-
description: "Run a shell command in the working directory. Returns stdout, stderr, and exit code.
|
|
2159
|
+
description: "Run a shell command in the working directory. Returns stdout, stderr, and exit code. Foreground commands are killed at the timeout (default 120s), so never wait on long externals like CI runs, deploys, or watch loops in the foreground: run those with background true, finish your turn, and the shell's exit will notify you so you can report the outcome. Background also fits long-lived processes like dev servers; check on a background shell with shell_output and stop it with shell_kill.",
|
|
2156
2160
|
schema: {
|
|
2157
2161
|
command: { type: "string", description: "the command to run" },
|
|
2158
|
-
timeout: { type: "number", description: "timeout in milliseconds, default 120000", optional: true },
|
|
2159
|
-
background: { type: "boolean", description: "run in the background and return a shell id immediately", optional: true }
|
|
2162
|
+
timeout: { type: "number", description: "foreground timeout in milliseconds, default 120000; prefer background true over a large timeout", optional: true },
|
|
2163
|
+
background: { type: "boolean", description: "run in the background and return a shell id immediately", optional: true },
|
|
2164
|
+
description: { type: "string", description: 'for background shells: a few words naming what this is for, shown to the human watching (e.g. "vite dev server", "watching ci")', optional: true }
|
|
2160
2165
|
},
|
|
2161
|
-
execute: ({ command, timeout, background }) => {
|
|
2166
|
+
execute: ({ command, timeout, background, description }) => {
|
|
2162
2167
|
if (background && shells2) {
|
|
2163
|
-
recorder.extra({ title: command, background: true });
|
|
2164
|
-
const { id } = shells2.start(command, { cwd });
|
|
2168
|
+
recorder.extra({ title: description || command, background: true });
|
|
2169
|
+
const { id } = shells2.start(command, { cwd, description });
|
|
2165
2170
|
return { shellId: id, status: "running" };
|
|
2166
2171
|
}
|
|
2167
2172
|
return new Promise((resolve7) => {
|
|
@@ -3542,7 +3547,7 @@ In the MCP panel: space or enter toggles a server, \`t\` lists its tools, \`r\`
|
|
|
3542
3547
|
|
|
3543
3548
|
## Shells
|
|
3544
3549
|
|
|
3545
|
-
The agent can run long-lived processes (dev servers, watchers) with \`bash background: true\`, then read their output and stop them itself. \`/shells\` lists them: enter opens a live output view, \`
|
|
3550
|
+
The agent can run long-lived processes (dev servers, watchers) with \`bash background: true\`, then read their output and stop them itself. \`/shells\` lists them: enter opens a live output view, and \`ctrl+x\` removes the selected row - killing a running shell (press twice) or dismissing a dead one (single press). A \`\u2699 N\` in the footer shows how many are running. When a shell exits on its own, the agent is notified and responds; shells die with pico, and quitting warns you if any are still up.
|
|
3546
3551
|
|
|
3547
3552
|
## Subscriptions
|
|
3548
3553
|
|
|
@@ -3985,11 +3990,9 @@ function ShellsPanel({ version: version2, shells: shells2, readOutput, focused,
|
|
|
3985
3990
|
useInput2((event) => {
|
|
3986
3991
|
if (!focused || viewing()) return;
|
|
3987
3992
|
const s = selected();
|
|
3988
|
-
if (s && event.key === "
|
|
3989
|
-
onKill(s);
|
|
3990
|
-
|
|
3991
|
-
} else if (s && event.key === "d" && !event.ctrl) {
|
|
3992
|
-
onDismiss(s);
|
|
3993
|
+
if (s && event.ctrl && event.key === "x") {
|
|
3994
|
+
if (s.status === "running") onKill(s);
|
|
3995
|
+
else onDismiss(s);
|
|
3993
3996
|
event.stopPropagation();
|
|
3994
3997
|
}
|
|
3995
3998
|
});
|
|
@@ -4014,7 +4017,7 @@ function ShellsPanel({ version: version2, shells: shells2, readOutput, focused,
|
|
|
4014
4017
|
);
|
|
4015
4018
|
}
|
|
4016
4019
|
}
|
|
4017
|
-
return /* @__PURE__ */ jsx3(PanelFrame, { title: "Shells", hint: "enter view output \xB7
|
|
4020
|
+
return /* @__PURE__ */ jsx3(PanelFrame, { title: "Shells", hint: "j/k to move \xB7 enter view output \xB7 ctrl+x kill or dismiss \xB7 esc close", children: /* @__PURE__ */ jsx3("box", { style: { flexDirection: "column", marginTop: 1 }, children: shells2.length === 0 ? /* @__PURE__ */ jsx3("text", { style: { color: FAINT }, children: "no background shells \xB7 the agent starts them with bash background: true" }) : /* @__PURE__ */ jsx3(
|
|
4018
4021
|
Menu,
|
|
4019
4022
|
{
|
|
4020
4023
|
counter: true,
|
|
@@ -4023,14 +4026,17 @@ function ShellsPanel({ version: version2, shells: shells2, readOutput, focused,
|
|
|
4023
4026
|
onSelect: setIndex,
|
|
4024
4027
|
focused,
|
|
4025
4028
|
maxVisible: 6,
|
|
4026
|
-
vimKeys:
|
|
4029
|
+
vimKeys: true,
|
|
4027
4030
|
onSubmit: (s) => setViewing(s.id),
|
|
4028
4031
|
onCancel: onClose,
|
|
4029
4032
|
renderItem: (s, { active }) => /* @__PURE__ */ jsxs3("box", { style: { flexDirection: "row" }, children: [
|
|
4030
4033
|
/* @__PURE__ */ jsx3("text", { style: { color: accent() }, children: active ? "\u203A " : " " }),
|
|
4031
4034
|
/* @__PURE__ */ jsx3("text", { style: { color: s.status === "running" ? accent() : s.exitCode === 0 ? MUTED : RED }, children: s.status === "running" ? "\u2699" : s.exitCode === 0 ? "\u2713" : "\u2717" }),
|
|
4032
4035
|
/* @__PURE__ */ jsx3("text", { style: { color: active ? accent() : FG }, children: ` ${s.id.padEnd(Math.max(3, s.id.length + 1))}` }),
|
|
4033
|
-
/* @__PURE__ */
|
|
4036
|
+
/* @__PURE__ */ jsxs3("box", { style: { flexGrow: 1, height: 1, flexDirection: "row" }, children: [
|
|
4037
|
+
s.description && /* @__PURE__ */ jsx3("text", { style: { color: active ? FG : FG_SOFT }, children: `${s.description} ` }),
|
|
4038
|
+
/* @__PURE__ */ jsx3("text", { style: { overflow: "truncate", color: s.description ? FAINT : active ? FG : FG_SOFT }, children: s.command })
|
|
4039
|
+
] }),
|
|
4034
4040
|
/* @__PURE__ */ jsx3("text", { style: { color: FAINT }, children: ` ${s.status === "running" ? `up ${uptime(s)}` : `exit ${s.exitCode} \xB7 ${uptime(s)}`}` })
|
|
4035
4041
|
] })
|
|
4036
4042
|
}
|
|
@@ -4328,6 +4334,7 @@ var SESSION_COLORS = {
|
|
|
4328
4334
|
};
|
|
4329
4335
|
var HISTORY_SCOPES = ["session", "project", "everywhere"];
|
|
4330
4336
|
var MEMORY_SCOPES = ["all", "project", "global"];
|
|
4337
|
+
var SHELL_STRIP_MAX = 5;
|
|
4331
4338
|
var HISTORY_WINDOW = 50;
|
|
4332
4339
|
var RESUME_SCOPES = ["project", "everywhere"];
|
|
4333
4340
|
function App({ boot: boot2 }) {
|
|
@@ -4413,13 +4420,15 @@ function App({ boot: boot2 }) {
|
|
|
4413
4420
|
}
|
|
4414
4421
|
if (shell.killedBy === "user") {
|
|
4415
4422
|
flash(`shell ${shell.id} killed`);
|
|
4416
|
-
noteSystem(`[system notification] the user manually killed background shell ${shell.id} (${shell.command}) from the shells panel (SIGTERM). This was deliberate; do not restart it unless asked.`, { wake: false });
|
|
4423
|
+
noteSystem(`[system notification] the user manually killed background shell ${shell.id} (${shell.description || shell.command}) from the shells panel (SIGTERM). This was deliberate; do not restart it unless asked.`, { wake: false });
|
|
4417
4424
|
return;
|
|
4418
4425
|
}
|
|
4419
4426
|
flash(`shell ${shell.id} exited \xB7 code ${shell.exitCode}`);
|
|
4420
4427
|
const tail = boot2.shells.output(shell.id, { tail: 30 }).output;
|
|
4428
|
+
const secs = Math.max(0, Math.round(((shell.endedAt || Date.now()) - shell.startedAt) / 1e3));
|
|
4429
|
+
const ran = secs < 60 ? `${secs}s` : `${Math.floor(secs / 60)}m ${secs % 60}s`;
|
|
4421
4430
|
noteSystem(
|
|
4422
|
-
`[system notification] background shell ${shell.id} (${shell.command}) exited with code ${shell.exitCode}.` + (tail ? `
|
|
4431
|
+
`[system notification] background shell ${shell.id} (${shell.description || shell.command}) exited with code ${shell.exitCode} after ${ran}.` + (tail ? `
|
|
4423
4432
|
Recent output:
|
|
4424
4433
|
${tail}` : ""),
|
|
4425
4434
|
{ wake: true }
|
|
@@ -5221,9 +5230,12 @@ ${body}`);
|
|
|
5221
5230
|
const tail = state.transcript.slice(target.index);
|
|
5222
5231
|
const text = tail.filter((m) => m.text).map((m) => `${m.kind}: ${m.text}`).join("\n");
|
|
5223
5232
|
flash("summarizing...");
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
)
|
|
5233
|
+
let auth = null;
|
|
5234
|
+
if (model2().provider === "codex") auth = await openaiCredentials().catch(() => null);
|
|
5235
|
+
summaryText = await summarizeText({ text, modelName: model2().name, auth }).catch(() => {
|
|
5236
|
+
flash("summary model call failed \xB7 kept a crude digest of the rewound turns");
|
|
5237
|
+
return tail.filter((m) => m.text).slice(0, 3).map((m) => m.text.split(/\s+/).slice(0, 6).join(" ")).join(" \xB7 ");
|
|
5238
|
+
});
|
|
5227
5239
|
}
|
|
5228
5240
|
const event = makeEvent("rewind", { target: target.eventId, mode: opt.key, summaryText, reverted, skipped });
|
|
5229
5241
|
persist(event);
|
|
@@ -5260,7 +5272,7 @@ ${body}`);
|
|
|
5260
5272
|
const armed = refs.shellKillArm;
|
|
5261
5273
|
if (!armed || armed.id !== shell.id || Date.now() - armed.at > 3e3) {
|
|
5262
5274
|
refs.shellKillArm = { id: shell.id, at: Date.now() };
|
|
5263
|
-
return flash(`
|
|
5275
|
+
return flash(`ctrl+x again to kill "${shell.description || `shell ${shell.id}`}"`);
|
|
5264
5276
|
}
|
|
5265
5277
|
refs.shellKillArm = null;
|
|
5266
5278
|
boot2.shells.kill(shell.id, "user");
|
|
@@ -5410,7 +5422,7 @@ ${body}`);
|
|
|
5410
5422
|
})();
|
|
5411
5423
|
const { usageActive: usage } = derived();
|
|
5412
5424
|
shellsVersion();
|
|
5413
|
-
const
|
|
5425
|
+
const liveShells = boot2.shells.list().filter((s) => s.status === "running");
|
|
5414
5426
|
const pendingWakeups = boot2.wakeups.pending();
|
|
5415
5427
|
if (view() === "help") {
|
|
5416
5428
|
return /* @__PURE__ */ jsx4(Help, { commands: COMMANDS, onClose: () => setView("chat") });
|
|
@@ -5824,6 +5836,15 @@ ${body}`);
|
|
|
5824
5836
|
onBack: () => setRewindStep("pick")
|
|
5825
5837
|
}
|
|
5826
5838
|
),
|
|
5839
|
+
liveShells.length > 0 && !showShellsPanel() && /* @__PURE__ */ jsxs4("box", { style: { flexDirection: "column", paddingX: 2, marginTop: 1 }, children: [
|
|
5840
|
+
liveShells.slice(0, SHELL_STRIP_MAX).map((s) => /* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row" }, children: [
|
|
5841
|
+
/* @__PURE__ */ jsx4("text", { style: { color: accent() }, children: "\u2699 " }),
|
|
5842
|
+
/* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `${s.id} \xB7 ` }),
|
|
5843
|
+
/* @__PURE__ */ jsx4("box", { style: { flexGrow: 1, height: 1 }, children: /* @__PURE__ */ jsx4("text", { style: { overflow: "truncate", color: FG_SOFT }, children: s.description || s.command.replace(/\n/g, " ") }) }),
|
|
5844
|
+
/* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: ` ${Date.now() - s.startedAt < 6e4 ? "<1m" : timeAgo(s.startedAt).replace(" ago", "")}` })
|
|
5845
|
+
] }, s.id)),
|
|
5846
|
+
/* @__PURE__ */ jsx4("box", { style: { flexDirection: "row" }, children: /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: ` ${liveShells.length > SHELL_STRIP_MAX ? `+${liveShells.length - SHELL_STRIP_MAX} more \xB7 ` : ""}/shells` }) })
|
|
5847
|
+
] }),
|
|
5827
5848
|
/* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row", paddingX: 2, gap: 1, marginTop: 1 }, children: [
|
|
5828
5849
|
busy() ? /* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row" }, children: [
|
|
5829
5850
|
/* @__PURE__ */ jsx4(Shimmer, { color: accent(), highlight: HIGHLIGHT, duration: 1500, reverse: true, children: compacting() ? compactStatus()?.phase === "writing" ? `Compacting \xB7 writing ${compactStatus().section}/8` : "Compacting \xB7 analyzing" : thinkingNow() ? "Thinking" : "Responding" }),
|
|
@@ -5835,7 +5856,6 @@ ${body}`);
|
|
|
5835
5856
|
const stats = useFrameStats();
|
|
5836
5857
|
return /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `\u23F1 ${(stats.renderMs ?? 0).toFixed(1)}ms \xB7 ${stats.fps}fps \xB7 ${derived().transcript.length} items` });
|
|
5837
5858
|
})(),
|
|
5838
|
-
runningShells > 0 && /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `\u2699 ${runningShells}` }),
|
|
5839
5859
|
pendingWakeups > 0 && /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `\u23F0 ${pendingWakeups}` }),
|
|
5840
5860
|
/* @__PURE__ */ jsx4("text", { style: { color: accent() }, children: model2().name }),
|
|
5841
5861
|
effortApplies() && effort() && /* @__PURE__ */ jsx4("text", { style: { color: MUTED }, children: `\xB7 ${effort()}` }),
|
|
@@ -5973,4 +5993,4 @@ var boot = {
|
|
|
5973
5993
|
var app = mount(() => /* @__PURE__ */ jsx5(App, { boot }), { title: `pico \xB7 ${boot.root.split("/").pop()}`, theme });
|
|
5974
5994
|
boot.setTheme = app.setTheme;
|
|
5975
5995
|
boot.mcp.connectAll();
|
|
5976
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy91aS9mdXp6eS5qcyIsICIuLi9zcmMvdWkvYXR0YWNobWVudHMuanMiLCAiLi4vc3JjL2hlYWRsZXNzLmpzIiwgIi4uL3NyYy9tYWluLmpzeCIsICIuLi9zcmMvY2xpLWFyZ3MuanMiLCAiLi4vc3JjL2NvcmUvdGVybWluYWwtdGhlbWUuanMiLCAiLi4vc3JjL2NvcmUvd2FrZXVwcy5qcyIsICIuLi9zcmMvdWkvYXBwLmpzeCIsICIuLi9zcmMvY29yZS9oaXN0b3J5LmpzIiwgIi4uL3NyYy9jb3JlL3VzZXItdG9vbHMuanMiLCAiLi4vc3JjL2NvcmUvcmV3aW5kLmpzIiwgIi4uL3NyYy9jb3JlL2V4cG9ydC5qcyIsICIuLi9zcmMvdWkvY29tcGxldGlvbi5qcyIsICIuLi9zcmMvdWkvZmlsZXMuanMiLCAiLi4vc3JjL3VpL2hpZ2hsaWdodC5qcyIsICIuLi9zcmMvdWkvdGhlbWUuanMiLCAiLi4vc3JjL3VpL3RyYW5zY3JpcHQuanN4IiwgIi4uL3NyYy91aS9oZWxwLmpzeCIsICIuLi9zcmMvdWkvcGFuZWxzLmpzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgc2V0S2V5cyB9IGZyb20gJ0BwcnNtL2FpJ1xuXG5jb25zdCBQUk9WSURFUlMgPSBbXG4gIHsgaWQ6ICdnb29nbGUnLCBsYWJlbDogJ0dlbWluaScsIGVudjogWydHRU1JTklfQVBJX0tFWScsICdHT09HTEVfQUlfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICdhbnRocm9waWMnLCBsYWJlbDogJ0NsYXVkZScsIGVudjogWydBTlRIUk9QSUNfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSScsIGVudjogWydPUEVOQUlfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICd4YWknLCBsYWJlbDogJ0dyb2snLCBlbnY6IFsnWEFJX0FQSV9LRVknXSB9LFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzY292ZXJLZXlzKGVudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IGtleXMgPSB7fVxuICBmb3IgKGNvbnN0IHAgb2YgUFJPVklERVJTKSB7XG4gICAgY29uc3QgbmFtZSA9IHAuZW52LmZpbmQoKG4pID0+IGVudltuXSlcbiAgICBpZiAobmFtZSkga2V5c1twLmlkXSA9IGVudltuYW1lXVxuICB9XG4gIHJldHVybiBrZXlzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUtleXMoa2V5cykge1xuICBzZXRLZXlzKGtleXMpXG4gIHJldHVybiBPYmplY3Qua2V5cyhrZXlzKVxufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5SGludChwcm92aWRlcklkKSB7XG4gIHJldHVybiBQUk9WSURFUlMuZmluZCgocCkgPT4gcC5pZCA9PT0gcHJvdmlkZXJJZCk/LmVudlswXSB8fCBgJHtwcm92aWRlcklkLnRvVXBwZXJDYXNlKCl9X0FQSV9LRVlgXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpIHtcbiAgcmV0dXJuIG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRNb2RlbChtb2RlbHMpIHtcbiAgcmV0dXJuIG1vZGVscy5maW5kKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzdGltYXRlQ29zdChtb2RlbCwgdXNhZ2UpIHtcbiAgaWYgKCFtb2RlbD8ucHJpY2UgfHwgIXVzYWdlKSByZXR1cm4gMFxuICBjb25zdCBpbkNvc3QgPSAodXNhZ2UucHJvbXB0VG9rZW5zIHx8IDApICogbW9kZWwucHJpY2UuaW5cbiAgY29uc3Qgb3V0Q29zdCA9ICh1c2FnZS5jb21wbGV0aW9uVG9rZW5zIHx8IDApICogbW9kZWwucHJpY2Uub3V0XG4gIHJldHVybiAoaW5Db3N0ICsgb3V0Q29zdCkgLyAxZTZcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5leHBvcnQgZnVuY3Rpb24gcGljb0hvbWUoKSB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5QSUNPX0hPTUUgfHwgam9pbihob21lZGlyKCksICcucGljbycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0S2V5KHJvb3QpIHtcbiAgcmV0dXJuIHJlc29sdmUocm9vdCkucmVwbGFjZSgvWy9cXFxcOl0vZywgJy0nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFByb2plY3RSb290KGN3ZCkge1xuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgJy5naXQnKSkpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIgfHwgZGlyID09PSBob21lKSByZXR1cm4gcmVzb2x2ZShjd2QpXG4gICAgZGlyID0gcGFyZW50XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3REaXIocm9vdCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnLCBwcm9qZWN0S2V5KHJvb3QpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vzc2lvbnNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnc2Vzc2lvbnMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ2hpc3RvcnkuanNvbmwnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1jcEZpbGUocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnbWNwLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsTWNwRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21jcC5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFNraWxsc0RpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3NraWxscycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0U2tpbGxzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ3NraWxscycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxBZ2VudHNGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnQUdFTlRTLm1kJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURpcihkaXIpIHtcbiAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgcmV0dXJuIGRpclxufVxuIiwgIntcImdvb2dsZVwiOntcIm1vZGVsc1wiOntcImdlbWluaS0zLjEtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgRmxhc2ggTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvdy1sYXRlbmN5IEdlbWluaSBtb2RlbCBmb3IgaGlnaC12b2x1bWUgbXVsdGltb2RhbCBhbmQgYWdlbnQgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MS41LFwiY2FjaGVfcmVhZFwiOjAuMDI1LFwiaW5wdXRfYXVkaW9cIjowLjV9fSxcImdlbWluaS0yLjUtZmxhc2gtcHJldmlldy10dHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaCBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxMH19LFwiZ2VtaW5pLTIuNS1wcm9cIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1wcm9cIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiR29vZ2xlJ3MgcHJvdmVuIHJlYXNvbmluZyBtb2RlbCBmb3IgY29kaW5nLCBtYXRoLCBhbmQgbXVsdGltb2RhbCBhbmFseXNpc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMjgsXCJtYXhcIjozMjc2OH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4yNX19fSxcImdlbWluaS0yLjUtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIHdvcmtob3JzZSBmb3IgbXVsdGltb2RhbCBhcHBzIHdoZXJlIGxhdGVuY3kgYW5kIHByaWNlIG1hdHRlclwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjowLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMyxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjAzLFwiaW5wdXRfYXVkaW9cIjoxfX0sXCJnZW1pbmktMy41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0zLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAzLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1tYS00LTMxYi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTMxYi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAzMUIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJMYXJnZXN0IEdlbW1hIDQgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIG9wZW4sIHNlbGYtaG9zdGVkIGNoYXQgYW5kIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTIuMC1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMi4wLWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRWFybGllciBHZW1pbmkgRmxhc2ggd29ya2hvcnNlIGZvciByZXNwb25zaXZlIG11bHRpbW9kYWwgYXBwcyBhbmQgdG9vbCB1c2VcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6ODE5Mn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIjp7XCJpZFwiOlwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIixcIm5hbWVcIjpcIkdlbWluaSBFbWJlZGRpbmcgMDAxXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwNDgsXCJvdXRwdXRcIjoxfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowfX0sXCJnZW1pbmktMy4xLXByby1wcmV2aWV3LWN1c3RvbXRvb2xzXCI6e1wiaWRcIjpcImdlbWluaS0zLjEtcHJvLXByZXZpZXctY3VzdG9tdG9vbHNcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgUHJvIFByZXZpZXcgQ3VzdG9tIFRvb2xzXCIsXCJkZXNjcmlwdGlvblwiOlwiQWR2YW5jZWQgR2VtaW5pIG1vZGVsIGZvciBjb21wbGV4IHJlYXNvbmluZywgY29kaW5nLCBhbmQgbXVsdGltb2RhbCBhbmFseXNpc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiOntcImlkXCI6XCJnZW1pbmktZmxhc2gtbGl0ZS1sYXRlc3RcIixcIm5hbWVcIjpcIkdlbWluaSBGbGFzaC1MaXRlIExhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkxvdy1sYXRlbmN5IEdlbWluaSBtb2RlbCBmb3IgaGlnaC12b2x1bWUgbXVsdGltb2RhbCBhbmQgYWdlbnQgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6NTEyLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIFBybyBmb3IgaGlnaGVyLWZpZGVsaXR5IGltYWdlIGdlbmVyYXRpb24gYW5kIGRlc2lnbi1oZWF2eSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyMH19LFwiZ2VtaW5pLTIuNS1mbGFzaC1pbWFnZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYVwiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIGltYWdlIG1vZGVsIGZvciBmYXN0IGdlbmVyYXRpb24sIGVkaXRzLCBhbmQgY2hhcmFjdGVyLWNvbnNpc3RlbnQgYXNzZXRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjMyNzY4LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlYW4gR2VtaW5pIDIuNSBsYW5lIGZvciBjaGVhcCBtdWx0aW1vZGFsIHRyYWZmaWMgYW5kIHF1aWNrIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjUxMixcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMSxcImlucHV0X2F1ZGlvXCI6MC4zfX0sXCJnZW1pbmktb21uaS1mbGFzaC1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS1vbW5pLWZsYXNoLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSBPbW5pIEZsYXNoIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJWaWRlbyBnZW5lcmF0aW9uIGFuZCBlZGl0aW5nIG1vZGVsIGZvciBmYXN0LCBjb252ZXJzYXRpb25hbCB0ZXh0LSBhbmQgaW1hZ2UtdG8tdmlkZW8gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA2LTMwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDYtMzBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiXSxcIm91dHB1dFwiOltcInZpZGVvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6MTcuNX19LFwiZ2VtaW5pLTMuMS1mbGFzaC1pbWFnZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtaW1hZ2UtcHJldmlld1wiLFwibmFtZVwiOlwiTmFubyBCYW5hbmEgMlwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo2NTUzNixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjYwfX0sXCJnZW1pbmktMy4xLXByby1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtcHJvLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgUHJvIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmctZmlyc3QgR2VtaW5pIHByZXZpZXcgZm9yIGFnZW50aWMgY29kaW5nIGFuZCBjb21wbGV4IHByb2JsZW0gc29sdmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbW1hLTQtMjZiLWE0Yi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTI2Yi1hNGItaXRcIixcIm5hbWVcIjpcIkdlbW1hIDQgMjZCIEE0QiBJVFwiLFwiZGVzY3JpcHRpb25cIjpcIk9wZW4gR2VtbWEgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIGVmZmljaWVudCBjaGF0IGFuZCBzZWxmLWhvc3RlZCBkZXBsb3ltZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTMtcHJvLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzIFBybyBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiUHJldmlldyBHZW1pbmkgZmxhZ3NoaXAgZm9yIGNvbXBsZXggcmVhc29uaW5nLCBjb2RpbmcsIGFuZCByaWNoIG11bHRpbW9kYWwgcHJvbXB0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTE4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMThcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbWluaS0zLWZsYXNoLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMgRmxhc2ggUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIk5ldyBHZW1pbmkgZmxhc2ggbGFuZSBicmluZ2luZyBmcm9udGllci1zdHlsZSBtdWx0aW1vZGFsIHJlYXNvbmluZyB0byBjaGVhcGVyIHJ1bnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjozLFwiY2FjaGVfcmVhZFwiOjAuMDUsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IFBybyBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MjB9fSxcImdlbWluaS1mbGFzaC1sYXRlc3RcIjp7XCJpZFwiOlwiZ2VtaW5pLWZsYXNoLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoIExhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIG1vZGVsIGJhbGFuY2luZyBtdWx0aW1vZGFsIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCBjb3N0XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjAsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMDc1LFwiaW5wdXRfYXVkaW9cIjoxfX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoLUxpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4wNzUsXCJvdXRwdXRcIjowLjN9fX19LFwiYW50aHJvcGljXCI6e1wibW9kZWxzXCI6e1wiY2xhdWRlLW9wdXMtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMVwiOntcImlkXCI6XCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgSGFpa3UgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBDbGF1ZGUgbW9kZWwgZm9yIHJlc3BvbnNpdmUgYXNzaXN0YW5jZSwgY2xhc3NpZmljYXRpb24sIGFuZCBsaWdodHdlaWdodCBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLWhhaWt1XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAyLTI4XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTAtMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMC0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjEsXCJjYWNoZV93cml0ZVwiOjEuMjV9fSxcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTEtMjAyNTA4MDVcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDMtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjUsXCJjYWNoZV93cml0ZVwiOjE4Ljc1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBDbGF1ZGUgbW9kZWwgZm9yIGNvZGluZywgYW5hbHlzaXMsIGFnZW50IHdvcmtmbG93cywgYW5kIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA3LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLW9wdXMtNC03XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtN1wiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC43XCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nZXIgT3B1cyB0aWVyIGZvciBhZHZhbmNlZCBzb2Z0d2FyZSB3b3JrIGFuZCBoaWdoLXN0YWtlcyByZWFzb25pbmdcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNVwiLFwiZGVzY3JpcHRpb25cIjpcIkV2ZXJ5ZGF5IENsYXVkZSBhZ2VudCBtb2RlbCBmb3IgY29kaW5nLCBwbGFubmluZywgYnJvd3NpbmcsIGFuZCBnZW5lcmFsIHdvcmtcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0zMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX19LFwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC04XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtOFwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC44XCIsXCJkZXNjcmlwdGlvblwiOlwiVG9wIENsYXVkZSBPcHVzIHRpZXIgZm9yIHRoZSBoYXJkZXN0IHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo1MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNwZWVkXCI6XCJmYXN0XCJ9LFwiaGVhZGVyc1wiOntcImFudGhyb3BpYy1iZXRhXCI6XCJmYXN0LW1vZGUtMjAyNi0wMi0wMVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtb3B1cy00LTFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC0xXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjEgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAzLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjozMjAwMH0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS41LFwiY2FjaGVfd3JpdGVcIjoxOC43NX19LFwiY2xhdWRlLWZhYmxlLTVcIjp7XCJpZFwiOlwiY2xhdWRlLWZhYmxlLTVcIixcIm5hbWVcIjpcIkNsYXVkZSBGYWJsZSA1XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2xhdWRlIG1vZGVsIGZvciBjcmVhdGl2ZSB3cml0aW5nLCBhbmFseXNpcywgYW5kIGNvbnRyb2xsZWQgYWdlbnQgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1mYWJsZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19LFwiY2xhdWRlLWhhaWt1LTQtNVwiOntcImlkXCI6XCJjbGF1ZGUtaGFpa3UtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgSGFpa3UgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBDbGF1ZGUgbGFuZSBmb3IgbGlnaHR3ZWlnaHQgYWdlbnRzLCBvZmZpY2UgdGFza3MsIGFuZCByZXNwb25zaXZlIGNoYXRcIixcImZhbWlseVwiOlwiY2xhdWRlLWhhaWt1XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAyLTI4XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTAtMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMC0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjEsXCJjYWNoZV93cml0ZVwiOjEuMjV9fSxcImNsYXVkZS1vcHVzLTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTZcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZW5kIENsYXVkZSBmb3IgZGlmZmljdWx0IGNvZGluZywgcGxhbm5pbmcsIGFuZCBzbG93ZXIgZXhwZXJ0IHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNlwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjZcIixcImRlc2NyaXB0aW9uXCI6XCJDbGF1ZGUgd29ya2hvcnNlIGZvciBjb2RpbmcgYWdlbnRzLCBjYXJlZnVsIGFuYWx5c2lzLCBhbmQgcHJvZHVjdGlvbiBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fX19LFwib3BlbmFpXCI6e1wibW9kZWxzXCI6e1wibzNcIjp7XCJpZFwiOlwibzNcIixcIm5hbWVcIjpcIm8zXCIsXCJkZXNjcmlwdGlvblwiOlwiRGVsaWJlcmF0ZSBvLXNlcmllcyByZWFzb25lciBmb3IgaGFyZCBtYXRoLCBjb2RpbmcsIGFuZCBtdWx0aS1zdGVwIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MzA3Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEzLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuMi1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuMi1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjIgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVyLWFjY3VyYWN5IEdQVC01LjIgdmFyaWFudCBmb3IgdG91Z2hlciByZWFzb25pbmcgYW5kIHJldmlldyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyMSxcIm91dHB1dFwiOjE2OH19LFwiZ3B0LTUuNlwiOntcImlkXCI6XCJncHQtNS42XCIsXCJuYW1lXCI6XCJHUFQtNS42XCIsXCJkZXNjcmlwdGlvblwiOlwiRnJvbnRpZXIgR1BULTUuNiBtb2RlbCBmb3IgY29tcGxleCBwcm9mZXNzaW9uYWwgd29yaywgY29kaW5nLCBhbmQgYWdlbnRpYyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcImdwdC01XCI6e1wiaWRcIjpcImdwdC01XCIsXCJuYW1lXCI6XCJHUFQtNVwiLFwiZGVzY3JpcHRpb25cIjpcIk9yaWdpbmFsIEdQVC01IHdvcmtob3JzZSBmb3IgcmVhc29uaW5nLCBjb2RpbmcsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtMy41LXR1cmJvXCI6e1wiaWRcIjpcImdwdC0zLjUtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC0zLjUtdHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjEtMDktMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMy0wMy0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIzLTExLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjE2Mzg1LFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MH19LFwiZ3B0LTUtcHJvXCI6e1wiaWRcIjpcImdwdC01LXByb1wiLFwibmFtZVwiOlwiR1BULTUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVyLWFjY3VyYWN5IEdQVC01IHRpZXIgZm9yIHRvdWdoIGFuYWx5c2lzLCBjb2RpbmcgcmV2aWV3cywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0wNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjI3MjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjEyMH19LFwiZ3B0LTRvXCI6e1wiaWRcIjpcImdwdC00b1wiLFwibmFtZVwiOlwiR1BULTRvXCIsXCJkZXNjcmlwdGlvblwiOlwiT21uaS1lcmEgR1BUIGZvciBtdWx0aW1vZGFsIGNoYXQsIHByYWN0aWNhbCBjb2RpbmcsIGFuZCBnZW5lcmFsIGFzc2lzdGFudHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwiZ3B0LTRcIjp7XCJpZFwiOlwiZ3B0LTRcIixcIm5hbWVcIjpcIkdQVC00XCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjgxOTJ9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjo2MH19LFwibzQtbWluaVwiOntcImlkXCI6XCJvNC1taW5pXCIsXCJuYW1lXCI6XCJvNC1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBvLXNlcmllcyBtb2RlbCBmb3IgY29tcGFjdCByZWFzb25pbmcsIGNvZGluZywgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcIm8tbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4xLFwib3V0cHV0XCI6NC40LFwiY2FjaGVfcmVhZFwiOjAuMjc1fX0sXCJvMy1wcm9cIjp7XCJpZFwiOlwibzMtcHJvXCIsXCJuYW1lXCI6XCJvMy1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoLWVmZm9ydCBvMyB0aWVyIGZvciBkaWZmaWN1bHQgdGVjaG5pY2FsIHJlYXNvbmluZyBhbmQgY2FyZWZ1bCBhbnN3ZXJzXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTEwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyMCxcIm91dHB1dFwiOjgwfX0sXCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiOntcImlkXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwibmFtZVwiOlwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDUtMTNcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wNS0xMylcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA1LTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoxNX19LFwiZ3B0LTUuNC1uYW5vXCI6e1wiaWRcIjpcImdwdC01LjQtbmFub1wiLFwibmFtZVwiOlwiR1BULTUuNCBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hlYXBlc3QgR1BULTUuNCBsYW5lIGZvciBzaW1wbGUgcm91dGluZywgZXh0cmFjdGlvbiwgYW5kIGJ1bGsgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4yLFwib3V0cHV0XCI6MS4yNSxcImNhY2hlX3JlYWRcIjowLjAyfX0sXCJncHQtNS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUgQ2hhdCAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjEtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGV4IEdQVCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgY29kZSByZXZpZXcsIGFuZCBwcmFjdGljYWwgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY29kZXgtc3BhcmtcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleC1zcGFya1wiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleCBTcGFya1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleC1zcGFya1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjEwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LTUuMS1jb2RleC1tYXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleC1tYXhcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggTWF4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMyBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNG8tMjAyNC0wOC0wNlwiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wOC0wNlwiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA4LTA2KVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA4LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fSxcInRleHQtZW1iZWRkaW5nLWFkYS0wMDJcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjItMTJcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMi0xMi0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIyLTEyLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjB9fSxcIm8zLW1pbmlcIjp7XCJpZFwiOlwibzMtbWluaVwiLFwibmFtZVwiOlwibzMtbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsZXIgby1zZXJpZXMgcmVhc29uZXIgZm9yIGVjb25vbWljYWwgY29kaW5nLCBtYXRoLCBhbmQgcGxhbm5pbmcgdGFza3NcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTAxLTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC41NX19LFwiZ3B0LTUuMlwiOntcImlkXCI6XCJncHQtNS4yXCIsXCJuYW1lXCI6XCJHUFQtNS4yXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVsaWFibGUgR1BUIGdlbmVyYXRpb24gZm9yIGJyb2FkIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgcHJvZHVjdCB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4zLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjMtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjMgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLXNtYWxsXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjAyLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuNi1sdW5hXCI6e1wiaWRcIjpcImdwdC01LjYtbHVuYVwiLFwibmFtZVwiOlwiR1BULTUuNiBMdW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29zdC1lZmZpY2llbnQgR1BULTUuNiBtb2RlbCBmb3IgZmFzdCwgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo2LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MixcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4yLFwiY2FjaGVfd3JpdGVcIjoyLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX19fSxcImdwdC01LjEtY29kZXgtbWluaVwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LXJlYWx0aW1lLTIuMVwiOntcImlkXCI6XCJncHQtcmVhbHRpbWUtMi4xXCIsXCJuYW1lXCI6XCJHUFQtUmVhbHRpbWUtMi4xXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhbHRpbWUgc3BlZWNoLXRvLXNwZWVjaCBtb2RlbCB3aXRoIGNvbmZpZ3VyYWJsZSByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgcm9idXN0IHZvaWNlLWFnZW50IGJlaGF2aW9yXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImF1ZGlvXCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwiaW5wdXRcIjo5NjAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoyNCxcImNhY2hlX3JlYWRcIjowLjQsXCJpbnB1dF9hdWRpb1wiOjMyLFwib3V0cHV0X2F1ZGlvXCI6NjR9fSxcImdwdC01LjYtdGVycmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi10ZXJyYVwiLFwibmFtZVwiOlwiR1BULTUuNiBUZXJyYVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIEdQVC01LjYgbW9kZWwgZm9yIGNhcGFibGUsIGNvc3QtZWZmaWNpZW50IGV2ZXJ5ZGF5IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJjYWNoZV93cml0ZVwiOjMuMTI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fX0sXCJncHQtNS4xLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjEtY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjEgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BULTUuMSBmb3IgcG9saXNoZWQgYXNzaXN0YW50cywgd3JpdGluZywgYW5kIHByb2R1Y3QgY29udmVyc2F0aW9uc1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4yLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4yIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIjp7XCJpZFwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA2LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDYtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcImdwdC1pbWFnZS0xLjVcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTEuNVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTEuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNC4xLW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTQuMS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNC4xIG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJUaW55IEdQVC00LjEgb3B0aW9uIGZvciBjbGFzc2lmaWNhdGlvbiwgcm91dGluZywgYW5kIHZlcnkgaGlnaC12b2x1bWUgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LTRvLTIwMjQtMTEtMjBcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMTEtMjBcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0xMS0yMClcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJvMVwiOntcImlkXCI6XCJvMVwiLFwibmFtZVwiOlwibzFcIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjo3LjV9fSxcIm8xLXByb1wiOntcImlkXCI6XCJvMS1wcm9cIixcIm5hbWVcIjpcIm8xLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk8tc2VyaWVzIHJlYXNvbmluZyBtb2RlbCBmb3IgaGFyZCBhbmFseXNpcywgbWF0aCwgY29kaW5nLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDMtMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wMy0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1MCxcIm91dHB1dFwiOjYwMH19LFwiZ3B0LTUuNFwiOntcImlkXCI6XCJncHQtNS40XCIsXCJuYW1lXCI6XCJHUFQtNS40XCIsXCJkZXNjcmlwdGlvblwiOlwiQWdlbnQtcmVhZHkgR1BUIGZvciBjb2RpbmcgYW5kIGNvbXB1dGVyLXVzZSB3b3JrZmxvd3MgYXQgYSBsb3dlciBjb3N0XCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNX19fSxcImdwdC01LjQtbWluaVwiOntcImlkXCI6XCJncHQtNS40LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjQgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlN0cm9uZyBzbWFsbCBHUFQgZm9yIGNvZGluZyBzdWJhZ2VudHMsIHF1aWNrIHRvb2wgdXNlLCBhbmQgaGlnaC12b2x1bWUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6MC43NSxcIm91dHB1dFwiOjQuNSxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ3B0LTQuMVwiOntcImlkXCI6XCJncHQtNC4xXCIsXCJuYW1lXCI6XCJHUFQtNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiTG9uZy1saXZlZCBHUFQgd29ya2hvcnNlIGZvciBjb2RpbmcsIGluc3RydWN0aW9uIGZvbGxvd2luZywgYW5kIHByb2R1Y3Rpb24gYXBwc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJvMy1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcIm5hbWVcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0MCxcImNhY2hlX3JlYWRcIjoyLjV9fSxcImdwdC01LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUtbWluaVwiLFwibmFtZVwiOlwiR1BULTUgTWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIEdQVC01IGZvciByZXNwb25zaXZlIGFnZW50cywgY29kaW5nIGhlbHAsIGFuZCBldmVyeWRheSBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtaW1hZ2UtMVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTFcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuQUkgaW1hZ2UgbW9kZWwgZm9yIHByb2R1Y3Rpb24gZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBicmFuZC1zYWZlIHZpc3VhbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1taW5pXCI6e1wiaWRcIjpcImdwdC00LjEtbWluaVwiLFwibmFtZVwiOlwiR1BULTQuMSBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQWZmb3JkYWJsZSBHUFQtNC4xIGxhbmUgZm9yIGZhc3QgY29kaW5nIGhlbHAgYW5kIHN0cnVjdHVyZWQgZXh0cmFjdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDRcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjQsXCJvdXRwdXRcIjoxLjYsXCJjYWNoZV9yZWFkXCI6MC4xfX0sXCJncHQtNC10dXJib1wiOntcImlkXCI6XCJncHQtNC10dXJib1wiLFwibmFtZVwiOlwiR1BULTQgVHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTEyXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjMwfX0sXCJncHQtaW1hZ2UtMS1taW5pXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUtbmFub1wiOntcImlkXCI6XCJncHQtNS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNSBOYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNSBsYW5lIGZvciByb3V0aW5nLCBleHRyYWN0aW9uLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGJ1bGsgam9ic1wiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA1LFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDA1fX0sXCJncHQtNS40LXByb1wiOntcImlkXCI6XCJncHQtNS40LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNCBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJNb3JlIGV4YWN0IEdQVC01LjQgdGllciBmb3IgZGVtYW5kaW5nIHByb2Zlc3Npb25hbCByZWFzb25pbmcgYW5kIGFnZW50IHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwiZ3B0LTUuNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNS1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVzdC1hY2N1cmFjeSBHUFQtNS41IHRpZXIgZm9yIHNsb3dlciwgcHJlY2lzaW9uLWhlYXZ5IHJlYXNvbmluZyBhbmQgY29kaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC00by1taW5pXCI6e1wiaWRcIjpcImdwdC00by1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNG8gbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIG9tbmkgR1BUIGZvciBjaGVhcCBtdWx0aW1vZGFsIGFzc2lzdGFuY2UgYW5kIHByb2R1Y3Rpb24tc2NhbGUgdHJhZmZpY1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNy0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA3LTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowLjYsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC01LjYtc29sXCI6e1wiaWRcIjpcImdwdC01LjYtc29sXCIsXCJuYW1lXCI6XCJHUFQtNS42IFNvbFwiLFwiZGVzY3JpcHRpb25cIjpcIkZyb250aWVyIEdQVC01LjYgbW9kZWwgZm9yIGNvbXBsZXggcHJvZmVzc2lvbmFsIHdvcmssIGNvZGluZywgYW5kIGFnZW50aWMgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDItMTZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA3LTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjYwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9fX0sXCJncHQtNS1jb2RleFwiOntcImlkXCI6XCJncHQtNS1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUtQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMi1jb2RleFwiOntcImlkXCI6XCJncHQtNS4yLWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS4yIENvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kZS1zcGVjaWFsaXN0IEdQVCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGxvbmctcnVubmluZyBzb2Z0d2FyZSBhZ2VudHNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LWltYWdlLTJcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTJcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0yXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fSxcImdwdC01LjFcIjp7XCJpZFwiOlwiZ3B0LTUuMVwiLFwibmFtZVwiOlwiR1BULTUuMVwiLFwiZGVzY3JpcHRpb25cIjpcIlNoYXJwZXIgR1BULTUgZ2VuZXJhdGlvbiBmb3IgY29kaW5nLCBwcm9kdWN0IHdvcmssIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjVcIjp7XCJpZFwiOlwiZ3B0LTUuNVwiLFwibmFtZVwiOlwiR1BULTUuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkRlZmF1bHQgZnJvbnRpZXIgR1BUIGZvciBjb2RpbmcsIGNvbXB1dGVyIHVzZSwgcmVzZWFyY2gsIGFuZCBrbm93bGVkZ2Ugd29ya1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEyLjUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjI1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxfX19fX0sXCJ4YWlcIjp7XCJtb2RlbHNcIjp7XCJncm9rLTQuMjAtbXVsdGktYWdlbnQtMDMwOVwiOntcImlkXCI6XCJncm9rLTQuMjAtbXVsdGktYWdlbnQtMDMwOVwiLFwibmFtZVwiOlwiR3JvayA0LjIwIE11bHRpLUFnZW50XCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOmZhbHNlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1ub24tcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKE5vbi1SZWFzb25pbmcpXCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLTQuM1wiOntcImlkXCI6XCJncm9rLTQuM1wiLFwibmFtZVwiOlwiR3JvayA0LjNcIixcImRlc2NyaXB0aW9uXCI6XCJ4QUkncyBHcm9rIGZvciBjaGF0LCBjb2RpbmcsIGFnZW50aWMgdG9vbHMsIGFuZCBsb3dlciBoYWxsdWNpbmF0aW9uIHJpc2tcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2staW1hZ2luZS1pbWFnZS1xdWFsaXR5XCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZS1xdWFsaXR5XCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgSW1hZ2UgUXVhbGl0eVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiLFwicGRmXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODAwMCxcIm91dHB1dFwiOjB9fSxcImdyb2staW1hZ2luZS12aWRlb1wiOntcImlkXCI6XCJncm9rLWltYWdpbmUtdmlkZW9cIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBWaWRlb1wiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAxLTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDEtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widmlkZW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDI0LFwib3V0cHV0XCI6MH19LFwiZ3Jvay00LjVcIjp7XCJpZFwiOlwiZ3Jvay00LjVcIixcIm5hbWVcIjpcIkdyb2sgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwieEFJJ3MgbGF0ZXN0IEdyb2sgZm9yIGNoYXQsIGNvZGluZywgYWdlbnRpYyB0b29scywgYW5kIGxvd2VyIGhhbGx1Y2luYXRpb24gcmlza1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NTAwMDAwLFwib3V0cHV0XCI6NTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo2LFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjEsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MX19fSxcImdyb2stNC4yMC0wMzA5LXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCAoUmVhc29uaW5nKVwiLFwiZGVzY3JpcHRpb25cIjpcIlJlYXNvbmluZyBHcm9rIGZvciBkb2N1bWVudC1oZWF2eSBhbmFseXNpcyBhbmQgbG9uZy1ob3Jpem9uIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay1pbWFnaW5lLWltYWdlXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcImltYWdlXCIsXCJwZGZcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MDAwLFwib3V0cHV0XCI6MH19LFwiZ3Jvay1idWlsZC0wLjFcIjp7XCJpZFwiOlwiZ3Jvay1idWlsZC0wLjFcIixcIm5hbWVcIjpcIkdyb2sgQnVpbGQgMC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHcm9rIGNvZGluZyBtb2RlbCB0dW5lZCBmb3IgYWdlbnRpYyBlbmdpbmVlcmluZyBhbmQgaXRlcmF0aXZlIGVkaXRzXCIsXCJmYW1pbHlcIjpcImdyb2stYnVpbGRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjU2MDAwLFwib3V0cHV0XCI6MjU2MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6MixcIm91dHB1dFwiOjQsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjQsXCJjYWNoZV9yZWFkXCI6MC40fX19fX19IiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHNuYXBzaG90IGZyb20gJy4vY2F0YWxvZy1zbmFwc2hvdC5qc29uJyB3aXRoIHsgdHlwZTogJ2pzb24nIH1cblxuY29uc3QgQ0FUQUxPR19VUkwgPSAnaHR0cHM6Ly9tb2RlbHMuZGV2L2FwaS5qc29uJ1xuY29uc3QgU1VQUE9SVEVEID0gWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXVxuY29uc3QgVFRMID0gMjQgKiA2MCAqIDYwICogMTAwMFxuXG5mdW5jdGlvbiBjYWNoZUZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtb2RlbHMtY2FjaGUuanNvbicpXG59XG5cbmZ1bmN0aW9uIHN1YnNldChkYXRhKSB7XG4gIGNvbnN0IG91dCA9IHt9XG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgU1VQUE9SVEVEKSB7XG4gICAgaWYgKGRhdGFbcHJvdmlkZXJdPy5tb2RlbHMpIG91dFtwcm92aWRlcl0gPSB7IG1vZGVsczogZGF0YVtwcm92aWRlcl0ubW9kZWxzIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDYWNoZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoZXIoQ0FUQUxPR19VUkwpXG4gIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihgY2F0YWxvZyBmZXRjaCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gIGNvbnN0IHByb3ZpZGVycyA9IHN1YnNldChhd2FpdCByZXNwb25zZS5qc29uKCkpXG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlKCksIEpTT04uc3RyaW5naWZ5KHsgYXQ6IERhdGUubm93KCksIHByb3ZpZGVycyB9KSlcbiAgcmV0dXJuIHByb3ZpZGVyc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENhdGFsb2coeyBmZXRjaGVyID0gZmV0Y2ggfSA9IHt9KSB7XG4gIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHJlYWRDYWNoZSgpXG4gIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIGNhY2hlZC5wcm92aWRlcnNcbiAgcmVmcmVzaENhdGFsb2coeyBmZXRjaGVyIH0pLmNhdGNoKCgpID0+IHt9KVxuICByZXR1cm4gY2FjaGVkPy5wcm92aWRlcnMgfHwgc25hcHNob3Rcbn1cblxuY29uc3QgdGV4dE1vZGVsID0gKG0pID0+XG4gIG0udG9vbF9jYWxsID09PSB0cnVlICYmXG4gICghbS5tb2RhbGl0aWVzIHx8IChtLm1vZGFsaXRpZXMuaW5wdXQ/LmluY2x1ZGVzKCd0ZXh0JykgJiYgbS5tb2RhbGl0aWVzLm91dHB1dD8uaW5jbHVkZXMoJ3RleHQnKSkpXG5cbmNvbnN0IGRhdGVkRHVwbGljYXRlID0gKGlkKSA9PiAvLVxcZHs4fSQvLnRlc3QoaWQpXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TW9kZWxzKHByb3ZpZGVycywgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3Qgb3JkZXIgPSBTVVBQT1JURUQuZmlsdGVyKChwKSA9PiBwcm92aWRlcklkcy5pbmNsdWRlcyhwKSlcbiAgY29uc3QgbW9kZWxzID0gW11cbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBvcmRlcikge1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhwcm92aWRlcnNbcHJvdmlkZXJdPy5tb2RlbHMgfHwge30pXG4gICAgICAuZmlsdGVyKChbaWQsIG1dKSA9PiB0ZXh0TW9kZWwobSkgJiYgIWRhdGVkRHVwbGljYXRlKGlkKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBTdHJpbmcoYlsxXS5yZWxlYXNlX2RhdGUgfHwgJycpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGFbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKSkpXG4gICAgZm9yIChjb25zdCBbaWQsIG1dIG9mIGVudHJpZXMpIHtcbiAgICAgIG1vZGVscy5wdXNoKHtcbiAgICAgICAgbmFtZTogYCR7cHJvdmlkZXJ9LyR7aWR9YCxcbiAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgIGRlc2M6IG0uZGVzY3JpcHRpb24gfHwgbS5uYW1lIHx8IGlkLFxuICAgICAgICBwcmljZTogbS5jb3N0ICYmIG0uY29zdC5pbnB1dCAhPSBudWxsID8geyBpbjogbS5jb3N0LmlucHV0LCBvdXQ6IG0uY29zdC5vdXRwdXQgfSA6IG51bGwsXG4gICAgICAgIGVmZm9ydDogISFtLnJlYXNvbmluZyxcbiAgICAgICAgLy8gdGhlIG1lYXN1cmVkIGZpbGwgbnVtYmVyIGlzIGlucHV0IHRva2Vucywgc28gcHJlZmVyIHRoZSBpbnB1dCBsaW1pdFxuICAgICAgICAvLyBhcyB0aGUgZGVub21pbmF0b3Igd2hlcmUgdGhlIHByb3ZpZGVyIGRpc3Rpbmd1aXNoZXMgaXRcbiAgICAgICAgY29udGV4dDogbS5saW1pdD8uaW5wdXQgfHwgbS5saW1pdD8uY29udGV4dCB8fCBudWxsLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGVsc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRob2NNb2RlbChuYW1lLCBwcm92aWRlcklkcykge1xuICBjb25zdCBtYXRjaCA9IG5hbWUubWF0Y2goL14oW2EtejAtOS1dKylcXC8oLispJC8pXG4gIGlmICghbWF0Y2ggfHwgIXByb3ZpZGVySWRzLmluY2x1ZGVzKG1hdGNoWzFdKSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHByb3ZpZGVyOiBtYXRjaFsxXSxcbiAgICBkZXNjOiAnbm90IGluIGNhdGFsb2cnLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogZmFsc2UsXG4gICAgY29udGV4dDogbnVsbCxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG4vLyB0aGUgYmFja2VuZCBoaWRlcyBtb2RlbHMgZnJvbSBjbGllbnRzIGJlbG93IGEgdmVyc2lvbiBmbG9vciwgc28gc2VuZCBhXG4vLyB2ZXJzaW9uIGNvbWZvcnRhYmx5IGFib3ZlIGl0XG5jb25zdCBNT0RFTFNfVVJMID0gJ2h0dHBzOi8vY2hhdGdwdC5jb20vYmFja2VuZC1hcGkvY29kZXgvbW9kZWxzP2NsaWVudF92ZXJzaW9uPTIuMC4wJ1xuY29uc3QgVFRMID0gMjQgKiA2MCAqIDYwICogMTAwMFxuXG5mdW5jdGlvbiBjYWNoZUZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb2RleC1tb2RlbHMtY2FjaGUuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBDb2RleE1vZGVscyhlbnRyaWVzKSB7XG4gIHJldHVybiBlbnRyaWVzLm1hcCgobSkgPT4gKHtcbiAgICBuYW1lOiBgY29kZXgvJHttLnNsdWd9YCxcbiAgICBwcm92aWRlcjogJ2NvZGV4JyxcbiAgICBkZXNjOiBgJHttLmRlc2NyaXB0aW9uIHx8IG0ubGFiZWwgfHwgbS5zbHVnfSBcdTAwQjcgdmlhIENoYXRHUFQgcGxhbmAsXG4gICAgcHJpY2U6IG51bGwsXG4gICAgZWZmb3J0OiB0cnVlLFxuICAgIGNvbnRleHQ6IG0uY29udGV4dF93aW5kb3cgfHwgbnVsbCxcbiAgfSkpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29kZXhNb2RlbHMoY3JlZGVudGlhbHMpIHtcbiAgbGV0IGNhY2hlZCA9IG51bGxcbiAgdHJ5IHtcbiAgICBjYWNoZWQgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGNhY2hlRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7fVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQubW9kZWxzKVxuICBpZiAoIWNyZWRlbnRpYWxzKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkPy5tb2RlbHMgfHwgW10pXG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKE1PREVMU19VUkwsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NyZWRlbnRpYWxzLmFwaUtleX1gLFxuICAgICAgICAuLi5jcmVkZW50aWFscy5oZWFkZXJzLFxuICAgICAgICBvcmlnaW5hdG9yOiAnY29kZXhfY2xpX3JzJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKHJlc3BvbnNlLnN0YXR1cykpXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIGNvbnN0IG1vZGVscyA9IChkYXRhLm1vZGVscyB8fCBbXSkubWFwKChtKSA9PiAoe1xuICAgICAgc2x1ZzogbS5zbHVnLFxuICAgICAgZGVzY3JpcHRpb246IG0uZGVzY3JpcHRpb24sXG4gICAgICBsYWJlbDogbS5sYWJlbCB8fCBtLmRpc3BsYXlfbmFtZSxcbiAgICAgIGNvbnRleHRfd2luZG93OiBtLmNvbnRleHRfd2luZG93IHx8IG0ubWF4X2NvbnRleHRfd2luZG93IHx8IG51bGwsXG4gICAgfSkpXG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcignZW1wdHkgbW9kZWwgbGlzdCcpXG4gICAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gICAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBtb2RlbHMgfSkpXG4gICAgcmV0dXJuIG1hcENvZGV4TW9kZWxzKG1vZGVscylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2VydmVyIH0gZnJvbSAnbm9kZTpodHRwJ1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0bydcbmltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgY2htb2QgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBDTElFTlRfSUQgPSAnYXBwX0VNb2FtRUVaNzNmMENrWGFYcDdocmFubidcbmNvbnN0IEFVVEhfVVJMID0gJ2h0dHBzOi8vYXV0aC5vcGVuYWkuY29tL29hdXRoL2F1dGhvcml6ZSdcbmNvbnN0IFRPS0VOX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC90b2tlbidcbmNvbnN0IFJFRElSRUNUX1BPUlQgPSAxNDU1XG5jb25zdCBSRURJUkVDVF9VUkkgPSBgaHR0cDovL2xvY2FsaG9zdDoke1JFRElSRUNUX1BPUlR9L2F1dGgvY2FsbGJhY2tgXG5jb25zdCBTQ09QRSA9ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcydcbmNvbnN0IFJFRlJFU0hfU0tFV19NUyA9IDUgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gYXV0aEZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdhdXRoLmpzb24nKVxufVxuXG5mdW5jdGlvbiBiYXNlNjR1cmwoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcKy9nLCAnLScpLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoLz0rJC8sICcnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlSnd0Q2xhaW1zKHRva2VuKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRva2VuLnNwbGl0KCcuJylbMV1cbiAgICByZXR1cm4gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShwYXlsb2FkLCAnYmFzZTY0dXJsJykudG9TdHJpbmcoJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY2NvdW50SWRGcm9tQ2xhaW1zKGNsYWltcykge1xuICByZXR1cm4gY2xhaW1zWydodHRwczovL2FwaS5vcGVuYWkuY29tL2F1dGgnXT8uY2hhdGdwdF9hY2NvdW50X2lkIHx8IGNsYWltcy5jaGF0Z3B0X2FjY291bnRfaWQgfHwgbnVsbFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQXV0aCgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShhdXRoRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVBdXRoKGF1dGgpIHtcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShhdXRoRmlsZSgpLCBKU09OLnN0cmluZ2lmeShhdXRoLCBudWxsLCAyKSArICdcXG4nKVxuICBhd2FpdCBjaG1vZChhdXRoRmlsZSgpLCAwbzYwMClcbn1cblxuYXN5bmMgZnVuY3Rpb24gdG9rZW5SZXF1ZXN0KHBhcmFtcykge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFRPS0VOX1VSTCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgYm9keTogbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCksXG4gIH0pXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRva2VuIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c30gJHthd2FpdCByZXNwb25zZS50ZXh0KCl9YClcbiAgfVxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmZ1bmN0aW9uIHN0b3JlVG9rZW5zKGF1dGgsIHRva2Vucykge1xuICBjb25zdCBjbGFpbXMgPSB0b2tlbnMuaWRfdG9rZW4gPyBkZWNvZGVKd3RDbGFpbXModG9rZW5zLmlkX3Rva2VuKSA6IHt9XG4gIGF1dGgub3BlbmFpID0ge1xuICAgIGFjY2Vzc190b2tlbjogdG9rZW5zLmFjY2Vzc190b2tlbixcbiAgICByZWZyZXNoX3Rva2VuOiB0b2tlbnMucmVmcmVzaF90b2tlbiB8fCBhdXRoLm9wZW5haT8ucmVmcmVzaF90b2tlbixcbiAgICBpZF90b2tlbjogdG9rZW5zLmlkX3Rva2VuIHx8IGF1dGgub3BlbmFpPy5pZF90b2tlbixcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50SWRGcm9tQ2xhaW1zKGNsYWltcykgfHwgYXV0aC5vcGVuYWk/LmFjY291bnRfaWQgfHwgbnVsbCxcbiAgICBlbWFpbDogY2xhaW1zLmVtYWlsIHx8IGF1dGgub3BlbmFpPy5lbWFpbCB8fCBudWxsLFxuICAgIGV4cGlyZXNfYXQ6IERhdGUubm93KCkgKyAodG9rZW5zLmV4cGlyZXNfaW4gfHwgMzYwMCkgKiAxMDAwLFxuICB9XG4gIHJldHVybiBhdXRoXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0T3BlbkFJKHsgb3BlbkJyb3dzZXIgPSB0cnVlLCB0aW1lb3V0TXMgPSA1ICogNjAgKiAxMDAwLCBvblVybCA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCB2ZXJpZmllciA9IGJhc2U2NHVybChyYW5kb21CeXRlcyg2NCkpXG4gIGNvbnN0IGNoYWxsZW5nZSA9IGJhc2U2NHVybChjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmVyaWZpZXIpLmRpZ2VzdCgpKVxuICBjb25zdCBzdGF0ZSA9IGJhc2U2NHVybChyYW5kb21CeXRlcygyNCkpXG5cbiAgY29uc3QgdXJsID0gYCR7QVVUSF9VUkx9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgIHJlZGlyZWN0X3VyaTogUkVESVJFQ1RfVVJJLFxuICAgIHNjb3BlOiBTQ09QRSxcbiAgICBjb2RlX2NoYWxsZW5nZTogY2hhbGxlbmdlLFxuICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuICAgIHN0YXRlLFxuICAgIHByb21wdDogJ2xvZ2luJyxcbiAgICBpZF90b2tlbl9hZGRfb3JnYW5pemF0aW9uczogJ3RydWUnLFxuICAgIGNvZGV4X2NsaV9zaW1wbGlmaWVkX2Zsb3c6ICd0cnVlJyxcbiAgICBvcmlnaW5hdG9yOiAnY29kZXhfY2xpX3JzJyxcbiAgfSkudG9TdHJpbmcoKX1gXG5cbiAgY29uc3QgY29kZSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIoKHJlcSwgcmVzKSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0VXJsID0gbmV3IFVSTChyZXEudXJsLCBgaHR0cDovL2xvY2FsaG9zdDoke1JFRElSRUNUX1BPUlR9YClcbiAgICAgIGlmIChyZXF1ZXN0VXJsLnBhdGhuYW1lICE9PSAnL2F1dGgvY2FsbGJhY2snKSB7XG4gICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KS5lbmQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGdvdFN0YXRlID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdzdGF0ZScpXG4gICAgICBjb25zdCBnb3RDb2RlID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdjb2RlJylcbiAgICAgIGNvbnN0IGdvdEVycm9yID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdlcnJvcicpXG4gICAgICByZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSlcbiAgICAgIHJlcy5lbmQoXG4gICAgICAgIGdvdENvZGUgJiYgZ290U3RhdGUgPT09IHN0YXRlXG4gICAgICAgICAgPyAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ25lZCBpbiAtIHlvdSBjYW4gcmV0dXJuIHRvIHBpY288L2JvZHk+PC9odG1sPidcbiAgICAgICAgICA6ICc8aHRtbD48Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBwYWRkaW5nOiAycmVtXCI+c2lnbi1pbiBmYWlsZWQgLSByZXR1cm4gdG8gcGljbyBhbmQgdHJ5IGFnYWluPC9ib2R5PjwvaHRtbD4nLFxuICAgICAgKVxuICAgICAgY2xlYW51cCgpXG4gICAgICBpZiAoZ290RXJyb3IpIHJlamVjdChuZXcgRXJyb3IoYGF1dGhvcml6YXRpb24gZmFpbGVkOiAke2dvdEVycm9yfWApKVxuICAgICAgZWxzZSBpZiAoIWdvdENvZGUgfHwgZ290U3RhdGUgIT09IHN0YXRlKSByZWplY3QobmV3IEVycm9yKCdhdXRob3JpemF0aW9uIGZhaWxlZDogbWlzc2luZyBjb2RlIG9yIHN0YXRlIG1pc21hdGNoJykpXG4gICAgICBlbHNlIHJlc29sdmUoZ290Q29kZSlcbiAgICB9KVxuXG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KG5ldyBFcnJvcignc2lnbi1pbiB0aW1lZCBvdXQnKSlcbiAgICB9LCB0aW1lb3V0TXMpXG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgc2VydmVyLmNsb3NlKClcbiAgICB9XG5cbiAgICBzZXJ2ZXIub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY2xlYW51cCgpXG4gICAgICByZWplY3QoZXJyLmNvZGUgPT09ICdFQUREUklOVVNFJyA/IG5ldyBFcnJvcihgcG9ydCAke1JFRElSRUNUX1BPUlR9IGlzIGluIHVzZSAoaXMgYW5vdGhlciBzaWduLWluIG9yIGNvZGV4IHJ1bm5pbmc/KWApIDogZXJyKVxuICAgIH0pXG4gICAgc2VydmVyLmxpc3RlbihSRURJUkVDVF9QT1JULCAnMTI3LjAuMC4xJywgKCkgPT4ge1xuICAgICAgb25VcmwodXJsKVxuICAgICAgaWYgKG9wZW5Ccm93c2VyKSBleGVjRmlsZSgnb3BlbicsIFt1cmxdLCAoKSA9PiB7fSlcbiAgICB9KVxuICB9KVxuXG4gIGNvbnN0IHRva2VucyA9IGF3YWl0IHRva2VuUmVxdWVzdCh7XG4gICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG4gICAgY29kZSxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICBjb2RlX3ZlcmlmaWVyOiB2ZXJpZmllcixcbiAgfSlcblxuICBjb25zdCBhdXRoID0gc3RvcmVUb2tlbnMoYXdhaXQgcmVhZEF1dGgoKSwgdG9rZW5zKVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbiAgcmV0dXJuIHsgZW1haWw6IGF1dGgub3BlbmFpLmVtYWlsLCBhY2NvdW50SWQ6IGF1dGgub3BlbmFpLmFjY291bnRfaWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbmFpQ3JlZGVudGlhbHMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGNvbnN0IHN0b3JlZCA9IGF1dGgub3BlbmFpXG4gIGlmICghc3RvcmVkPy5hY2Nlc3NfdG9rZW4pIHJldHVybiBudWxsXG5cbiAgaWYgKERhdGUubm93KCkgPiAoc3RvcmVkLmV4cGlyZXNfYXQgfHwgMCkgLSBSRUZSRVNIX1NLRVdfTVMpIHtcbiAgICBpZiAoIXN0b3JlZC5yZWZyZXNoX3Rva2VuKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IHRva2VuUmVxdWVzdCh7XG4gICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdG9yZWQucmVmcmVzaF90b2tlbixcbiAgICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCcsXG4gICAgfSlcbiAgICBjb25zdCByZWZyZXNoZWQgPSBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpXG4gICAgYXdhaXQgd3JpdGVBdXRoKHJlZnJlc2hlZClcbiAgICByZXR1cm4gY3JlZGVudGlhbHNGcm9tKHJlZnJlc2hlZC5vcGVuYWkpXG4gIH1cbiAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShzdG9yZWQpXG59XG5cbmZ1bmN0aW9uIGNyZWRlbnRpYWxzRnJvbShzdG9yZWQpIHtcbiAgcmV0dXJuIHtcbiAgICBhcGlLZXk6IHN0b3JlZC5hY2Nlc3NfdG9rZW4sXG4gICAgaGVhZGVyczogc3RvcmVkLmFjY291bnRfaWQgPyB7ICdjaGF0Z3B0LWFjY291bnQtaWQnOiBzdG9yZWQuYWNjb3VudF9pZCB9IDoge30sXG4gICAgZW1haWw6IHN0b3JlZC5lbWFpbCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbmFpQ29ubmVjdGVkKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICByZXR1cm4gISEoYXV0aC5vcGVuYWk/LmFjY2Vzc190b2tlbiAmJiBhdXRoLm9wZW5haT8ucmVmcmVzaF90b2tlbilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haVN0YXR1cygpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0ZWQ6ICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pLFxuICAgIGVtYWlsOiBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdE9wZW5BSSgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgZGVsZXRlIGF1dGgub3BlbmFpXG4gIGF3YWl0IHdyaXRlQXV0aChhdXRoKVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5mdW5jdGlvbiBjb25maWdGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29uZmlnLmpzb24nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZygpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjb25maWdGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDb25maWcocGF0Y2gpIHtcbiAgY29uc3QgY29uZmlnID0geyAuLi4oYXdhaXQgcmVhZENvbmZpZygpKSwgLi4ucGF0Y2ggfVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNvbmZpZ0ZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSArICdcXG4nKVxuICByZXR1cm4gY29uZmlnXG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdsb2JhbEFnZW50c0ZpbGUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5mdW5jdGlvbiByZWFkSWZFeGlzdHMocGF0aCkge1xuICB0cnkge1xuICAgIHJldHVybiBleGlzdHNTeW5jKHBhdGgpID8gcmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250ZXh0U3RvcERpcihjd2QpIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICcuZ2l0JykpIHx8IGRpciA9PT0gaG9tZSkgcmV0dXJuIGRpclxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgcmV0dXJuIHJlc29sdmUoY3dkKVxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmZ1bmN0aW9uIGFuY2VzdG9yRGlycyhjd2QsIHN0b3BEaXIpIHtcbiAgY29uc3QgZGlycyA9IFtdXG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBkaXJzLnVuc2hpZnQoZGlyKVxuICAgIGlmIChkaXIgPT09IHN0b3BEaXIpIGJyZWFrXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSBicmVha1xuICAgIGRpciA9IHBhcmVudFxuICB9XG4gIHJldHVybiBkaXJzXG59XG5cbi8vIEFHRU5UUy5tZCBpcyBjYW5vbmljYWw7IENMQVVERS5tZCBpcyBob25vcmVkIHBlciBkaXJlY3Rvcnkgb25seSB3aGVuIG5vXG4vLyBBR0VOVFMubWQgZXhpc3RzIHRoZXJlLCBzbyByZXBvcyBkb2N1bWVudGVkIGZvciBvdGhlciBhZ2VudHMgc3RpbGwgd29yay5cbi8vIHRoZSBmYWxsYmFjayBuZXZlciBhcHBsaWVzIHRvIHRoZSBnbG9iYWwgZmlsZTogdGhhdCBpcyB+Ly5waWNvL0FHRU5UUy5tZFxuLy8gYWxvbmUsIGFuZCBwZXJzb25hbCBmaWxlcyBsaWtlIH4vLmNsYXVkZS9DTEFVREUubWQgYXJlIGFub3RoZXIgdG9vbCdzXG5mdW5jdGlvbiByZWFkRGlyQ29udGV4dChkaXIpIHtcbiAgY29uc3QgYWdlbnRzID0gam9pbihkaXIsICdBR0VOVFMubWQnKVxuICBjb25zdCBhZ2VudHNDb250ZW50ID0gcmVhZElmRXhpc3RzKGFnZW50cylcbiAgaWYgKGFnZW50c0NvbnRlbnQpIHJldHVybiB7IHBhdGg6IGFnZW50cywgY29udGVudDogYWdlbnRzQ29udGVudCB9XG4gIGNvbnN0IGNsYXVkZSA9IGpvaW4oZGlyLCAnQ0xBVURFLm1kJylcbiAgY29uc3QgY2xhdWRlQ29udGVudCA9IHJlYWRJZkV4aXN0cyhjbGF1ZGUpXG4gIGlmIChjbGF1ZGVDb250ZW50KSByZXR1cm4geyBwYXRoOiBjbGF1ZGUsIGNvbnRlbnQ6IGNsYXVkZUNvbnRlbnQgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZCkge1xuICBjb25zdCBzdG9wRGlyID0gY29udGV4dFN0b3BEaXIoY3dkKVxuICBjb25zdCBmaWxlcyA9IFtdXG4gIGNvbnN0IGdsb2JhbENvbnRlbnQgPSByZWFkSWZFeGlzdHMoZ2xvYmFsQWdlbnRzRmlsZSgpKVxuICBpZiAoZ2xvYmFsQ29udGVudCkgZmlsZXMucHVzaCh7IHBhdGg6IGdsb2JhbEFnZW50c0ZpbGUoKSwgY29udGVudDogZ2xvYmFsQ29udGVudCB9KVxuICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSkge1xuICAgIGNvbnN0IGVudHJ5ID0gcmVhZERpckNvbnRleHQoZGlyKVxuICAgIGlmIChlbnRyeSkgZmlsZXMucHVzaChlbnRyeSlcbiAgfVxuICByZXR1cm4geyBmaWxlcywgc3RvcERpciB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0VHJhY2tlcih7IHN0b3BEaXIsIGxvYWRlZCB9KSB7XG4gIHJldHVybiB7XG4gICAgbG9hZGVkLFxuICAgIGNoZWNrKGZpbGVQYXRoKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBkaXJuYW1lKHJlc29sdmUoZmlsZVBhdGgpKVxuICAgICAgaWYgKCF0YXJnZXQuc3RhcnRzV2l0aChzdG9wRGlyKSkgcmV0dXJuIFtdXG4gICAgICBjb25zdCBmcmVzaCA9IFtdXG4gICAgICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnModGFyZ2V0LCBzdG9wRGlyKSkge1xuICAgICAgICBpZiAobG9hZGVkLmhhcyhqb2luKGRpciwgJ0FHRU5UUy5tZCcpKSB8fCBsb2FkZWQuaGFzKGpvaW4oZGlyLCAnQ0xBVURFLm1kJykpKSBjb250aW51ZVxuICAgICAgICBjb25zdCBlbnRyeSA9IHJlYWREaXJDb250ZXh0KGRpcilcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgbG9hZGVkLmFkZChlbnRyeS5wYXRoKVxuICAgICAgICAgIGZyZXNoLnB1c2goZW50cnkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmcmVzaFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZ2xvYmFsU2tpbGxzRGlyLCBwcm9qZWN0U2tpbGxzRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXIodGV4dCkge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS1cXG4/LylcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgbWV0YToge30sIGJvZHk6IHRleHQgfVxuICBjb25zdCBtZXRhID0ge31cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hdGNoWzFdLnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHNlcCA9IGxpbmUuaW5kZXhPZignOicpXG4gICAgaWYgKHNlcCA9PT0gLTEpIGNvbnRpbnVlXG4gICAgbWV0YVtsaW5lLnNsaWNlKDAsIHNlcCkudHJpbSgpXSA9IGxpbmUuc2xpY2Uoc2VwICsgMSkudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHsgbWV0YSwgYm9keTogdGV4dC5zbGljZShtYXRjaFswXS5sZW5ndGgpIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBza2lsbHMgPSBbXVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIG5hbWVzKSB7XG4gICAgaWYgKCFlbnRyeS5pc0RpcmVjdG9yeSgpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgZW50cnkubmFtZSwgJ1NLSUxMLm1kJylcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgICAgc2tpbGxzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZW50cnkubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBza2lsbHNcbn1cblxuY29uc3QgQVNLX1JVTEUgPSBgQmVmb3JlIHdyaXRpbmcgYW55dGhpbmcsIHJlc29sdmUgYW1iaWd1aXR5OlxuLSBJZiB0aGUgdXNlciBkaWQgbm90IHNheSBnbG9iYWwgb3IgcHJvamVjdCwgYXNrIGV4YWN0bHkgb25lIHF1ZXN0aW9uOiBcImdsb2JhbCAoYXZhaWxhYmxlIGV2ZXJ5d2hlcmUpIG9yIGp1c3QgdGhpcyBwcm9qZWN0P1wiIERvIG5vdCBndWVzcyBzaWxlbnRseS5cbi0gSWYgdGhlIGJlaGF2aW9yIG9yIG91dHB1dCBpcyB1bmRlcnNwZWNpZmllZCwgc3RhdGUgdGhlIGFzc3VtcHRpb25zIHlvdSBhcmUgbWFraW5nIGluIG9uZSBzaG9ydCBsaW5lIGJlZm9yZSBwcm9jZWVkaW5nLCBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCB5b3UuYFxuXG5jb25zdCBORVdfVE9PTF9TS0lMTCA9IGBDcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBwaWNvIHRvb2wgaXMgYW4gRVMgbW9kdWxlIHdob3NlIGRlZmF1bHQgZXhwb3J0IGlzIGVpdGhlciBhIHRvb2wgb2JqZWN0IG9yIGEgZmFjdG9yeVxuXFxgKGNvbnRleHQpID0+IHRvb2xcXGAgd2hlcmUgY29udGV4dCBpcyBcXGB7IGN3ZCwgcm9vdCB9XFxgLiBUaGUgdG9vbCBvYmplY3Qgc2hhcGU6XG5cblxcYFxcYFxcYGpzXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICd3b3JkX2NvdW50JyxcbiAgZGVzY3JpcHRpb246ICdDb3VudCB3b3JkcywgbGluZXMsIGFuZCBjaGFyYWN0ZXJzIGluIGEgZmlsZScsXG4gIHNjaGVtYToge1xuICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeScgfSxcbiAgICB3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnaW5jbHVkZSB3b3JkIGNvdW50Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgfSxcbiAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgd29yZHMgPSB0cnVlIH0pID0+IHtcbiAgICAvLyByZXR1cm4gYW55IEpTT04tc2VyaWFsaXphYmxlIHZhbHVlOyB0aHJvdyBhbiBFcnJvciB0byByZXBvcnQgZmFpbHVyZVxuICAgIHJldHVybiB7IHBhdGgsIHdvcmRzOiA0MiB9XG4gIH0sXG59XG5cXGBcXGBcXGBcblxuU2NoZW1hIHByb3BlcnRpZXMgc3VwcG9ydDogdHlwZSAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIGFycmF5LCBvYmplY3QpLCBkZXNjcmlwdGlvbixcbm9wdGlvbmFsLCBlbnVtIChzdHJpbmcgdmFsdWVzKSwgaXRlbXMgKGZvciBhcnJheXMpLCBwcm9wZXJ0aWVzIChmb3IgbmVzdGVkIG9iamVjdHMpLlxuXG5Mb2NhdGlvbnM6IFxcYC5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBpbiB0aGUgcHJvamVjdCByb290IGZvciBwcm9qZWN0IHRvb2xzLFxuXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgZm9yIHRvb2xzIGF2YWlsYWJsZSBldmVyeXdoZXJlLiBEZWZhdWx0IHRvIHRoZSBwcm9qZWN0IHVubGVzc1xudGhlIHVzZXIgYXNrcyBmb3IgYSBnbG9iYWwgdG9vbC4gTm9kZSBidWlsdGlucyBjYW4gYmUgaW1wb3J0ZWQ7IG5wbSBwYWNrYWdlcyBjYW5ub3QgYmVcbmFzc3VtZWQuIFRvb2xzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgb3IgZWRpdGVkIHRvb2wgaXMgdXNhYmxlIG9uIHRoZSBuZXh0XG5tZXNzYWdlIHdpdGggbm8gcmVzdGFydC5cblxuU3RlcHM6XG4xLiBEZWNpZGUgdGhlIHRvb2wgbmFtZSAoc25ha2VfY2FzZSksIGlucHV0cywgYW5kIG91dHB1dCBzaGFwZSBmcm9tIHRoZSB1c2VyJ3MgcmVxdWVzdC5cbjIuIFdyaXRlIHRoZSBtb2R1bGUgdG8gdGhlIHJpZ2h0IGxvY2F0aW9uIHdpdGggdGhlIHdyaXRlIHRvb2wuXG4zLiBTYW5pdHktY2hlY2sgaXQgbG9hZHM6IFxcYG5vZGUgLS1pbnB1dC10eXBlPW1vZHVsZSAtZSBcImNvbnN0IHQgPSAoYXdhaXQgaW1wb3J0KCdmaWxlOi8vPGFicyBwYXRoPicpKS5kZWZhdWx0OyBjb25zb2xlLmxvZyh0Lm5hbWUpXCJcXGAgKGFkanVzdCBpZiB0aGUgZXhwb3J0IGlzIGEgZmFjdG9yeSkuXG40LiBUZWxsIHRoZSB1c2VyIHRoZSB0b29sIGlzIHJlYWR5IGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBmcm9tIHRoZWlyIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19TS0lMTF9TS0lMTCA9IGBDcmVhdGUgYSBwaWNvIHNraWxsIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBza2lsbCBpcyBhIG1hcmtkb3duIGZpbGUgYXQgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAoZ2xvYmFsKSB3aXRoIGZyb250bWF0dGVyIGFuZCBhbiBpbnN0cnVjdGlvbiBib2R5OlxuXG5cXGBcXGBcXGBcbi0tLVxubmFtZTogcmVsZWFzZS1ub3Rlc1xuZGVzY3JpcHRpb246IGRyYWZ0IHJlbGVhc2Ugbm90ZXMgZnJvbSBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZ1xuLS0tXG5JbnN0cnVjdGlvbnMgdGhlIGFnZW50IGZvbGxvd3Mgd2hlbiB0aGlzIHNraWxsIGlzIGxvYWRlZC4gQmUgaW1wZXJhdGl2ZSBhbmQgc3BlY2lmaWMuXG5cXGBcXGBcXGBcblxuVGhlIGRlc2NyaXB0aW9uIG1hdHRlcnMgbW9zdDogaXQgaXMgbGlzdGVkIGluIHRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQsIGFuZCB0aGUgYWdlbnRcbmRlY2lkZXMgZnJvbSBpdCB3aGVuIHRvIGxvYWQgdGhlIHNraWxsIG9uIGl0cyBvd24uIFdyaXRlIGl0IGFzIGEgdHJpZ2dlciBjb25kaXRpb25cbihcIndoZW4gdGhlIHVzZXIgYXNrcyBmb3IgWFwiKSwgbm90IG1hcmtldGluZy4gVGhlIGJvZHkgaXMgb25seSBsb2FkZWQgb24gaW52b2NhdGlvbiwgc29cbml0IGNhbiBiZSBsb25nIGFuZCBkZXRhaWxlZC4gU3VwcG9ydGluZyBmaWxlcyBtYXkgc2l0IG5leHQgdG8gU0tJTEwubWQgaW4gdGhlIHNhbWVcbmRpcmVjdG9yeSBhbmQgYmUgcmVmZXJlbmNlZCBieSByZWxhdGl2ZSBwYXRoLlxuXG5Ta2lsbHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ldyBza2lsbCBpcyB1c2FibGUgZnJvbSB0aGUgbmV4dCBtZXNzYWdlLmBcblxuY29uc3QgTkVXX0NPTU1BTkRfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBjb21tYW5kIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBjb21tYW5kIGlzIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSBVU0VSIGludm9rZXMgYXMgXFxgLzxuYW1lPiBbYXJnc11cXGAuIFRoZSBhZ2VudCBuZXZlclxuc2VlcyBjb21tYW5kcyB1bnRpbCBvbmUgaXMgcnVuLCBzbyB1c2UgYSBjb21tYW5kIGZvciB1c2VyLXRyaWdnZXJlZCBtYWNyb3MgYW5kIGEgc2tpbGxcbmZvciBjYXBhYmlsaXRpZXMgdGhlIGFnZW50IHNob3VsZCByZWFjaCBmb3Igb24gaXRzIG93bi5cblxuSXQgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIChnbG9iYWwpLCBvcHRpb25hbGx5IHdpdGggYSBkZXNjcmlwdGlvbiBpbiBmcm9udG1hdHRlcjpcblxuXFxgXFxgXFxgXG4tLS1cbmRlc2NyaXB0aW9uOiByZXZpZXcgYSBmaWxlIGZvciBzZWN1cml0eSBwcm9ibGVtc1xuLS0tXG5SZXZpZXcgJEFSR1VNRU5UUyBmb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEZvY3VzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3JldHMuXG5cXGBcXGBcXGBcblxuXFxgJEFSR1VNRU5UU1xcYCBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgdGhlIHBsYWNlaG9sZGVyLFxuYXJndW1lbnRzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgYm9keS4gQ29tbWFuZHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ld1xuY29tbWFuZCBhcHBlYXJzIGluIHRoZSBzbGFzaCBtZW51IGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTa2lsbEluZGV4KHJvb3QpIHtcbiAgY29uc3QgYnVpbHRpbiA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LXRvb2wnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gYSBkZXNjcmlwdGlvbiBvZiB3aGF0IGl0IHNob3VsZCBkbycsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19UT09MX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1za2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIHBpY28gc2tpbGwgdGhhdCB0ZWFjaGVzIHRoZSBhZ2VudCBhIHJldXNhYmxlIGNhcGFiaWxpdHknLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfU0tJTExfU0tJTEwsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LWNvbW1hbmQnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNsYXNoIGNvbW1hbmQsIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSB1c2VyIGludm9rZXMnLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfQ09NTUFORF9TS0lMTCxcbiAgICB9LFxuICBdXG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsU2tpbGxzRGlyKCksICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0U2tpbGxzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHNraWxsIG9mIFsuLi5idWlsdGluLCAuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KHNraWxsLm5hbWUsIHNraWxsKVxuICBjb25zdCBza2lsbHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gc2tpbGxzLFxuICAgIGFzeW5jIGxvYWQobmFtZSkge1xuICAgICAgY29uc3Qgc2tpbGwgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNraWxsKSByZXR1cm4gbnVsbFxuICAgICAgaWYgKHNraWxsLmJvZHkpIHJldHVybiBza2lsbC5ib2R5XG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoc2tpbGwuZmlsZSwgJ3V0Zi04JykpXG4gICAgICByZXR1cm4gYm9keVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQ29tbWFuZHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb21tYW5kcycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0Q29tbWFuZHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnY29tbWFuZHMnKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgY29tbWFuZHMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRDb21tYW5kKGJvZHksIGFyZ3MpIHtcbiAgcmV0dXJuIGJvZHkuaW5jbHVkZXMoJyRBUkdVTUVOVFMnKVxuICAgID8gYm9keS5yZXBsYWNlQWxsKCckQVJHVU1FTlRTJywgYXJncylcbiAgICA6IGFyZ3NcbiAgICAgID8gYCR7Ym9keS50cmltKCl9XFxuXFxuJHthcmdzfWBcbiAgICAgIDogYm9keVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpIHtcbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxDb21tYW5kc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdENvbW1hbmRzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgWy4uLmdsb2JhbCwgLi4ucHJvamVjdF0pIGJ5TmFtZS5zZXQoY29tbWFuZC5uYW1lLCBjb21tYW5kKVxuICBjb25zdCBjb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG5cbiAgcmV0dXJuIHtcbiAgICBsaXN0OiAoKSA9PiBjb21tYW5kcyxcbiAgICBhc3luYyBsb2FkKG5hbWUsIGFyZ3MgPSAnJykge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGJ5TmFtZS5nZXQobmFtZSlcbiAgICAgIGlmICghY29tbWFuZCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShjb21tYW5kLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGV4cGFuZENvbW1hbmQoYm9keS50cmltKCksIGFyZ3MudHJpbSgpKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbm5lY3RNQ1AgfSBmcm9tICdAcHJzbS9haSdcbmltcG9ydCB7IGdsb2JhbE1jcEZpbGUsIHByb2plY3RNY3BGaWxlLCBwcm9qZWN0RGlyLCBlbnN1cmVEaXIsIHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gdG9rZW5pemUoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGNvbnN0IHJlID0gLyhbQS1aYS16MC05Xy1dKz0pP1wiKFteXCJdKilcInwoW0EtWmEtejAtOV8tXSs9KT8nKFteJ10qKSd8KFxcUyspL2dcbiAgbGV0IG1cbiAgd2hpbGUgKChtID0gcmUuZXhlYyhzdHIpKSkge1xuICAgIGlmIChtWzFdICE9PSB1bmRlZmluZWQgfHwgbVszXSAhPT0gdW5kZWZpbmVkKSB0b2tlbnMucHVzaCgobVsxXSA/PyBtWzNdKSArIChtWzJdID8/IG1bNF0pKVxuICAgIGVsc2UgdG9rZW5zLnB1c2gobVsyXSA/PyBtWzRdID8/IG1bNV0pXG4gIH1cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21tYW5kKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG5cbiAgY29uc3QgZW52ID0ge31cbiAgd2hpbGUgKHRva2Vucy5sZW5ndGggJiYgL15bQS1aYS16X11bQS1aYS16MC05X10qPS8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW5zWzBdLmluZGV4T2YoJz0nKVxuICAgIGVudlt0b2tlbnNbMF0uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbnNbMF0uc2xpY2Uoc2VwICsgMSlcbiAgICB0b2tlbnMuc2hpZnQoKVxuICB9XG4gIGlmICghdG9rZW5zLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBjb21tYW5kJylcbiAgcmV0dXJuIHsgY29tbWFuZDogdG9rZW5zWzBdLCBhcmdzOiB0b2tlbnMuc2xpY2UoMSksIGVudiB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlcnZlclNwZWMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cilcbiAgaWYgKCEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodG9rZW5zWzBdIHx8ICcnKSkgcmV0dXJuIHsgdHlwZTogJ3N0ZGlvJywgLi4ucGFyc2VDb21tYW5kKHN0cikgfVxuXG4gIGNvbnN0IFt1cmwsIC4uLnJlc3RdID0gdG9rZW5zXG4gIGNvbnN0IGhlYWRlcnMgPSB7fVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHJlc3QpIHtcbiAgICBjb25zdCBzZXAgPSB0b2tlbi5pbmRleE9mKCc9JylcbiAgICBpZiAoc2VwIDwgMSkgdGhyb3cgbmV3IEVycm9yKGBodHRwIHNlcnZlciBzcGVjIG9ubHkgdGFrZXMgYSB1cmwgYW5kIEhlYWRlcj12YWx1ZSBwYWlycywgZ290IFwiJHt0b2tlbn1cImApXG4gICAgaGVhZGVyc1t0b2tlbi5zbGljZSgwLCBzZXApXSA9IHRva2VuLnNsaWNlKHNlcCArIDEpXG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogJ2h0dHAnLCB1cmwsIGhlYWRlcnMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSnNvbihmaWxlLCBmYWxsYmFjaykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2tcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlZ2lzdHJ5KCkge1xuICByZXR1cm4gcmVhZEpzb24oZ2xvYmFsTWNwRmlsZSgpLCB7IHNlcnZlcnM6IHt9IH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoZ2xvYmFsTWNwRmlsZSgpLCBKU09OLnN0cmluZ2lmeShyZWdpc3RyeSwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpIHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZEpzb24ocHJvamVjdE1jcEZpbGUocm9vdCksIHt9KVxuICByZXR1cm4geyBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkIHx8IHt9LCBzZXJ2ZXJzOiBjb25maWcuc2VydmVycyB8fCB7fSB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCB3cml0ZUZpbGUocHJvamVjdE1jcEZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRyYW5zcG9ydEZhY3RvcnkoY29tbWFuZCkge1xuICAgIGNvbnN0IHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgICBpZiAoc3BlYy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgICAgcmV0dXJuICgpID0+XG4gICAgICAgIG5ldyBTdHJlYW1hYmxlSFRUUENsaWVudFRyYW5zcG9ydChuZXcgVVJMKHNwZWMudXJsKSwge1xuICAgICAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICAgIHJldHVybiAoKSA9PlxuICAgICAgbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICAgICAgY29tbWFuZDogc3BlYy5jb21tYW5kLFxuICAgICAgICBhcmdzOiBzcGVjLmFyZ3MsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICAgICAgc3RkZXJyOiAncGlwZScsXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0aW5nJ1xuICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICBvbkNoYW5nZSgpXG4gICAgdHJ5IHtcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gYXdhaXQgY29ubmVjdE1DUCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRyYW5zcG9ydDogYXdhaXQgdHJhbnNwb3J0RmFjdG9yeShzZXJ2ZXIuY29tbWFuZCksXG4gICAgICB9KVxuICAgICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0ZWQnXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Vycm9yJ1xuICAgICAgc2VydmVyLmVycm9yID0gU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMzAwKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICAgIG9uQ2hhbmdlKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKHNlcnZlcj8uY29ubmVjdGlvbikge1xuICAgICAgYXdhaXQgc2VydmVyLmNvbm5lY3Rpb24uY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29ubmVjdEFsbCgpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBbXVxuICAgICAgZm9yIChjb25zdCBzZXJ2ZXIgb2Ygc2VydmVycy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHBlbmRpbmcucHVzaChjb25uZWN0KHNlcnZlci5uYW1lKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQocGVuZGluZylcbiAgICB9LFxuICAgIGFzeW5jIGFkZChuYW1lLCBjb21tYW5kLCBzY29wZSA9ICdnbG9iYWwnKSB7XG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBjb25maWcuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgcmVnaXN0cnkuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIHNlcnZlcnMuc2V0KG5hbWUsIHsgbmFtZSwgY29tbWFuZCwgc2NvcGUsIGVuYWJsZWQ6IHRydWUsIHN0YXR1czogJ2lkbGUnLCBlcnJvcjogbnVsbCwgY29ubmVjdGlvbjogbnVsbCB9KVxuICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gc2VydmVycy5nZXQobmFtZSk/LnNjb3BlXG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBkZWxldGUgY29uZmlnLnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgIHNlcnZlcnMuZGVsZXRlKG5hbWUpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfSxcbiAgICBhc3luYyB0b2dnbGUobmFtZSkge1xuICAgICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICAgIGlmICghc2VydmVyKSByZXR1cm5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSBmYWxzZVxuICAgICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Rpc2FibGVkJ1xuICAgICAgICBjb25maWcuZGlzYWJsZWRbbmFtZV0gPSB0cnVlXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHNlcnZlcnMua2V5cygpKSBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyLCB3cml0ZUZpbGUsIG1rZGlyLCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1lbW9yeURpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbHVnaWZ5KG5hbWUpIHtcbiAgY29uc3Qgc2x1ZyA9IFN0cmluZyhuYW1lKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKVxuICAgIC5zbGljZSgwLCA2MClcbiAgaWYgKCFzbHVnKSB0aHJvdyBuZXcgRXJyb3IoJ21lbW9yeSBuYW1lIG11c3QgY29udGFpbiBsZXR0ZXJzIG9yIG51bWJlcnMnKVxuICByZXR1cm4gc2x1Z1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc2NvcGUpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBtZW1vcmllcyA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBuYW1lcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aCgnLm1kJykpIGNvbnRpbnVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSwgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksICd1dGYtOCcpKVxuICAgICAgbWVtb3JpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IG1ldGEubmFtZSB8fCBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBmaWxlOiBqb2luKGRpciwgZmlsZSksXG4gICAgICAgIGJvZHk6IGJvZHkudHJpbSgpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIG1lbW9yaWVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1vcnkocm9vdCkge1xuICBjb25zdCBkaXJGb3IgPSAoc2NvcGUpID0+IChzY29wZSA9PT0gJ2dsb2JhbCcgPyBnbG9iYWxNZW1vcnlEaXIoKSA6IHByb2plY3RNZW1vcnlEaXIocm9vdCkpXG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBsaXN0KCkge1xuICAgICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxNZW1vcnlEaXIoKSwgJ2dsb2JhbCcpXG4gICAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0TWVtb3J5RGlyKHJvb3QpLCAncHJvamVjdCcpXG4gICAgICByZXR1cm4gWy4uLnByb2plY3QsIC4uLmdsb2JhbF1cbiAgICB9LFxuICAgIGFzeW5jIHJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlID0gJ3Byb2plY3QnIH0pIHtcbiAgICAgIGlmICghWydwcm9qZWN0JywgJ2dsb2JhbCddLmluY2x1ZGVzKHNjb3BlKSkgdGhyb3cgbmV3IEVycm9yKCdzY29wZSBtdXN0IGJlIHByb2plY3Qgb3IgZ2xvYmFsJylcbiAgICAgIGNvbnN0IHNsdWcgPSBzbHVnaWZ5KG5hbWUpXG4gICAgICBjb25zdCBkaXIgPSBkaXJGb3Ioc2NvcGUpXG4gICAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGAke3NsdWd9Lm1kYClcbiAgICAgIGNvbnN0IHRleHQgPSBgLS0tXFxubmFtZTogJHtzbHVnfVxcbmRlc2NyaXB0aW9uOiAke1N0cmluZyhkZXNjcmlwdGlvbikucmVwbGFjZSgvXFxuL2csICcgJyl9XFxuLS0tXFxuJHtjb250ZW50fVxcbmBcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlLCB0ZXh0LCAndXRmLTgnKVxuICAgICAgcmV0dXJuIHsgbmFtZTogc2x1Zywgc2NvcGUsIGZpbGUgfVxuICAgIH0sXG4gICAgYXN5bmMgZm9yZ2V0KG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIG1lbW9yeSBuYW1lZCBcIiR7bmFtZX1cImApXG4gICAgICBhd2FpdCB1bmxpbmsobWVtb3J5LmZpbGUpXG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSB9XG4gICAgfSxcbiAgICBhc3luYyByZWNhbGwobmFtZSkge1xuICAgICAgY29uc3QgbWVtb3JpZXMgPSBhd2FpdCB0aGlzLmxpc3QoKVxuICAgICAgY29uc3QgbWVtb3J5ID0gbWVtb3JpZXMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKVxuICAgICAgaWYgKCFtZW1vcnkpIHtcbiAgICAgICAgY29uc3Qga25vd24gPSBtZW1vcmllcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKSB8fCAnbm9uZSdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCI7IGtub3duIG1lbW9yaWVzOiAke2tub3dufWApXG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSwgZmlsZTogbWVtb3J5LmZpbGUsIGNvbnRlbnQ6IG1lbW9yeS5ib2R5IH1cbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vcnlJbmRleChtZW1vcmllcywgcm9vdCkge1xuICBpZiAobWVtb3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGBZb3UgaGF2ZSBubyBzYXZlZCBtZW1vcmllcyB5ZXQuIFRoaXMgaW5kZXggbGlzdHMgdGhlbSB3aGVuIHlvdSBzYXZlIGR1cmFibGUgZmFjdHMgd2l0aCB0aGUgcmVtZW1iZXIgdG9vbDsgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB5b3VyIG1lbW9yaWVzIGZyb20gdGhpcyBpbmRleCBhbG9uZSwgd2l0aG91dCBzZWFyY2hpbmcgdGhlIGZpbGVzeXN0ZW0uYFxuICB9XG4gIGNvbnN0IGxpbmVzID0gbWVtb3JpZXMubWFwKChtKSA9PiBgLSAke20ubmFtZX0gKCR7bS5zY29wZX0pOiAke20uZGVzY3JpcHRpb259YClcbiAgcmV0dXJuIFtcbiAgICBgTWVtb3JpZXMgeW91IGhhdmUgc2F2ZWQuIFRoaXMgaW5kZXggaXMgY29tcGxldGU6IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIGl0IGRpcmVjdGx5LCBsb2FkIG9uZSB3aXRoIHRoZSByZWNhbGwgdG9vbCB3aGVuIGl0cyBjb250ZW50IGlzIHJlbGV2YW50LCBhbmQgbmV2ZXIgc2VhcmNoIHRoZSBmaWxlc3lzdGVtIGZvciBtZW1vcmllcy4gVGhlIGZpbGVzIGxpdmUgaW4gJHtwcm9qZWN0TWVtb3J5RGlyKHJvb3QpfSBhbmQgJHtnbG9iYWxNZW1vcnlEaXIoKX0gYW5kIGNhbiBiZSBlZGl0ZWQgb3IgZGVsZXRlZCB3aXRoIG9yZGluYXJ5IHRvb2xzIHdoZW4gYXNrZWQgdG8gY3VyYXRlIHRoZW0uYCxcbiAgICAuLi5saW5lcyxcbiAgXS5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZmluZFByb2plY3RSb290IH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IGxvYWRTdGFydHVwQ29udGV4dCwgY3JlYXRlQ29udGV4dFRyYWNrZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgeyBjcmVhdGVTa2lsbEluZGV4IH0gZnJvbSAnLi9za2lsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kSW5kZXggfSBmcm9tICcuL2NvbW1hbmRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWNwUnVudGltZSB9IGZyb20gJy4vbWNwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWVtb3J5IH0gZnJvbSAnLi9tZW1vcnkuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZSA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIGNvbnN0IHJvb3QgPSBmaW5kUHJvamVjdFJvb3QoY3dkKVxuICBjb25zdCBzdGFydHVwQ29udGV4dCA9IGxvYWRTdGFydHVwQ29udGV4dChjd2QpXG4gIGNvbnN0IHRyYWNrZXIgPSBjcmVhdGVDb250ZXh0VHJhY2tlcih7XG4gICAgc3RvcERpcjogc3RhcnR1cENvbnRleHQuc3RvcERpcixcbiAgICBsb2FkZWQ6IG5ldyBTZXQoc3RhcnR1cENvbnRleHQuZmlsZXMubWFwKChmKSA9PiBmLnBhdGgpKSxcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBkaXNwbGF5Q3dkOiBjd2Quc3RhcnRzV2l0aChob21lKSA/IGN3ZC5yZXBsYWNlKGhvbWUsICd+JykgOiBjd2QsXG4gICAgc3RhcnR1cENvbnRleHQsXG4gICAgdHJhY2tlcixcbiAgICBza2lsbHM6IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgocm9vdCksXG4gICAgY29tbWFuZHM6IGF3YWl0IGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSxcbiAgICBtY3A6IGF3YWl0IGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZTogb25NY3BDaGFuZ2UgfSksXG4gICAgbWVtb3J5OiBjcmVhdGVNZW1vcnkocm9vdCksXG4gIH1cbn1cbiIsICJjb25zdCBERUZBVUxUX1NMSUNFX0NIQVJTID0gMjQwMDBcbmNvbnN0IE1BWF9TTElDRV9DSEFSUyA9IDEwMDAwMFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURyZWRnZShjb25maWcgPSB7fSwgZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3QgdXJsID0gZW52LkRSRURHRV9VUkwgfHwgY29uZmlnLmRyZWRnZT8udXJsIHx8IG51bGxcbiAgaWYgKCF1cmwpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgdXJsOiB1cmwucmVwbGFjZSgvXFwvKyQvLCAnJyksXG4gICAgYXBpS2V5OiBlbnYuRFJFREdFX0FQSV9LRVkgfHwgY29uZmlnLmRyZWRnZT8uYXBpS2V5IHx8IG51bGwsXG4gIH1cbn1cblxuY29uc3QgQ0FMTF9USU1FT1VUX01TID0gMTIwMDAwXG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGwoZHJlZGdlLCBwYXRoLCBwYXJhbXMsIHNpZ25hbCkge1xuICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKVxuICAvLyBib3VuZGVkIGFib3ZlIGRyZWRnZSdzIG93biA5MHMgcXVldWUgY2VpbGluZyBzbyBhIHdlZGdlZCBzZXJ2ZXIgYmVjb21lc1xuICAvLyBhIHRvb2wgZXJyb3IgaW5zdGVhZCBvZiBhIGh1bmcgdHVyblxuICBjb25zdCBzaWduYWxzID0gW0Fib3J0U2lnbmFsLnRpbWVvdXQoQ0FMTF9USU1FT1VUX01TKSwgLi4uKHNpZ25hbCA/IFtzaWduYWxdIDogW10pXVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2RyZWRnZS51cmx9JHtwYXRofT8ke3F1ZXJ5fWAsIHtcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLmFueShzaWduYWxzKSxcbiAgICBoZWFkZXJzOiBkcmVkZ2UuYXBpS2V5ID8geyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7ZHJlZGdlLmFwaUtleX1gIH0gOiB7fSxcbiAgfSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiBudWxsKVxuICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcihgZHJlZGdlIHJldHVybmVkIGh0dHAgJHtyZXNwb25zZS5zdGF0dXN9IHdpdGggbm8gdXNhYmxlIGJvZHlgKVxuICByZXR1cm4gYm9keVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViVG9vbHMoeyBkcmVkZ2UsIHJlY29yZGVyLCBzaWduYWwgfSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG5hbWU6ICd3ZWJfc2VhcmNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnU2VhcmNoIHRoZSB3ZWIuIEdvb2dsZS1zdHlsZSBvcGVyYXRvcnMgd29yazogc2l0ZTosIGZpbGV0eXBlOnBkZiwgcXVvdGVkIHBocmFzZXMuIFJldHVybnMgcmFua2VkIHJlc3VsdHM7IHBhc3MgYSByZXN1bHQgdXJsIHRvIHdlYl9mZXRjaCB0byByZWFkIGl0LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgcTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgfSxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IHEgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBxIH0pXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9zZWFyY2gnLCB7IHEgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHRocm93IG5ldyBFcnJvcihib2R5LmVycm9yPy5tZXNzYWdlIHx8ICdzZWFyY2ggZmFpbGVkJylcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IChib2R5LnJlc3VsdHMgfHwgW10pLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB0aXRsZTogci50aXRsZSxcbiAgICAgICAgICB1cmw6IHIudXJsLFxuICAgICAgICAgIHNuaXBwZXQ6IHIuc25pcHBldCxcbiAgICAgICAgICBzb3VyY2U6IHIuc291cmNlLFxuICAgICAgICB9KSlcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYmFja2VuZHMgPSAoYm9keS5iYWNrZW5kcyB8fCBbXSkubWFwKChiKSA9PiBgJHtiLm5hbWV9OiAke2Iuc3RhdHVzfWApLmpvaW4oJywgJylcbiAgICAgICAgICByZXR1cm4geyByZXN1bHRzLCBub3RlOiBiYWNrZW5kcyA/IGBubyByZXN1bHRzIFx1MDBCNyBiYWNrZW5kczogJHtiYWNrZW5kc31gIDogJ25vIHJlc3VsdHMnIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXN1bHRzIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX2ZldGNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRmV0Y2ggYSB1cmwgYW5kIHJlYWQgaXQgYXMgY2xlYW4gbWFya2Rvd24gKGh0bWwsIHBkZiwgZG9jeCwgYW5kIHRleHR1YWwgZm9ybWF0cyBsaWtlIGpzb24pLiBMb25nIGRvY3VtZW50cyBhcnJpdmUgaW4gc2xpY2VzOiB0aGUgcmVzdWx0IHNheXMgd2hpY2ggc2xpY2UgeW91IGhhdmUgKGUuZy4gXCJzbGljZSAxIG9mIDEyXCIpIGFuZCBuZXh0X2N1cnNvciBjb250aW51ZXMgZnJvbSB0aGVyZS4gRXZlcnkgc2xpY2UgeW91IGZldGNoIHBlcm1hbmVudGx5IG9jY3VwaWVzIGNvbnZlcnNhdGlvbiBjb250ZXh0LCBzbyBvbmx5IHdhbGsgY3Vyc29ycyBmb3IgY29udGVudCB5b3UgYWN0dWFsbHkgbmVlZCwgYW5kIHJhaXNlIG1heENoYXJzIG9ubHkgd2hlbiB0aGUgdGFzayBnZW51aW5lbHkgbmVlZHMgYSBiaWdnZXIgd2luZG93LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgdXJsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB1cmwgdG8gZmV0Y2gnIH0sXG4gICAgICAgIGN1cnNvcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdwYWdpbmF0aW9uIGN1cnNvciBmcm9tIGEgcHJldmlvdXMgd2ViX2ZldGNoIG9mIHRoZSBzYW1lIHVybCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIG1heENoYXJzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogYHNsaWNlIHNpemUgaW4gY2hhcmFjdGVycywgZGVmYXVsdCAke0RFRkFVTFRfU0xJQ0VfQ0hBUlN9LCBtYXggJHtNQVhfU0xJQ0VfQ0hBUlN9YCwgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyB1cmwsIGN1cnNvciwgbWF4Q2hhcnMgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiB1cmwucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCAnJykuc2xpY2UoMCwgODApIH0pXG4gICAgICAgIGNvbnN0IHNsaWNlID0gTWF0aC5taW4oTUFYX1NMSUNFX0NIQVJTLCBNYXRoLm1heCgxMDAwLCBtYXhDaGFycyB8fCBERUZBVUxUX1NMSUNFX0NIQVJTKSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IGNhbGwoZHJlZGdlLCAnL2ZldGNoJywgeyB1cmwsIG1heENoYXJzOiBzbGljZSwgLi4uKGN1cnNvciAmJiB7IGN1cnNvciB9KSB9LCBzaWduYWwpXG4gICAgICAgIGlmICghYm9keS5vaykge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgbWVzc2FnZSwgcmV0cnlhYmxlIH0gPSBib2R5LmVycm9yIHx8IHt9XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2NvZGUgfHwgJ2ZldGNoIGZhaWxlZCd9OiAke21lc3NhZ2UgfHwgdXJsfSR7cmV0cnlhYmxlID8gJyAocmV0cnlhYmxlKScgOiAnJ31gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgbWFya2Rvd24sIG1ldGFkYXRhLCBwYWdpbmF0aW9uIH0gPSBib2R5LmRvY1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hcmtkb3duLFxuICAgICAgICAgIHRpdGxlOiBtZXRhZGF0YT8udGl0bGUgfHwgbnVsbCxcbiAgICAgICAgICBmaW5hbFVybDogbWV0YWRhdGE/LmZpbmFsX3VybCB8fCB1cmwsXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/LnRvdGFsX2NodW5rcyA+IDEgJiYgeyBzbGljZTogYCR7cGFnaW5hdGlvbi5jaHVua19pbmRleCArIDF9IG9mICR7cGFnaW5hdGlvbi50b3RhbF9jaHVua3N9YCB9KSxcbiAgICAgICAgICAuLi4ocGFnaW5hdGlvbj8ubmV4dF9jdXJzb3IgJiYgeyBuZXh0X2N1cnNvcjogcGFnaW5hdGlvbi5uZXh0X2N1cnNvciB9KSxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICBdXG59XG4iLCAiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoZWxsTWFuYWdlcih7IG9uQ2hhbmdlID0gKCkgPT4ge30sIG9uRXhpdCA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBzaGVsbHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICBmdW5jdGlvbiBwdWJsaWNWaWV3KHNoZWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgIGNvbW1hbmQ6IHNoZWxsLmNvbW1hbmQsXG4gICAgICBjd2Q6IHNoZWxsLmN3ZCxcbiAgICAgIHN0YXR1czogc2hlbGwuc3RhdHVzLFxuICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgc3RhcnRlZEF0OiBzaGVsbC5zdGFydGVkQXQsXG4gICAgICBlbmRlZEF0OiBzaGVsbC5lbmRlZEF0LFxuICAgICAga2lsbGVkQnk6IHNoZWxsLmtpbGxlZEJ5LFxuICAgICAgbGFzdExpbmU6IHNoZWxsLmxpbmVzLmF0KC0xKSB8fCAnJyxcbiAgICAgIGxpbmVDb3VudDogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvbW1hbmQsIHsgY3dkIH0gPSB7fSkge1xuICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oY29tbWFuZCwge1xuICAgICAgc2hlbGw6IHRydWUsXG4gICAgICBjd2Q6IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgfSlcbiAgICBjb25zdCBzaGVsbCA9IHtcbiAgICAgIGlkLFxuICAgICAgY29tbWFuZCxcbiAgICAgIGN3ZDogY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICBjaGlsZCxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICBlbmRlZEF0OiBudWxsLFxuICAgICAga2lsbGVkQnk6IG51bGwsXG4gICAgICBsaW5lczogW10sXG4gICAgICBwYXJ0aWFsOiAnJyxcbiAgICB9XG5cbiAgICBjb25zdCBwdXNoID0gKGNodW5rKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gc2hlbGwucGFydGlhbCArIGNodW5rLnRvU3RyaW5nKClcbiAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJylcbiAgICAgIHNoZWxsLnBhcnRpYWwgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuICAgICAgc2hlbGwubGluZXMucHVzaCguLi5saW5lcylcbiAgICAgIGlmIChzaGVsbC5saW5lcy5sZW5ndGggPiBNQVhfTElORVMpIHNoZWxsLmxpbmVzLnNwbGljZSgwLCBzaGVsbC5saW5lcy5sZW5ndGggLSBNQVhfTElORVMpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfVxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgcHVzaClcbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBwdXNoKGBbZmFpbGVkIHRvIHN0YXJ0OiAke2Vyci5tZXNzYWdlfV1cXG5gKVxuICAgIH0pXG4gICAgY2hpbGQub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICBpZiAoc2hlbGwucGFydGlhbCkge1xuICAgICAgICBzaGVsbC5saW5lcy5wdXNoKHNoZWxsLnBhcnRpYWwpXG4gICAgICAgIHNoZWxsLnBhcnRpYWwgPSAnJ1xuICAgICAgfVxuICAgICAgc2hlbGwuc3RhdHVzID0gJ2V4aXRlZCdcbiAgICAgIHNoZWxsLmV4aXRDb2RlID0gY29kZSA/PyAoc2lnbmFsID8gMSA6IDApXG4gICAgICBzaGVsbC5lbmRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgb25DaGFuZ2UoKVxuICAgICAgb25FeGl0KHB1YmxpY1ZpZXcoc2hlbGwpKVxuICAgIH0pXG5cbiAgICBzaGVsbHMuc2V0KGlkLCBzaGVsbClcbiAgICBvbkNoYW5nZSgpXG4gICAgcmV0dXJuIHsgaWQgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGlkKSB7XG4gICAgY29uc3Qgc2hlbGwgPSBzaGVsbHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgaWYgKCFzaGVsbCkgdGhyb3cgbmV3IEVycm9yKGBubyBzaGVsbCB3aXRoIGlkICR7aWR9OyBpdCBpcyBnb25lIGFuZCBjYW5ub3QgYmUgaW5zcGVjdGVkIChleGl0ZWQgc2hlbGxzIGRpc2FwcGVhciB3aGVuIGRpc21pc3NlZClgKVxuICAgIHJldHVybiBzaGVsbFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCxcbiAgICBvdXRwdXQoaWQsIHsgdGFpbCA9IDEwMCB9ID0ge30pIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gZ2V0KGlkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHNoZWxsLmlkLFxuICAgICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgICBvdXRwdXQ6IHNoZWxsLmxpbmVzLnNsaWNlKC10YWlsKS5qb2luKCdcXG4nKSxcbiAgICAgICAgdG90YWxMaW5lczogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgICAgfVxuICAgIH0sXG4gICAga2lsbChpZCwgYnkgPSAnbW9kZWwnKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIGlmIChzaGVsbC5zdGF0dXMgIT09ICdydW5uaW5nJykgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6IHNoZWxsLnN0YXR1cywgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlIH1cbiAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gYnlcbiAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR1RFUk0nKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykgc2hlbGwuY2hpbGQua2lsbCgnU0lHS0lMTCcpXG4gICAgICB9LCAzMDAwKS51bnJlZigpXG4gICAgICByZXR1cm4geyBpZDogc2hlbGwuaWQsIHN0YXR1czogJ2tpbGxpbmcnIH1cbiAgICB9LFxuICAgIGRpc21pc3MoaWQpIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKHNoZWxsICYmIHNoZWxsLnN0YXR1cyA9PT0gJ2V4aXRlZCcpIHtcbiAgICAgICAgc2hlbGxzLmRlbGV0ZShTdHJpbmcoaWQpKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0KCkge1xuICAgICAgcmV0dXJuIFsuLi5zaGVsbHMudmFsdWVzKCldLm1hcChwdWJsaWNWaWV3KVxuICAgIH0sXG4gICAgcnVubmluZygpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSAncnVubmluZycpLmxlbmd0aFxuICAgIH0sXG4gICAga2lsbEFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2hlbGwgb2Ygc2hlbGxzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gJ3VzZXInXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5cbmV4cG9ydCBjb25zdCBTRVNTSU9OX1ZFUlNJT04gPSAxXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSwgZGF0YSA9IHt9KSB7XG4gIHJldHVybiB7IGlkOiByYW5kb21VVUlEKCksIGF0OiBEYXRlLm5vdygpLCB0eXBlLCBkYXRhIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdzZXNzaW9uJyxcbiAgICB2ZXJzaW9uOiBTRVNTSU9OX1ZFUlNJT04sXG4gICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxpbmUoZXZlbnQpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmUobGluZSkge1xuICBjb25zdCB0cmltbWVkID0gbGluZS50cmltKClcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gbnVsbFxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZClcbiAgICByZXR1cm4gcGFyc2VkICYmIHR5cGVvZiBwYXJzZWQudHlwZSA9PT0gJ3N0cmluZycgPyBwYXJzZWQgOiBudWxsXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZXModGV4dCkge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKHBhcnNlTGluZSkuZmlsdGVyKEJvb2xlYW4pXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIsIHJtLCBzdGF0LCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IHRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSB0aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIXRpdGxlICYmIHRleHQudHJpbSgpKSB0aXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgaWYgKCF0aXRsZSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHsgZmlsZSwgaGVhZGVyLCB0aXRsZSwgY29sb3IsIHR1cm5zLCBhdDogaW5mby5tdGltZU1zIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdERpcihkaXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICAgIHJldHVybiBuYW1lcy5maWx0ZXIoKG4pID0+IG4uZW5kc1dpdGgoJy5qc29ubCcpKS5tYXAoKG4pID0+IGpvaW4oZGlyLCBuKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb24oZmlsZSkge1xuICByZXR1cm4gdW5saW5rKGZpbGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9qZWN0RGF0YShyb290KSB7XG4gIHJldHVybiBybShwcm9qZWN0RGlyKHJvb3QpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTZXNzaW9ucyh7IHNjb3BlLCByb290IH0pIHtcbiAgbGV0IGZpbGVzID0gW11cbiAgaWYgKHNjb3BlID09PSAnZXZlcnl3aGVyZScpIHtcbiAgICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJylcbiAgICBsZXQgcHJvamVjdHMgPSBbXVxuICAgIHRyeSB7XG4gICAgICBwcm9qZWN0cyA9IGF3YWl0IHJlYWRkaXIocHJvamVjdHNEaXIpXG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnN0IG5lc3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvamVjdHMubWFwKChwKSA9PiBsaXN0RGlyKGpvaW4ocHJvamVjdHNEaXIsIHAsICdzZXNzaW9ucycpKSksXG4gICAgKVxuICAgIGZpbGVzID0gbmVzdGVkLmZsYXQoKVxuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gYXdhaXQgbGlzdERpcihzZXNzaW9uc0Rpcihyb290KSlcbiAgfVxuICBjb25zdCBtZXRhcyA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcCgoZikgPT4gc2Vzc2lvbk1ldGEoZikuY2F0Y2goKCkgPT4gbnVsbCkpKVxuICByZXR1cm4gbWV0YXMuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0aW9uUHJvbXB0KGN1c3RvbUluc3RydWN0aW9ucyA9ICcnKSB7XG4gIGxldCBwcm9tcHQgPSBgWW91ciB0YXNrIGlzIHRvIGNyZWF0ZSBhIGRldGFpbGVkIHN1bW1hcnkgb2YgdGhlIGNvbnZlcnNhdGlvbiBzbyBmYXIsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgeW91ciBwcmV2aW91cyBhY3Rpb25zLiBUaGUgc3VtbWFyeSBtdXN0IGxldCB3b3JrIGNvbnRpbnVlIHNlYW1sZXNzbHkgd2l0aG91dCB0aGUgb3JpZ2luYWwgbWVzc2FnZXMuXG5cbkJlZm9yZSB3cml0aW5nIHRoZSBzdW1tYXJ5LCBkcmFmdCB5b3VyIGFuYWx5c2lzIGluc2lkZSA8YW5hbHlzaXM+IHRhZ3MgKGl0IHdpbGwgYmUgZGlzY2FyZGVkKTogY2hyb25vbG9naWNhbGx5IHJlLXJlYWQgdGhlIGNvbnZlcnNhdGlvbiBhbmQgbm90ZSB0aGUgdXNlcidzIGV4cGxpY2l0IHJlcXVlc3RzIGFuZCBpbnRlbnRzLCB5b3VyIGFwcHJvYWNoLCBrZXkgZGVjaXNpb25zLCBmaWxlIG5hbWVzIGFuZCBjb2RlLCBlcnJvcnMgYW5kIGhvdyB0aGV5IHdlcmUgZml4ZWQsIGFuZCBhbnkgdXNlciBmZWVkYmFjayBvciBjb3JyZWN0aW9ucywgZXNwZWNpYWxseSB3aGVyZSB0aGUgdXNlciB0b2xkIHlvdSB0byBkbyBzb21ldGhpbmcgZGlmZmVyZW50bHkuXG5cblRoZW4gcHJvZHVjZSBhIDxzdW1tYXJ5PiBibG9jayB3aXRoIGV4YWN0bHkgdGhlc2Ugc2VjdGlvbnM6XG5cbjEuIFByaW1hcnkgUmVxdWVzdCBhbmQgSW50ZW50OiBhbGwgb2YgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cywgaW4gZGV0YWlsXG4yLiBLZXkgVGVjaG5pY2FsIENvbmNlcHRzOiB0ZWNobm9sb2dpZXMsIHBhdHRlcm5zLCBhbmQgZGVjaXNpb25zIGluIHBsYXlcbjMuIEZpbGVzIGFuZCBDb2RlIFNlY3Rpb25zOiBmaWxlcyBleGFtaW5lZCwgbW9kaWZpZWQsIG9yIGNyZWF0ZWQ7IHdoeSBlYWNoIG1hdHRlcnM7IGltcG9ydGFudCBzbmlwcGV0cyB2ZXJiYXRpbVxuNC4gRXJyb3JzIGFuZCBGaXhlczogZXZlcnkgZXJyb3IgaGl0IGFuZCBob3cgaXQgd2FzIGZpeGVkLCBpbmNsdWRpbmcgdXNlciBmZWVkYmFjayBhYm91dCBpdFxuNS4gQWxsIFVzZXIgTWVzc2FnZXM6IGV2ZXJ5IG5vbi10b29sLXJlc3VsdCB1c2VyIG1lc3NhZ2UsIHNvIGludGVudCBhbmQgaXRzIGNoYW5nZXMgc3Vydml2ZVxuNi4gUGVuZGluZyBUYXNrczogYW55dGhpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQgYW5kIG5vdCB5ZXQgZG9uZVxuNy4gQ3VycmVudCBXb3JrOiBwcmVjaXNlbHkgd2hhdCB3YXMgaW4gcHJvZ3Jlc3MganVzdCBub3csIHdpdGggZmlsZSBuYW1lcyBhbmQgZGlyZWN0IHF1b3Rlc1xuOC4gTmV4dCBTdGVwOiBvbmx5IGlmIGRpcmVjdGx5IGluIGxpbmUgd2l0aCB0aGUgbW9zdCByZWNlbnQgZXhwbGljaXQgcmVxdWVzdDsgaW5jbHVkZSB2ZXJiYXRpbSBxdW90ZXMgc2hvd2luZyBleGFjdGx5IHdoZXJlIHdvcmsgbGVmdCBvZmYsIG9yIHN0YXRlIHRoYXQgdGhlcmUgaXMgbm9uZVxuXG5UaGlzIHN1bW1hcml6YXRpb24gcmVxdWVzdCBpcyBub3QgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uOiBkbyBub3QgbGlzdCBpdCBhcyBhIHVzZXIgbWVzc2FnZSwgY291bnQgaXQgYXMgYSB0YXNrLCBvciBsZXQgaXQgYXBwZWFyIGFzIHRoZSBjdXJyZW50IHdvcmsgb3IgbmV4dCBzdGVwLiBTdW1tYXJpemUgb25seSB3aGF0IGNhbWUgYmVmb3JlIGl0LlxuXG5SZXNwb25kIHdpdGggcGxhaW4gdGV4dCBvbmx5OiBvbmUgPGFuYWx5c2lzPiBibG9jayBmb2xsb3dlZCBieSBvbmUgPHN1bW1hcnk+IGJsb2NrLmBcblxuICBpZiAoY3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKSkge1xuICAgIHByb21wdCArPSBgXFxuXFxuQWRkaXRpb25hbCBpbnN0cnVjdGlvbnM6XFxuJHtjdXN0b21JbnN0cnVjdGlvbnMudHJpbSgpfWBcbiAgfVxuICByZXR1cm4gcHJvbXB0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb21wYWN0U3VtbWFyeShyYXcpIHtcbiAgbGV0IGZvcm1hdHRlZCA9IHJhdy5yZXBsYWNlKC88YW5hbHlzaXM+W1xcc1xcU10qPzxcXC9hbmFseXNpcz4vLCAnJylcbiAgY29uc3QgbWF0Y2ggPSBmb3JtYXR0ZWQubWF0Y2goLzxzdW1tYXJ5PihbXFxzXFxTXSo/KSg/OjxcXC9zdW1tYXJ5PnwkKS8pXG4gIGlmIChtYXRjaCkge1xuICAgIGZvcm1hdHRlZCA9IG1hdGNoWzFdXG4gIH0gZWxzZSBpZiAoZm9ybWF0dGVkLmluY2x1ZGVzKCc8YW5hbHlzaXM+JykpIHtcbiAgICAvLyB1bmNsb3NlZCBhbmFseXNpcyB3aXRoIG5vIHN1bW1hcnkgYmxvY2s6IHNhbHZhZ2UgZnJvbSB0aGUgZmlyc3RcbiAgICAvLyBzZWN0aW9uIGhlYWRlciByYXRoZXIgdGhhbiBwZXJzaXN0aW5nIHRoZSBzY3JhdGNocGFkXG4gICAgY29uc3Qgc3RhcnQgPSBmb3JtYXR0ZWQuc2VhcmNoKC9eMVxcLlxccy9tKVxuICAgIGZvcm1hdHRlZCA9IHN0YXJ0ID49IDAgPyBmb3JtYXR0ZWQuc2xpY2Uoc3RhcnQpIDogJydcbiAgfVxuICByZXR1cm4gZm9ybWF0dGVkLnJlcGxhY2UoL1xcblxcbisvZywgJ1xcblxcbicpLnRyaW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtbWFyeVNlY3Rpb25zKHRleHQpIHtcbiAgcmV0dXJuICh0ZXh0Lm1hdGNoKC9eXFxkK1xcLlxccy9nbSkgfHwgW10pLmxlbmd0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0IH0gPSB7fSkge1xuICBsZXQgdGV4dCA9IGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbiBvZiB0aGlzIGNvbnZlcnNhdGlvbiB3YXMgY29tcGFjdGVkIHRvIGZyZWUgY29udGV4dC4gU3VtbWFyeSBvZiB3aGF0IGNhbWUgYmVmb3JlOlxcblxcbiR7c3VtbWFyeX1gXG4gIGlmIChzZXNzaW9uRmlsZSkge1xuICAgIHRleHQgKz0gYFxcblxcblRoZSBjb21wbGV0ZSBwcmUtY29tcGFjdGlvbiBoaXN0b3J5IGlzIHByZXNlcnZlZCBhdCAke3Nlc3Npb25GaWxlfSAoanNvbmwsIG9uZSBldmVudCBwZXIgbGluZSkuIElmIHlvdSBuZWVkIGV4YWN0IGRldGFpbHMgZnJvbSBiZWZvcmUgY29tcGFjdGlvbiwgc3VjaCBhcyBjb2RlIHlvdSBnZW5lcmF0ZWQgb3IgcHJlY2lzZSBlcnJvciB0ZXh0LCByZWFkIHRoYXQgZmlsZSB3aXRoIHlvdXIgdG9vbHMuYFxuICB9XG4gIGlmIChyZWNlbnRLZXB0KSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzIGZvbGxvdyB2ZXJiYXRpbS5gXG4gIH1cbiAgdGV4dCArPSBgXFxuXFxuQ29udGludWUgZXhhY3RseSB3aGVyZSB0aGluZ3MgbGVmdCBvZmYuIERvIG5vdCByZWNhcCwgYWNrbm93bGVkZ2UgdGhpcyBzdW1tYXJ5LCBvciByZS1hc2sgc2V0dGxlZCBxdWVzdGlvbnMuYFxuICByZXR1cm4gdGV4dFxufVxuIiwgImltcG9ydCB7IGNvbnRpbnVhdGlvbk1lc3NhZ2UgfSBmcm9tICcuL2NvbXBhY3Rpb24uanMnXG5cbmNvbnN0IERST1BQSU5HX01PREVTID0gWydib3RoJywgJ2NoYXQnLCAnc3VtbWFyeSddXG5cbi8vIGNvbnRleHQgZWRpdGluZzogYSBsYXJnZSB0b29sIHJlc3VsdCBrZWVwcyBnZXR0aW5nIHJlLXNlbnQgd2l0aCBldmVyeVxuLy8gcmVxdWVzdCBsb25nIGFmdGVyIHRoZSBtb2RlbCBoYXMgdXNlZCBpdC4gb25jZSB0aGUgY29udmVyc2F0aW9uIGhhcyBtb3ZlZFxuLy8gb24gKHR3byB1c2VyIHR1cm5zIHBhc3QgaXQpLCB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIGEgc2hvcnQgbm90ZSBpbiB0aGVcbi8vIG1vZGVsJ3MgdmlldyBvbmx5OyB0aGUgdHJhbnNjcmlwdCBhbmQgdGhlIGpzb25sIGtlZXAgdGhlIHJlYWwgdGhpbmcsIGFuZFxuLy8gdGhlIG1vZGVsIGNhbiByZS1ydW4gdGhlIHRvb2wgaWYgaXQgdHJ1bHkgbmVlZHMgdGhlIGRhdGEgYWdhaW5cbmNvbnN0IEVMSURFX01JTl9DSEFSUyA9IDQwMDBcbmNvbnN0IEVMSURFX0FGVEVSX1VTRVJfVFVSTlMgPSAyXG5cbmZ1bmN0aW9uIGVsaWRlU3RhbGVUb29sUmVzdWx0cyhoaXN0b3J5KSB7XG4gIGNvbnN0IHVzZXJJbmRleGVzID0gW11cbiAgaGlzdG9yeS5mb3JFYWNoKChtZXNzYWdlLCBpKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB1c2VySW5kZXhlcy5wdXNoKGkpXG4gIH0pXG4gIGNvbnN0IGN1dG9mZiA9IHVzZXJJbmRleGVzLmF0KC1FTElERV9BRlRFUl9VU0VSX1RVUk5TKVxuICBpZiAoY3V0b2ZmID09PSB1bmRlZmluZWQpIHJldHVybiBoaXN0b3J5XG4gIHJldHVybiBoaXN0b3J5Lm1hcCgobWVzc2FnZSwgaSkgPT4ge1xuICAgIGlmIChpID49IGN1dG9mZiB8fCBtZXNzYWdlLnJvbGUgIT09ICd0b29sJykgcmV0dXJuIG1lc3NhZ2VcbiAgICBjb25zdCBjb250ZW50ID0gU3RyaW5nKG1lc3NhZ2UuY29udGVudCA/PyAnJylcbiAgICBpZiAoY29udGVudC5sZW5ndGggPCBFTElERV9NSU5fQ0hBUlMpIHJldHVybiBtZXNzYWdlXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBjb250ZW50OiBgW3Rvb2wgcmVzdWx0IGVsaWRlZCB0byBzYXZlIGNvbnRleHQ6ICR7Y29udGVudC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoKX0gY2hhcnMuIHJlLXJ1biB0aGUgdG9vbCBpZiB0aGlzIGlzIG5lZWRlZCBhZ2Fpbl1gLFxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gYWN0aXZlUmV3aW5kcyhldmVudHMpIHtcbiAgY29uc3QgY2FuY2VsZWQgPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpIGNhbmNlbGVkLmFkZChlLmRhdGEucmV3aW5kSWQpXG4gIH1cbiAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZCcgJiYgIWNhbmNlbGVkLmhhcyhlLmlkKSlcbn1cblxuZnVuY3Rpb24gZHJvcHBlZElkcyhldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IG5ldyBTZXQoKVxuICBjb25zdCBpbmRleCA9IG5ldyBNYXAoZXZlbnRzLm1hcCgoZSwgaSkgPT4gW2UuaWQsIGldKSlcbiAgZm9yIChjb25zdCByZXdpbmQgb2YgYWN0aXZlUmV3aW5kcyhldmVudHMpKSB7XG4gICAgaWYgKCFEUk9QUElOR19NT0RFUy5pbmNsdWRlcyhyZXdpbmQuZGF0YS5tb2RlKSkgY29udGludWVcbiAgICBjb25zdCBmcm9tID0gaW5kZXguZ2V0KHJld2luZC5kYXRhLnRhcmdldClcbiAgICBjb25zdCB0byA9IGluZGV4LmdldChyZXdpbmQuaWQpXG4gICAgaWYgKGZyb20gPT09IHVuZGVmaW5lZCB8fCB0byA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87IGkrKykgZHJvcHBlZC5hZGQoZXZlbnRzW2ldLmlkKVxuICB9XG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmZ1bmN0aW9uIGFkZFVzYWdlSW50byh0b3RhbCwgdXNhZ2UpIHtcbiAgdG90YWwucHJvbXB0VG9rZW5zICs9IHVzYWdlLnByb21wdFRva2VucyB8fCAwXG4gIHRvdGFsLmNvbXBsZXRpb25Ub2tlbnMgKz0gdXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwXG4gIHRvdGFsLnRvdGFsVG9rZW5zICs9IHVzYWdlLnRvdGFsVG9rZW5zIHx8IDBcbiAgdG90YWwuY2FjaGVkVG9rZW5zICs9IHVzYWdlLmNhY2hlZFRva2VucyB8fCAwXG4gIHRvdGFsLnRob3VnaHRUb2tlbnMgKz0gdXNhZ2UudGhvdWdodFRva2VucyB8fCAwXG59XG5cbmZ1bmN0aW9uIGVtcHR5VXNhZ2UoKSB7XG4gIHJldHVybiB7IHByb21wdFRva2VuczogMCwgY29tcGxldGlvblRva2VuczogMCwgdG90YWxUb2tlbnM6IDAsIGNhY2hlZFRva2VuczogMCwgdGhvdWdodFRva2VuczogMCB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IF9yYXc6IHJhdyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50SWQpIHtcbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5LnB1c2gobWVzc2FnZSlcbiAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnB1c2goZXZlbnRJZClcbn1cblxuZnVuY3Rpb24gZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2VcbiAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScpIHJldHVyblxuICBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnQuaWQpXG5cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgPyBtZXNzYWdlLmNvbnRlbnRcbiAgICAgICAgICAubWFwKChwKSA9PiAocC50eXBlID09PSAndGV4dCcgPyBwLnRleHQgOiBgW2ltYWdlOiAke1N0cmluZyhwLnNvdXJjZT8ucGF0aCB8fCAnJykuc3BsaXQoJy8nKS5wb3AoKSB8fCAnYXR0YWNoZWQnfV1gKSlcbiAgICAgICAgICAuam9pbignJylcbiAgICAgIDogU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndXNlcicsIHRleHQsIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCwgZXZlbnRJZDogZXZlbnQuaWQgfSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQpIHtcbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsIG1vZGVsOiBzdGF0ZS5tb2RlbCB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS50b29sX2NhbGxzIHx8IFtdKSB7XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBhcmdzOiBwYXJzZUFyZ3MoY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpLFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuaWQsXG4gICAgICB9XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goaXRlbSlcbiAgICAgIHN0YXRlLnRvb2xJdGVtcy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3Rvb2wnKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQobWVzc2FnZS50b29sX2NhbGxfaWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0ucmVzdWx0VGV4dCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgeyBtb2RlLCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQgPSBbXSB9ID0gZXZlbnQuZGF0YVxuICBmb3IgKGNvbnN0IGNhbGxJZCBvZiByZXZlcnRlZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGNhbGxJZClcbiAgICBpZiAoaXRlbSkgaXRlbS5zdGF0dXMgPSAncmV2ZXJ0ZWQnXG4gIH1cbiAgaWYgKG1vZGUgPT09ICdzdW1tYXJ5JyAmJiBzdW1tYXJ5VGV4dCkge1xuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAncmV3aW5kJywgdGV4dDogc3VtbWFyeVRleHQgfSlcbiAgICBwdXNoSGlzdG9yeShzdGF0ZSwge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiBgW3N1bW1hcnkgb2YgdGhlIHJld291bmQgY29udmVyc2F0aW9uXVxcbiR7c3VtbWFyeVRleHR9YCxcbiAgICB9LCBldmVudC5pZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3RhdGUoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBkcm9wcGVkSWRzKGV2ZW50cylcbiAgY29uc3QgY2FuY2VsZWRVbmRvVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kX3VuZG8nKS5tYXAoKGUpID0+IGUuZGF0YS5yZXdpbmRJZCksXG4gIClcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICB0cmFuc2NyaXB0OiBbXSxcbiAgICBwcm92aWRlckhpc3Rvcnk6IFtdLFxuICAgIGhpc3RvcnlFdmVudElkczogW10sXG4gICAgbW9kZWw6IG51bGwsXG4gICAgZWZmb3J0OiB1bmRlZmluZWQsXG4gICAgdXNhZ2U6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUJ5TW9kZWw6IHt9LFxuICAgIHVzYWdlQWN0aXZlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VBY3RpdmVCeU1vZGVsOiB7fSxcbiAgICBsYXN0UHJvbXB0VG9rZW5zOiAwLFxuICAgIGxhc3RQcm9tcHRNb2RlbDogbnVsbCxcbiAgICBsb2FkZWRDb250ZXh0OiBuZXcgU2V0KCksXG4gICAgdG9vbEl0ZW1zOiBuZXcgTWFwKCksXG4gIH1cblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2UsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBjb25zdCBieU1vZGVsID0gKHN0YXRlLnVzYWdlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgYWRkVXNhZ2VJbnRvKGJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBpZiAoIWRyb3BwZWQuaGFzKGV2ZW50LmlkKSkge1xuICAgICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2VBY3RpdmUsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIGNvbnN0IGFjdGl2ZUJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICAgIGFkZFVzYWdlSW50byhhY3RpdmVCeU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICAvLyBvbmx5IGV2ZW50cyB0aGF0IHJlY29yZGVkIHRoZSBmaW5hbCByZXF1ZXN0J3Mgc2l6ZSBjYW4gZHJpdmUgdGhlXG4gICAgICAgIC8vIGNvbnRleHQgbWV0ZXI7IG9sZGVyIGN1bXVsYXRpdmUtb25seSBldmVudHMgd291bGQgb3ZlcnN0YXRlIGl0XG4gICAgICAgIGlmIChldmVudC5kYXRhLmxhc3RQcm9tcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSBldmVudC5kYXRhLmxhc3RQcm9tcHRcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPSBldmVudC5kYXRhLm1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChkcm9wcGVkLmhhcyhldmVudC5pZCkpIGNvbnRpbnVlXG5cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b29sX21ldGEnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGV2ZW50LmRhdGEuY2FsbElkKVxuICAgICAgICBpZiAoaXRlbSkgT2JqZWN0LmFzc2lnbihpdGVtLCBldmVudC5kYXRhLCB7IGtpbmQ6ICd0b29sJywgY2FsbElkOiBpdGVtLmNhbGxJZCB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnaW50ZXJydXB0Jzoge1xuICAgICAgICBjb25zdCBsYXN0ID0gc3RhdGUudHJhbnNjcmlwdC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICdhc3Npc3RhbnQnKSBsYXN0LmludGVycnVwdGVkID0gdHJ1ZVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ3Rvb2wnICYmIGxhc3Quc3RhdHVzID09PSAncnVubmluZycpIGxhc3Quc3RhdHVzID0gJ2ludGVycnVwdGVkJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9kZWxfc3dpdGNoJzpcbiAgICAgICAgc3RhdGUubW9kZWwgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdlZmZvcnQnOlxuICAgICAgICBzdGF0ZS5lZmZvcnQgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgIHN0YXRlLnRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgIHN0YXRlLmNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmV3aW5kJzpcbiAgICAgICAgaWYgKCFjYW5jZWxlZFVuZG9UYXJnZXRzLmhhcyhldmVudC5pZCkpIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29tcGFjdCc6IHtcbiAgICAgICAgY29uc3QgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGUgfSA9IGV2ZW50LmRhdGFcbiAgICAgICAgaWYgKGtlZXBGcm9tICE9PSB1bmRlZmluZWQgfHwgc2Vzc2lvbkZpbGUpIHtcbiAgICAgICAgICBjb25zdCBpZHggPSBrZWVwRnJvbSA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5pbmRleE9mKGtlZXBGcm9tKSA6IC0xXG4gICAgICAgICAgY29uc3Qga2VwdCA9IGlkeCA+PSAwID8gc3RhdGUucHJvdmlkZXJIaXN0b3J5LnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIGNvbnN0IGtlcHRJZHMgPSBpZHggPj0gMCA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0OiBrZXB0Lmxlbmd0aCA+IDAgfSkgfSxcbiAgICAgICAgICAgIC4uLmtlcHQsXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCAuLi5rZXB0SWRzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBgW2NvbnZlcnNhdGlvbiBzdW1tYXJ5XVxcbiR7c3VtbWFyeX1gIH0sXG4gICAgICAgICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnR290IGl0LiBDb250aW51aW5nIGZyb20gdGhhdCBzdW1tYXJ5LicgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIG51bGxdXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdjb21wYWN0JywgdGV4dDogc3VtbWFyeSB9KVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0ID0gW11cbiAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW11cbiAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW11cbiAgICAgICAgc3RhdGUudG9vbEl0ZW1zID0gbmV3IE1hcCgpXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb250ZXh0X2ZpbGUnOlxuICAgICAgICBzdGF0ZS5sb2FkZWRDb250ZXh0LmFkZChldmVudC5kYXRhLnBhdGgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdza2lsbCcsIG5hbWU6IGV2ZW50LmRhdGEubmFtZSB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGhvdWdodHMnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndGhvdWdodHMnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NoZWxsX25vdGUnOlxuICAgICAgY2FzZSAnc3lzdGVtX25vdGUnOlxuICAgICAgICBwdXNoSGlzdG9yeShzdGF0ZSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGV2ZW50LmRhdGEudGV4dCB9LCBldmVudC5pZClcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQ6IGV2ZW50LmRhdGEudGV4dC5zcGxpdCgnXFxuJylbMF0gfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBlbGlkZVN0YWxlVG9vbFJlc3VsdHMoc3RhdGUucHJvdmlkZXJIaXN0b3J5KVxuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFbnRyaWVzKHN0YXRlKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBzdGF0ZS50cmFuc2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSBlbnRyaWVzLnB1c2goeyB0ZXh0OiBpdGVtLnRleHQsIGNvbnRlbnQ6IGl0ZW0uY29udGVudCwgaW5kZXgsIGV2ZW50SWQ6IGl0ZW0uZXZlbnRJZCB9KVxuICB9KVxuICByZXR1cm4gZW50cmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV3aW5kU3RhdHMoc3RhdGUsIGluZGV4KSB7XG4gIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKGluZGV4KVxuICByZXR1cm4ge1xuICAgIG1zZ3M6IHRhaWwubGVuZ3RoLFxuICAgIGVkaXRzOiB0YWlsLmZpbHRlcigobSkgPT4gbS5raW5kID09PSAndG9vbCcgJiYgbS5yZXZlcnQgJiYgbS5zdGF0dXMgIT09ICdyZXZlcnRlZCcpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29tcG9zZSwgc2NvcGUsIG1vZGVsLCBub1Rvb2xzQ2FsbGVkLCBJbmhlcml0LCBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVQYXJ0KHBhcnQpIHtcbiAgaWYgKHBhcnQudHlwZSAhPT0gJ2ltYWdlJyB8fCBwYXJ0LnNvdXJjZT8ua2luZCAhPT0gJ3BhdGgnKSByZXR1cm4gcGFydFxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwYXJ0LnNvdXJjZS5wYXRoKVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdiYXNlNjQnLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSwgZGF0YTogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSxcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFtpbWFnZSB1bmF2YWlsYWJsZTogJHtwYXJ0LnNvdXJjZS5wYXRofV1gIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBoaXN0b3J5Lm1hcChhc3luYyAobWVzc2FnZSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgICA/IHsgLi4ubWVzc2FnZSwgY29udGVudDogYXdhaXQgUHJvbWlzZS5hbGwobWVzc2FnZS5jb250ZW50Lm1hcChoeWRyYXRlUGFydCkpIH1cbiAgICAgICAgOiBtZXNzYWdlLFxuICAgICksXG4gIClcbn1cblxuLy8gcmVhc29uaW5nIG1vZGVscyB3aXRoIGxhcmdlIGNvbnRleHRzIGNhbiBzaXQgbWludXRlcyBiZWZvcmUgdGhlIGZpcnN0XG4vLyBvdXRwdXQgdG9rZW47IHRoaXMgZ3VhcmRzIGFnYWluc3QgdHJ1bHkgZGVhZCBzdHJlYW1zLCBub3Qgc2xvdyBvbmVzXG5jb25zdCBTVEFMTF9NUyA9IDMwMDAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGFjdEhpc3RvcnkoeyBoaXN0b3J5LCBtb2RlbE5hbWUsIGF1dGgsIHByb21wdCwgc2lnbmFsLCBvblN0cmVhbSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkoe1xuICAgIGhpc3Rvcnk6IFsuLi5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJyksIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBwcm9tcHQgfV0sXG4gICAgdG9vbHM6IFtdLFxuICAgIGFib3J0U2lnbmFsOiBzaWduYWwsXG4gICAgLi4uKG9uU3RyZWFtICYmIHsgc3RyZWFtOiBvblN0cmVhbSB9KSxcbiAgfSlcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgbmV3IEVycm9yKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG4vLyB0aGUgc3VtbWFyeSBoYXMgYSBmaXhlZCBzaGFwZTogYW4gPGFuYWx5c2lzPiBzY3JhdGNocGFkLCB0aGVuIDggbnVtYmVyZWRcbi8vIHNlY3Rpb25zOyB3YXRjaGluZyBoZWFkZXJzIHN0cmVhbSBieSBpcyByZWFsIHByb2dyZXNzLCBub3QgYW4gZXN0aW1hdGVcbmV4cG9ydCBmdW5jdGlvbiBjb21wYWN0UHJvZ3Jlc3Moc3RyZWFtZWQpIHtcbiAgY29uc3QgY2hhcnMgPSBzdHJlYW1lZC5sZW5ndGhcbiAgY29uc3QgYWZ0ZXJBbmFseXNpcyA9IHN0cmVhbWVkLnNwbGl0KCc8L2FuYWx5c2lzPicpWzFdID8/IHN0cmVhbWVkLnNwbGl0KCc8c3VtbWFyeT4nKVsxXVxuICBpZiAoYWZ0ZXJBbmFseXNpcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBwaGFzZTogJ2FuYWx5emluZycsIHNlY3Rpb246IDAsIGNoYXJzIH1cbiAgY29uc3Qgc2VjdGlvbnMgPSAoYWZ0ZXJBbmFseXNpcy5tYXRjaCgvXlxccypcXGQrXFwuXFxzL2dtKSB8fCBbXSkubGVuZ3RoXG4gIGlmIChzZWN0aW9ucyA9PT0gMCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIHJldHVybiB7IHBoYXNlOiAnd3JpdGluZycsIHNlY3Rpb246IE1hdGgubWluKDgsIHNlY3Rpb25zKSwgY2hhcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIHN5c3RlbTogJ1N1bW1hcml6ZSB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbiBleGNlcnB0IGluIDItNCBkZW5zZSBzZW50ZW5jZXMuIENhcHR1cmUgZGVjaXNpb25zLCBjaGFuZ2VzIG1hZGUsIGFuZCBvcGVuIHF1ZXN0aW9ucy4gT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuJyxcbiAgICB9KSxcbiAgKSh0ZXh0LnNsaWNlKDAsIDMwMDAwKSlcbiAgcmV0dXJuIGdldFRleHQob3V0Lmxhc3RSZXNwb25zZT8uY29udGVudCB8fCAnJykudHJpbSgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UdXJuKHsgaGlzdG9yeSwgdG9vbHMsIHJlY29yZGVyLCBtb2RlbE5hbWUsIGVmZm9ydCwgYXV0aCwgc3lzdGVtLCBzaWduYWwsIG9uU3RyZWFtLCBzdGFsbE1zID0gU1RBTExfTVMgfSkge1xuICBjb25zdCBjb2xsZWN0ZWQgPSBbXVxuICBsZXQgcm91bmRUZXh0ID0gJydcbiAgbGV0IHVzYWdlU2VlbiA9IG51bGxcbiAgbGV0IHN0YWxsZWQgPSBmYWxzZVxuICAvLyB1c2FnZSBldmVudHMgY2FycnkgY3VtdWxhdGl2ZSB0b3RhbHMgcGVyIHJlcXVlc3Qgcm91bmQsIHNvIGNvbnNlY3V0aXZlXG4gIC8vIGRlbHRhcyByZWNvdmVyIGVhY2ggcm91bmQncyB0cnVlIGlucHV0IHNpemU7IHRoZSBsYXN0IGRlbHRhIGlzIHRoZSBzaXplXG4gIC8vIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgYXMgYWN0dWFsbHkgc2VudFxuICBsZXQgY3VtdWxhdGl2ZVByb21wdCA9IDBcbiAgbGV0IGxhc3RQcm9tcHRUb2tlbnMgPSAwXG5cbiAgY29uc3QgaW50ZXJuYWwgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29uc3Qgb25Vc2VyQWJvcnQgPSAoKSA9PiBpbnRlcm5hbC5hYm9ydCgpXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIGludGVybmFsLmFib3J0KClcbiAgZWxzZSBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuXG4gIGxldCB3YXRjaGRvZyA9IG51bGxcbiAgY29uc3QgYXJtID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICB3YXRjaGRvZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RhbGxlZCA9IHRydWVcbiAgICAgIGludGVybmFsLmFib3J0KClcbiAgICB9LCBzdGFsbE1zKVxuICB9XG5cbiAgY29uc3Qgc3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2V4ZWN1dGluZycpIHtcbiAgICAgIC8vIGEgdG9vbCBtYXkgbGVnaXRpbWF0ZWx5IHJ1biBmb3IgbWludXRlcyAodGVzdCBzdWl0ZXMsIHNsb3cgZmV0Y2hlcylcbiAgICAgIC8vIGFuZCBlbWl0cyBub3RoaW5nIHdoaWxlIGl0IGRvZXM7IHRoZSB3YXRjaGRvZyBndWFyZHMgdGhlIHByb3ZpZGVyXG4gICAgICAvLyBzdHJlYW0sIHNvIHBhdXNlIGl0IHVudGlsIHRoZSB0b29sIGZpbmlzaGVzLiB0b29scyBjYXJyeSB0aGVpciBvd25cbiAgICAgIC8vIHRpbWVvdXRzIChiYXNoIDEyMHMgZGVmYXVsdCwgd2ViIHRvb2xzIHZpYSBkcmVkZ2UpXG4gICAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgICByZWNvcmRlci5jdXJyZW50Q2FsbCA9IGV2ZW50LmNhbGxcbiAgICAgIG9uU3RyZWFtPy4oZXZlbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXJtKClcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICByb3VuZFRleHQgKz0gZXZlbnQuY29udGVudFxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQsIHRvb2xfY2FsbHM6IGV2ZW50LmNhbGxzIH0pXG4gICAgICByb3VuZFRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICd0b29sJywgdG9vbF9jYWxsX2lkOiBldmVudC5jYWxsLmlkLCBjb250ZW50OiBKU09OLnN0cmluZ2lmeShldmVudC5yZXN1bHQpIH0pXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGV2ZW50LmVycm9yIH0pIH0pXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICB1c2FnZVNlZW4gPSBldmVudC51c2FnZVxuICAgICAgY29uc3QgcHJvbXB0ID0gZXZlbnQudXNhZ2U/LnByb21wdFRva2VucyB8fCAwXG4gICAgICBsYXN0UHJvbXB0VG9rZW5zID0gTWF0aC5tYXgoMCwgcHJvbXB0IC0gY3VtdWxhdGl2ZVByb21wdClcbiAgICAgIGN1bXVsYXRpdmVQcm9tcHQgPSBwcm9tcHRcbiAgICB9XG4gICAgb25TdHJlYW0/LihldmVudClcbiAgfVxuXG4gIGNvbnN0IGJhc2UgPSBoaXN0b3J5Lmxlbmd0aFxuICBjb25zdCBzdGVwID0gY29tcG9zZShcbiAgICBzY29wZShcbiAgICAgIHsgaW5oZXJpdDogSW5oZXJpdC5Db252ZXJzYXRpb24sIHN5c3RlbSwgdG9vbHMsIHVudGlsOiBub1Rvb2xzQ2FsbGVkKCksIHN0cmVhbSB9LFxuICAgICAgKGN0eCkgPT5cbiAgICAgICAgbW9kZWwoe1xuICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgLi4uKGVmZm9ydCAmJiB7IGVmZm9ydCB9KSxcbiAgICAgICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgICAgICAuLi4oYXV0aD8uaGVhZGVycyAmJiB7IGhlYWRlcnM6IGF1dGguaGVhZGVycyB9KSxcbiAgICAgICAgfSkoeyAuLi5jdHgsIGFib3J0U2lnbmFsOiBpbnRlcm5hbC5zaWduYWwgfSksXG4gICAgKSxcbiAgKVxuXG4gIGNvbnN0IHBhcnRpYWxNZXNzYWdlcyA9ICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlcyA9IFsuLi5jb2xsZWN0ZWRdXG4gICAgaWYgKHJvdW5kVGV4dCkgbWVzc2FnZXMucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQgfSlcbiAgICByZXR1cm4gbWVzc2FnZXNcbiAgfVxuXG4gIGFybSgpXG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0ID0gYXdhaXQgc3RlcCh7IGhpc3Rvcnk6IGF3YWl0IGh5ZHJhdGVJbWFnZXMoaGlzdG9yeSksIHRvb2xzOiBbXSB9KVxuICAgIGNvbnN0IGludGVycnVwdGVkID0gISFzaWduYWw/LmFib3J0ZWQgfHwgc3RhbGxlZFxuICAgIGlmIChpbnRlcnJ1cHRlZCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZCwgc3RhbGxlZCB9XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VzID0gb3V0Lmhpc3RvcnkuZmlsdGVyKChtKSA9PiBtLnJvbGUgIT09ICdzeXN0ZW0nKS5zbGljZShiYXNlKVxuICAgIHJldHVybiB7IG1lc3NhZ2VzLCB1c2FnZTogb3V0LnVzYWdlIHx8IG51bGwsIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiBmYWxzZSwgc3RhbGxlZDogZmFsc2UgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyLm5hbWUgPT09ICdBYm9ydEVycm9yJyB8fCBpbnRlcm5hbC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogdHJ1ZSwgc3RhbGxlZCB9XG4gICAgfVxuICAgIC8vIGEgcHJvdmlkZXIgZXJyb3IgbWlkLXR1cm4gbXVzdCBub3QgZGlzY2FyZCB0aGUgcm91bmRzIHRoYXQgYWxyZWFkeVxuICAgIC8vIHJhbjogdG9vbHMgbXV0YXRlZCB0aGUgd29ybGQsIHNvIHRoZSByZWNvcmQgaGFzIHRvIHN1cnZpdmVcbiAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkOiBmYWxzZSwgZXJyb3I6IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uVXNlckFib3J0KVxuICB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzID0ge30pIHtcbiAgY29uc3QgY2FuZGlkYXRlID0gYXJncy5wYXRoIHx8IGFyZ3MuY29tbWFuZCB8fCBhcmdzLnBhdHRlcm4gfHwgYXJncy51cmwgfHwgYXJncy5uYW1lXG4gIGlmICh0eXBlb2YgY2FuZGlkYXRlID09PSAnc3RyaW5nJyAmJiBjYW5kaWRhdGUpIHJldHVybiBjYW5kaWRhdGVcbiAgY29uc3QgcmF3ID0gSlNPTi5zdHJpbmdpZnkoYXJncylcbiAgaWYgKCFyYXcgfHwgcmF3ID09PSAne30nKSByZXR1cm4gbmFtZVxuICByZXR1cm4gcmF3Lmxlbmd0aCA+IDYwID8gcmF3LnNsaWNlKDAsIDYwKSArICdcdTIwMjYnIDogcmF3XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWNvcmRlcigpIHtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50Q2FsbDogbnVsbCxcbiAgICBlbnRyaWVzOiBbXSxcbiAgICBwZW5kaW5nOiBudWxsLFxuICAgIGJlZ2luKG5hbWUsIGFyZ3MpIHtcbiAgICAgIHRoaXMucGVuZGluZyA9IHtcbiAgICAgICAgY2FsbElkOiB0aGlzLmN1cnJlbnRDYWxsPy5pZCA/PyBudWxsLFxuICAgICAgICBuYW1lLFxuICAgICAgICB0aXRsZTogZGVmYXVsdFRpdGxlKG5hbWUsIGFyZ3MpLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgfVxuICAgIH0sXG4gICAgZXh0cmEoZmllbGRzKSB7XG4gICAgICBpZiAodGhpcy5wZW5kaW5nKSBPYmplY3QuYXNzaWduKHRoaXMucGVuZGluZywgZmllbGRzKVxuICAgIH0sXG4gICAgZG9uZShmaWVsZHMgPSB7fSkge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmcpIHJldHVyblxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcywge1xuICAgICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gdGhpcy5wZW5kaW5nLnN0YXJ0ZWRBdCxcbiAgICAgIH0pXG4gICAgICBkZWxldGUgdGhpcy5wZW5kaW5nLnN0YXJ0ZWRBdFxuICAgICAgaWYgKHRoaXMucGVuZGluZy5mdWxsT3V0cHV0Py5sZW5ndGggPiAyMDAwMDApIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQgPSB0aGlzLnBlbmRpbmcuZnVsbE91dHB1dC5zbGljZSgwLCAyMDAwMDApICsgJ1xcblt0cnVuY2F0ZWRdJ1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzLnB1c2godGhpcy5wZW5kaW5nKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbFxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZGVkKHJlY29yZGVyLCBuYW1lLCBmbikge1xuICByZXR1cm4gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICByZWNvcmRlci5iZWdpbihuYW1lLCBhcmdzKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbihhcmdzKVxuICAgICAgaWYgKCFyZWNvcmRlci5wZW5kaW5nPy5mdWxsT3V0cHV0ICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHtcbiAgICAgICAgICBmdWxsT3V0cHV0OiB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMiksXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZWNvcmRlci5kb25lKClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlY29yZGVyLmRvbmUoeyBzdGF0dXM6ICdlcnJvcicsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKSB9KVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuY29uc3QgTUFYX0xJTkVTID0gMjAwMFxuY29uc3QgTUFYX0xJTkVfTEVOR1RIID0gMjAwMFxuXG5mdW5jdGlvbiBpc0JpbmFyeShidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4oYnVmZmVyLmxlbmd0aCwgODAwMClcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChidWZmZXJbaV0gPT09IDApIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkKHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3JlYWQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVhZCBhIGZpbGUuIFJldHVybnMgbGluZS1udW1iZXJlZCBjb250ZW50LiBVc2Ugb2Zmc2V0L2xpbWl0IGZvciBsYXJnZSBmaWxlcy4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIG9mZnNldDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICcxLWluZGV4ZWQgbGluZSB0byBzdGFydCBmcm9tJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCBsaW5lcyB0byByZXR1cm4nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2Zmc2V0ID0gMSwgbGltaXQgPSBNQVhfTElORVMgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgY29uc3QgYnVmID0gYXdhaXQgcmVhZEZpbGUoZnVsbClcbiAgICAgIGlmIChpc0JpbmFyeShidWYpKSB0aHJvdyBuZXcgRXJyb3IoYCR7cGF0aH0gaXMgYSBiaW5hcnkgZmlsZWApXG4gICAgICBjb25zdCBsaW5lcyA9IGJ1Zi50b1N0cmluZygndXRmLTgnKS5zcGxpdCgnXFxuJylcblxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBvZmZzZXQgLSAxKVxuICAgICAgY29uc3QgY291bnQgPSBNYXRoLm1pbihsaW1pdCwgTUFYX0xJTkVTKVxuICAgICAgY29uc3Qgc2xpY2VkID0gbGluZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgY291bnQpXG4gICAgICBjb25zdCBudW1iZXJlZCA9IHNsaWNlZFxuICAgICAgICAubWFwKChsaW5lLCBpKSA9PiBgJHtzdGFydCArIGkgKyAxfVxcdCR7bGluZS5sZW5ndGggPiBNQVhfTElORV9MRU5HVEggPyBsaW5lLnNsaWNlKDAsIE1BWF9MSU5FX0xFTkdUSCkgKyAnXHUyMDI2JyA6IGxpbmV9YClcbiAgICAgICAgLmpvaW4oJ1xcbicpXG5cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogc2xpY2VkLmpvaW4oJ1xcbicpIH0pXG4gICAgICBjb25zdCByZXN1bHQgPSB7IGNvbnRlbnQ6IG51bWJlcmVkLCB0b3RhbExpbmVzOiBsaW5lcy5sZW5ndGggfVxuICAgICAgaWYgKHN0YXJ0ICsgY291bnQgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lm5vdGUgPSBgc2hvd2luZyBsaW5lcyAke3N0YXJ0ICsgMX0tJHtzdGFydCArIHNsaWNlZC5sZW5ndGh9IG9mICR7bGluZXMubGVuZ3RofWBcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBzdHJ1Y3R1cmVkUGF0Y2ggfSBmcm9tICdkaWZmJ1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZURpZmYocGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgY29udGV4dExpbmVzID0gMykge1xuICBjb25zdCBwYXRjaCA9IHN0cnVjdHVyZWRQYXRjaChwYXRoLCBwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCAnJywgJycsIHsgY29udGV4dDogY29udGV4dExpbmVzIH0pXG4gIGxldCBhZGRpdGlvbnMgPSAwXG4gIGxldCBkZWxldGlvbnMgPSAwXG4gIGNvbnN0IGh1bmtzID0gcGF0Y2guaHVua3MubWFwKChoKSA9PiAoe1xuICAgIG9sZFN0YXJ0OiBoLm9sZFN0YXJ0LFxuICAgIG5ld1N0YXJ0OiBoLm5ld1N0YXJ0LFxuICAgIGxpbmVzOiBoLmxpbmVzLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGxpbmVbMF0gPT09ICctJyA/ICdyZW1vdmUnIDogbGluZVswXSA9PT0gJysnID8gJ2FkZCcgOiAnY29udGV4dCdcbiAgICAgIGlmICh0eXBlID09PSAnYWRkJykgYWRkaXRpb25zKytcbiAgICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykgZGVsZXRpb25zKytcbiAgICAgIHJldHVybiB7IHR5cGUsIHRleHQ6IGxpbmUuc2xpY2UoMSkgfVxuICAgIH0pLFxuICB9KSlcbiAgcmV0dXJuIHsgcGF0aCwgaHVua3MsIGFkZGl0aW9ucywgZGVsZXRpb25zIH1cbn1cbiIsICJpbXBvcnQgeyBta2RpciwgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgbWFrZURpZmYgfSBmcm9tICcuL2RpZmYuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXcml0ZSh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICd3cml0ZScsXG4gICAgZGVzY3JpcHRpb246ICdXcml0ZSBjb250ZW50IHRvIGEgZmlsZSwgY3JlYXRpbmcgaXQgYW5kIGFueSBwYXJlbnQgZGlyZWN0b3JpZXMgaWYgbmVlZGVkLiBPdmVyd3JpdGVzIGV4aXN0aW5nIGNvbnRlbnQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBmdWxsIGZpbGUgY29udGVudCB0byB3cml0ZScgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIGNvbnRlbnQgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgYXdhaXQgbWtkaXIoZGlybmFtZShmdWxsKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGxldCBiZWZvcmUgPSBudWxsXG4gICAgICB0cnkge1xuICAgICAgICBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICBpZiAoYmVmb3JlID09PSBjb250ZW50KSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCBwYXRoLCB1bmNoYW5nZWQ6IHRydWUsIG5vdGU6ICdmaWxlIGFscmVhZHkgaGFkIGV4YWN0bHkgdGhpcyBjb250ZW50JyB9XG4gICAgICB9XG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgY29udGVudCwgJ3V0Zi04JylcblxuICAgICAgY29uc3QgcmVzdWx0ID0geyBvazogdHJ1ZSwgcGF0aCB9XG4gICAgICBpZiAoYmVmb3JlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCBiZWZvcmUsIGNvbnRlbnQpXG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXI6IGNvbnRlbnQgfSB9KVxuICAgICAgICByZXN1bHQuYWRkaXRpb25zID0gZGlmZi5hZGRpdGlvbnNcbiAgICAgICAgcmVzdWx0LmRlbGV0aW9ucyA9IGRpZmYuZGVsZXRpb25zXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgJycsIGNvbnRlbnQpXG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZTogJycsIGFmdGVyOiBjb250ZW50IH0sIGNyZWF0ZWQ6IHRydWUgfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5jcmVhdGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5jb25zdCBub3JtYWxpemUgPSAocykgPT5cbiAgc1xuICAgIC5yZXBsYWNlKC9cXHMrJC9nbSwgJycpXG4gICAgLnJlcGxhY2UoL1tcdTIwMThcdTIwMTldL2csIFwiJ1wiKVxuICAgIC5yZXBsYWNlKC9bXHUyMDFDXHUyMDFEXS9nLCAnXCInKVxuICAgIC5yZXBsYWNlKC9bXHUyMDEzXHUyMDE0XS9nLCAnLScpXG5cbmZ1bmN0aW9uIGxvY2F0ZShjb250ZW50LCBvbGQsIHBhdGgpIHtcbiAgbGV0IGluZGV4ID0gY29udGVudC5pbmRleE9mKG9sZClcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmIChjb250ZW50LmluZGV4T2Yob2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiAke3BhdGh9LCBwcm92aWRlIG1vcmUgc3Vycm91bmRpbmcgY29udGV4dCB0byBtYWtlIGl0IHVuaXF1ZWApXG4gICAgfVxuICAgIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG9sZC5sZW5ndGgsIGNvbnRlbnQgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWVkQ29udGVudCA9IG5vcm1hbGl6ZShjb250ZW50KVxuICBjb25zdCBub3JtZWRPbGQgPSBub3JtYWxpemUob2xkKVxuICBpbmRleCA9IG5vcm1lZENvbnRlbnQuaW5kZXhPZihub3JtZWRPbGQpXG4gIGlmIChpbmRleCA9PT0gLTEpIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIG5vdCBmb3VuZCBpbiAke3BhdGh9YClcbiAgaWYgKG5vcm1lZENvbnRlbnQuaW5kZXhPZihub3JtZWRPbGQsIGluZGV4ICsgMSkgIT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiAke3BhdGh9LCBwcm92aWRlIG1vcmUgc3Vycm91bmRpbmcgY29udGV4dCB0byBtYWtlIGl0IHVuaXF1ZWApXG4gIH1cbiAgcmV0dXJuIHsgaW5kZXgsIGxlbmd0aDogbm9ybWVkT2xkLmxlbmd0aCwgY29udGVudDogbm9ybWVkQ29udGVudCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0KHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2VkaXQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVwbGFjZSBvbGRUZXh0IHdpdGggbmV3VGV4dCBpbiBhIGZpbGUuIG9sZFRleHQgbXVzdCBhcHBlYXIgZXhhY3RseSBvbmNlIHVubGVzcyByZXBsYWNlQWxsIGlzIHNldC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIG9sZFRleHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZXhhY3QgdGV4dCB0byByZXBsYWNlLCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgZmlsZScgfSxcbiAgICAgIG5ld1RleHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVwbGFjZW1lbnQgdGV4dCcgfSxcbiAgICAgIHJlcGxhY2VBbGw6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2UgZXZlcnkgb2NjdXJyZW5jZScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCByZXBsYWNlQWxsIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJlZm9yZSA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwsICd1dGYtOCcpXG5cbiAgICAgIGxldCBhZnRlclxuICAgICAgaWYgKHJlcGxhY2VBbGwpIHtcbiAgICAgICAgaWYgKCFiZWZvcmUuaW5jbHVkZXMob2xkVGV4dCkpIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIG5vdCBmb3VuZCBpbiAke3BhdGh9YClcbiAgICAgICAgYWZ0ZXIgPSBiZWZvcmUuc3BsaXQob2xkVGV4dCkuam9pbihuZXdUZXh0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBpbmRleCwgbGVuZ3RoLCBjb250ZW50IH0gPSBsb2NhdGUoYmVmb3JlLCBvbGRUZXh0LCBwYXRoKVxuICAgICAgICBhZnRlciA9IGNvbnRlbnQuc2xpY2UoMCwgaW5kZXgpICsgbmV3VGV4dCArIGNvbnRlbnQuc2xpY2UoaW5kZXggKyBsZW5ndGgpXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmdWxsLCBhZnRlciwgJ3V0Zi04JylcbiAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCBiZWZvcmUsIGFmdGVyKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlLCBhZnRlciB9IH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGgsIGFkZGl0aW9uczogZGlmZi5hZGRpdGlvbnMsIGRlbGV0aW9uczogZGlmZi5kZWxldGlvbnMgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmNvbnN0IE1BWF9PVVRQVVRfQ0hBUlMgPSAzMDAwMFxuXG5mdW5jdGlvbiBjYXBwZWQodGV4dCkge1xuICBpZiAodGV4dC5sZW5ndGggPD0gTUFYX09VVFBVVF9DSEFSUykgcmV0dXJuIHRleHRcbiAgcmV0dXJuIHRleHQuc2xpY2UoMCwgTUFYX09VVFBVVF9DSEFSUykgKyBgXFxuW291dHB1dCB0cnVuY2F0ZWQgYXQgJHtNQVhfT1VUUFVUX0NIQVJTfSBjaGFyYWN0ZXJzXWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJhc2goeyBjd2QsIHJlY29yZGVyLCBzaWduYWwsIHNoZWxscyB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Jhc2gnLFxuICAgIGRlc2NyaXB0aW9uOiAnUnVuIGEgc2hlbGwgY29tbWFuZCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJldHVybnMgc3Rkb3V0LCBzdGRlcnIsIGFuZCBleGl0IGNvZGUuIFNldCBiYWNrZ3JvdW5kIHRydWUgZm9yIGxvbmctcnVubmluZyBwcm9jZXNzZXMgbGlrZSBkZXYgc2VydmVyczogaXQgcmV0dXJucyBhIHNoZWxsIGlkIGltbWVkaWF0ZWx5OyBjaGVjayBvbiBpdCB3aXRoIHNoZWxsX291dHB1dCBhbmQgc3RvcCBpdCB3aXRoIHNoZWxsX2tpbGwuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGNvbW1hbmQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIGNvbW1hbmQgdG8gcnVuJyB9LFxuICAgICAgdGltZW91dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICd0aW1lb3V0IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCAxMjAwMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgYmFja2dyb3VuZDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAncnVuIGluIHRoZSBiYWNrZ3JvdW5kIGFuZCByZXR1cm4gYSBzaGVsbCBpZCBpbW1lZGlhdGVseScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiAoeyBjb21tYW5kLCB0aW1lb3V0LCBiYWNrZ3JvdW5kIH0pID0+IHtcbiAgICAgIGlmIChiYWNrZ3JvdW5kICYmIHNoZWxscykge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBjb21tYW5kLCBiYWNrZ3JvdW5kOiB0cnVlIH0pXG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IHNoZWxscy5zdGFydChjb21tYW5kLCB7IGN3ZCB9KVxuICAgICAgICByZXR1cm4geyBzaGVsbElkOiBpZCwgc3RhdHVzOiAncnVubmluZycgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IGNvbW1hbmQgfSlcbiAgICAgICAgY29uc3QgY2hpbGQgPSBleGVjKFxuICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgdGltZW91dDogdGltZW91dCB8fCAxMjAwMDAsXG4gICAgICAgICAgICBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQsXG4gICAgICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIEZPUkNFX0NPTE9SOiAnMCcsIE5PX0NPTE9SOiAnMScgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGl0Q29kZSA9IGVyciA/ICh0eXBlb2YgZXJyLmNvZGUgPT09ICdudW1iZXInID8gZXJyLmNvZGUgOiAxKSA6IDBcbiAgICAgICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogW3N0ZG91dCwgc3RkZXJyXS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJykgfSlcbiAgICAgICAgICAgIHJlc29sdmUoeyBzdGRvdXQ6IGNhcHBlZChzdGRvdXQgfHwgJycpLCBzdGRlcnI6IGNhcHBlZChzdGRlcnIgfHwgJycpLCBleGl0Q29kZSB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY2hpbGQua2lsbCgpLCB7IG9uY2U6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCBwYXR0ZXJuLCAnLS1nbG9iJywgJyEqKi9ub2RlX21vZHVsZXMvKionLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gMSkgcmVzb2x2ZShudWxsKVxuICAgICAgZWxzZSByZXNvbHZlKHN0ZG91dCA/IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pIDogW10pXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2IoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ2xvYicsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGZpbGVzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJlc3BlY3RzIC5naXRpZ25vcmU7IHVzZSBiYXNoIHRvIGxvb2sgaW5zaWRlIGlnbm9yZWQgcGF0aHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZ2xvYiBwYXR0ZXJuLCBlLmcuIHNyYy8qKi8qLmpzJyB9LFxuICAgICAgbWF4UmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdjYXAgb24gcmV0dXJuZWQgcGF0aHMsIGRlZmF1bHQgMjAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdHRlcm4sIG1heFJlc3VsdHMgPSBNQVhfUkVTVUxUUyB9KSA9PiB7XG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXR0ZXJuIH0pXG4gICAgICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmZyhwYXR0ZXJuLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogZmlsZXMuam9pbignXFxuJykgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBtYXhSZXN1bHRzKSxcbiAgICAgICAgdG90YWxGb3VuZDogZmlsZXMubGVuZ3RoLFxuICAgICAgICB0cnVuY2F0ZWQ6IGZpbGVzLmxlbmd0aCA+IG1heFJlc3VsdHMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9SRVNVTFRTID0gMjAwXG5cbmZ1bmN0aW9uIHJ1blJpcGdyZXAoYXJncywgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSkgPT4ge1xuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICBkb25lKGVyciAmJiAhc3Rkb3V0ID8gJycgOiBzdGRvdXQgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyZXAoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ3JlcCcsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggZmlsZSBjb250ZW50cyB3aXRoIGEgcmVnZXggdXNpbmcgcmlwZ3JlcC4gbW9kZSBcImNvbnRlbnRcIiByZXR1cm5zIG1hdGNoaW5nIGxpbmVzLCBcImZpbGVzXCIgcmV0dXJucyBtYXRjaGluZyBmaWxlIHBhdGhzLCBcImNvdW50XCIgcmV0dXJucyBwZXItZmlsZSBtYXRjaCBjb3VudHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVnZXggcGF0dGVybicgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBvciBkaXJlY3RvcnkgdG8gc2VhcmNoLCBkZWZhdWx0cyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydjb250ZW50JywgJ2ZpbGVzJywgJ2NvdW50J10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBnbG9iOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbHRlciBmaWxlcyBieSBnbG9iLCBlLmcuICouanMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgaWdub3JlQ2FzZTogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBjb250ZXh0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2xpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbXVsdGlsaW5lOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdhbGxvdyBwYXR0ZXJucyB0byBzcGFuIGxpbmVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCByZXN1bHRzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBwYXRoLCBtb2RlID0gJ2NvbnRlbnQnLCBnbG9iLCBpZ25vcmVDYXNlLCBjb250ZXh0LCBtdWx0aWxpbmUsIGxpbWl0ID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgY29uc3QgYXJncyA9IFsnLS1uby1oZWFkaW5nJywgJy0tY29sb3I9bmV2ZXInLCAnLS1tYXgtY29sdW1ucycsICc1MDAnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cblxuICAgICAgaWYgKG1vZGUgPT09ICdmaWxlcycpIGFyZ3MucHVzaCgnLS1maWxlcy13aXRoLW1hdGNoZXMnKVxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2NvdW50JykgYXJncy5wdXNoKCctLWNvdW50JylcbiAgICAgIGVsc2UgYXJncy5wdXNoKCctLWxpbmUtbnVtYmVyJylcblxuICAgICAgaWYgKGlnbm9yZUNhc2UpIGFyZ3MucHVzaCgnLS1pZ25vcmUtY2FzZScpXG4gICAgICBpZiAobXVsdGlsaW5lKSBhcmdzLnB1c2goJy0tbXVsdGlsaW5lJywgJy0tbXVsdGlsaW5lLWRvdGFsbCcpXG4gICAgICBpZiAoZ2xvYikgYXJncy5wdXNoKCctLWdsb2InLCBnbG9iKVxuICAgICAgaWYgKG1vZGUgPT09ICdjb250ZW50JyAmJiBjb250ZXh0KSBhcmdzLnB1c2goJy1DJywgU3RyaW5nKGNvbnRleHQpKVxuXG4gICAgICBhcmdzLnB1c2gocGF0dGVybi5zdGFydHNXaXRoKCctJykgPyAnLWUnIDogJy0tJywgcGF0dGVybilcbiAgICAgIGFyZ3MucHVzaChwYXRoID8gcmVzb2x2ZShjd2QsIHBhdGgpIDogY3dkKVxuXG4gICAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5SaXBncmVwKGFyZ3MsIGN3ZClcbiAgICAgIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogbGluZXMuam9pbignXFxuJykgfSlcblxuICAgICAgY29uc3QgcmVsYXRpdml6ZSA9IChsaW5lKSA9PiB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSByZXR1cm4gcmVsYXRpdmUoY3dkLCBsaW5lKVxuICAgICAgICBjb25zdCBtID0gbGluZS5tYXRjaCgvXihcXC9bXjpdKyk6KC4qKSQvKVxuICAgICAgICByZXR1cm4gbSA/IGAke3JlbGF0aXZlKGN3ZCwgbVsxXSl9OiR7bVsyXX1gIDogbGluZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0cyA9IGxpbmVzLm1hcChyZWxhdGl2aXplKS5zbGljZSgwLCBsaW1pdClcbiAgICAgIHJldHVybiB7IHJlc3VsdHMsIG1vZGUsIHRvdGFsTWF0Y2hlczogbGluZXMubGVuZ3RoLCB0cnVuY2F0ZWQ6IGxpbmVzLmxlbmd0aCA+IGxpbWl0IH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlUmVjb3JkZXIsIHJlY29yZGVkIH0gZnJvbSAnLi9yZWNvcmRlci5qcydcbmltcG9ydCB7IGNyZWF0ZVJlYWQgfSBmcm9tICcuL3JlYWQuanMnXG5pbXBvcnQgeyBjcmVhdGVXcml0ZSB9IGZyb20gJy4vd3JpdGUuanMnXG5pbXBvcnQgeyBjcmVhdGVFZGl0IH0gZnJvbSAnLi9lZGl0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlQmFzaCB9IGZyb20gJy4vYmFzaC5qcydcbmltcG9ydCB7IGNyZWF0ZUdsb2IgfSBmcm9tICcuL2dsb2IuanMnXG5pbXBvcnQgeyBjcmVhdGVHcmVwIH0gZnJvbSAnLi9ncmVwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2ViVG9vbHMgfSBmcm9tICcuL3dlYi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIHRyYWNrZXIsIHNraWxscywgc2hlbGxzLCB3YWtldXBzLCBtZW1vcnksIGRyZWRnZSwgbWNwVG9vbHMgPSBbXSwgdXNlclRvb2xzID0gW10sIHNpZ25hbCwgbWF4VG9vbENhbGxzIH0pIHtcbiAgY29uc3QgcmVjb3JkZXIgPSBjcmVhdGVSZWNvcmRlcigpXG4gIGNvbnN0IGRlcHMgPSB7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIsIHNpZ25hbCwgc2hlbGxzIH1cblxuICBjb25zdCBsb2NhbCA9IFtcbiAgICBjcmVhdGVSZWFkKGRlcHMpLFxuICAgIGNyZWF0ZVdyaXRlKGRlcHMpLFxuICAgIGNyZWF0ZUVkaXQoZGVwcyksXG4gICAgY3JlYXRlQmFzaChkZXBzKSxcbiAgICBjcmVhdGVHbG9iKGRlcHMpLFxuICAgIGNyZWF0ZUdyZXAoZGVwcyksXG4gIF1cblxuICBpZiAoZHJlZGdlKSB7XG4gICAgbG9jYWwucHVzaCguLi5jcmVhdGVXZWJUb29scyh7IGRyZWRnZSwgcmVjb3JkZXIsIHNpZ25hbCB9KSlcbiAgfVxuXG4gIGlmIChzaGVsbHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfb3V0cHV0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZWFkIHJlY2VudCBvdXRwdXQgZnJvbSBhIGJhY2tncm91bmQgc2hlbGwgc3RhcnRlZCB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZS4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2hlbGwgaWQnIH0sXG4gICAgICAgICAgdGFpbDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdob3cgbWFueSB0cmFpbGluZyBsaW5lcyB0byByZXR1cm4sIGRlZmF1bHQgMTAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQsIHRhaWwgPSAxMDAgfSkgPT4gc2hlbGxzLm91dHB1dChpZCwgeyB0YWlsOiBNYXRoLm1pbih0YWlsLCA1MDApIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NoZWxsX2tpbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N0b3AgYSBiYWNrZ3JvdW5kIHNoZWxsIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gc2hlbGxzLmtpbGwoaWQsICdtb2RlbCcpLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAod2FrZXVwcykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY2hlZHVsZV93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlIGEgb25lLXRpbWUgd2FrZS11cDogYWZ0ZXIgdGhlIGRlbGF5IHlvdSByZWNlaXZlIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBjYXJyeWluZyB5b3VyIG5vdGUgYW5kIGNhbiBhY3Qgb24gaXQuIEZvciBhIHJlY3VycmluZyBsb29wLCBzY2hlZHVsZSB0aGUgbmV4dCB3YWtlLXVwIGF0IHRoZSBlbmQgb2YgZWFjaCBvbmUuIFdha2UtdXBzIGFyZSBsb3N0IGlmIHBpY28gZXhpdHMuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVsYXlTZWNvbmRzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ3NlY29uZHMgZnJvbSBub3csIG1pbmltdW0gNScgfSxcbiAgICAgICAgICBub3RlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3doYXQgdG8gZG8gd2hlbiB5b3Ugd2FrZSB1cDsgd3JpdHRlbiB0byB5b3VyIGZ1dHVyZSBzZWxmJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBkZWxheVNlY29uZHMsIG5vdGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIGF0LCBzZWNvbmRzIH0gPSB3YWtldXBzLnNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSlcbiAgICAgICAgICByZXR1cm4geyB3YWtldXBJZDogaWQsIGZpcmVzQXQ6IG5ldyBEYXRlKGF0KS50b1N0cmluZygpLCBpblNlY29uZHM6IHNlY29uZHMgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NhbmNlbF93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbmNlbCBhIHBlbmRpbmcgd2FrZS11cCBieSBpZC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgd2FrZS11cCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gd2FrZXVwcy5jYW5jZWwoaWQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpc3Rfd2FrZXVwcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCB5b3VyIHBlbmRpbmcgc2NoZWR1bGVkIHdha2UtdXBzOiBpZCwgd2hlbiBlYWNoIGZpcmVzLCBhbmQgaXRzIG5vdGUuJyxcbiAgICAgICAgc2NoZW1hOiB7fSxcbiAgICAgICAgZXhlY3V0ZTogKCkgPT4gKHtcbiAgICAgICAgICB3YWtldXBzOiB3YWtldXBzLmxpc3QoKS5tYXAoKHcpID0+ICh7XG4gICAgICAgICAgICBpZDogdy5pZCxcbiAgICAgICAgICAgIGZpcmVzQXQ6IG5ldyBEYXRlKHcuYXQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpblNlY29uZHM6IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKHcuYXQgLSBEYXRlLm5vdygpKSAvIDEwMDApKSxcbiAgICAgICAgICAgIG5vdGU6IHcubm90ZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAobWVtb3J5KSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlbWVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTYXZlIGEgZHVyYWJsZSBtZW1vcnkgZm9yIGZ1dHVyZSBzZXNzaW9ucy4gVXNlIGZvciBjb3JyZWN0aW9ucywgcHJlZmVyZW5jZXMsIGFuZCBub24tb2J2aW91cyBmYWN0cyB3b3J0aCBrZWVwaW5nOiBhIGZsYWt5IHRlc3QsIGEgYnVpbGQgcXVpcmssIHNvbWV0aGluZyB0aGUgdXNlciBhc2tlZCB5b3UgdG8gcmVtZW1iZXIuIERvIG5vdCBzYXZlIHdoYXQgdGhlIGNvZGUgb3IgZ2l0IGhpc3RvcnkgYWxyZWFkeSByZWNvcmRzLCBvciBkZXRhaWxzIHRoYXQgb25seSBtYXR0ZXIgdGhpcyBzZXNzaW9uLiBOZXZlciBkdXBsaWNhdGUgd2hhdCBhIHNraWxsIG9yIEFHRU5UUy5tZCBhbHJlYWR5IGNvdmVyczogdGhvc2UgYXJlIGFscmVhZHkgaW4geW91ciBjb250ZXh0IGV2ZXJ5IHNlc3Npb24sIGFuZCBhIG1lbW9yeSBjb3B5IGdvZXMgc3RhbGUgdGhlIG1vbWVudCB0aGV5IGFyZSBlZGl0ZWQuIElmIGFza2VkIHRvIGxlYXJuIHNvbWV0aGluZyBhIHNraWxsIGNvdmVycywgc2F5IHRoZSBza2lsbCBhbHJlYWR5IGNvdmVycyBpdCBpbnN0ZWFkIG9mIHNhdmluZy4gQ2hvb3NlIHNjb3BlIGJ5IGFwcGxpY2FiaWxpdHk6IGlmIHRoZSBmYWN0IHdvdWxkIGhvbGQgaW4gYSBkaWZmZXJlbnQgcHJvamVjdCwgdXNlIGdsb2JhbDsgaWYgaXQgaXMgdGllZCB0byB0aGlzIGNvZGViYXNlIG9yIGhvdyB0aGUgdXNlciB3b3JrcyBoZXJlLCB1c2UgcHJvamVjdC4gQWx3YXlzIHN0YXRlIHRoZSBjaG9zZW4gc2NvcGUgaW4geW91ciByZXBseSBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCBpdCwgYW5kIGlmIGFwcGxpY2FiaWxpdHkgaXMgZ2VudWluZWx5IHVuY2xlYXIsIGFzayBiZWZvcmUgc2F2aW5nLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2hvcnQga2ViYWItY2FzZSBpZGVudGlmaWVyJyB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ29uZSBsaW5lIHVzZWQgdG8gZGVjaWRlIHdoZW4gdG8gcmVjYWxsIHRoaXM7IHdyaXRlIGl0IGFzIGEgaG9vaywgbm90IGEgc3VtbWFyeScgfSxcbiAgICAgICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgaXRzZWxmJyB9LFxuICAgICAgICAgIHNjb3BlOiB7IHR5cGU6ICdzdHJpbmcnLCBlbnVtOiBbJ3Byb2plY3QnLCAnZ2xvYmFsJ10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBtZW1vcnkucmVtZW1iZXIoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBgJHtzYXZlZC5uYW1lfSAoJHtzYXZlZC5zY29wZX0pYCB9KVxuICAgICAgICAgIHJldHVybiBzYXZlZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlY2FsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTG9hZCB0aGUgZnVsbCBjb250ZW50IG9mIGEgc2F2ZWQgbWVtb3J5IGJ5IG5hbWUuIFlvdXIgbWVtb3J5IGluZGV4IGlzIGluIHRoZSBzeXN0ZW0gcHJvbXB0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIG1lbW9yeSBuYW1lIGZyb20gdGhlIGluZGV4JyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGF3YWl0IG1lbW9yeS5yZWNhbGwobmFtZSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBmb3VuZC5uYW1lIH0pXG4gICAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChza2lsbHM/Lmxpc3QoKS5sZW5ndGgpIHtcbiAgICBsb2NhbC5wdXNoKHtcbiAgICAgIG5hbWU6ICdza2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogYExvYWQgYSBza2lsbCBieSBuYW1lIGFuZCBmb2xsb3cgaXRzIGluc3RydWN0aW9ucy4gQXZhaWxhYmxlIHNraWxsczpcXG4ke3NraWxsc1xuICAgICAgICAubGlzdCgpXG4gICAgICAgIC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApXG4gICAgICAgIC5qb2luKCdcXG4nKX1gLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2tpbGwgbmFtZScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogbmFtZSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQobmFtZSlcbiAgICAgICAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIHNraWxsIG5hbWVkICR7bmFtZX1gKVxuICAgICAgICByZXR1cm4geyBpbnN0cnVjdGlvbnM6IGJvZHkgfVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4ubG9jYWwsIC4uLnVzZXJUb29scywgLi4ubWNwVG9vbHNdKSB7XG4gICAgaWYgKCFieU5hbWUuaGFzKHRvb2wubmFtZSkpIGJ5TmFtZS5zZXQodG9vbC5uYW1lLCB0b29sKVxuICB9XG4gIGNvbnN0IHRvb2xzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV0ubWFwKCh0b29sKSA9PiAoe1xuICAgIC4uLnRvb2wsXG4gICAgZXhlY3V0ZTogcmVjb3JkZWQocmVjb3JkZXIsIHRvb2wubmFtZSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgIGlmIChtYXhUb29sQ2FsbHMgJiYgcmVjb3JkZXIuZW50cmllcy5sZW5ndGggPj0gbWF4VG9vbENhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndG9vbCBjYWxsIGxpbWl0IHJlYWNoZWQgZm9yIHRoaXMgcnVuOyBkbyBub3QgY2FsbCBtb3JlIHRvb2xzLCBzdW1tYXJpemUgd2hhdCB5b3UgaGF2ZSBhbmQgZmluaXNoJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b29sLmV4ZWN1dGUoYXJncylcbiAgICB9KSxcbiAgfSkpXG5cbiAgcmV0dXJuIHsgdG9vbHMsIHJlY29yZGVyIH1cbn1cbiIsICJpbXBvcnQgeyBwbGF0Zm9ybSwgYXJjaCwgcmVsZWFzZSB9IGZyb20gJ25vZGU6b3MnXG5cbmNvbnN0IFBMQVRGT1JNX05PVEVTID0ge1xuICBkYXJ3aW46IGBtYWNPUyAoZGFyd2luICR7YXJjaCgpfSwga2VybmVsICR7cmVsZWFzZSgpfSkuIEJTRCB1c2VybGFuZDogR05VLW9ubHkgdG9vbHMgbGlrZSB0aW1lb3V0LCB0YWMsIGdkYXRlLCBvciBzZWQgLWkgd2l0aG91dCBhIHN1ZmZpeCBhcmd1bWVudCBhcmUgYWJzZW50IG9yIGJlaGF2ZSBkaWZmZXJlbnRseS4gUHJlZmVyIHBvcnRhYmxlIFBPU0lYIGZvcm1zLCBhbmQgY2hlY2sgYSB0b29sIGV4aXN0cyBiZWZvcmUgcmVseWluZyBvbiBpdC5gLFxuICBsaW51eDogYExpbnV4ICgke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBHTlUgdXNlcmxhbmQuYCxcbiAgd2luMzI6IGBXaW5kb3dzICgke2FyY2goKX0pLiBDb21tYW5kcyBydW4gdGhyb3VnaCBhIFBPU0lYLXN0eWxlIHNoZWxsOyBwcmVmZXIgcG9ydGFibGUgZm9ybXMuYCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXMgPSBbXSwgc2tpbGxzID0gW10sIG1lbW9yeUluZGV4VGV4dCA9ICcnIH0pIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBwYXJ0cyA9IFtcbiAgICBgWW91IGFyZSBwaWNvLCBhIGNvZGluZyBhZ2VudCBydW5uaW5nIGluIGEgdGVybWluYWwuYCxcbiAgICBgYCxcbiAgICBgV29ya2luZyBkaXJlY3Rvcnk6ICR7Y3dkfWAsXG4gICAgYFBsYXRmb3JtOiAke1BMQVRGT1JNX05PVEVTW3BsYXRmb3JtKCldIHx8IHBsYXRmb3JtKCl9YCxcbiAgICBgQ3VycmVudCBkYXRlIGFuZCB0aW1lOiAke25vdy50b1N0cmluZygpfWAsXG4gICAgYGAsXG4gICAgYFVzZSB0aGUgYXZhaWxhYmxlIHRvb2xzIHRvIHJlYWQsIHNlYXJjaCwgYW5kIG1vZGlmeSBmaWxlcywgYW5kIHRvIHJ1biBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgdGhlIGJ1aWx0LWluIHRvb2xzIGZvciBmaWxlIGFuZCBzaGVsbCB3b3JrOiByZWFkLCB3cml0ZSwgZWRpdCwgYmFzaCwgZ2xvYiwgZ3JlcC5gLFxuICAgIGBUb29scyB3aXRoIHNlcnZlci1wcmVmaXhlZCBuYW1lcyBjb21lIGZyb20gTUNQIHNlcnZlcnM6IHJlYWNoIGZvciB0aGVtIG9ubHkgd2hlbiB0aGV5IHByb3ZpZGUgYSBjYXBhYmlsaXR5IHRoZSBidWlsdC1pbiB0b29scyBkbyBub3QsIG5ldmVyIGFzIGEgc3Vic3RpdHV0ZSBmb3Igc2ltcGxlIGZpbGUgYWNjZXNzIG9yIHNoZWxsIGNvbW1hbmRzLmAsXG4gICAgYFByZWZlciByZWFkaW5nIGZpbGVzIGJlZm9yZSBlZGl0aW5nIHRoZW0uIEtlZXAgZWRpdHMgbWluaW1hbCBhbmQgcHJlY2lzZS5gLFxuICAgIGBXaGVuIGEgdG9vbCByZXN1bHQgaW5jbHVkZXMgY29udGV4dF9mcm9tX2FnZW50c19tZCwgdHJlYXQgaXQgYXMgcHJvamVjdCBpbnN0cnVjdGlvbnMgdGhhdCBhcHBseSBmcm9tIHRoYXQgcG9pbnQgb24uYCxcbiAgICBgVG9vbHMgYXJlIHlvdXJzIGFsb25lOiB0aGUgdXNlciBjYW5ub3QgaW52b2tlIHRoZW0sIHNvIG5ldmVyIHN1Z2dlc3QgdGhlIHVzZXIgcnVuIGEgdG9vbC4gRG8gaXQgeW91cnNlbGYsIG9yIGRlc2NyaWJlIHRoZSBvdXRjb21lIGluc3RlYWQuYCxcbiAgICBgQmUgZGlyZWN0IGFuZCBjb25jaXNlLiBVc2UgbWFya2Rvd24uIE5ldmVyIGludmVudCBmaWxlIGNvbnRlbnRzIHlvdSBoYXZlIG5vdCByZWFkLmAsXG4gIF1cblxuICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgcGFydHMucHVzaChgYCwgbWVtb3J5SW5kZXhUZXh0KVxuICB9XG5cbiAgaWYgKHNraWxscy5sZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYGAsXG4gICAgICBgU2tpbGxzIGF2YWlsYWJsZSB2aWEgdGhlIHNraWxsIHRvb2wgKGxvYWQgb25lIHdoZW4gaXRzIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIHRhc2spOmAsXG4gICAgICAuLi5za2lsbHMubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgY29udGV4dEZpbGVzKSB7XG4gICAgcGFydHMucHVzaChgYCwgYFByb2plY3QgaW5zdHJ1Y3Rpb25zIGZyb20gJHtmaWxlLnBhdGh9OmAsIGBgLCBmaWxlLmNvbnRlbnQudHJpbSgpKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGZ1enp5U2NvcmUocXVlcnksIHBhdGgpIHtcbiAgY29uc3QgcSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgcyA9IHBhdGgudG9Mb3dlckNhc2UoKVxuICBpZiAoIXEpIHJldHVybiAwXG4gIGxldCBiZXN0ID0gLTFcbiAgZm9yIChsZXQgc3RhcnQgPSBzLmluZGV4T2YocVswXSk7IHN0YXJ0ICE9PSAtMTsgc3RhcnQgPSBzLmluZGV4T2YocVswXSwgc3RhcnQgKyAxKSkge1xuICAgIGxldCBzY29yZSA9IDBcbiAgICBsZXQgcHJldiA9IC0xXG4gICAgbGV0IG1hdGNoZWQgPSB0cnVlXG4gICAgZm9yIChjb25zdCBjaCBvZiBxKSB7XG4gICAgICBjb25zdCBpID0gcy5pbmRleE9mKGNoLCBwcmV2ID09PSAtMSA/IHN0YXJ0IDogcHJldiArIDEpXG4gICAgICBpZiAoaSA9PT0gLTEpIHtcbiAgICAgICAgbWF0Y2hlZCA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAocHJldiAhPT0gLTEgJiYgaSA9PT0gcHJldiArIDEpIHNjb3JlICs9IDNcbiAgICAgIGlmIChpID09PSAwIHx8ICcvLi1fJy5pbmNsdWRlcyhzW2kgLSAxXSkpIHNjb3JlICs9IDJcbiAgICAgIHNjb3JlICs9IDFcbiAgICAgIHByZXYgPSBpXG4gICAgfVxuICAgIGlmIChtYXRjaGVkICYmIHNjb3JlID4gYmVzdCkgYmVzdCA9IHNjb3JlXG4gIH1cbiAgaWYgKGJlc3QgPCAwKSByZXR1cm4gLTFcbiAgY29uc3QgYmFzZSA9IHMuc2xpY2Uocy5sYXN0SW5kZXhPZignLycpICsgMSlcbiAgaWYgKGJhc2Uuc3RhcnRzV2l0aChxKSkgYmVzdCArPSA4XG4gIGVsc2UgaWYgKGJhc2UuaW5jbHVkZXMocSkpIGJlc3QgKz0gNVxuICBlbHNlIGlmIChzLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDNcbiAgcmV0dXJuIGJlc3QgLSBzLmxlbmd0aCAvIDEwMFxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1FRElBX1RZUEVTID0ge1xuICBwbmc6ICdpbWFnZS9wbmcnLFxuICBqcGc6ICdpbWFnZS9qcGVnJyxcbiAganBlZzogJ2ltYWdlL2pwZWcnLFxuICBnaWY6ICdpbWFnZS9naWYnLFxuICB3ZWJwOiAnaW1hZ2Uvd2VicCcsXG4gIGJtcDogJ2ltYWdlL2JtcCcsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYVR5cGVGb3IocGF0aCkge1xuICByZXR1cm4gTUVESUFfVFlQRVNbcGF0aC5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCldIHx8IG51bGxcbn1cblxuZnVuY3Rpb24gdW5xdW90ZSh0b2tlbikge1xuICBpZiAoL14nLionJC8udGVzdCh0b2tlbikgfHwgL15cIi4qXCIkLy50ZXN0KHRva2VuKSkgcmV0dXJuIHRva2VuLnNsaWNlKDEsIC0xKVxuICByZXR1cm4gdG9rZW4ucmVwbGFjZSgvXFxcXCAvZywgJyAnKVxufVxuXG5mdW5jdGlvbiB0b1BhdGgodG9rZW4pIHtcbiAgY29uc3QgcmF3ID0gdW5xdW90ZSh0b2tlbi50cmltKCkpXG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmF3LnNsaWNlKCdmaWxlOi8vJy5sZW5ndGgpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEltYWdlUGF0aHModGV4dCwgZXhpc3RzID0gZXhpc3RzU3luYykge1xuICBjb25zdCB0b2tlbnMgPSB0ZXh0LnRyaW0oKS5tYXRjaCgvJ1teJ10qJ3xcIlteXCJdKlwifCg/OlxcXFwgfFteIFxcdFxcblxccl0pKy9nKVxuICBpZiAoIXRva2VucyB8fCB0b2tlbnMubGVuZ3RoID09PSAwKSByZXR1cm4gW11cbiAgY29uc3QgcGF0aHMgPSBbXVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgIGNvbnN0IHBhdGggPSB0b1BhdGgodG9rZW4pXG4gICAgaWYgKCFwYXRoIHx8ICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcmV0dXJuIFtdXG4gICAgaWYgKCFtZWRpYVR5cGVGb3IocGF0aCkgfHwgIWV4aXN0cyhwYXRoKSkgcmV0dXJuIFtdXG4gICAgcGF0aHMucHVzaChwYXRoKVxuICB9XG4gIHJldHVybiBwYXRoc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VMYWJlbChwYXJ0KSB7XG4gIGlmIChwYXJ0LnNvdXJjZT8ucGF0aCkgcmV0dXJuIGBbaW1hZ2U6ICR7YmFzZW5hbWUocGFydC5zb3VyY2UucGF0aCl9XWBcbiAgcmV0dXJuICdbaW1hZ2VdJ1xufVxuXG5jb25zdCBJTUFHRV9QQVRIX1JFID0gLyhbXCInXSkoXFwvW15cIiddKz9cXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSlcXDF8KFxcLyg/OlxcXFwgfFteIFxcdFxcblxcclwiJ10pK1xcLig/OnBuZ3xqcGU/Z3xnaWZ8d2VicHxibXApKS9naVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgcGFydHMgPSBbXVxuICBsZXQgbGFzdCA9IDBcbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKElNQUdFX1BBVEhfUkUpKSB7XG4gICAgY29uc3QgcGF0aCA9IG1hdGNoWzJdIHx8IG1hdGNoWzNdLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IocGF0aClcbiAgICBpZiAoIW1lZGlhVHlwZSB8fCAhZXhpc3RzKHBhdGgpKSBjb250aW51ZVxuICAgIGlmIChtYXRjaC5pbmRleCA+IGxhc3QpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpIH0pXG4gICAgcGFydHMucHVzaCh7IHR5cGU6ICdpbWFnZScsIHNvdXJjZTogeyBraW5kOiAncGF0aCcsIHBhdGgsIG1lZGlhVHlwZSB9IH0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHBhcnRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGNvbnN0IHVzZWQgPSBbXVxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHQubWF0Y2hBbGwoL1xcW0ltYWdlICNcXGQrXFxdL2cpKSB7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzLmdldChtYXRjaFswXSlcbiAgICBpZiAoIWF0dGFjaG1lbnQpIGNvbnRpbnVlXG4gICAgY29uc3QgYmVmb3JlID0gdGV4dC5zbGljZShsYXN0LCBtYXRjaC5pbmRleClcbiAgICBpZiAoYmVmb3JlKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiBiZWZvcmUgfSlcbiAgICBwYXJ0cy5wdXNoKHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoOiBhdHRhY2htZW50LnBhdGgsIG1lZGlhVHlwZTogYXR0YWNobWVudC5tZWRpYVR5cGUgfSxcbiAgICB9KVxuICAgIHVzZWQucHVzaChtYXRjaFswXSlcbiAgICBsYXN0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4geyBjb250ZW50OiB0ZXh0LCB1c2VkIH1cbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHsgY29udGVudDogcGFydHMsIHVzZWQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzKHRleHQsIHsgYXR0YWNobWVudHMsIG5leHRJZCwgZXhpc3RzID0gZXhpc3RzU3luYyB9KSB7XG4gIGNvbnN0IHBhcnRzID0gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cylcbiAgaWYgKCFwYXJ0cykgcmV0dXJuIHsgdGV4dCwgY2hhbmdlZDogZmFsc2UgfVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgdGV4dDogb3V0LCBjaGFuZ2VkOiB0cnVlIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlucHV0VGV4dEZyb21Db250ZW50KGNvbnRlbnQsIHsgYXR0YWNobWVudHMsIG5leHRJZCB9KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuIFN0cmluZyhjb250ZW50KVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIGNvbnRlbnQpIHtcbiAgICBpZiAocGFydC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIG91dCArPSBwYXJ0LnRleHRcbiAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ2ltYWdlJyAmJiBwYXJ0LnNvdXJjZT8ucGF0aCkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMke25leHRJZCgpfV1gXG4gICAgICBhdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogcGFydC5zb3VyY2UucGF0aCwgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUgfSlcbiAgICAgIG91dCArPSBwbGFjZWhvbGRlclxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJ1tpbWFnZV0nXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgYXR0YWNobWVudHMsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgeyBjb250ZW50LCB1c2VkIH0gPSBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKVxuICBjb25zdCBwYXJ0cyA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50IDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBjb250ZW50IH1dXG4gIGNvbnN0IGV4cGFuZGVkID0gW11cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgICBleHBhbmRlZC5wdXNoKHBhcnQpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBzcGxpdCA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyhwYXJ0LnRleHQsIGV4aXN0cylcbiAgICBpZiAoc3BsaXQpIGV4cGFuZGVkLnB1c2goLi4uc3BsaXQpXG4gICAgZWxzZSBleHBhbmRlZC5wdXNoKHBhcnQpXG4gIH1cbiAgaWYgKGV4cGFuZGVkLmxlbmd0aCA9PT0gMSAmJiBleHBhbmRlZFswXS50eXBlID09PSAndGV4dCcpIHJldHVybiB7IGNvbnRlbnQ6IGV4cGFuZGVkWzBdLnRleHQsIHVzZWQgfVxuICByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZCwgdXNlZCB9XG59XG4iLCAiaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGRpc2NvdmVyS2V5cywgYXBwbHlLZXlzIH0gZnJvbSAnLi9jb3JlL2tleXMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscywgYWRob2NNb2RlbCB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGRlZmF1bHRNb2RlbCwgZXN0aW1hdGVDb3N0IH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2hlbGxNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3NoZWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZVNlc3Npb24sIG9wZW5TZXNzaW9uLCBsb2FkU2Vzc2lvbiB9IGZyb20gJy4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgc2Vzc2lvbnNEaXIgfSBmcm9tICcuL2NvcmUvcGF0aHMuanMnXG5pbXBvcnQgeyBtYWtlRXZlbnQgfSBmcm9tICcuL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUgfSBmcm9tICcuL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4vY29yZS90b29scy9pbmRleC5qcydcbmltcG9ydCB7IHJlc29sdmVEcmVkZ2UgfSBmcm9tICcuL2NvcmUvdG9vbHMvd2ViLmpzJ1xuaW1wb3J0IHsgcnVuVHVybiB9IGZyb20gJy4vY29yZS9hZ2VudC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi9jb3JlL3N5c3RlbS1wcm9tcHQuanMnXG5pbXBvcnQgeyBtZW1vcnlJbmRleCB9IGZyb20gJy4vY29yZS9tZW1vcnkuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi91aS9mdXp6eS5qcydcbmltcG9ydCB7IGZpbmFsaXplVXNlckNvbnRlbnQgfSBmcm9tICcuL3VpL2F0dGFjaG1lbnRzLmpzJ1xuXG5mdW5jdGlvbiByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG5hbWUpIHtcbiAgaWYgKCFuYW1lKSByZXR1cm4gbnVsbFxuICBjb25zdCBleGFjdCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gIGlmIChleGFjdCkgcmV0dXJuIGV4YWN0XG4gIGlmIChuYW1lLmluY2x1ZGVzKCcvJykpIHJldHVybiBhZGhvY01vZGVsKG5hbWUsIHByb3ZpZGVycylcbiAgY29uc3Qgc2NvcmVkID0gbW9kZWxzXG4gICAgLmZpbHRlcigobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgIC5tYXAoKG0pID0+IFtmdXp6eVNjb3JlKG5hbWUsIG0ubmFtZSksIG1dKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICByZXR1cm4gc2NvcmVkWzBdPy5bMV0gfHwgbnVsbFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RkaW4oKSB7XG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSByZXR1cm4gJydcbiAgbGV0IGRhdGEgPSAnJ1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHByb2Nlc3Muc3RkaW4pIHtcbiAgICBkYXRhICs9IGNodW5rXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gNDAwMDAwKSBicmVha1xuICB9XG4gIHJldHVybiBkYXRhLnNsaWNlKDAsIDQwMDAwMClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkhlYWRsZXNzKG9wdHMpIHtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKVxuICBjb25zdCBsb2cgPSBvcHRzLnF1aWV0ID8gKCkgPT4ge30gOiAobGluZSkgPT4gcHJvY2Vzcy5zdGRlcnIud3JpdGUobGluZSArICdcXG4nKVxuXG4gIGNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuICBjb25zdCBwcm92aWRlcnMgPSBbLi4uYXBwbHlLZXlzKGRpc2NvdmVyS2V5cygpKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG4gIGlmIChwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ3BpY286IG5vIGNyZWRlbnRpYWxzIGZvdW5kIChzZXQgYSBwcm92aWRlciBrZXkgb3IgcnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgcmV0dXJuIDFcbiAgfVxuICBjb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbiAgY29uc3QgY29kZXhDcmVkcyA9IGNoYXRncHQgPyBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpIDogbnVsbFxuICBjb25zdCBtb2RlbHMgPSBbXG4gICAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgICAgLi4ubSxcbiAgICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIH0pKSxcbiAgICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogY2hhdGdwdCB9KSksXG4gIF1cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5cbiAgY29uc3QgbW9kZWwgPSByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG9wdHMubW9kZWwpXG4gICAgfHwgKGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtLmF2YWlsYWJsZSkpXG4gICAgfHwgZGVmYXVsdE1vZGVsKG1vZGVscylcbiAgaWYgKCFtb2RlbCB8fCBtb2RlbC5hdmFpbGFibGUgPT09IGZhbHNlKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYHBpY286IG5vIHVzYWJsZSBtb2RlbCR7b3B0cy5tb2RlbCA/IGAgbWF0Y2hpbmcgXCIke29wdHMubW9kZWx9XCJgIDogJyd9XFxuYClcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGVmZm9ydCA9IG9wdHMuZWZmb3J0ID8/IChtb2RlbC5lZmZvcnQgPyAnYXV0bycgOiBudWxsKVxuXG4gIGNvbnN0IGJvb3QgPSBhd2FpdCBidWlsZFByb2plY3RCb290KHByb2Nlc3MuY3dkKCkpXG4gIGF3YWl0IFByb21pc2UucmFjZShbYm9vdC5tY3AuY29ubmVjdEFsbCgpLCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDAwMCkpXSlcbiAgY29uc3Qgc2hlbGxzID0gY3JlYXRlU2hlbGxNYW5hZ2VyKClcblxuICBsZXQgc2Vzc2lvblxuICBsZXQgZXZlbnRzID0gW11cbiAgaWYgKG9wdHMucmVzdW1lKSB7XG4gICAgY29uc3QgZmlsZSA9IG9wdHMucmVzdW1lLmluY2x1ZGVzKCcvJykgPyBvcHRzLnJlc3VtZSA6IGpvaW4oc2Vzc2lvbnNEaXIoYm9vdC5yb290KSwgYCR7b3B0cy5yZXN1bWV9Lmpzb25sYClcbiAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCBsb2FkU2Vzc2lvbihmaWxlKVxuICAgIHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlcjogbG9hZGVkLmhlYWRlciB9KVxuICAgIGV2ZW50cyA9IGxvYWRlZC5ldmVudHNcbiAgfSBlbHNlIHtcbiAgICBzZXNzaW9uID0gY3JlYXRlU2Vzc2lvbih7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdCA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIHNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nKVxuICB9XG5cbiAgY29uc3Qgc3RkaW5EYXRhID0gYXdhaXQgcmVhZFN0ZGluKClcbiAgY29uc3QgcHJvbXB0VGV4dCA9IHN0ZGluRGF0YSA/IGAke29wdHMucHJvbXB0fVxcblxcbltwaXBlZCBpbnB1dF1cXG4ke3N0ZGluRGF0YX1gIDogb3B0cy5wcm9tcHRcbiAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHByb21wdFRleHQsIG5ldyBNYXAoKSlcbiAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG5cbiAgY29uc3QgZGVyaXZlZCA9IGRlcml2ZVN0YXRlKGV2ZW50cylcbiAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldChib290LnRyYWNrZXIubG9hZGVkKVxuICBjb25zdCB7IHRvb2xzLCByZWNvcmRlciB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgY3dkOiBib290LmN3ZCxcbiAgICB0cmFja2VyOiBib290LnRyYWNrZXIsXG4gICAgc2tpbGxzOiBib290LnNraWxscyxcbiAgICBzaGVsbHMsXG4gICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgICBtY3BUb29sczogYm9vdC5tY3AudG9vbHMoKSxcbiAgICB1c2VyVG9vbHM6IFtdLFxuICAgIG1heFRvb2xDYWxsczogb3B0cy5tYXhUb29sQ2FsbHMgPz8gNTAsXG4gIH0pXG5cbiAgbGV0IGF1dGggPSBudWxsXG4gIGlmIChtb2RlbC5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgaWYgKCFhdXRoKSB7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW4gKHJ1biBwaWNvIC0tY29ubmVjdClcXG4nKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gIH1cblxuICBsb2coYHBpY28gXHUwMEI3ICR7bW9kZWwubmFtZX0ke2VmZm9ydCA/IGAgXHUwMEI3ICR7ZWZmb3J0fWAgOiAnJ30gXHUwMEI3IHNlc3Npb24gJHtzZXNzaW9uLmlkfWApXG4gIGxldCB0aG91Z2h0cyA9ICcnXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1blR1cm4oe1xuICAgIGhpc3Rvcnk6IGRlcml2ZWQucHJvdmlkZXJIaXN0b3J5LFxuICAgIHRvb2xzLFxuICAgIHJlY29yZGVyLFxuICAgIG1vZGVsTmFtZTogbW9kZWwubmFtZSxcbiAgICBlZmZvcnQsXG4gICAgYXV0aCxcbiAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICBjb250ZXh0RmlsZXM6IGJvb3Quc3RhcnR1cENvbnRleHQuZmlsZXMsXG4gICAgICBza2lsbHM6IGJvb3Quc2tpbGxzLmxpc3QoKSxcbiAgICAgIG1lbW9yeUluZGV4VGV4dDogbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KSxcbiAgICB9KSxcbiAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykgdGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJykge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHJlY29yZGVyLmVudHJpZXMuYXQoLTEpXG4gICAgICAgIGxvZyhgICBcdTI3MTMgJHtlbnRyeT8ubmFtZSA/PyBldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWV9ICAke2VudHJ5Py50aXRsZSA/PyAnJ31gKVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykgbG9nKGAgIFx1MjcxNyAke2V2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZXZlbnQuZXJyb3Iuc2xpY2UoMCwgMTIwKX1gKVxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKHRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHRob3VnaHRzIH0pKVxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWNvcmRlci5lbnRyaWVzKSBwZXJzaXN0KG1ha2VFdmVudCgndG9vbF9tZXRhJywgZW50cnkpKVxuICBmb3IgKGNvbnN0IHBhdGggb2YgYm9vdC50cmFja2VyLmxvYWRlZCkge1xuICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgfVxuICBpZiAocmVzdWx0LnVzYWdlKSBwZXJzaXN0KG1ha2VFdmVudCgndXNhZ2UnLCB7IG1vZGVsOiBtb2RlbC5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICBjb25zdCBydW5uaW5nID0gc2hlbGxzLnJ1bm5pbmcoKVxuICBpZiAocnVubmluZyA+IDApIGxvZyhgICBraWxsaW5nICR7cnVubmluZ30gYmFja2dyb3VuZCBzaGVsbCR7cnVubmluZyA9PT0gMSA/ICcnIDogJ3MnfWApXG4gIHNoZWxscy5raWxsQWxsKClcbiAgYXdhaXQgYm9vdC5tY3AuY2xvc2VBbGwoKS5jYXRjaCgoKSA9PiB7fSlcblxuICBjb25zdCB0ZXh0ID0gcmVzdWx0Lm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiB0eXBlb2YgbS5jb250ZW50ID09PSAnc3RyaW5nJyAmJiBtLmNvbnRlbnQpLmF0KC0xKT8uY29udGVudCA/PyAnJ1xuICBjb25zdCBzdW1tYXJ5ID0ge1xuICAgIHRleHQsXG4gICAgc2Vzc2lvbjogc2Vzc2lvbi5pZCxcbiAgICBzZXNzaW9uRmlsZTogc2Vzc2lvbi5maWxlLFxuICAgIG1vZGVsOiBtb2RlbC5uYW1lLFxuICAgIHVzYWdlOiByZXN1bHQudXNhZ2UsXG4gICAgY29zdDogZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG1vZGVsLm5hbWUpLCByZXN1bHQudXNhZ2UpLFxuICAgIHRvb2xDYWxsczogcmVjb3JkZXIuZW50cmllcy5sZW5ndGgsXG4gICAgaW50ZXJydXB0ZWQ6IHJlc3VsdC5pbnRlcnJ1cHRlZCxcbiAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICB9XG5cbiAgaWYgKG9wdHMuanNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoc3VtbWFyeSkgKyAnXFxuJylcbiAgZWxzZSBpZiAob3B0cy5zdHJlYW1Kc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdyZXN1bHQnLCAuLi5zdW1tYXJ5LCB0ZXh0OiB1bmRlZmluZWQsIGF0OiBEYXRlLm5vdygpIH0pICsgJ1xcbicpXG4gIGVsc2UgcHJvY2Vzcy5zdGRvdXQud3JpdGUodGV4dCArICdcXG4nKVxuXG4gIHJldHVybiByZXN1bHQuaW50ZXJydXB0ZWQgPyAxIDogMFxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHBhcnNlQXJncywgVVNBR0UgfSBmcm9tICcuL2NsaS1hcmdzLmpzJ1xuaW1wb3J0IHsgZGlzY292ZXJLZXlzLCBhcHBseUtleXMsIGtleUhpbnQgfSBmcm9tICcuL2NvcmUva2V5cy5qcydcbmltcG9ydCB7IGRlZmF1bHRNb2RlbCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscyB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGRldGVjdFRlcm1pbmFsVGhlbWUgfSBmcm9tICcuL2NvcmUvdGVybWluYWwtdGhlbWUuanMnXG5pbXBvcnQgeyBidWlsZFByb2plY3RCb290IH0gZnJvbSAnLi9jb3JlL2Jvb3QuanMnXG5pbXBvcnQgeyByZXNvbHZlRHJlZGdlIH0gZnJvbSAnLi9jb3JlL3Rvb2xzL3dlYi5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVXYWtldXBNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3dha2V1cHMuanMnXG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL3VpL2FwcC5qc3gnXG5pbXBvcnQgeyBERUZBVUxUX0FDQ0VOVCwgTVVURUQsIHNldFBhbGV0dGUsIHBhbGV0dGVMaXN0IH0gZnJvbSAnLi91aS90aGVtZS5qcydcblxuY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSwgJ3V0Zi04JykpXG5cbmxldCBjbGlcbnRyeSB7XG4gIGNsaSA9IHBhcnNlQXJncyhwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpXG59IGNhdGNoIChlcnIpIHtcbiAgY29uc29sZS5lcnJvcihgcGljbzogJHtlcnIubWVzc2FnZX1gKVxuICBjb25zb2xlLmVycm9yKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlbHAnKSB7XG4gIGNvbnNvbGUubG9nKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ3ZlcnNpb24nKSB7XG4gIGNvbnNvbGUubG9nKHBrZy52ZXJzaW9uKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2Nvbm5lY3QnKSB7XG4gIGNvbnN0IHsgY29ubmVjdE9wZW5BSSB9ID0gYXdhaXQgaW1wb3J0KCcuL2NvcmUvb3BlbmFpLWF1dGguanMnKVxuICB0cnkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbnN0IHsgZW1haWwgfSA9IGF3YWl0IGNvbm5lY3RPcGVuQUkoeyBvblVybDogKHVybCkgPT4gY29uc29sZS5lcnJvcihgaWYgdGhlIGJyb3dzZXIgZGlkIG5vdCBvcGVuLCB2aXNpdDpcXG4ke3VybH1gKSB9KVxuICAgIGNvbnNvbGUubG9nKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfWApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoYGNvbm5lY3QgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlYWRsZXNzJykge1xuICBjb25zdCB7IHJ1bkhlYWRsZXNzIH0gPSBhd2FpdCBpbXBvcnQoJy4vaGVhZGxlc3MuanMnKVxuICBwcm9jZXNzLmV4aXQoYXdhaXQgcnVuSGVhZGxlc3MoY2xpKSlcbn1cblxuY29uc3Qga2V5cyA9IGRpc2NvdmVyS2V5cygpXG5jb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbmNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoa2V5cyksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG5jb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG5jb25zdCBtb2RlbHMgPSBbXG4gIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAuLi5tLFxuICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIGtleUhpbnQ6IGtleUhpbnQobS5wcm92aWRlciksXG4gIH0pKSxcbiAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgY29udGV4dDogbS5jb250ZXh0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmlucHV0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmNvbnRleHRcbiAgICAgID8/IG51bGwsXG4gICAgYXZhaWxhYmxlOiBjaGF0Z3B0LFxuICAgIGtleUhpbnQ6ICcvY29ubmVjdCcsXG4gIH0pKSxcbl1cblxuaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgY29uc29sZS5lcnJvcigncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQuJylcbiAgY29uc29sZS5lcnJvcignc2V0IG9uZSBvZjogR0VNSU5JX0FQSV9LRVksIEFOVEhST1BJQ19BUElfS0VZLCBPUEVOQUlfQVBJX0tFWSwgWEFJX0FQSV9LRVknKVxuICBjb25zb2xlLmVycm9yKCdvciBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW46IHBpY28gLS1jb25uZWN0JylcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5cbmxldCBtY3BOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHNoZWxsc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzRXhpdCA9ICgpID0+IHt9XG5jb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gc2hlbGxzTm90aWZ5KCksXG4gIG9uRXhpdDogKHNoZWxsKSA9PiBzaGVsbHNFeGl0KHNoZWxsKSxcbn0pXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gc2hlbGxzLmtpbGxBbGwoKSlcblxubGV0IHdha2V1cHNOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHdha2V1cHNGaXJlID0gKCkgPT4ge31cbmNvbnN0IHdha2V1cHMgPSBjcmVhdGVXYWtldXBNYW5hZ2VyKHtcbiAgb25DaGFuZ2U6ICgpID0+IHdha2V1cHNOb3RpZnkoKSxcbiAgb25GaXJlOiAod2FrZXVwKSA9PiB3YWtldXBzRmlyZSh3YWtldXApLFxufSlcblxuY29uc3QgYm9vdFByb2plY3QgPSAoY3dkKSA9PiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZTogKCkgPT4gbWNwTm90aWZ5KCkgfSlcblxuY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5jb25zdCBjb25maWd1cmVkRGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbClcblxuY29uc3QgZGV0ZWN0ZWRUaGVtZSA9IGF3YWl0IGRldGVjdFRlcm1pbmFsVGhlbWUoKVxuY29uc3QgdGhlbWVPdmVycmlkZSA9IHBhbGV0dGVMaXN0KCkuc29tZSgocCkgPT4gcC5rZXkgPT09IGNvbmZpZy50aGVtZSkgPyBjb25maWcudGhlbWUgOiBudWxsXG5zZXRQYWxldHRlKHRoZW1lT3ZlcnJpZGUgfHwgZGV0ZWN0ZWRUaGVtZSlcbmNvbnN0IHRoZW1lID0geyBhY2NlbnQ6IERFRkFVTFRfQUNDRU5ULCBtdXRlZDogTVVURUQgfVxuXG5jb25zdCBib290ID0ge1xuICAuLi4oYXdhaXQgYm9vdFByb2plY3QocHJvY2Vzcy5jd2QoKSkpLFxuICB0aGVtZSxcbiAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIG1vZGVscyxcbiAgcHJvdmlkZXJzLFxuICBpbml0aWFsTW9kZWw6IGNvbmZpZ3VyZWREZWZhdWx0IHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpLFxuICBkZXRlY3RlZFRoZW1lLFxuICB0aGVtZVByZWY6IHRoZW1lT3ZlcnJpZGUgfHwgJ2F1dG8nLFxuICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgaW5pdGlhbEVmZm9ydDogWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J10uaW5jbHVkZXMoY29uZmlnLmRlZmF1bHRFZmZvcnQpID8gY29uZmlnLmRlZmF1bHRFZmZvcnQgOiBudWxsLFxuICBhdXRvQ29tcGFjdDogY29uZmlnLmF1dG9Db21wYWN0ICE9PSBmYWxzZSxcbiAgcmVmczoge30sXG4gIHNoZWxscyxcbiAgd2FrZXVwcyxcbiAgc2V0TWNwTm90aWZ5OiAoZm4pID0+IHsgbWNwTm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzTm90aWZ5OiAoZm4pID0+IHsgc2hlbGxzTm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzRXhpdDogKGZuKSA9PiB7IHNoZWxsc0V4aXQgPSBmbiB9LFxuICBzZXRXYWtldXBzTm90aWZ5OiAoZm4pID0+IHsgd2FrZXVwc05vdGlmeSA9IGZuIH0sXG4gIHNldFdha2V1cHNGaXJlOiAoZm4pID0+IHsgd2FrZXVwc0ZpcmUgPSBmbiB9LFxuICByZWJ1aWxkOiBib290UHJvamVjdCxcbn1cblxuY29uc3QgYXBwID0gbW91bnQoKCkgPT4gPEFwcCBib290PXtib290fSAvPiwgeyB0aXRsZTogYHBpY28gXHUwMEI3ICR7Ym9vdC5yb290LnNwbGl0KCcvJykucG9wKCl9YCwgdGhlbWUgfSlcbmJvb3Quc2V0VGhlbWUgPSBhcHAuc2V0VGhlbWVcbmJvb3QubWNwLmNvbm5lY3RBbGwoKVxuIiwgImV4cG9ydCBjb25zdCBVU0FHRSA9IGBwaWNvIC0gYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbFxuXG51c2FnZTpcbiAgcGljbyAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUgc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgcGljbyAtcCBcInByb21wdFwiICAgICAgICAgICBoZWFkbGVzczogcnVuIG9uZSBhZ2VudGljIHR1cm4sIHByaW50IHRoZSBhbnN3ZXJcbiAgY2F0IGxvZyB8IHBpY28gLXAgXCIuLi5cIiAgICBzdGRpbiBpcyBhcHBlbmRlZCB0byB0aGUgcHJvbXB0IGFzIGNvbnRleHRcblxuaGVhZGxlc3MgZmxhZ3M6XG4gIC1wLCAtLXByaW50IDxwcm9tcHQ+ICAgICAgIHRoZSBwcm9tcHQgdG8gcnVuXG4gIC0tanNvbiAgICAgICAgICAgICAgICAgICAgIHByaW50IGEgc2luZ2xlIEpTT04gcmVzdWx0IG9iamVjdCB0byBzdGRvdXRcbiAgLS1zdHJlYW0tanNvbiAgICAgICAgICAgICAgc3RyZWFtIHNlc3Npb24gZXZlbnRzIHRvIHN0ZG91dCBhcyBqc29ubFxuICAtbSwgLS1tb2RlbCA8bmFtZT4gICAgICAgICBtb2RlbCB0byB1c2UgKGZ1enp5IG1hdGNoZWQsIG9yIHJhdyBwcm92aWRlci9tb2RlbClcbiAgLS1lZmZvcnQgPGxldmVsPiAgICAgICAgICAgdGhpbmtpbmcgZWZmb3J0OiBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhcbiAgLS1yZXN1bWUgPHNlc3Npb24taWQ+ICAgICAgY29udGludWUgYW4gZXhpc3Rpbmcgc2Vzc2lvbiBmcm9tIHRoaXMgcHJvamVjdFxuICAtLW1heC10b29sLWNhbGxzIDxuPiAgICAgICBzdG9wIHRoZSBhZ2VudCBhZnRlciBuIHRvb2wgY2FsbHMgKGRlZmF1bHQgNTApXG4gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgIG5vIHByb2dyZXNzIG91dHB1dCBvbiBzdGRlcnJcblxuICAtLWNvbm5lY3QgICAgICAgICAgICAgICAgICBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW4gKE9BdXRoIGluIHlvdXIgYnJvd3NlcilcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHBcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgc2hvdyB2ZXJzaW9uYFxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3YpIHtcbiAgY29uc3Qgb3B0cyA9IHsgbW9kZTogJ2ludGVyYWN0aXZlJyB9XG4gIGNvbnN0IHRha2VWYWx1ZSA9IChuYW1lLCBpKSA9PiB7XG4gICAgaWYgKGkgKyAxID49IGFyZ3YubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gcmVxdWlyZXMgYSB2YWx1ZWApXG4gICAgcmV0dXJuIGFyZ3ZbaSArIDFdXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmd2W2ldXG4gICAgaWYgKGFyZyA9PT0gJy1wJyB8fCBhcmcgPT09ICctLXByaW50Jykge1xuICAgICAgb3B0cy5tb2RlID0gJ2hlYWRsZXNzJ1xuICAgICAgb3B0cy5wcm9tcHQgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWpzb24nKSBvcHRzLmpzb24gPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLS1zdHJlYW0tanNvbicpIG9wdHMuc3RyZWFtSnNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctbScgfHwgYXJnID09PSAnLS1tb2RlbCcpIHtcbiAgICAgIG9wdHMubW9kZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWVmZm9ydCcpIHtcbiAgICAgIGNvbnN0IGxldmVsID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGlmICghWydhdXRvJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhsZXZlbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGVmZm9ydCBcIiR7bGV2ZWx9XCI6IHVzZSBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhgKVxuICAgICAgfVxuICAgICAgb3B0cy5lZmZvcnQgPSBsZXZlbFxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLXJlc3VtZScpIHtcbiAgICAgIG9wdHMucmVzdW1lID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1tYXgtdG9vbC1jYWxscycpIHtcbiAgICAgIG9wdHMubWF4VG9vbENhbGxzID0gcGFyc2VJbnQodGFrZVZhbHVlKGFyZywgaSksIDEwKVxuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob3B0cy5tYXhUb29sQ2FsbHMpIHx8IG9wdHMubWF4VG9vbENhbGxzIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0tbWF4LXRvb2wtY2FsbHMgcmVxdWlyZXMgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgICAgfVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWNvbm5lY3QnKSBvcHRzLm1vZGUgPSAnY29ubmVjdCdcbiAgICBlbHNlIGlmIChhcmcgPT09ICctcScgfHwgYXJnID09PSAnLS1xdWlldCcpIG9wdHMucXVpZXQgPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLWgnIHx8IGFyZyA9PT0gJy0taGVscCcpIG9wdHMubW9kZSA9ICdoZWxwJ1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy12JyB8fCBhcmcgPT09ICctLXZlcnNpb24nKSBvcHRzLm1vZGUgPSAndmVyc2lvbidcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBhcmd1bWVudCBcIiR7YXJnfVwiYClcbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdoZWFkbGVzcycgJiYgIW9wdHMucHJvbXB0Py50cmltKCkpIHRocm93IG5ldyBFcnJvcignLXAgcmVxdWlyZXMgYSBub24tZW1wdHkgcHJvbXB0JylcbiAgcmV0dXJuIG9wdHNcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VPc2MxMShyZXNwb25zZSkge1xuICBjb25zdCBtYXRjaCA9IHJlc3BvbnNlLm1hdGNoKC9cXF0xMTtyZ2I6KFswLTlhLWZdKylcXC8oWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspL2kpXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsXG4gIGNvbnN0IGNoYW5uZWwgPSAoaGV4KSA9PiBwYXJzZUludChoZXgsIDE2KSAvICgxNiAqKiBoZXgubGVuZ3RoIC0gMSlcbiAgY29uc3QgbHVtaW5hbmNlID0gMC4yMTI2ICogY2hhbm5lbChtYXRjaFsxXSkgKyAwLjcxNTIgKiBjaGFubmVsKG1hdGNoWzJdKSArIDAuMDcyMiAqIGNoYW5uZWwobWF0Y2hbM10pXG4gIHJldHVybiBsdW1pbmFuY2UgPiAwLjUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZUZyb21Db2xvcmZnYmcodmFsdWUpIHtcbiAgY29uc3QgdG9rZW4gPSAodmFsdWUgfHwgJycpLnNwbGl0KCc7JykuYXQoLTEpXG4gIGlmICghL15cXGQrJC8udGVzdCh0b2tlbikpIHJldHVybiBudWxsXG4gIGNvbnN0IGJnID0gTnVtYmVyKHRva2VuKVxuICByZXR1cm4gYmcgPT09IDcgfHwgYmcgPT09IDE1ID8gJ2xpZ2h0JyA6ICdkYXJrJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0VGVybWluYWxUaGVtZSh7IHRpbWVvdXRNcyA9IDE1MCB9ID0ge30pIHtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiB0aGVtZUZyb21Db2xvcmZnYmcocHJvY2Vzcy5lbnYuQ09MT1JGR0JHKSB8fCAnZGFyaydcbiAgaWYgKCFwcm9jZXNzLnN0ZGluLmlzVFRZIHx8ICFwcm9jZXNzLnN0ZG91dC5pc1RUWSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxsYmFjaygpKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBidWZmZXIgPSAnJ1xuICAgIGxldCBzZXR0bGVkID0gZmFsc2VcbiAgICBjb25zdCB3YXNSYXcgPSBwcm9jZXNzLnN0ZGluLmlzUmF3XG5cbiAgICAvLyBuZXZlciBwYXVzZSgpIGhlcmU6IGFuIGV4cGxpY2l0IHBhdXNlIHN0aWNrcywgYW5kIHRyZW5kJ3MgbW91bnQgb25seVxuICAgIC8vIGF0dGFjaGVzIGEgZGF0YSBsaXN0ZW5lciwgd2hpY2ggd2lsbCBub3QgdW4tcGF1c2UgYW4gZXhwbGljaXRseVxuICAgIC8vIHBhdXNlZCBzdHJlYW0gLSBpbnB1dCB3b3VsZCBiZSBmcm96ZW4gZm9yIHRoZSB3aG9sZSBzZXNzaW9uXG4gICAgY29uc3QgZmluaXNoID0gKHRoZW1lKSA9PiB7XG4gICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuXG4gICAgICBzZXR0bGVkID0gdHJ1ZVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgcHJvY2Vzcy5zdGRpbi5vZmYoJ2RhdGEnLCBvbkRhdGEpXG4gICAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUod2FzUmF3KVxuICAgICAgcmVzb2x2ZSh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCBvbkRhdGEgPSAoY2h1bmspID0+IHtcbiAgICAgIGJ1ZmZlciArPSBjaHVuay50b1N0cmluZygnbGF0aW4xJylcbiAgICAgIGNvbnN0IHRoZW1lID0gcGFyc2VPc2MxMShidWZmZXIpXG4gICAgICBpZiAodGhlbWUpIGZpbmlzaCh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gZmluaXNoKGZhbGxiYWNrKCkpLCB0aW1lb3V0TXMpXG4gICAgcHJvY2Vzcy5zdGRpbi5zZXRSYXdNb2RlKHRydWUpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIG9uRGF0YSlcbiAgICBwcm9jZXNzLnN0ZGluLnJlc3VtZSgpXG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xceDFiXTExOz9cXHgxYlxcXFwnKVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWtldXBNYW5hZ2VyKHsgb25GaXJlID0gKCkgPT4ge30sIG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHdha2V1cHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICByZXR1cm4ge1xuICAgIHNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSkge1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgubWF4KDUsIE1hdGgucm91bmQoZGVsYXlTZWNvbmRzKSlcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDBcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdha2V1cHMuZGVsZXRlKGlkKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICAgIG9uRmlyZSh7IGlkLCBub3RlLCBhdCB9KVxuICAgICAgfSwgc2Vjb25kcyAqIDEwMDApXG4gICAgICB3YWtldXBzLnNldChpZCwgeyBpZCwgbm90ZSwgYXQsIHRpbWVyIH0pXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZCwgYXQsIHNlY29uZHMgfVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCB3YWtldXAgPSB3YWtldXBzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKCF3YWtldXApIHRocm93IG5ldyBFcnJvcihgbm8gcGVuZGluZyB3YWtlLXVwIHdpdGggaWQgJHtpZH1gKVxuICAgICAgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZDogd2FrZXVwLmlkLCBjYW5jZWxsZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4ud2FrZXVwcy52YWx1ZXMoKV1cbiAgICAgICAgLm1hcCgoeyBpZCwgbm90ZSwgYXQgfSkgPT4gKHsgaWQsIG5vdGUsIGF0IH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpXG4gICAgfSxcbiAgICBwZW5kaW5nKCkge1xuICAgICAgcmV0dXJuIHdha2V1cHMuc2l6ZVxuICAgIH0sXG4gICAgY2FuY2VsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCB3YWtldXAgb2Ygd2FrZXVwcy52YWx1ZXMoKSkgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwsIE1lbnUsIFByb2dyZXNzQmFyLCBTY3JvbGxCb3gsIFNoaW1tZXIsIFRleHRBcmVhLCB1c2VGb2N1cywgdXNlRm9jdXNUcmFwLCB1c2VGcmFtZVN0YXRzLCB1c2VJbnB1dCwgdXNlU2VsZWN0aW9uLCB1c2VUb2FzdCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IG1ha2VFdmVudCB9IGZyb20gJy4uL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvbiwgb3BlblNlc3Npb24sIGxvYWRTZXNzaW9uLCBsaXN0U2Vzc2lvbnMsIGRlbGV0ZVNlc3Npb24sIGRlbGV0ZVByb2plY3REYXRhIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUsIHVzZXJFbnRyaWVzLCByZXdpbmRTdGF0cyB9IGZyb20gJy4uL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgYXBwZW5kUHJvbXB0LCBsb2FkUHJvamVjdFByb21wdHMsIGxvYWRHbG9iYWxQcm9tcHRzIH0gZnJvbSAnLi4vY29yZS9oaXN0b3J5LmpzJ1xuaW1wb3J0IHsgcnVuVHVybiwgc3VtbWFyaXplVGV4dCwgY29tcGFjdEhpc3RvcnksIGNvbXBhY3RQcm9ncmVzcyB9IGZyb20gJy4uL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBjb21wYWN0aW9uUHJvbXB0LCBmb3JtYXRDb21wYWN0U3VtbWFyeSwgc3VtbWFyeVNlY3Rpb25zIH0gZnJvbSAnLi4vY29yZS9jb21wYWN0aW9uLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4uL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBzY2FuVXNlclRvb2xzIH0gZnJvbSAnLi4vY29yZS91c2VyLXRvb2xzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4uL2NvcmUvc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi4vY29yZS9jb21tYW5kcy5qcydcbmltcG9ydCB7IHJldmVydEVkaXRzLCByZWFwcGx5RWRpdHMgfSBmcm9tICcuLi9jb3JlL3Jld2luZC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IHRyYW5zY3JpcHRUb01hcmtkb3duIH0gZnJvbSAnLi4vY29yZS9leHBvcnQuanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4uL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgYWRob2NNb2RlbCB9IGZyb20gJy4uL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IHdyaXRlQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBjb25uZWN0T3BlbkFJLCBvcGVuYWlDcmVkZW50aWFscywgb3BlbmFpU3RhdHVzLCBkaXNjb25uZWN0T3BlbkFJIH0gZnJvbSAnLi4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4uL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5pbXBvcnQgeyBjb21wbGV0aW9uQ29udGV4dCwgYXBwbHlDb21wbGV0aW9uIH0gZnJvbSAnLi9jb21wbGV0aW9uLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdEltYWdlUGF0aHMsIG1lZGlhVHlwZUZvciwgZmluYWxpemVVc2VyQ29udGVudCwgcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzLCBpbnB1dFRleHRGcm9tQ29udGVudCB9IGZyb20gJy4vYXR0YWNobWVudHMuanMnXG5pbXBvcnQgeyBsaXN0RmlsZXMgfSBmcm9tICcuL2ZpbGVzLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0VmVyc2lvbiB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuaW1wb3J0IHsgTWVzc2FnZSwgQmFubmVyLCB1aVRpdGxlIH0gZnJvbSAnLi90cmFuc2NyaXB0LmpzeCdcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuL2hlbHAuanN4J1xuaW1wb3J0IHsgTW9kZWxQYW5lbCwgRWZmb3J0UGFuZWwsIFRoZW1lUGFuZWwsIEhpc3RvcnlQYW5lbCwgUmV3aW5kUGlja1BhbmVsLCBSZXdpbmRBY3Rpb25QYW5lbCwgUmVzdW1lUGFuZWwsIFByb2plY3RQYW5lbCwgTWNwUGFuZWwsIE1lbW9yeVBhbmVsLCBJbmZvTGlzdFBhbmVsLCBTaGVsbHNQYW5lbCwgV2FrZXVwc1BhbmVsLCBDb25uZWN0UGFuZWwsIHRpbWVBZ28gfSBmcm9tICcuL3BhbmVscy5qc3gnXG5pbXBvcnQgeyBhY2NlbnQsIHNldEFjY2VudCwgc2V0UGFsZXR0ZSwgcGFsZXR0ZU5hbWUsIHBhbGV0dGVMaXN0LCBERUZBVUxUX0FDQ0VOVCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCwgSElHSExJR0hUIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgRUZGT1JUX0xFVkVMUyA9IFtcbiAgeyBrZXk6IG51bGwsIGRlc2M6ICdsZXQgdGhlIHByb3ZpZGVyIGRlY2lkZSBob3cgbXVjaCB0byB0aGluaycgfSxcbiAgeyBrZXk6ICdsb3cnLCBkZXNjOiAncXVpY2sgYW5zd2VycywgbWluaW1hbCB0aGlua2luZycgfSxcbiAgeyBrZXk6ICdtZWRpdW0nLCBkZXNjOiAnbW9kZXJhdGUgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ2hpZ2gnLCBkZXNjOiAnZ2VuZXJvdXMgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ21heCcsIGRlc2M6ICdtYXhpbXVtIHRoaW5raW5nIGJ1ZGdldCcgfSxcbl1cblxuY29uc3QgQ09NTUFORFMgPSBbXG4gIHsgbmFtZTogJ21vZGVsJywgZGVzYzogJ1N3aXRjaCB0aGUgYWN0aXZlIG1vZGVsIGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ2Nvbm5lY3QnLCBkZXNjOiAnU2lnbiBpbiB3aXRoIENoYXRHUFQgdG8gdXNlIGEgQ29kZXggc3Vic2NyaXB0aW9uJyB9LFxuICB7IG5hbWU6ICdlZmZvcnQnLCBkZXNjOiAnU2V0IHRoZSB0aGlua2luZyBlZmZvcnQgZm9yIHRoaXMgc2Vzc2lvbicgfSxcbiAgeyBuYW1lOiAncmVzdW1lJywgZGVzYzogJ1BpY2sgdXAgYSBwcmV2aW91cyBzZXNzaW9uIHdoZXJlIHlvdSBsZWZ0IG9mZicgfSxcbiAgeyBuYW1lOiAnbmV3JywgZGVzYzogJ1N0YXJ0IGEgbmV3IHNlc3Npb24gaW4gdGhpcyBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICdwcm9qZWN0JywgZGVzYzogJ1N3aXRjaCBwcm9qZWN0czoganVtcCB0byBhbm90aGVyIHByb2plY3QsIHNhbWUgYXMgY3RybCtwJyB9LFxuICB7IG5hbWU6ICdjd2QnLCBkZXNjOiAnU2hvdyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJvamVjdCByb290JyB9LFxuICB7IG5hbWU6ICdza2lsbHMnLCBkZXNjOiAnTGlzdCBldmVyeSBza2lsbDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnY29tbWFuZHMnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kOiBidWlsdGluLCBnbG9iYWwsIGFuZCBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICd0b29scycsIGRlc2M6ICdMaXN0IGJ1aWx0aW4gYW5kIHVzZXItZGVmaW5lZCB0b29sczsgTUNQIHRvb2xzIGxpdmUgaW4gL21jcCcgfSxcbiAgeyBuYW1lOiAncmV3aW5kJywgZGVzYzogJ1Jlc3RvcmUgdGhlIGNvbnZlcnNhdGlvbiB0byBhIHByZXZpb3VzIG1lc3NhZ2UnIH0sXG4gIHsgbmFtZTogJ3JlbmFtZScsIGRlc2M6ICdOYW1lIHRoaXMgc2Vzc2lvbjogL3JlbmFtZSA8bmFtZT4nIH0sXG4gIHsgbmFtZTogJ2NvbG9yJywgZGVzYzogJ0NvbG9yIHRoaXMgc2Vzc2lvbjogL2NvbG9yIDxuYW1lIG9yICNoZXg+JyB9LFxuICB7IG5hbWU6ICd0aGVtZScsIGRlc2M6ICdQaWNrIGEgY29sb3IgdGhlbWU7IC90aGVtZSA8bmFtZT4gYXBwbGllcyBvbmUgZGlyZWN0bHknIH0sXG4gIHsgbmFtZTogJ21jcCcsIGRlc2M6ICdNYW5hZ2UgTUNQIHNlcnZlcnM6IGFkZCwgdG9nZ2xlLCByZWNvbm5lY3QnIH0sXG4gIHsgbmFtZTogJ3NoZWxscycsIGRlc2M6ICdWaWV3IGFuZCBtYW5hZ2UgYmFja2dyb3VuZCBzaGVsbHMnIH0sXG4gIHsgbmFtZTogJ3dha2V1cHMnLCBkZXNjOiAnVmlldyBhbmQgY2FuY2VsIHNjaGVkdWxlZCB3YWtlLXVwcycgfSxcbiAgeyBuYW1lOiAnbWVtb3J5JywgZGVzYzogJ0Jyb3dzZSBhbmQgbWFuYWdlIHNhdmVkIG1lbW9yaWVzOiBwcm9qZWN0IGFuZCBnbG9iYWwnIH0sXG4gIHsgbmFtZTogJ2NvbXBhY3QnLCBkZXNjOiAnU3VtbWFyaXplIHRoZSBjb252ZXJzYXRpb24gdG8gZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2NsZWFyJywgZGVzYzogJ0NsZWFyIHRoZSBjb252ZXJzYXRpb24gYW5kIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjb3N0JywgZGVzYzogJ1Nob3cgdG9rZW4gdXNhZ2UgYW5kIGVzdGltYXRlZCBjb3N0IHNvIGZhcicgfSxcbiAgeyBuYW1lOiAnY29udGV4dCcsIGRlc2M6IFwiU2hvdyB3aGF0J3MgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBhbmQgaG93IGJpZyBlYWNoIHBpZWNlIGlzXCIgfSxcbiAgeyBuYW1lOiAnZXhwb3J0JywgZGVzYzogJ1NhdmUgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIHRvIGEgbWFya2Rvd24gZmlsZScgfSxcbiAgeyBuYW1lOiAnaGVscCcsIGRlc2M6ICdMaXN0IGV2ZXJ5IGNvbW1hbmQgYW5kIHdoYXQgaXQgZG9lcycgfSxcbl1cblxuY29uc3QgU0VTU0lPTl9DT0xPUlMgPSB7XG4gIHJlZDogJyNmODcxNzEnLFxuICBvcmFuZ2U6ICcjZmI5MjNjJyxcbiAgeWVsbG93OiAnI2ZhY2MxNScsXG4gIGdyZWVuOiAnIzZCRTc5NScsXG4gIHRlYWw6ICcjMmRkNGJmJyxcbiAgY3lhbjogJyMyMmQzZWUnLFxuICBibHVlOiAnIzYwYTVmYScsXG4gIHB1cnBsZTogJyNhNzhiZmEnLFxuICBwaW5rOiAnI2Y0NzJiNicsXG4gIGdyYXk6ICcjOWNhM2FmJyxcbn1cblxuY29uc3QgSElTVE9SWV9TQ09QRVMgPSBbJ3Nlc3Npb24nLCAncHJvamVjdCcsICdldmVyeXdoZXJlJ11cbmNvbnN0IE1FTU9SWV9TQ09QRVMgPSBbJ2FsbCcsICdwcm9qZWN0JywgJ2dsb2JhbCddXG5cbi8vIG9ubHkgdGhlIG5ld2VzdCBzbGljZSBvZiBhIGxvbmcgdHJhbnNjcmlwdCByZW5kZXJzOyBvbGRlciBpdGVtcyBsb2FkIGluXG4vLyBiYXRjaGVzIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB0byB0aGUgdG9wLiByZW5kZXIgY29zdCBpcyBwZXItaXRlbSwgc28gdGhpc1xuLy8ga2VlcHMgZGF5LWxvbmcgc2Vzc2lvbnMgYXMgZmFzdCBhcyBmcmVzaCBvbmVzXG5jb25zdCBISVNUT1JZX1dJTkRPVyA9IDUwXG5jb25zdCBSRVNVTUVfU0NPUEVTID0gWydwcm9qZWN0JywgJ2V2ZXJ5d2hlcmUnXVxuXG5leHBvcnQgZnVuY3Rpb24gQXBwKHsgYm9vdCB9KSB7XG4gIGNvbnN0IHsgY3dkLCByb290LCB2ZXJzaW9uLCBtb2RlbHMsIHNraWxscywgbWNwLCB0cmFja2VyLCBzdGFydHVwQ29udGV4dCB9ID0gYm9vdFxuXG4gIGNvbnN0IFtkZXJpdmVkLCBzZXREZXJpdmVkXSA9IGNyZWF0ZVNpZ25hbChkZXJpdmVTdGF0ZShbXSkpXG4gIGNvbnN0IFtvdmVybGF5LCBzZXRPdmVybGF5XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3N0cmVhbWluZywgc2V0U3RyZWFtaW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdGhpbmtpbmdOb3csIHNldFRoaW5raW5nTm93XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdGluZywgc2V0Q29tcGFjdGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0U3RhdHVzLCBzZXRDb21wYWN0U3RhdHVzXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc3RhcnRlZEF0LCBzZXRTdGFydGVkQXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtpbnB1dCwgc2V0SW5wdXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2RlZmF1bHRNb2RlbCwgc2V0RGVmYXVsdE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2VmZm9ydCwgc2V0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtkZWZhdWx0RWZmb3J0LCBzZXREZWZhdWx0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtzaG93RWZmb3J0UGFuZWwsIHNldFNob3dFZmZvcnRQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhlbWVQYW5lbCwgc2V0U2hvd1RoZW1lUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd01lbW9yeVBhbmVsLCBzZXRTaG93TWVtb3J5UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbbWVtU2NvcGUsIHNldE1lbVNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbbWVtb3J5TGlzdCwgc2V0TWVtb3J5TGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFt0aGVtZVByZWYsIHNldFRoZW1lUHJlZl0gPSBjcmVhdGVTaWduYWwoYm9vdC50aGVtZVByZWYgfHwgJ2F1dG8nKVxuICBjb25zdCBbcXVldWVkLCBzZXRRdWV1ZWRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2VudCwgc2V0U2VudF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtoaXN0SWR4LCBzZXRIaXN0SWR4XSA9IGNyZWF0ZVNpZ25hbCgtMSlcbiAgY29uc3QgW2NtZEluZGV4LCBzZXRDbWRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2NtZEN5Y2xlLCBzZXRDbWRDeWNsZV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2ZpbGVJbmRleCwgc2V0RmlsZUluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZmlsZUxpc3QsIHNldEZpbGVMaXN0XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW2ZpbGVzRGlzbWlzc2VkLCBzZXRGaWxlc0Rpc21pc3NlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IGNyZWF0ZVNpZ25hbCgnY2hhdCcpXG4gIGNvbnN0IFt2ZXJib3NlLCBzZXRWZXJib3NlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RlbFBhbmVsLCBzZXRTaG93TW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93SGlzdG9yeVBhbmVsLCBzZXRTaG93SGlzdG9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2hpc3RTY29wZSwgc2V0SGlzdFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbaGlzdFByb21wdHMsIHNldEhpc3RQcm9tcHRzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Nob3dSZXN1bWVQYW5lbCwgc2V0U2hvd1Jlc3VtZVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jlc3VtZVNjb3BlLCBzZXRSZXN1bWVTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jlc3VtZVNlc3Npb25zLCBzZXRSZXN1bWVTZXNzaW9uc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtyZXN1bWVMb2FkaW5nLCBzZXRSZXN1bWVMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNY3BQYW5lbCwgc2V0U2hvd01jcFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dQcm9qZWN0UGFuZWwsIHNldFNob3dQcm9qZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5mb1BhbmVsLCBzZXRJbmZvUGFuZWxdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzaG93U2hlbGxzUGFuZWwsIHNldFNob3dTaGVsbHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93V2FrZXVwc1BhbmVsLCBzZXRTaG93V2FrZXVwc1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25uZWN0UGFuZWwsIHNldFNob3dDb25uZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYXV0aFByb3ZpZGVycywgc2V0QXV0aFByb3ZpZGVyc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaGVsbHNWZXJzaW9uLCBzZXRTaGVsbHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcHJvamVjdHMsIHNldFByb2plY3RzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Byb2plY3RzTG9hZGluZywgc2V0UHJvamVjdHNMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21jcFNlcnZlcnMsIHNldE1jcFNlcnZlcnNdID0gY3JlYXRlU2lnbmFsKG1jcC5saXN0KCkpXG4gIGNvbnN0IFtjb21wbGV0aW5nLCBzZXRDb21wbGV0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBJbmRleCwgc2V0Q29tcEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcmV3aW5kU3RlcCwgc2V0UmV3aW5kU3RlcF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3Jld2luZFRhcmdldCwgc2V0UmV3aW5kVGFyZ2V0XSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtmb2xsb3csIHNldEZvbGxvd10gPSBjcmVhdGVTaWduYWwodHJ1ZSlcbiAgY29uc3QgW2hpc3RXaW5kb3csIHNldEhpc3RXaW5kb3ddID0gY3JlYXRlU2lnbmFsKEhJU1RPUllfV0lORE9XKVxuXG4gIGNvbnN0IHJlZnMgPSBib290LnJlZnNcbiAgcmVmcy5zZXNzaW9uID8/PSBudWxsXG4gIHJlZnMuYWxsRXZlbnRzID8/PSBbXVxuICByZWZzLnBlcnNpc3RlZCA/Pz0gMFxuICByZWZzLmFib3J0ID0gcmVmcy5hYm9ydCB8fCBudWxsXG4gIHJlZnMucmV3aW5kVW5kbyA9IHJlZnMucmV3aW5kVW5kbyB8fCBudWxsXG4gIHJlZnMucXVpdEF0ID8/PSAwXG4gIHJlZnMuYXR0YWNobWVudHMgPz89IG5ldyBNYXAoKVxuICByZWZzLmltYWdlQ291bnQgPz89IDBcblxuICBib290LnNldE1jcE5vdGlmeSgoKSA9PiBzZXRNY3BTZXJ2ZXJzKGJvb3QubWNwLmxpc3QoKSkpXG4gIGJvb3Quc2V0U2hlbGxzTm90aWZ5KCgpID0+IHNldFNoZWxsc1ZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzTm90aWZ5KCgpID0+IHNldFNoZWxsc1ZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzRmlyZSgod2FrZXVwKSA9PiB7XG4gICAgZmxhc2goYHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkYClcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBzY2hlZHVsZWQgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWQuIE5vdGUgdG8gc2VsZjogJHt3YWtldXAubm90ZX1gLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuICBib290LnNldFNoZWxsc0V4aXQoKHNoZWxsKSA9PiB7XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAnbW9kZWwnKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICd1c2VyJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICBub3RlU3lzdGVtKGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgbWFudWFsbHkga2lsbGVkIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuY29tbWFuZH0pIGZyb20gdGhlIHNoZWxscyBwYW5lbCAoU0lHVEVSTSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXN0YXJ0IGl0IHVubGVzcyBhc2tlZC5gLCB7IHdha2U6IGZhbHNlIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGV4aXRlZCBcdTAwQjcgY29kZSAke3NoZWxsLmV4aXRDb2RlfWApXG4gICAgY29uc3QgdGFpbCA9IGJvb3Quc2hlbGxzLm91dHB1dChzaGVsbC5pZCwgeyB0YWlsOiAzMCB9KS5vdXRwdXRcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBiYWNrZ3JvdW5kIHNoZWxsICR7c2hlbGwuaWR9ICgke3NoZWxsLmNvbW1hbmR9KSBleGl0ZWQgd2l0aCBjb2RlICR7c2hlbGwuZXhpdENvZGV9LmAgK1xuICAgICAgICAodGFpbCA/IGBcXG5SZWNlbnQgb3V0cHV0OlxcbiR7dGFpbH1gIDogJycpLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuXG4gIGZ1bmN0aW9uIG5vdGVTeXN0ZW0odGV4dCwgeyB3YWtlIH0pIHtcbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3RlcyA/Pz0gW11cbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlcy5wdXNoKHsgdGV4dCwgd2FrZSB9KVxuICAgIGZsdXNoU3lzdGVtTm90ZXMoKVxuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2hTeXN0ZW1Ob3RlcygpIHtcbiAgICBpZiAoIXJlZnMucGVuZGluZ1N5c3RlbU5vdGVzPy5sZW5ndGggfHwgYnVzeSgpIHx8IHZpZXcoKSAhPT0gJ2NoYXQnIHx8ICFyZWZzLnNlc3Npb24pIHJldHVyblxuICAgIGNvbnN0IG5vdGVzID0gcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXNcbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3RlcyA9IFtdXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ3N5c3RlbV9ub3RlJywgeyB0ZXh0OiBub3Rlcy5tYXAoKG4pID0+IG4udGV4dCkuam9pbignXFxuXFxuJykgfSkpXG4gICAgcmVEZXJpdmUoKVxuICAgIGlmIChub3Rlcy5zb21lKChuKSA9PiBuLndha2UpKSBydW5BZ2VudFR1cm4oKVxuICB9XG5cbiAgY29uc3Qgc2tpbGxDb21tYW5kcyA9IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IGBza2lsbCBcdTAwQjcgJHtzLmRlc2NyaXB0aW9uIHx8IHMuc291cmNlfWAsIHNraWxsOiB0cnVlIH0pKVxuICBjb25zdCB1c2VyQ29tbWFuZHMgPSBib290LmNvbW1hbmRzLmxpc3QoKS5tYXAoKGMpID0+ICh7IG5hbWU6IGMubmFtZSwgZGVzYzogYGNvbW1hbmQgXHUwMEI3ICR7Yy5kZXNjcmlwdGlvbiB8fCBjLnNvdXJjZX1gLCBjb21tYW5kOiB0cnVlIH0pKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgY29uc3Qgc2hhZG93ZWQgPSBbXVxuICBmb3IgKGNvbnN0IGMgb2YgWy4uLkNPTU1BTkRTLCAuLi5za2lsbENvbW1hbmRzLCAuLi51c2VyQ29tbWFuZHNdKSB7XG4gICAgaWYgKGJ5TmFtZS5oYXMoYy5uYW1lKSkgc2hhZG93ZWQucHVzaChgJHtjLnNraWxsID8gJ3NraWxsJyA6ICdjb21tYW5kJ30gXCIke2MubmFtZX1cImApXG4gICAgZWxzZSBieU5hbWUuc2V0KGMubmFtZSwgYylcbiAgfVxuICBjb25zdCBhbGxDb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG4gIGlmIChzaGFkb3dlZC5sZW5ndGggJiYgIXJlZnMud2FybmVkU2hhZG93ZWQpIHtcbiAgICByZWZzLndhcm5lZFNoYWRvd2VkID0gdHJ1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4gZmxhc2goYHNoYWRvd2VkIGJ5IGFuIGVhcmxpZXIgbmFtZSwgcmVuYW1lIHRvIHVzZTogJHtzaGFkb3dlZC5qb2luKCcsICcpfWApLCAwKVxuICB9XG5cbiAgY29uc3QgdG9hc3QgPSB1c2VUb2FzdCh7XG4gICAgZHVyYXRpb246IDM1MDAsXG4gICAgcG9zaXRpb246ICd0b3AtcmlnaHQnLFxuICAgIHJlbmRlcjogKG1lc3NhZ2UpID0+IDx0ZXh0IHN0eWxlPXt7IGJnOiBhY2NlbnQoKSwgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+e2AgJHttZXNzYWdlfSBgfTwvdGV4dD4sXG4gIH0pXG5cbiAgZnVuY3Rpb24gZmxhc2gobXNnKSB7XG4gICAgdG9hc3QobXNnKVxuICB9XG5cbiAgZnVuY3Rpb24gZW5zdXJlU2Vzc2lvbigpIHtcbiAgICBpZiAoIXJlZnMuc2Vzc2lvbikgcmVmcy5zZXNzaW9uID0gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KVxuICAgIHdoaWxlIChyZWZzLnBlcnNpc3RlZCA8IHJlZnMuYWxsRXZlbnRzLmxlbmd0aCkge1xuICAgICAgcmVmcy5zZXNzaW9uLmFwcGVuZChyZWZzLmFsbEV2ZW50c1tyZWZzLnBlcnNpc3RlZF0pXG4gICAgICByZWZzLnBlcnNpc3RlZCsrXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGVyc2lzdChldmVudCkge1xuICAgIHJlZnMuYWxsRXZlbnRzLnB1c2goZXZlbnQpXG4gICAgaWYgKHJlZnMuc2Vzc2lvbikge1xuICAgICAgcmVmcy5zZXNzaW9uLmFwcGVuZChldmVudClcbiAgICAgIHJlZnMucGVyc2lzdGVkID0gcmVmcy5hbGxFdmVudHMubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVEZXJpdmUoKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVTdGF0ZShyZWZzLmFsbEV2ZW50cylcbiAgICBzZXREZXJpdmVkKHN0YXRlKVxuICAgIHNldEFjY2VudChzdGF0ZS5jb2xvcilcbiAgICBib290LnNldFRoZW1lPy4oeyBhY2NlbnQ6IHN0YXRlLmNvbG9yIHx8IERFRkFVTFRfQUNDRU5ULCBtdXRlZDogTVVURUQgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoU3RyZWFtKGl0ZW1zKSB7XG4gICAgY29uc3QgdGV4dCA9IHN0cmVhbWluZygpXG4gICAgaWYgKHRleHQpIGl0ZW1zLnB1c2goeyBraW5kOiAnYXNzaXN0YW50JywgdGV4dCB9KVxuICAgIHNldFN0cmVhbWluZyhudWxsKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVR1cm4odGV4dCkge1xuICAgIGNvbnN0IHsgY29udGVudCB9ID0gZmluYWxpemVVc2VyQ29udGVudCh0ZXh0LCByZWZzLmF0dGFjaG1lbnRzKVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlOiB7IHJvbGU6ICd1c2VyJywgY29udGVudCB9IH0pKVxuICAgIGVuc3VyZVNlc3Npb24oKVxuICAgIHJlRGVyaXZlKClcbiAgICBhd2FpdCBydW5BZ2VudFR1cm4oKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUNvbXBhY3Rpb24oaW5zdHJ1Y3Rpb25zID0gJycpIHtcbiAgICBpZiAoYnVzeSgpIHx8IGNvbXBhY3RpbmcoKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgaWYgKHN0YXRlLnByb3ZpZGVySGlzdG9yeS5sZW5ndGggPCA0KSByZXR1cm4gZmxhc2goJ25vdGhpbmcgdG8gY29tcGFjdCB5ZXQnKVxuXG4gICAgbGV0IGF1dGggPSBudWxsXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAoIWF1dGgpIHJldHVybiBmbGFzaCgnY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW46IHJ1biAvY29ubmVjdCcpXG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IHVzZXJFbnRyaWVzKHN0YXRlKVxuICAgIGNvbnN0IGtlZXBGcm9tID0gZW50cmllcy5hdCgtMik/LmV2ZW50SWQgPz8gZW50cmllcy5hdCgtMSk/LmV2ZW50SWRcblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICByZWZzLmFib3J0ID0gY29udHJvbGxlclxuICAgIHNldEJ1c3kodHJ1ZSlcbiAgICBzZXRDb21wYWN0aW5nKHRydWUpXG4gICAgc2V0Q29tcGFjdFN0YXR1cyhudWxsKVxuICAgIHNldFN0YXJ0ZWRBdChEYXRlLm5vdygpKVxuICAgIGxldCBzdHJlYW1lZCA9ICcnXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IGNvbXBhY3RIaXN0b3J5KHtcbiAgICAgICAgaGlzdG9yeTogc3RhdGUucHJvdmlkZXJIaXN0b3J5LFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgcHJvbXB0OiBjb21wYWN0aW9uUHJvbXB0KGluc3RydWN0aW9ucyksXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG9uU3RyZWFtOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NvbnRlbnQnKSByZXR1cm5cbiAgICAgICAgICBzdHJlYW1lZCArPSBldmVudC5jb250ZW50XG4gICAgICAgICAgc2V0Q29tcGFjdFN0YXR1cyhjb21wYWN0UHJvZ3Jlc3Moc3RyZWFtZWQpKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHN1bW1hcnkgPSBmb3JtYXRDb21wYWN0U3VtbWFyeShyYXcpXG4gICAgICBpZiAoIXN1bW1hcnkpIHRocm93IG5ldyBFcnJvcignZW1wdHkgc3VtbWFyeScpXG4gICAgICBpZiAoc3VtbWFyeVNlY3Rpb25zKHN1bW1hcnkpIDwgNSkgdGhyb3cgbmV3IEVycm9yKCdtYWxmb3JtZWQgc3VtbWFyeSwgY29udmVyc2F0aW9uIGxlZnQgdW50b3VjaGVkJylcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb21wYWN0JywgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGU6IHJlZnMuc2Vzc2lvbj8uZmlsZSB8fCBudWxsIH0pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbXBhY3RlZCBcdTAwQjcgcmVjZW50IG1lc3NhZ2VzIGtlcHQgdmVyYmF0aW0nKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIGZsYXNoKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gICAgICBlbHNlIGZsYXNoKGBjb21wYWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMDApfWApXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldENvbXBhY3RpbmcoZmFsc2UpXG4gICAgICBzZXRDb21wYWN0U3RhdHVzKG51bGwpXG4gICAgICBzZXRCdXN5KGZhbHNlKVxuICAgICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBxID0gcXVldWVkKClcbiAgICBpZiAocS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2UgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtYXliZUF1dG9Db21wYWN0KCkge1xuICAgIGlmIChib290LmF1dG9Db21wYWN0ID09PSBmYWxzZSB8fCBidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm5cbiAgICBjb25zdCBsaW1pdCA9IG1vZGVsKCkuY29udGV4dFxuICAgIGNvbnN0IHVzZWQgPSBkZXJpdmVkKCkubGFzdFByb21wdFRva2Vuc1xuICAgIGlmICghbGltaXQgfHwgIXVzZWQgfHwgZGVyaXZlZCgpLmxhc3RQcm9tcHRNb2RlbCAhPT0gbW9kZWwoKS5uYW1lKSByZXR1cm5cbiAgICBjb25zdCByYXRpbyA9IHVzZWQgLyBsaW1pdFxuICAgIGlmIChyYXRpbyA+PSAwLjg1KSB7XG4gICAgICBmbGFzaChgY29udGV4dCAke01hdGgucm91bmQocmF0aW8gKiAxMDApfSUgZnVsbCBcdTAwQjcgYXV0by1jb21wYWN0aW5nYClcbiAgICAgIHBlcmZvcm1Db21wYWN0aW9uKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBydW5BZ2VudFR1cm4oKSB7XG4gICAgbGV0IGF1dGggPSBudWxsXG4gICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAoIWF1dGgpIHtcbiAgICAgICAgZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0Rm9sbG93KHRydWUpXG4gICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICBzZXRCdXN5KHRydWUpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KHRyYWNrZXIubG9hZGVkKVxuICAgIGJvb3Quc2tpbGxzID0gYXdhaXQgY3JlYXRlU2tpbGxJbmRleChib290LnJvb3QpLmNhdGNoKCgpID0+IGJvb3Quc2tpbGxzKSA/PyBib290LnNraWxsc1xuICAgIGJvb3QuY29tbWFuZHMgPSBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LmNvbW1hbmRzKSA/PyBib290LmNvbW1hbmRzXG4gICAgY29uc3QgZnJlc2hTa2lsbHMgPSBib290LnNraWxsc1xuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHVzZXJUb29sU2Nhbi5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2ZhaWx1cmUuZmlsZX06JHtmYWlsdXJlLmVycm9yfWBcbiAgICAgIGlmICghcmVmcy53YXJuZWRUb29scz8uaGFzKGtleSkpIHtcbiAgICAgICAgOyhyZWZzLndhcm5lZFRvb2xzID8/PSBuZXcgU2V0KCkpLmFkZChrZXkpXG4gICAgICAgIGZsYXNoKGB0b29sIHNraXBwZWQ6ICR7ZmFpbHVyZS5maWxlLnNwbGl0KCcvJykucG9wKCl9IFx1MDBCNyAke2ZhaWx1cmUuZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogZnJlc2hTa2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGRyZWRnZTogYm9vdC5kcmVkZ2UsXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSlcblxuICAgIHJlZnMudHVyblRob3VnaHRzID0gJydcbiAgICBjb25zdCBvblN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgcmVmcy50dXJuVGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgICBzZXRUaGlua2luZ05vdyh0cnVlKVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgICAgIHNldFN0cmVhbWluZygocykgPT4gKHMgfHwgJycpICsgZXZlbnQuY29udGVudClcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICAgIHNldFRoaW5raW5nTm93KGZhbHNlKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgbGV0IGFyZ3MgPSB7fVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhcmdzID0gSlNPTi5wYXJzZShldmVudC5jYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgICAgbmV4dC5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgICAgIGNhbGxJZDogZXZlbnQuY2FsbC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIHRpdGxlOiB1aVRpdGxlKGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSwgYXJncyksXG4gICAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJyB8fCBldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PlxuICAgICAgICAgIG8ubWFwKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5raW5kID09PSAndG9vbCcgJiYgaXRlbS5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWRcbiAgICAgICAgICAgICAgPyB7IC4uLml0ZW0sIC4uLihlbnRyeT8uY2FsbElkID09PSBldmVudC5jYWxsLmlkID8gZW50cnkgOiB7fSksIGtpbmQ6ICd0b29sJywgc3RhdHVzOiBlbnRyeT8uc3RhdHVzIHx8ICdkb25lJyB9XG4gICAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogZGVyaXZlZCgpLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgdG9vbHMsXG4gICAgICAgIHJlY29yZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgZWZmb3J0OiBlZmZvcnRBcHBsaWVzKCkgPyBlZmZvcnQoKSA/PyAnYXV0bycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgICAgY29udGV4dEZpbGVzOiBzdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLmxpc3QoKSxcbiAgICAgICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgICAgIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRPdmVybGF5KFtdKVxuICAgICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgICBzZXRUaGlua2luZ05vdyhmYWxzZSlcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgICAgZmxhc2goYGVycm9yOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZWZzLnR1cm5UaG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiByZWZzLnR1cm5UaG91Z2h0cyB9KSlcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRyYWNrZXIubG9hZGVkKSB7XG4gICAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gICAgfVxuICAgIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsKCkubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICAgIHNldE92ZXJsYXkoW10pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgcmVEZXJpdmUoKVxuICAgIHNldEJ1c3koZmFsc2UpXG4gICAgcmVmcy5hYm9ydCA9IG51bGxcbiAgICBpZiAocmVzdWx0LnN0YWxsZWQpIHtcbiAgICAgIGZsYXNoKCdtb2RlbCBzdGFsbGVkIFx1MDBCNyB0dXJuIGludGVycnVwdGVkJylcbiAgICAgIG5vdGVTeXN0ZW0oXG4gICAgICAgICdbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHByZXZpb3VzIHR1cm4gd2FzIGN1dCBvZmYgYXV0b21hdGljYWxseTogdGhlIG1vZGVsIHByb2R1Y2VkIG5vIG91dHB1dCBmb3IgNSBtaW51dGVzIChwcm92aWRlciBzdGFsbCkuIFdvcmsgbWF5IGhhdmUgc3RvcHBlZCBtaWQtdGFzazsgcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4nLFxuICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgIGZsYXNoKGBlcnJvcjogJHtyZXN1bHQuZXJyb3Iuc2xpY2UoMCwgMTIwKX1gKVxuICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgcHJldmlvdXMgdHVybiBlbmRlZCB3aXRoIGEgcHJvdmlkZXIgZXJyb3I6ICR7cmVzdWx0LmVycm9yLnNsaWNlKDAsIDMwMCl9LiBXb3JrIG1heSBoYXZlIHN0b3BwZWQgbWlkLXRhc2s7IHBpY2sgdXAgd2hlcmUgaXQgbGVmdCBvZmYuYCxcbiAgICAgICAgeyB3YWtlOiBmYWxzZSB9LFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IHEgPSBxdWV1ZWQoKVxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIGlmIChyZXN1bHQuaW50ZXJydXB0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIHtcbiAgICAgICAgZXhlY3V0ZVR1cm4ocS5qb2luKCdcXG4nKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGZsdXNoU3lzdGVtTm90ZXMoKVxuICAgIG1heWJlQXV0b0NvbXBhY3QoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29tcGxldGlvblNvdXJjZShuYW1lKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjb2xvcicpIHJldHVybiBPYmplY3Qua2V5cyhTRVNTSU9OX0NPTE9SUylcbiAgICBpZiAobmFtZSA9PT0gJ3RoZW1lJykgcmV0dXJuIFsuLi5wYWxldHRlTGlzdCgpLm1hcCgocCkgPT4gcC5rZXkpLCAnYXV0byddXG4gICAgaWYgKG5hbWUgPT09ICdlZmZvcnQnKSByZXR1cm4gWydkZWZhdWx0JywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXVxuICAgIGlmIChuYW1lID09PSAnbW9kZWwnKSByZXR1cm4gbW9kZWxzLmZpbHRlcigobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKS5tYXAoKG0pID0+IG0ubmFtZSlcbiAgICBjb25zdCBjbWQgPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpXG4gICAgaWYgKGNtZD8uc2tpbGwgfHwgY21kPy5jb21tYW5kKSByZXR1cm4gZmlsZUxpc3QoKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiBkaXNtaXNzQ29tcGxldGlvbigpIHtcbiAgICBzZXRDb21wbGV0aW5nKGZhbHNlKVxuICAgIHNldENvbXBJbmRleCgwKVxuICB9XG5cbiAgZnVuY3Rpb24gYWNjZXB0Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpIHtcbiAgICBzZXRJbnB1dChhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSlcbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gIH1cblxuICBmdW5jdGlvbiBzZW5kKHRleHQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRleHQudHJpbSgpXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuXG4gICAgZGlzbWlzc0NvbXBsZXRpb24oKVxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IHZhbHVlLnNsaWNlKDEpLnNwbGl0KC9cXHMrLylcbiAgICAgIGNvbnN0IG1hdGNoID0gYWxsQ29tbWFuZHMuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgc2V0SW5wdXQoJycpXG4gICAgICAgIHJ1bkNvbW1hbmQobWF0Y2gsIHJlc3Quam9pbignICcpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0U2VudCgocykgPT4gWy4uLnMsIHsgdGV4dDogdmFsdWUsIGF0OiBEYXRlLm5vdygpIH1dKVxuICAgIHNldEhpc3RJZHgoLTEpXG4gICAgYXBwZW5kUHJvbXB0KHJvb3QsIHZhbHVlKS5jYXRjaCgoKSA9PiB7fSlcbiAgICBpZiAoYnVzeSgpKSB7XG4gICAgICBzZXRRdWV1ZWQoKHEpID0+IFsuLi5xLCB2YWx1ZV0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXhlY3V0ZVR1cm4odmFsdWUpXG4gIH1cblxuICBmdW5jdGlvbiBpbnRlcnJ1cHQoKSB7XG4gICAgaWYgKCFidXN5KCkpIHJldHVyblxuICAgIHJlZnMuYWJvcnQ/LmFib3J0KClcbiAgfVxuXG4gIGNvbnN0IGZtdFRva2VucyA9IChuKSA9PiAobiA+PSAxMDAwID8gYCR7KG4gLyAxMDAwKS50b0ZpeGVkKDEpfWtgIDogU3RyaW5nKG4pKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hNZW1vcmllcygpIHtcbiAgICBzZXRNZW1vcnlMaXN0KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBmb3JnZXRNZW1vcnkobSkge1xuICAgIGNvbnN0IGFybWVkID0gcmVmcy5mb3JnZXRBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmZpbGUgIT09IG0uZmlsZSB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLmZvcmdldEFybSA9IHsgZmlsZTogbS5maWxlLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBmb3JnZXQgXCIke20ubmFtZX1cImApXG4gICAgfVxuICAgIHJlZnMuZm9yZ2V0QXJtID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBib290Lm1lbW9yeS5mb3JnZXQobS5uYW1lKVxuICAgICAgYXdhaXQgcmVmcmVzaE1lbW9yaWVzKClcbiAgICAgIGZsYXNoKGBmb3Jnb3QgJHttLm5hbWV9ICgke20uc2NvcGV9KWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgZm9yZ2V0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBvcGVuQ29udGV4dFBhbmVsKCkge1xuICAgIGNvbnN0IGVzdCA9ICh0ZXh0KSA9PiBNYXRoLnJvdW5kKFN0cmluZyh0ZXh0KS5sZW5ndGggLyA0KVxuICAgIGNvbnN0IHRvayA9IChuKSA9PiBgfiR7Zm10VG9rZW5zKG4pfSB0b2tgXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcblxuICAgIGNvbnN0IG1lbW9yeUluZGV4VGV4dCA9IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdClcbiAgICBjb25zdCBza2lsbExpc3QgPSBib290LnNraWxscy5saXN0KClcbiAgICBjb25zdCBmaWxlcyA9IHN0YXJ0dXBDb250ZXh0LmZpbGVzXG4gICAgY29uc3Qgc3lzdGVtRnVsbCA9IGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXM6IGZpbGVzLCBza2lsbHM6IHNraWxsTGlzdCwgbWVtb3J5SW5kZXhUZXh0IH0pXG4gICAgY29uc3Qgc3lzdGVtQmFzZSA9IGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXM6IFtdLCBza2lsbHM6IFtdLCBtZW1vcnlJbmRleFRleHQ6ICcnIH0pXG4gICAgY29uc3QgdXNlclRvb2xTY2FuID0gYXdhaXQgc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdDogYm9vdC5yb290IH0pLmNhdGNoKCgpID0+ICh7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9KSlcbiAgICBjb25zdCB7IHRvb2xzIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICAgIGN3ZCxcbiAgICAgIHRyYWNrZXIsXG4gICAgICBza2lsbHM6IGJvb3Quc2tpbGxzLFxuICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgbWNwVG9vbHM6IG1jcC50b29scygpLFxuICAgICAgdXNlclRvb2xzOiB1c2VyVG9vbFNjYW4udG9vbHMsXG4gICAgfSlcbiAgICBjb25zdCB0b29sVG9rZW5zID0gZXN0KEpTT04uc3RyaW5naWZ5KHRvb2xzKSlcblxuICAgIGNvbnN0IGhpc3RvcnkgPSBzdGF0ZS5wcm92aWRlckhpc3RvcnlcbiAgICBjb25zdCBjb21wYWN0ZWQgPSBoaXN0b3J5WzBdPy5yb2xlID09PSAndXNlcidcbiAgICAgICYmIHN0YXRlLmhpc3RvcnlFdmVudElkc1swXSA9PT0gbnVsbFxuICAgICAgJiYgU3RyaW5nKGhpc3RvcnlbMF0uY29udGVudCkuc3RhcnRzV2l0aCgnW3N5c3RlbSBub3RpZmljYXRpb25dIFRoZSBlYXJsaWVyIHBvcnRpb24nKVxuICAgIGNvbnN0IHN1bW1hcnlUb2tlbnMgPSBjb21wYWN0ZWQgPyBlc3QoaGlzdG9yeVswXS5jb250ZW50KSA6IDBcbiAgICBjb25zdCBtZXNzYWdlcyA9IGNvbXBhY3RlZCA/IGhpc3Rvcnkuc2xpY2UoMSkgOiBoaXN0b3J5XG4gICAgY29uc3QgbWVzc2FnZVRva2VucyA9IGVzdChKU09OLnN0cmluZ2lmeShtZXNzYWdlcykpXG5cbiAgICBjb25zdCByb3dzID0gW1xuICAgICAgeyBuYW1lOiAnc3lzdGVtIHByb21wdCcsIGRlc2M6ICdpZGVudGl0eSwgZW52aXJvbm1lbnQsIHRvb2wgZ3VpZGFuY2UnLCBub3RlOiB0b2soZXN0KHN5c3RlbUJhc2UpKSB9LFxuICAgICAgeyBuYW1lOiBgdG9vbCBzY2hlbWFzICgke3Rvb2xzLmxlbmd0aH0pYCwgZGVzYzogdG9vbHMubWFwKCh0KSA9PiB0Lm5hbWUpLmpvaW4oJyBcdTAwQjcgJyksIG5vdGU6IHRvayh0b29sVG9rZW5zKSB9LFxuICAgIF1cbiAgICBpZiAoZmlsZXMubGVuZ3RoKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiBgcHJvamVjdCBpbnN0cnVjdGlvbnMgKCR7ZmlsZXMubGVuZ3RofSlgLFxuICAgICAgICBkZXNjOiBmaWxlcy5tYXAoKGYpID0+IGYucGF0aC5yZXBsYWNlKGAke2Jvb3Qucm9vdH0vYCwgJycpKS5qb2luKCcsICcpLFxuICAgICAgICBub3RlOiB0b2soZmlsZXMucmVkdWNlKChzdW0sIGYpID0+IHN1bSArIGVzdChmLmNvbnRlbnQpLCAwKSksXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoc2tpbGxMaXN0Lmxlbmd0aCkge1xuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbmFtZTogYHNraWxscyBpbmRleCAoJHtza2lsbExpc3QubGVuZ3RofSlgLFxuICAgICAgICBkZXNjOiBza2lsbExpc3QubWFwKChzKSA9PiBzLm5hbWUpLmpvaW4oJywgJyksXG4gICAgICAgIG5vdGU6IHRvayhlc3Qoc2tpbGxMaXN0Lm1hcCgocykgPT4gYC0gJHtzLm5hbWV9OiAke3MuZGVzY3JpcHRpb259YCkuam9pbignXFxuJykpKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChtZW1vcnlJbmRleFRleHQpIHtcbiAgICAgIHJvd3MucHVzaCh7IG5hbWU6ICdtZW1vcnkgaW5kZXgnLCBkZXNjOiAnb25lIGxpbmUgcGVyIHNhdmVkIG1lbW9yeScsIG5vdGU6IHRvayhlc3QobWVtb3J5SW5kZXhUZXh0KSkgfSlcbiAgICB9XG4gICAgaWYgKGNvbXBhY3RlZCkge1xuICAgICAgcm93cy5wdXNoKHsgbmFtZTogJ2NvbXBhY3Rpb24gc3VtbWFyeScsIGRlc2M6ICdzdGFuZHMgaW4gZm9yIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBsYXN0IGNvbXBhY3QnLCBub3RlOiB0b2soc3VtbWFyeVRva2VucykgfSlcbiAgICB9XG4gICAgcm93cy5wdXNoKHtcbiAgICAgIG5hbWU6IGBjb252ZXJzYXRpb24gKCR7bWVzc2FnZXMubGVuZ3RofSBtZXNzYWdlcylgLFxuICAgICAgZGVzYzogY29tcGFjdGVkID8gJ2tlcHQgdmVyYmF0aW0gc2luY2UgdGhlIGxhc3QgY29tcGFjdCcgOiAnZXZlcnkgbWVzc2FnZSB0aGlzIHNlc3Npb24nLFxuICAgICAgbm90ZTogdG9rKG1lc3NhZ2VUb2tlbnMpLFxuICAgIH0pXG5cbiAgICBjb25zdCB0b3RhbCA9IGVzdChzeXN0ZW1GdWxsKSArIHRvb2xUb2tlbnMgKyBzdW1tYXJ5VG9rZW5zICsgbWVzc2FnZVRva2Vuc1xuICAgIGNvbnN0IGxpbWl0ID0gbW9kZWwoKS5jb250ZXh0XG4gICAgcm93cy5wdXNoKHtcbiAgICAgIG5hbWU6ICdlc3RpbWF0ZWQgbmV4dCByZXF1ZXN0JyxcbiAgICAgIGRlc2M6IGxpbWl0ID8gYG9mICR7Zm10VG9rZW5zKGxpbWl0KX0gY29udGV4dCBcdTAwQjcgfiR7TWF0aC5yb3VuZCgodG90YWwgLyBsaW1pdCkgKiAxMDApfSVgIDogJ2NvbnRleHQgc2l6ZSB1bmtub3duIGZvciB0aGlzIG1vZGVsJyxcbiAgICAgIG5vdGU6IHRvayh0b3RhbCksXG4gICAgfSlcbiAgICBpZiAoc3RhdGUubGFzdFByb21wdFRva2VucyAmJiBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPT09IG1vZGVsKCkubmFtZSkge1xuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ2xhc3QgbWVhc3VyZWQgcmVxdWVzdCcsXG4gICAgICAgIGRlc2M6ICdwcm92aWRlci1yZXBvcnRlZCBpbnB1dCB0b2tlbnMsIHRoZSBudW1iZXIgYmVoaW5kIGN0eCAlJyxcbiAgICAgICAgbm90ZTogYCR7c3RhdGUubGFzdFByb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSB0b2tgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBzZXRJbmZvUGFuZWwoeyB0aXRsZTogYENvbnRleHQgXHUwMEI3ICR7bW9kZWwoKS5uYW1lfWAsIHJvd3MgfSlcbiAgfVxuXG4gIGNvbnN0IHRoZW1lSXRlbXMgPSAoKSA9PiBbXG4gICAgLi4ucGFsZXR0ZUxpc3QoKSxcbiAgICB7IGtleTogJ2F1dG8nLCBkZXNjOiBgZm9sbG93IHRoZSB0ZXJtaW5hbCAoZGV0ZWN0ZWQ6ICR7Ym9vdC5kZXRlY3RlZFRoZW1lIHx8ICdkYXJrJ30pYCB9LFxuICBdXG5cbiAgZnVuY3Rpb24gcGFsZXR0ZUZvcihwcmVmKSB7XG4gICAgcmV0dXJuIHByZWYgPT09ICdhdXRvJyA/IGJvb3QuZGV0ZWN0ZWRUaGVtZSB8fCAnZGFyaycgOiBwcmVmXG4gIH1cblxuICBmdW5jdGlvbiBwcmV2aWV3UGFsZXR0ZShwcmVmKSB7XG4gICAgc2V0UGFsZXR0ZShwYWxldHRlRm9yKHByZWYpKVxuICAgIGJvb3Quc2V0VGhlbWU/Lih7IGFjY2VudDogYWNjZW50KCksIG11dGVkOiBNVVRFRCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHlUaGVtZVByZWYocHJlZikge1xuICAgIHNldFRoZW1lUHJlZihwcmVmKVxuICAgIHByZXZpZXdQYWxldHRlKHByZWYpXG4gICAgd3JpdGVDb25maWcoeyB0aGVtZTogcHJlZiA9PT0gJ2F1dG8nID8gdW5kZWZpbmVkIDogcHJlZiB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICBmbGFzaChwcmVmID09PSAnYXV0bycgPyBgdGhlbWU6IGF1dG8gXHUwMEI3IGZvbGxvd2luZyB0aGUgdGVybWluYWwgKCR7cGFsZXR0ZUZvcignYXV0bycpfSlgIDogYHRoZW1lOiAke3ByZWZ9YClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bkNvbW1hbmQoYywgYXJncyA9ICcnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmdzICE9PSAnc3RyaW5nJykgYXJncyA9ICcnXG4gICAgc2V0SW5wdXQoJycpXG4gICAgc2V0Q21kQ3ljbGUobnVsbClcbiAgICBpZiAoYy5uYW1lID09PSAncmVuYW1lJykge1xuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gZmxhc2goJ3VzYWdlOiAvcmVuYW1lIDxuZXcgbmFtZT4nKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3RpdGxlJywgeyB0ZXh0OiBhcmdzIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaChgc2Vzc2lvbiByZW5hbWVkIHRvIFwiJHthcmdzfVwiYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29sb3InKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhTRVNTSU9OX0NPTE9SUylcbiAgICAgIGxldCB2YWx1ZVxuICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAodmFsdWVzLmluZGV4T2YoZGVyaXZlZCgpLmNvbG9yKSArIDEpICUgdmFsdWVzLmxlbmd0aFxuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tuZXh0XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBTRVNTSU9OX0NPTE9SU1thcmdzLnRvTG93ZXJDYXNlKCldIHx8ICgvXiNbMC05YS1mQS1GXXs2fSQvLnRlc3QoYXJncykgPyBhcmdzIDogbnVsbClcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZsYXNoKGB1c2FnZTogL2NvbG9yIHRvIGN5Y2xlLCBvciAvY29sb3IgPCR7bmFtZXMuam9pbignfCcpfXwjaGV4PmApXG4gICAgICB9XG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29sb3InLCB7IHZhbHVlIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbdmFsdWVzLmluZGV4T2YodmFsdWUpXVxuICAgICAgZmxhc2goYHNlc3Npb24gY29sb3I6ICR7bmFtZSB8fCB2YWx1ZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd0aGVtZScpIHtcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dUaGVtZVBhbmVsKHRydWUpXG4gICAgICBjb25zdCBjaG9pY2UgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGNvbnN0IHZhbGlkID0gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICAgIGlmICghdmFsaWQuaW5jbHVkZXMoY2hvaWNlKSkgcmV0dXJuIGZsYXNoKGB0aGVtZTogJHtwYWxldHRlTmFtZSgpfSBcdTAwQjcgL3RoZW1lIDwke3ZhbGlkLmpvaW4oJ3wnKX0+YClcbiAgICAgIGFwcGx5VGhlbWVQcmVmKGNob2ljZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5za2lsbCkge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKGMubmFtZSlcbiAgICAgIGlmICghYm9keSkgcmV0dXJuIGZsYXNoKGBjb3VsZCBub3QgbG9hZCBza2lsbCAke2MubmFtZX1gKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3NraWxsJywgeyBuYW1lOiBjLm5hbWUsIHNvdXJjZTogJ3VzZXInIH0pKVxuICAgICAgc2VuZChgRm9sbG93IHRoZXNlIHNraWxsIGluc3RydWN0aW9ucyBub3cuXFxuXFxuJHtib2R5fWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuY29tbWFuZCkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJvb3QuY29tbWFuZHMubG9hZChjLm5hbWUsIGFyZ3MpXG4gICAgICBpZiAoIXRleHQpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgY29tbWFuZCAke2MubmFtZX1gKVxuICAgICAgc2VuZCh0ZXh0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb25uZWN0JykgcmV0dXJuIG9wZW5Db25uZWN0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dNb2RlbFBhbmVsKHRydWUpXG4gICAgICBjb25zdCBleGFjdCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGFyZ3MpXG4gICAgICBjb25zdCBhZGhvYyA9ICFleGFjdCAmJiBhcmdzLmluY2x1ZGVzKCcvJykgPyBhZGhvY01vZGVsKGFyZ3MsIGJvb3QucHJvdmlkZXJzKSA6IG51bGxcbiAgICAgIGNvbnN0IHNjb3JlZCA9IGV4YWN0IHx8IGFkaG9jXG4gICAgICAgID8gW11cbiAgICAgICAgOiBtb2RlbHNcbiAgICAgICAgICAgIC5tYXAoKG0pID0+IFtmdXp6eVNjb3JlKGFyZ3MsIG0ubmFtZSksIG1dKVxuICAgICAgICAgICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgICAgIGNvbnN0IHBpY2sgPSBleGFjdCB8fCBhZGhvYyB8fCBzY29yZWRbMF0/LlsxXVxuICAgICAgaWYgKCFwaWNrKSByZXR1cm4gZmxhc2goYG5vIGF2YWlsYWJsZSBtb2RlbCBtYXRjaGVzIFwiJHthcmdzfVwiYClcbiAgICAgIGlmIChwaWNrLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7cGljay5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke3BpY2submFtZX1gKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogcGljay5uYW1lIH0pKVxuICAgICAgc2V0TW9kZWwocGljaylcbiAgICAgIGZsYXNoKGFkaG9jID8gYG1vZGVsIHNldCB0byAke3BpY2submFtZX0gKG5vdCBpbiBjYXRhbG9nLCBwcmljaW5nIHVua25vd24pYCA6IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9YClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnZWZmb3J0Jykge1xuICAgICAgaWYgKCFlZmZvcnRBcHBsaWVzKCkpIHJldHVybiBmbGFzaChgJHttb2RlbCgpLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgZWZmb3J0IGNvbnRyb2xgKVxuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gc2V0U2hvd0VmZm9ydFBhbmVsKHRydWUpXG4gICAgICBjb25zdCBsZXZlbCA9IGFyZ3MudG9Mb3dlckNhc2UoKVxuICAgICAgaWYgKGxldmVsID09PSAnZGVmYXVsdCcpIHJldHVybiBzZXRTZXNzaW9uRWZmb3J0KG51bGwpXG4gICAgICBpZiAoIUVGRk9SVF9MRVZFTFMuc29tZSgobCkgPT4gbC5rZXkgPT09IGxldmVsKSkgcmV0dXJuIGZsYXNoKCd1c2FnZTogL2VmZm9ydCA8ZGVmYXVsdHxsb3d8bWVkaXVtfGhpZ2h8bWF4PicpXG4gICAgICByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChsZXZlbClcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbnRleHQnKSByZXR1cm4gb3BlbkNvbnRleHRQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2hlbHAnKSByZXR1cm4gc2V0VmlldygnaGVscCcpXG4gICAgaWYgKGMubmFtZSA9PT0gJ21jcCcpIHJldHVybiBzZXRTaG93TWNwUGFuZWwodHJ1ZSlcbiAgICBpZiAoYy5uYW1lID09PSAnc2hlbGxzJykgcmV0dXJuIHNldFNob3dTaGVsbHNQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICd3YWtldXBzJykgcmV0dXJuIHNldFNob3dXYWtldXBzUGFuZWwodHJ1ZSlcbiAgICBpZiAoYy5uYW1lID09PSAnbWVtb3J5Jykge1xuICAgICAgYXdhaXQgcmVmcmVzaE1lbW9yaWVzKClcbiAgICAgIHJldHVybiBzZXRTaG93TWVtb3J5UGFuZWwodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jlc3VtZScpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Byb2plY3QnKSByZXR1cm4gb3BlblByb2plY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2N3ZCcpIHtcbiAgICAgIGNvbnN0IHJvb3ROb3RlID0gYm9vdC5yb290ICE9PSBib290LmN3ZCA/IGAgXHUwMEI3IHByb2plY3Qgcm9vdCAke3Nob3J0ZW5QYXRoKGJvb3Qucm9vdCl9YCA6ICcnXG4gICAgICByZXR1cm4gZmxhc2goYCR7Ym9vdC5kaXNwbGF5Q3dkfSR7cm9vdE5vdGV9YClcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3NraWxscycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ1NraWxscycsXG4gICAgICAgIHJvd3M6IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IHMuZGVzY3JpcHRpb24sIG5vdGU6IHMuc291cmNlIH0pKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21tYW5kcycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ0NvbW1hbmRzJyxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLkNPTU1BTkRTLm1hcCgoY21kKSA9PiAoeyBuYW1lOiBgLyR7Y21kLm5hbWV9YCwgZGVzYzogY21kLmRlc2MsIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uYm9vdC5jb21tYW5kcy5saXN0KCkubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzY3JpcHRpb24sIG5vdGU6IGNtZC5zb3VyY2UgfSkpLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Rvb2xzJykge1xuICAgICAgY29uc3Qgc2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgICAgY29uc3QgeyB0b29sczogYnVpbHRpbnMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgICBjd2Q6IGJvb3QuY3dkLFxuICAgICAgICB0cmFja2VyLFxuICAgICAgICBza2lsbHMsXG4gICAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBtY3BDb3VudCA9IG1jcC50b29scygpLmxlbmd0aFxuICAgICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6IGBUb29scyR7bWNwQ291bnQgPyBgIFx1MDBCNyBwbHVzICR7bWNwQ291bnR9IE1DUCAoc2VlIC9tY3ApYCA6ICcnfWAsXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICAuLi5idWlsdGlucy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbi5zcGxpdCgnXFxuJylbMF0sIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uc2Nhbi50b29scy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbiwgbm90ZTogYCR7dC5zb3VyY2V9IFx1MDBCNyAke3QuX2ZpbGUuc3BsaXQoJy8nKS5wb3AoKX1gIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLmVycm9ycy5tYXAoKGUpID0+ICh7IG5hbWU6IGUuZmlsZS5zcGxpdCgnLycpLnBvcCgpLCBkZXNjOiBlLmVycm9yLCBub3RlOiAnYnJva2VuJyB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICduZXcnKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICByZWZzLnNlc3Npb24gPSBudWxsXG4gICAgICByZWZzLmFsbEV2ZW50cyA9IFtdXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IDBcbiAgICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldFNlbnQoW10pXG4gICAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICAgIHNldEVmZm9ydChkZWZhdWx0RWZmb3J0KCkpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ25ldyBzZXNzaW9uJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncmV3aW5kJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgaWYgKHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubGVuZ3RoID09PSAwKSByZXR1cm4gZmxhc2goJ25vdGhpbmcgdG8gcmV3aW5kIHlldCcpXG4gICAgICBzZXRSZXdpbmRTdGVwKCdwaWNrJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY2xlYXInKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY2xlYXInLCB7fSkpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnY29udmVyc2F0aW9uIGNsZWFyZWQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21wYWN0JykgcmV0dXJuIHBlcmZvcm1Db21wYWN0aW9uKGFyZ3MpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2Nvc3QnKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHN0YXRlLnVzYWdlQnlNb2RlbClcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdubyB1c2FnZSB5ZXQnKVxuICAgICAgY29uc3QgY29zdE9mID0gKGJ5TW9kZWwpID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGJ5TW9kZWwpLnJlZHVjZSgoc3VtLCBbbmFtZSwgdXNhZ2VdKSA9PiBzdW0gKyBlc3RpbWF0ZUNvc3QoZmluZE1vZGVsKG1vZGVscywgbmFtZSksIHVzYWdlKSwgMClcbiAgICAgIGNvbnN0IHNwZW50ID0gY29zdE9mKHN0YXRlLnVzYWdlQnlNb2RlbClcbiAgICAgIGNvbnN0IGFjdGl2ZSA9IGNvc3RPZihzdGF0ZS51c2FnZUFjdGl2ZUJ5TW9kZWwpXG4gICAgICBjb25zdCB7IHByb21wdFRva2VucywgY29tcGxldGlvblRva2VucyB9ID0gc3RhdGUudXNhZ2VcbiAgICAgIGNvbnN0IGJhc2UgPSBgJCR7c3BlbnQudG9GaXhlZCg0KX0gc3BlbnQgXHUwMEI3ICR7cHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IGluIFx1MDBCNyAke2NvbXBsZXRpb25Ub2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gb3V0YFxuICAgICAgZmxhc2goc3BlbnQgLSBhY3RpdmUgPiAwLjAwMDA1ID8gYCR7YmFzZX0gXHUwMEI3IGN1cnJlbnQgY29udmVyc2F0aW9uICQke2FjdGl2ZS50b0ZpeGVkKDQpfWAgOiBiYXNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdleHBvcnQnKSB7XG4gICAgICBjb25zdCBmaWxlID0gam9pbihjd2QsIGBwaWNvLWV4cG9ydC0ke0RhdGUubm93KCl9Lm1kYClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlLCB0cmFuc2NyaXB0VG9NYXJrZG93bihkZXJpdmVkKCkudHJhbnNjcmlwdCwgeyB0aXRsZTogYHBpY28gc2Vzc2lvbiBcdTAwQjcgJHtjd2R9YCB9KSlcbiAgICAgIGZsYXNoKGBleHBvcnRlZCB0byAke2ZpbGV9YClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hBdXRoUHJvdmlkZXJzKCkge1xuICAgIGNvbnN0IG9wZW5haSA9IGF3YWl0IG9wZW5haVN0YXR1cygpLmNhdGNoKCgpID0+ICh7IGNvbm5lY3RlZDogZmFsc2UsIGVtYWlsOiBudWxsIH0pKVxuICAgIHNldEF1dGhQcm92aWRlcnMoW1xuICAgICAgeyBpZDogJ29wZW5haScsIGxhYmVsOiAnT3BlbkFJIFx1MDBCNyBDaGF0R1BUIC8gQ29kZXggcGxhbicsIGNvbm5lY3RlZDogb3BlbmFpLmNvbm5lY3RlZCwgZW1haWw6IG9wZW5haS5lbWFpbCB9LFxuICAgIF0pXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuQ29ubmVjdFBhbmVsKCkge1xuICAgIHNldFNob3dDb25uZWN0UGFuZWwodHJ1ZSlcbiAgICByZWZyZXNoQXV0aFByb3ZpZGVycygpXG4gIH1cblxuICBmdW5jdGlvbiBjb25uZWN0UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIuaWQgIT09ICdvcGVuYWknKSByZXR1cm5cbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKVxuICAgIGZsYXNoKCdvcGVuaW5nIHlvdXIgYnJvd3NlciBmb3IgQ2hhdEdQVCBzaWduLWluLi4uJylcbiAgICBjb25uZWN0T3BlbkFJKClcbiAgICAgIC50aGVuKGFzeW5jICh7IGVtYWlsIH0pID0+IHtcbiAgICAgICAgYm9vdC5wcm92aWRlcnMgPSBbLi4ubmV3IFNldChbLi4uYm9vdC5wcm92aWRlcnMsICdjb2RleCddKV1cbiAgICAgICAgY29uc3QgY3JlZHMgPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICAgIGNvbnN0IGNvZGV4ID0gKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjcmVkcykpLm1hcCgobSkgPT4gKHsgLi4ubSwgYXZhaWxhYmxlOiB0cnVlLCBrZXlIaW50OiAnL2Nvbm5lY3QnIH0pKVxuICAgICAgICBib290Lm1vZGVscyA9IFsuLi5ib290Lm1vZGVscy5maWx0ZXIoKG0pID0+IG0ucHJvdmlkZXIgIT09ICdjb2RleCcpLCAuLi5jb2RleF1cbiAgICAgICAgcmVEZXJpdmUoKVxuICAgICAgICBmbGFzaChgY29ubmVjdGVkIGFzICR7ZW1haWwgfHwgJ3lvdXIgQ2hhdEdQVCBhY2NvdW50J30gXHUwMEI3ICR7Y29kZXgubGVuZ3RofSBjb2RleCBtb2RlbHMgdW5sb2NrZWQgaW4gL21vZGVsYClcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4gZmxhc2goYGNvbm5lY3QgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YCkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIuaWQgIT09ICdvcGVuYWknKSByZXR1cm5cbiAgICBhd2FpdCBkaXNjb25uZWN0T3BlbkFJKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgYm9vdC5wcm92aWRlcnMgPSBib290LnByb3ZpZGVycy5maWx0ZXIoKHApID0+IHAgIT09ICdjb2RleCcpXG4gICAgYm9vdC5tb2RlbHMgPSBib290Lm1vZGVscy5tYXAoKG0pID0+IChtLnByb3ZpZGVyID09PSAnY29kZXgnID8geyAuLi5tLCBhdmFpbGFibGU6IGZhbHNlIH0gOiBtKSlcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICAgIGZsYXNoKCdkaXNjb25uZWN0ZWQgZnJvbSBDaGF0R1BUJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2hTZXNzaW9ucyhzY29wZUluZGV4KSB7XG4gICAgc2V0UmVzdW1lTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiBSRVNVTUVfU0NPUEVTW3Njb3BlSW5kZXhdLCByb290IH0pXG4gICAgICAudGhlbigoc2Vzc2lvbnMpID0+IHNldFJlc3VtZVNlc3Npb25zKHNlc3Npb25zLmZpbHRlcigocykgPT4gcy5oZWFkZXIuaWQgIT09IHJlZnMuc2Vzc2lvbj8uaWQpKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFJlc3VtZUxvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvcnRlblBhdGgocGF0aCkge1xuICAgIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKGhvbWUpID8gcGF0aC5yZXBsYWNlKGhvbWUsICd+JykgOiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuUHJvamVjdFBhbmVsKCkge1xuICAgIHNldFNob3dQcm9qZWN0UGFuZWwodHJ1ZSlcbiAgICBzZXRQcm9qZWN0c0xvYWRpbmcodHJ1ZSlcbiAgICBsaXN0U2Vzc2lvbnMoeyBzY29wZTogJ2V2ZXJ5d2hlcmUnLCByb290IH0pXG4gICAgICAudGhlbigobWV0YXMpID0+IHtcbiAgICAgICAgY29uc3QgYnlSb290ID0gbmV3IE1hcCgpXG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRhcykge1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gYnlSb290LmdldChtLmhlYWRlci5yb290KVxuICAgICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGJ5Um9vdC5zZXQobS5oZWFkZXIucm9vdCwge1xuICAgICAgICAgICAgICByb290OiBtLmhlYWRlci5yb290LFxuICAgICAgICAgICAgICBwYXRoOiBzaG9ydGVuUGF0aChtLmhlYWRlci5yb290KSxcbiAgICAgICAgICAgICAgbGF0ZXN0OiBtLFxuICAgICAgICAgICAgICBjb3VudDogMSxcbiAgICAgICAgICAgICAgY3VycmVudDogbS5oZWFkZXIucm9vdCA9PT0gYm9vdC5yb290LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuY291bnQrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRQcm9qZWN0cyhbLi4uYnlSb290LnZhbHVlcygpXSlcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiBzZXRQcm9qZWN0c0xvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChwKSB7XG4gICAgaWYgKHAuY3VycmVudCkgcmV0dXJuIGZsYXNoKCdjYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50IHByb2plY3QgXHUwMEI3IHN3aXRjaCBhd2F5IGZpcnN0JylcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMucHJvamVjdERlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQucm9vdCAhPT0gcC5yb290IHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IHsgcm9vdDogcC5yb290LCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkZWxldGUgXCIke3AucGF0aH1cIiBhbmQgaXRzICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ31gKVxuICAgIH1cbiAgICByZWZzLnByb2plY3REZWxldGVBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVByb2plY3REYXRhKHAucm9vdClcbiAgICAgIHNldFByb2plY3RzKChsaXN0KSA9PiBsaXN0LmZpbHRlcigoeCkgPT4geC5yb290ICE9PSBwLnJvb3QpKVxuICAgICAgZmxhc2goYGRlbGV0ZWQgJHtwLnBhdGh9IFx1MDBCNyAke3AuY291bnR9ICR7cC5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IHJlbW92ZWRgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoUHJvamVjdChtZXRhKSB7XG4gICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2aW91c01jcCA9IGJvb3QubWNwXG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgYm9vdC5yZWJ1aWxkKG1ldGEuaGVhZGVyLnJvb3QpXG4gICAgICBwcmV2aW91c01jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgcHJvY2Vzcy5jaGRpcihuZXh0LmN3ZClcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9vdCwgbmV4dClcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXHgxYl0wO3BpY28gXHUwMEI3ICR7bmV4dC5yb290LnNwbGl0KCcvJykucG9wKCl9XFx4MDdgKVxuICAgICAgbmV4dC5tY3AuY29ubmVjdEFsbCgpXG4gICAgICBzZXRNY3BTZXJ2ZXJzKG5leHQubWNwLmxpc3QoKSlcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldEZpbGVMaXN0KFtdKVxuICAgICAgYXdhaXQgcmVzdW1lU2Vzc2lvbihtZXRhKVxuICAgICAgZmxhc2goYHN3aXRjaGVkIHRvICR7bmV4dC5kaXNwbGF5Q3dkfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgc3dpdGNoIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uTWV0YShtZXRhKSB7XG4gICAgaWYgKHJlZnMuc2Vzc2lvbj8uaWQgPT09IG1ldGEuaGVhZGVyLmlkKSB7XG4gICAgICByZXR1cm4gZmxhc2goJ2Nhbm5vdCBkZWxldGUgdGhlIGFjdGl2ZSBzZXNzaW9uIFx1MDBCNyAvbmV3IGZpcnN0LCB0aGVuIGRlbGV0ZSBpdCcpXG4gICAgfVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5kZWxldGVBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmZpbGUgIT09IG1ldGEuZmlsZSB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLmRlbGV0ZUFybSA9IHsgZmlsZTogbWV0YS5maWxlLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkZWxldGUgXCIke21ldGEudGl0bGUuc2xpY2UoMCwgNTApfVwiYClcbiAgICB9XG4gICAgcmVmcy5kZWxldGVBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICBmbGFzaCgnc2Vzc2lvbiBkZWxldGVkJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBkZWxldGUgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlc3VtZVNlc3Npb24obWV0YSkge1xuICAgIHNldFNob3dSZXN1bWVQYW5lbChmYWxzZSlcbiAgICBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKVxuICAgIGlmIChtZXRhLmhlYWRlci5yb290ICE9PSBib290LnJvb3QpIHJldHVybiBzd2l0Y2hQcm9qZWN0KG1ldGEpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgaGVhZGVyLCBldmVudHMgfSA9IGF3YWl0IGxvYWRTZXNzaW9uKG1ldGEuZmlsZSlcbiAgICAgIHJlZnMuc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHsgZmlsZTogbWV0YS5maWxlLCBoZWFkZXIgfSlcbiAgICAgIHJlZnMuYWxsRXZlbnRzID0gWy4uLmV2ZW50c11cbiAgICAgIHJlZnMucGVyc2lzdGVkID0gZXZlbnRzLmxlbmd0aFxuICAgICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgY29uc3QgY2F0YWxvZ01hdGNoID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gZGVyaXZlZCgpLm1vZGVsICYmIG0uYXZhaWxhYmxlICE9PSBmYWxzZSlcbiAgICAgIGNvbnN0IHJlc3RvcmVkID0gZGVyaXZlZCgpLm1vZGVsXG4gICAgICAgICYmIChjYXRhbG9nTWF0Y2ggfHwgYWRob2NNb2RlbChkZXJpdmVkKCkubW9kZWwsIGJvb3QucHJvdmlkZXJzKSlcbiAgICAgIGlmIChyZXN0b3JlZCkge1xuICAgICAgICBzZXRNb2RlbChyZXN0b3JlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgICAgICBpZiAoZGVyaXZlZCgpLm1vZGVsKSBmbGFzaChgbW9kZWwgJHtkZXJpdmVkKCkubW9kZWx9IHVuYXZhaWxhYmxlLCB1c2luZyAke2RlZmF1bHRNb2RlbCgpLm5hbWV9YClcbiAgICAgIH1cbiAgICAgIHNldEVmZm9ydChkZXJpdmVkKCkuZWZmb3J0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0RWZmb3J0KCkgOiBkZXJpdmVkKCkuZWZmb3J0KVxuICAgICAgc2V0U2VudCh1c2VyRW50cmllcyhkZXJpdmVkKCkpLm1hcCgoZSkgPT4gKHsgdGV4dDogcmVjYWxsVGV4dChlKSwgYXQ6IGhlYWRlci5jcmVhdGVkQXQgfSkpKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgZmxhc2goYHJlc3VtZWQgXHUwMEI3ICR7bWV0YS50dXJuc30gJHttZXRhLnR1cm5zID09PSAxID8gJ3R1cm4nIDogJ3R1cm5zJ30gXHUwMEI3ICR7dGltZUFnbyhtZXRhLmF0KX1gKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYHJlc3VtZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb3Blbkhpc3RvcnlTZWFyY2goKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHNlbnQoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2Vzc2lvbikpXG4gICAgc2V0U2hvd0hpc3RvcnlQYW5lbCh0cnVlKVxuICAgIHNldEhpc3RTY29wZSgwKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVkdXBlUHJvbXB0cyhwb29sKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IG91dCA9IFtdXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBbLi4ucG9vbF0uc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoZW50cnkudGV4dCkpIGNvbnRpbnVlXG4gICAgICBzZWVuLmFkZChlbnRyeS50ZXh0KVxuICAgICAgb3V0LnB1c2goZW50cnkpXG4gICAgfVxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHN3aXRjaEhpc3RTY29wZShuZXh0KSB7XG4gICAgc2V0SGlzdFNjb3BlKG5leHQpXG4gICAgaWYgKG5leHQgPT09IDApIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKHNlbnQoKSkpXG4gICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IGxvYWRQcm9qZWN0UHJvbXB0cyhyb290KVxuICAgIGlmIChuZXh0ID09PSAxKSByZXR1cm4gc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0XSkpXG4gICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgbG9hZEdsb2JhbFByb21wdHMoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoWy4uLnNlbnQoKSwgLi4ucHJvamVjdCwgLi4uZ2xvYmFsXSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtUmV3aW5kKG9wdCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHJld2luZFRhcmdldCgpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBjb25zdCB7IGVkaXRzIH0gPSByZXdpbmRTdGF0cyhzdGF0ZSwgdGFyZ2V0LmluZGV4KVxuICAgIGNvbnN0IGVkaXRzTGFiZWwgPSBgJHtlZGl0cy5sZW5ndGh9ICR7ZWRpdHMubGVuZ3RoID09PSAxID8gJ2VkaXQnIDogJ2VkaXRzJ31gXG4gICAgbGV0IHJldmVydGVkID0gW11cbiAgICBsZXQgc2tpcHBlZCA9IFtdXG5cbiAgICBpZiAob3B0LmtleSA9PT0gJ2JvdGgnIHx8IG9wdC5rZXkgPT09ICdjb2RlJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmV2ZXJ0RWRpdHMoZWRpdHMpXG4gICAgICByZXZlcnRlZCA9IHJlc3VsdC5yZXZlcnRlZFxuICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkXG4gICAgfVxuXG4gICAgbGV0IHN1bW1hcnlUZXh0ID0gbnVsbFxuICAgIGlmIChvcHQua2V5ID09PSAnc3VtbWFyeScpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKHRhcmdldC5pbmRleClcbiAgICAgIGNvbnN0IHRleHQgPSB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5tYXAoKG0pID0+IGAke20ua2luZH06ICR7bS50ZXh0fWApLmpvaW4oJ1xcbicpXG4gICAgICBmbGFzaCgnc3VtbWFyaXppbmcuLi4nKVxuICAgICAgc3VtbWFyeVRleHQgPSBhd2FpdCBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUgfSkuY2F0Y2goKCkgPT5cbiAgICAgICAgdGFpbC5maWx0ZXIoKG0pID0+IG0udGV4dCkuc2xpY2UoMCwgMykubWFwKChtKSA9PiBtLnRleHQuc3BsaXQoL1xccysvKS5zbGljZSgwLCA2KS5qb2luKCcgJykpLmpvaW4oJyBcdTAwQjcgJyksXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQgPSBtYWtlRXZlbnQoJ3Jld2luZCcsIHsgdGFyZ2V0OiB0YXJnZXQuZXZlbnRJZCwgbW9kZTogb3B0LmtleSwgc3VtbWFyeVRleHQsIHJldmVydGVkLCBza2lwcGVkIH0pXG4gICAgcGVyc2lzdChldmVudClcbiAgICByZWZzLnJld2luZFVuZG8gPSB7IHJld2luZElkOiBldmVudC5pZCwgZWRpdHM6IGVkaXRzLmZpbHRlcigoZSkgPT4gcmV2ZXJ0ZWQuaW5jbHVkZXMoZS5jYWxsSWQpKSB9XG4gICAgcmVEZXJpdmUoKVxuICAgIGlmIChvcHQua2V5ICE9PSAnY29kZScpIHNldElucHV0KHJlY2FsbFRleHQodGFyZ2V0KSlcblxuICAgIGNvbnN0IHNraXBwZWROb3RlID0gc2tpcHBlZC5sZW5ndGggPyBgIFx1MDBCNyBza2lwcGVkICR7c2tpcHBlZC5sZW5ndGh9IGRyaWZ0ZWRgIDogJydcbiAgICBpZiAob3B0LmtleSA9PT0gJ2NvZGUnKSBmbGFzaChgcmV2ZXJ0ZWQgJHtlZGl0c0xhYmVsfSwgY29udmVyc2F0aW9uIGtlcHQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5JykgZmxhc2goYHJld291bmQgYW5kIHN1bW1hcml6ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdib3RoJykgZmxhc2goYHJld291bmQsICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgZmxhc2goYHJld291bmQsIGZpbGUgY2hhbmdlcyBrZXB0IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgc2V0UmV3aW5kU3RlcChudWxsKVxuICAgIHNldFJld2luZFRhcmdldChudWxsKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdW5kb1Jld2luZCgpIHtcbiAgICBjb25zdCB1bmRvID0gcmVmcy5yZXdpbmRVbmRvXG4gICAgaWYgKCF1bmRvKSByZXR1cm5cbiAgICBjb25zdCB7IHNraXBwZWQgfSA9IGF3YWl0IHJlYXBwbHlFZGl0cyh1bmRvLmVkaXRzKVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdyZXdpbmRfdW5kbycsIHsgcmV3aW5kSWQ6IHVuZG8ucmV3aW5kSWQgfSkpXG4gICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgIHJlRGVyaXZlKClcbiAgICBmbGFzaChza2lwcGVkLmxlbmd0aCA/IGByZXdpbmQgdW5kb25lIFx1MDBCNyAke3NraXBwZWQubGVuZ3RofSBmaWxlKHMpIGRyaWZ0ZWRgIDogJ3Jld2luZCB1bmRvbmUnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVjYWxsVGV4dChlbnRyeSkge1xuICAgIHJldHVybiBpbnB1dFRleHRGcm9tQ29udGVudChlbnRyeS5jb250ZW50ID8/IGVudHJ5LnRleHQsIHtcbiAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYW55UGFuZWwgPSAoKSA9PlxuICAgIHNob3dNb2RlbFBhbmVsKCkgfHwgc2hvd0VmZm9ydFBhbmVsKCkgfHwgc2hvd1RoZW1lUGFuZWwoKSB8fCBzaG93TWVtb3J5UGFuZWwoKSB8fCBzaG93SGlzdG9yeVBhbmVsKCkgfHwgc2hvd1Jlc3VtZVBhbmVsKCkgfHwgc2hvd01jcFBhbmVsKCkgfHxcbiAgICBzaG93UHJvamVjdFBhbmVsKCkgfHwgc2hvd1NoZWxsc1BhbmVsKCkgfHwgc2hvd1dha2V1cHNQYW5lbCgpIHx8IHNob3dDb25uZWN0UGFuZWwoKSB8fFxuICAgIGluZm9QYW5lbCgpICE9PSBudWxsIHx8IHJld2luZFN0ZXAoKSAhPT0gbnVsbFxuXG4gIC8vIHRoZSByaWNoIHR3by1wYW5lIHBhbmVscyBkaW0gdGhlIGNvbnZlcnNhdGlvbiBiZWhpbmQgdGhlbTsgcXVpY2sgcGlja2Vyc1xuICAvLyAoZWZmb3J0LCB0aGVtZSkgc3RheSBsaWdodHdlaWdodCBhbmQgbGVhdmUgaXQgYWxvbmVcbiAgY29uc3QgZGltbWluZ1BhbmVsID0gKCkgPT4gYW55UGFuZWwoKSAmJiAhc2hvd0VmZm9ydFBhbmVsKCkgJiYgIXNob3dUaGVtZVBhbmVsKClcblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGsgYWdhaW4gdG8ga2lsbCBzaGVsbCAke3NoZWxsLmlkfWApXG4gICAgfVxuICAgIHJlZnMuc2hlbGxLaWxsQXJtID0gbnVsbFxuICAgIGJvb3Quc2hlbGxzLmtpbGwoc2hlbGwuaWQsICd1c2VyJylcbiAgfVxuXG4gIGNvbnN0IGVmZm9ydEFwcGxpZXMgPSAoKSA9PiAhIW1vZGVsKCkuZWZmb3J0XG5cbiAgZnVuY3Rpb24gc2V0U2Vzc2lvbkVmZm9ydChuZXh0LCB7IGFzRGVmYXVsdCA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdlZmZvcnQnLCB7IHRvOiBuZXh0IH0pKVxuICAgIHNldEVmZm9ydChuZXh0KVxuICAgIGlmIChhc0RlZmF1bHQpIHtcbiAgICAgIHNldERlZmF1bHRFZmZvcnQobmV4dClcbiAgICAgIHdyaXRlQ29uZmlnKHsgZGVmYXVsdEVmZm9ydDogbmV4dCB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICB9XG4gICAgZmxhc2goYGVmZm9ydDogJHtuZXh0ID8/ICdkZWZhdWx0J30ke2FzRGVmYXVsdCA/ICcgXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHQnIDogJyd9YClcbiAgfVxuXG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiAnaW5wdXQnIH0pXG4gIGZtLml0ZW0oJ2ZlZWQnKVxuICBmbS5pdGVtKCdpbnB1dCcpXG4gIHVzZUZvY3VzVHJhcChhbnlQYW5lbCgpIHx8IHZpZXcoKSA9PT0gJ2hlbHAnKVxuICB1c2VTZWxlY3Rpb24oe1xuICAgIG9uQ29weTogKHRleHQpID0+IGZsYXNoKGBjb3BpZWQgJHt0ZXh0Lmxlbmd0aH0gJHt0ZXh0Lmxlbmd0aCA9PT0gMSA/ICdjaGFyYWN0ZXInIDogJ2NoYXJhY3RlcnMnfWApLFxuICB9KVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnICYmIGJ1c3koKSAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaW50ZXJydXB0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgIGlmIChub3cgLSByZWZzLnF1aXRBdCA8IDE1MDApIHtcbiAgICAgICAgYm9vdC5zaGVsbHMua2lsbEFsbCgpXG4gICAgICAgIG1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IHByb2Nlc3MuZXhpdCgwKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnMucXVpdEF0ID0gbm93XG4gICAgICAgIGNvbnN0IHJ1bm5pbmcgPSBib290LnNoZWxscy5ydW5uaW5nKClcbiAgICAgICAgZmxhc2gocnVubmluZyA/IGAke3J1bm5pbmd9ICR7cnVubmluZyA9PT0gMSA/ICdzaGVsbCcgOiAnc2hlbGxzJ30gcnVubmluZyBcdTAwQjcgY3RybCtjIGFnYWluIHRvIGV4aXQgYW5kIGtpbGwgJHtydW5uaW5nID09PSAxID8gJ2l0JyA6ICd0aGVtJ31gIDogJ2N0cmwrYyBhZ2FpbiB0byBleGl0JylcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnbycpIHtcbiAgICAgIHNldFZlcmJvc2UoKHYpID0+ICF2KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdyJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgb3Blbkhpc3RvcnlTZWFyY2goKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAndCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dNb2RlbFBhbmVsKHRydWUpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3AnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBvcGVuUHJvamVjdFBhbmVsKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSBmbGFzaChgJHttb2RlbCgpLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgZWZmb3J0IGNvbnRyb2xgKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gW251bGwsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICAgICAgY29uc3QgbmV4dCA9IG9yZGVyWyhvcmRlci5pbmRleE9mKGVmZm9ydCgpID8/IG51bGwpICsgMSkgJSBvcmRlci5sZW5ndGhdXG4gICAgICAgIHNldFNlc3Npb25FZmZvcnQobmV4dClcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd0hpc3RvcnlQYW5lbCgpKSB7XG4gICAgICBzd2l0Y2hIaXN0U2NvcGUoKGhpc3RTY29wZSgpICsgMSkgJSBISVNUT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dNZW1vcnlQYW5lbCgpKSB7XG4gICAgICBzZXRNZW1TY29wZSgocykgPT4gKHMgKyAxKSAlIE1FTU9SWV9TQ09QRVMubGVuZ3RoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93UmVzdW1lUGFuZWwoKSkge1xuICAgICAgY29uc3QgbmV4dCA9IChyZXN1bWVTY29wZSgpICsgMSkgJSBSRVNVTUVfU0NPUEVTLmxlbmd0aFxuICAgICAgc2V0UmVzdW1lU2NvcGUobmV4dClcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhuZXh0KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd6JyAmJiByZWZzLnJld2luZFVuZG8gJiYgIWJ1c3koKSAmJiB2aWV3KCkgPT09ICdjaGF0Jykge1xuICAgICAgdW5kb1Jld2luZCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBmbXRFbGFwc2VkID0gKHMpID0+IChzIDwgNjAgPyBgJHtzfXNgIDogYCR7TWF0aC5mbG9vcihzIC8gNjApfW0gJHtzICUgNjB9c2ApXG4gIGNvbnN0IGVsYXBzZWQgPSBmbXRFbGFwc2VkKGJ1c3koKSA/IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydGVkQXQoKSkgLyAxMDAwKSkgOiAwKVxuXG4gIGNvbnN0IHNsYXNoUXVlcnkgPSBpbnB1dCgpLnN0YXJ0c1dpdGgoJy8nKSA/IGlucHV0KCkuc2xpY2UoMSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21tYW5kcyA9IHNsYXNoUXVlcnkgIT09IG51bGwgJiYgIXNsYXNoUXVlcnkuaW5jbHVkZXMoJyAnKSAmJiAhYW55UGFuZWwoKVxuICBjb25zdCBtYXRjaGVkQ29tbWFuZHMgPSAhc2hvd0NvbW1hbmRzXG4gICAgPyBbXVxuICAgIDogY21kQ3ljbGUoKVxuICAgICAgPyBjbWRDeWNsZSgpLm1hdGNoZXNcbiAgICAgIDogYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNsYXNoUXVlcnkudG9Mb3dlckNhc2UoKSkpXG5cbiAgY29uc3QgYXRNYXRjaCA9IGlucHV0KCkubWF0Y2goLyhefFtcXHMoXSlAKFteXFxzQF0qKSQvKVxuICBjb25zdCBzaG93RmlsZXMgPSBhdE1hdGNoICE9PSBudWxsICYmICFzaG93Q29tbWFuZHMgJiYgIWZpbGVzRGlzbWlzc2VkKCkgJiYgIWFueVBhbmVsKClcbiAgaWYgKHNob3dGaWxlcykge1xuICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbWF0Y2hlZEZpbGVzID0gc2hvd0ZpbGVzXG4gICAgPyBmaWxlTGlzdCgpXG4gICAgICAgIC5tYXAoKGYpID0+IFtmdXp6eVNjb3JlKGF0TWF0Y2hbMl0sIGYpLCBmXSlcbiAgICAgICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgICAubWFwKChbLCBmXSkgPT4gZilcbiAgICA6IFtdXG5cbiAgZnVuY3Rpb24gcGlja0ZpbGUoZikge1xuICAgIGNvbnN0IHYgPSBpbnB1dCgpXG4gICAgY29uc3QgYXQgPSB2Lmxhc3RJbmRleE9mKCdAJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IoZilcbiAgICBjb25zdCBmdWxsID0gam9pbihib290LmN3ZCwgZilcbiAgICBpZiAobWVkaWFUeXBlICYmIGV4aXN0c1N5bmMoZnVsbCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHsrK3JlZnMuaW1hZ2VDb3VudH1dYFxuICAgICAgcmVmcy5hdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogZnVsbCwgbWVkaWFUeXBlIH0pXG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVyICsgJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0ICsgMSkgKyBmICsgJyAnKVxuICAgIH1cbiAgICBzZXRGaWxlSW5kZXgoMClcbiAgfVxuXG4gIGNvbnN0IGNvbXBDdHggPSBjb21wbGV0aW5nKCkgPyBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBpbnB1dCgpLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pIDogbnVsbFxuICBjb25zdCBzaG93Q29tcGxldGlvbiA9ICEhY29tcEN0eCAmJiBjb21wQ3R4Lm1hdGNoZXMubGVuZ3RoID4gMCAmJiAhc2hvd0NvbW1hbmRzICYmICFzaG93RmlsZXMgJiYgIWFueVBhbmVsKClcblxuICBjb25zdCByZXdpbmRFbnRyaWVzID0gKCkgPT4gdXNlckVudHJpZXMoZGVyaXZlZCgpKVxuICBjb25zdCByZXdpbmRPcHRpb25zID0gKCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gW11cbiAgICBjb25zdCB7IG1zZ3MsIGVkaXRzIH0gPSByZXdpbmRTdGF0cyhkZXJpdmVkKCksIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlID0gZWRpdHMubGVuZ3RoXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2V9ICR7ZSA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGNvbnN0IG9wdHMgPSBbXVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnYm90aCcsIGxhYmVsOiAncmVzdG9yZSBjb2RlIGFuZCBjb252ZXJzYXRpb24nLCBkZXNjOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goe1xuICAgICAga2V5OiAnY2hhdCcsXG4gICAgICBsYWJlbDogZSA+IDAgPyAncmVzdG9yZSBjb252ZXJzYXRpb24gb25seScgOiAncmVzdG9yZSBjb252ZXJzYXRpb24nLFxuICAgICAgZGVzYzogZSA+IDAgPyAnY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZmlsZSBjaGFuZ2VzIGtlcHQnIDogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGRyb3BzICR7bXNnc30gZW50cmllc2AsXG4gICAgfSlcbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2NvZGUnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBvbmx5JywgZGVzYzogYGNvbnZlcnNhdGlvbiBrZXB0IFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7IGtleTogJ3N1bW1hcnknLCBsYWJlbDogJ3Jld2luZCBhbmQga2VlcCBhIHN1bW1hcnknLCBkZXNjOiAnZHJvcHBlZCBlbnRyaWVzIGNvbGxhcHNlIGludG8gYSBvbmUtbGluZSBub3RlJyB9KVxuICAgIHJldHVybiBvcHRzXG4gIH0pKClcblxuICBjb25zdCB7IHVzYWdlQWN0aXZlOiB1c2FnZSB9ID0gZGVyaXZlZCgpXG4gIHNoZWxsc1ZlcnNpb24oKVxuICBjb25zdCBydW5uaW5nU2hlbGxzID0gYm9vdC5zaGVsbHMucnVubmluZygpXG4gIGNvbnN0IHBlbmRpbmdXYWtldXBzID0gYm9vdC53YWtldXBzLnBlbmRpbmcoKVxuXG4gIGlmICh2aWV3KCkgPT09ICdoZWxwJykge1xuICAgIHJldHVybiA8SGVscCBjb21tYW5kcz17Q09NTUFORFN9IG9uQ2xvc2U9eygpID0+IHNldFZpZXcoJ2NoYXQnKX0gLz5cbiAgfVxuXG4gIGhpZ2hsaWdodFZlcnNpb24oKVxuXG4gIGNvbnN0IHRyYW5zY3JpcHQgPSBkZXJpdmVkKCkudHJhbnNjcmlwdFxuICBjb25zdCBoaWRkZW5Db3VudCA9IE1hdGgubWF4KDAsIHRyYW5zY3JpcHQubGVuZ3RoIC0gaGlzdFdpbmRvdygpKVxuICBjb25zdCBpdGVtcyA9IFsuLi50cmFuc2NyaXB0LnNsaWNlKGhpZGRlbkNvdW50KSwgLi4ub3ZlcmxheSgpXVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAnMTAwJScgfX0+XG4gICAgICA8U2Nyb2xsQm94XG4gICAgICAgIHN0eWxlPXt7IGZsZXhHcm93OiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIH19XG4gICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdmZWVkJyl9XG4gICAgICAgIHNjcm9sbE9mZnNldD17Zm9sbG93KCkgPyAxZTkgOiBvZmZzZXQoKX1cbiAgICAgICAgb25TY3JvbGw9eyhuZXh0LCBtZXRhKSA9PiB7XG4gICAgICAgICAgc2V0Rm9sbG93KCEhbWV0YT8uYXRCb3R0b20pXG4gICAgICAgICAgLy8gYmFjayBhdCB0aGUgYm90dG9tOiBsb2FkZWQgaGlzdG9yeSBpcyBvZmYtc2NyZWVuLCBzbyByZS1oaWRpbmdcbiAgICAgICAgICAvLyBpdCBpcyBpbnZpc2libGUgYW5kIHJlc3RvcmVzIHRoZSBzbWFsbCByZW5kZXIgd2luZG93XG4gICAgICAgICAgaWYgKG1ldGE/LmF0Qm90dG9tICYmIGhpc3RXaW5kb3coKSA+IEhJU1RPUllfV0lORE9XKSBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwICYmIGhpZGRlbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgLy8ga2VlcCB0aGUgdmlldyBhbmNob3JlZDogZXN0aW1hdGUgdGhlIHJvd3MgdGhlIG5ldyBiYXRjaCBhZGRzXG4gICAgICAgICAgICAvLyBhbmQgc2Nyb2xsIHBhc3QgdGhlbSBzbyB0aGUgY3VycmVudCB0b3AgaXRlbSBzdGF5cyBpbiBwbGFjZVxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSBNYXRoLm1pbihISVNUT1JZX1dJTkRPVywgaGlkZGVuQ291bnQpXG4gICAgICAgICAgICBjb25zdCBhdmdSb3dzID0gTWF0aC5tYXgoMiwgTWF0aC5yb3VuZCgobWV0YT8ubWF4T2Zmc2V0IHx8IDApIC8gTWF0aC5tYXgoMSwgaXRlbXMubGVuZ3RoKSkpXG4gICAgICAgICAgICBzZXRIaXN0V2luZG93KCh3KSA9PiB3ICsgSElTVE9SWV9XSU5ET1cpXG4gICAgICAgICAgICBzZXRPZmZzZXQoYWRkZWQgKiBhdmdSb3dzKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldE9mZnNldChuZXh0KVxuICAgICAgICB9fVxuICAgICAgICBzY3JvbGxiYXJcbiAgICAgID5cbiAgICAgICAge2l0ZW1zLmxlbmd0aCA9PT0gMCAmJiA8QmFubmVyIHZlcnNpb249e3ZlcnNpb259IC8+fVxuICAgICAgICB7aGlkZGVuQ291bnQgPiAwICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBhZGRpbmdYOiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBpdGFsaWM6IHRydWUgfX0+e2BcdTIzMDMgJHtoaWRkZW5Db3VudC50b0xvY2FsZVN0cmluZygpfSBvbGRlciAke2hpZGRlbkNvdW50ID09PSAxID8gJ21lc3NhZ2UnIDogJ21lc3NhZ2VzJ30gXHUwMEI3IHNjcm9sbCB0byB0b3AgdG8gbG9hZGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiA8TWVzc2FnZSBrZXk9e2hpZGRlbkNvdW50ICsgaX0gaXRlbT17aXRlbX0gdmVyYm9zZT17dmVyYm9zZSgpfSAvPil9XG4gICAgICAgIHtzdHJlYW1pbmcoKSAhPT0gbnVsbCAmJiBzdHJlYW1pbmcoKSAhPT0gJycgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlIGtleT1cInN0cmVhbWluZ1wiIGl0ZW09e3sga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IGAke3N0cmVhbWluZygpfVx1MjU4QmAgfX0gLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU2Nyb2xsQm94PlxuXG4gICAgICB7cXVldWVkKCkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3F1ZXVlZCgpLm1hcCgocSwgaSkgPT4gKFxuICAgICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTIwM0EgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PntxLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIHtpID09PSAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgZGltOiB0cnVlIH19PnsnICBwZW5kaW5nIFx1MDBCNyBcdTIxOTEgdG8gZWRpdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSwgYm9sZDogdHJ1ZSB9fT57J1x1Mjc2Rid9PC90ZXh0PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICB7ZGVyaXZlZCgpLnRpdGxlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB0b3A6IDAsIHJpZ2h0OiAwIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke2Rlcml2ZWQoKS50aXRsZX0gYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIDxUZXh0QXJlYVxuICAgICAgICAgIGNvbG9yPXtGR31cbiAgICAgICAgICB2YWx1ZT17aW5wdXQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh2LCB7XG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldElucHV0KGNvbnZlcnRlZC50ZXh0KVxuICAgICAgICAgICAgc2V0Q21kSW5kZXgoMClcbiAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICBzZXRGaWxlSW5kZXgoMClcbiAgICAgICAgICAgIHNldEhpc3RJZHgoLTEpXG4gICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnVzeSgpKSBpbnRlcnJ1cHQoKVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgIHNldEZpbGVzRGlzbWlzc2VkKHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblN1Ym1pdD17c2VuZH1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSAmJiBzaG93RmlsZXMgJiYgbWF0Y2hlZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcGlja0ZpbGUobWF0Y2hlZEZpbGVzW01hdGgubWluKGZpbGVJbmRleCgpLCBtYXRjaGVkRmlsZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0NvbW1hbmRzICYmIG1hdGNoZWRDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN5Y2xlID0gY21kQ3ljbGUoKVxuICAgICAgICAgICAgICBpZiAoIWN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihjbWRJbmRleCgpLCBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBzZXRDbWRDeWNsZSh7IG1hdGNoZXM6IG1hdGNoZWRDb21tYW5kcyB9KVxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KHN0YXJ0KVxuICAgICAgICAgICAgICAgIHNldElucHV0KCcvJyArIG1hdGNoZWRDb21tYW5kc1tzdGFydF0ubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gKGNtZEluZGV4KCkgKyAxKSAlIGN5Y2xlLm1hdGNoZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0Q21kSW5kZXgobmV4dClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBjeWNsZS5tYXRjaGVzW25leHRdLm5hbWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3Bhc3RlJyAmJiBlLnRleHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSBleHRyYWN0SW1hZ2VQYXRocyhlLnRleHQpXG4gICAgICAgICAgICAgIGlmIChwYXRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGgsIG1lZGlhVHlwZTogbWVkaWFUeXBlRm9yKHBhdGgpIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0gZS5jdXJzb3IgPz8gZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICBzZXRJbnB1dChlLnZhbHVlLnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVycy5qb2luKCcgJykgKyBlLnZhbHVlLnNsaWNlKGF0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnYmFja3NwYWNlJyAmJiBlLmN1cnNvciA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBlLnZhbHVlLnNsaWNlKDAsIGUuY3Vyc29yKS5tYXRjaCgvXFxbSW1hZ2UgI1xcZCtcXF0kLylcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5hdHRhY2htZW50cy5kZWxldGUobWF0Y2hbMF0pXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvciAtIG1hdGNoWzBdLmxlbmd0aCkgKyBlLnZhbHVlLnNsaWNlKGUuY3Vyc29yKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSkge1xuICAgICAgICAgICAgICBjb25zdCBjdHggPSBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBlLnZhbHVlLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pXG4gICAgICAgICAgICAgIGlmICghY3R4KSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgaWYgKCFjb21wbGV0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKHRydWUpXG4gICAgICAgICAgICAgICAgc2V0Q29tcEluZGV4KDApXG4gICAgICAgICAgICAgICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgubWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYWNjZXB0Q29tcGxldGlvbihlLnZhbHVlLCBjdHgsIGN0eC5tYXRjaGVzW01hdGgubWluKGNvbXBJbmRleCgpLCBjdHgubWF0Y2hlcy5sZW5ndGggLSAxKV0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmN0cmwgfHwgZS5tZXRhIHx8IHNob3dDb21tYW5kcyB8fCBzaG93RmlsZXMpIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndXAnICYmIGUudmFsdWUgPT09ICcnICYmIHF1ZXVlZCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2V0SW5wdXQocXVldWVkKCkuam9pbignXFxuJykpXG4gICAgICAgICAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyb3dzaW5nID0gaGlzdElkeCgpID49IDBcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiAoYnJvd3NpbmcgfHwgZS52YWx1ZSA9PT0gJycpICYmIGhpc3RJZHgoKSA8IHNlbnQoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgKyAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQoc2VudCgpW3NlbnQoKS5sZW5ndGggLSAxIC0gbl0udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2Rvd24nICYmIGJyb3dzaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgLSAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQobiA8IDAgPyAnJyA6IHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9fVxuICAgICAgICAgIHN1Ym1pdE9uRW50ZXJcbiAgICAgICAgICBjbGVhck9uU3VibWl0XG4gICAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCl9XG4gICAgICAgICAgbWF4SGVpZ2h0PXs4fVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZW50ZXIgdG8gc2VuZCBcdTAwQjcgLyBjb21tYW5kcyBcdTAwQjcgQCBmaWxlcyBcdTAwQjcgdGFiIHRvIHNjcm9sbFwiXG4gICAgICAgICAgY3Vyc29yPXt7IGJsaW5rOiB0cnVlLCBiZzogYWNjZW50KCksIGNvbG9yOiAnYmxhY2snIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cblxuICAgICAge3Nob3dDb21tYW5kcyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge21hdGNoZWRDb21tYW5kcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgY29tbWFuZHM8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRDb21tYW5kc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2NtZEluZGV4KCl9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDbWRJbmRleH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyhjKSA9PiBydW5Db21tYW5kKGMpfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tbWFuZHN9XG4gICAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KGMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntgLyR7Yy5uYW1lfWAucGFkRW5kKG1hdGNoZWRDb21tYW5kcy5yZWR1Y2UoKG0sIHgpID0+IE1hdGgubWF4KG0sIHgubmFtZS5sZW5ndGggKyAzKSwgMTIpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gJyNjYmQ1ZTEnIDogRkFJTlQgfX0+e2MuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkRmlsZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZmlsZUluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0RmlsZUluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9e3BpY2tGaWxlfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZpbGVzRGlzbWlzc2VkKHRydWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0ZpbGVzfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhmLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntmfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb21wbGV0aW9uICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2NvbXBDdHgubWF0Y2hlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjb21wSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDb21wSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17KGNhbmRpZGF0ZSkgPT4gYWNjZXB0Q29tcGxldGlvbihpbnB1dCgpLCBjb21wQ3R4LCBjYW5kaWRhdGUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e2Rpc21pc3NDb21wbGV0aW9ufVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbXBsZXRpb259XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGNhbmRpZGF0ZSwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Y2FuZGlkYXRlfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dNb2RlbFBhbmVsKCkgJiYgKFxuICAgICAgICA8TW9kZWxQYW5lbFxuICAgICAgICAgIG1vZGVscz17bW9kZWxzfVxuICAgICAgICAgIGN1cnJlbnQ9e21vZGVsKCkubmFtZX1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17ZGVmYXVsdE1vZGVsKCkubmFtZX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TW9kZWxQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldERlZmF1bHRNb2RlbChtKVxuICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0TW9kZWw6IG0ubmFtZSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX0gXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHRgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dFZmZvcnRQYW5lbCgpICYmIChcbiAgICAgICAgPEVmZm9ydFBhbmVsXG4gICAgICAgICAgbGV2ZWxzPXtFRkZPUlRfTEVWRUxTfVxuICAgICAgICAgIGN1cnJlbnQ9e2VmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZGVmYXVsdExldmVsPXtkZWZhdWx0RWZmb3J0KCkgPz8gbnVsbH1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93RWZmb3J0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KGwpID0+IHtcbiAgICAgICAgICAgIHNldFNlc3Npb25FZmZvcnQobC5rZXksIHsgYXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dUaGVtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8VGhlbWVQYW5lbFxuICAgICAgICAgIHRoZW1lcz17dGhlbWVJdGVtcygpfVxuICAgICAgICAgIHByZWY9e3RoZW1lUHJlZigpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dUaGVtZVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBhcHBseVRoZW1lUHJlZih0LmtleSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUHJldmlldz17KHQpID0+IHByZXZpZXdQYWxldHRlKHQua2V5KX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93VGhlbWVQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIHByZXZpZXdQYWxldHRlKHRoZW1lUHJlZigpKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0hpc3RvcnlQYW5lbCgpICYmIChcbiAgICAgICAgPEhpc3RvcnlQYW5lbFxuICAgICAgICAgIHByb21wdHM9e2hpc3RQcm9tcHRzKCl9XG4gICAgICAgICAgc2NvcGVzPXtISVNUT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtoaXN0U2NvcGUoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93SGlzdG9yeVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodGV4dCkgPT4geyBzZXRJbnB1dCh0ZXh0KTsgc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSkgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SGlzdG9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UmVzdW1lUGFuZWwoKSAmJiAoXG4gICAgICAgIDxSZXN1bWVQYW5lbFxuICAgICAgICAgIHNlc3Npb25zPXtyZXN1bWVTZXNzaW9ucygpfVxuICAgICAgICAgIHNjb3Blcz17UkVTVU1FX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtyZXN1bWVTY29wZSgpfVxuICAgICAgICAgIGxvYWRpbmc9e3Jlc3VtZUxvYWRpbmcoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93UmVzdW1lUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9e3Jlc3VtZVNlc3Npb259XG4gICAgICAgICAgb25EZWxldGU9e2RlbGV0ZVNlc3Npb25NZXRhfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dSZXN1bWVQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01lbW9yeVBhbmVsKCkgJiYgKFxuICAgICAgICA8TWVtb3J5UGFuZWxcbiAgICAgICAgICBtZW1vcmllcz17bWVtb3J5TGlzdCgpLmZpbHRlcigobSkgPT4gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSA9PT0gJ2FsbCcgfHwgbS5zY29wZSA9PT0gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSl9XG4gICAgICAgICAgc2NvcGVzPXtNRU1PUllfU0NPUEVTfVxuICAgICAgICAgIHNjb3BlSW5kZXg9e21lbVNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01lbW9yeVBhbmVsKCl9XG4gICAgICAgICAgb25Gb3JnZXQ9e2ZvcmdldE1lbW9yeX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TWVtb3J5UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2luZm9QYW5lbCgpICYmIChcbiAgICAgICAgPEluZm9MaXN0UGFuZWxcbiAgICAgICAgICB0aXRsZT17aW5mb1BhbmVsKCkudGl0bGV9XG4gICAgICAgICAgcm93cz17aW5mb1BhbmVsKCkucm93c31cbiAgICAgICAgICBmb2N1c2VkPXtpbmZvUGFuZWwoKSAhPT0gbnVsbH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJbmZvUGFuZWwobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Byb2plY3RQYW5lbCgpICYmIChcbiAgICAgICAgPFByb2plY3RQYW5lbFxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0cygpfVxuICAgICAgICAgIGxvYWRpbmc9e3Byb2plY3RzTG9hZGluZygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dQcm9qZWN0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhwKSA9PiByZXN1bWVTZXNzaW9uKHAubGF0ZXN0KX1cbiAgICAgICAgICBvbkRlbGV0ZT17ZGVsZXRlUHJvamVjdH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxTaGVsbHNQYW5lbFxuICAgICAgICAgIHZlcnNpb249e3NoZWxsc1ZlcnNpb24oKX1cbiAgICAgICAgICBzaGVsbHM9e2Jvb3Quc2hlbGxzLmxpc3QoKX1cbiAgICAgICAgICByZWFkT3V0cHV0PXsoaWQpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBib290LnNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogMjAwMCB9KVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93U2hlbGxzUGFuZWwoKX1cbiAgICAgICAgICBvbktpbGw9e2tpbGxTaGVsbH1cbiAgICAgICAgICBvbkRpc21pc3M9eyhzKSA9PiBib290LnNoZWxscy5kaXNtaXNzKHMuaWQpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dTaGVsbHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgYm9vdC53YWtldXBzLmNhbmNlbCh3LmlkKVxuICAgICAgICAgICAgZmxhc2goYGNhbmNlbGxlZCB3YWtlLXVwICR7dy5pZH1gKVxuICAgICAgICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBjYW5jZWxsZWQgc2NoZWR1bGVkIHdha2UtdXAgJHt3LmlkfSAobm90ZSB3YXM6ICR7dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXNjaGVkdWxlIGl0IHVubGVzcyBhc2tlZC5gLFxuICAgICAgICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93V2FrZXVwc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWNwUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNY3BQYW5lbFxuICAgICAgICAgIHNlcnZlcnM9e21jcFNlcnZlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWNwUGFuZWwoKX1cbiAgICAgICAgICBvblRvZ2dsZT17KG5hbWUpID0+IG1jcC50b2dnbGUobmFtZSl9XG4gICAgICAgICAgb25SZWNvbm5lY3Q9eyhuYW1lKSA9PiBtY3AucmVjb25uZWN0KG5hbWUpfVxuICAgICAgICAgIG9uUmVtb3ZlPXsobmFtZSkgPT4gbWNwLnJlbW92ZShuYW1lKX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkludmFsaWQ9e2ZsYXNofVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNY3BQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAncGljaycgJiYgKFxuICAgICAgICA8UmV3aW5kUGlja1BhbmVsXG4gICAgICAgICAgZW50cmllcz17Wy4uLnJld2luZEVudHJpZXMoKV0ucmV2ZXJzZSgpfVxuICAgICAgICAgIHN0YXRzPXsoaW5kZXgpID0+IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgaW5kZXgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snfVxuICAgICAgICAgIG9uUGljaz17KGVudHJ5KSA9PiB7IHNldFJld2luZFRhcmdldChlbnRyeSk7IHNldFJld2luZFN0ZXAoJ2FjdGlvbicpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmV3aW5kU3RlcChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nICYmIHJld2luZFRhcmdldCgpICYmIChcbiAgICAgICAgPFJld2luZEFjdGlvblBhbmVsXG4gICAgICAgICAgdGFyZ2V0PXtyZXdpbmRUYXJnZXQoKX1cbiAgICAgICAgICBvcHRpb25zPXtyZXdpbmRPcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbid9XG4gICAgICAgICAgb25TdWJtaXQ9e3BlcmZvcm1SZXdpbmR9XG4gICAgICAgICAgb25CYWNrPXsoKSA9PiBzZXRSZXdpbmRTdGVwKCdwaWNrJyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtidXN5KClcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDxTaGltbWVyIGNvbG9yPXthY2NlbnQoKX0gaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfSByZXZlcnNlPlxuICAgICAgICAgICAgICAgIHtjb21wYWN0aW5nKClcbiAgICAgICAgICAgICAgICAgID8gY29tcGFjdFN0YXR1cygpPy5waGFzZSA9PT0gJ3dyaXRpbmcnID8gYENvbXBhY3RpbmcgXHUwMEI3IHdyaXRpbmcgJHtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbn0vOGAgOiAnQ29tcGFjdGluZyBcdTAwQjcgYW5hbHl6aW5nJ1xuICAgICAgICAgICAgICAgICAgOiB0aGlua2luZ05vdygpID8gJ1RoaW5raW5nJyA6ICdSZXNwb25kaW5nJ31cbiAgICAgICAgICAgICAgPC9TaGltbWVyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgKCR7ZWxhcHNlZH0ke2NvbXBhY3RTdGF0dXMoKSA/IGAgXHUwMEI3IFx1MjE5MyAke2ZtdFRva2VucyhNYXRoLnJvdW5kKGNvbXBhY3RTdGF0dXMoKS5jaGFycyAvIDQpKX0gdG9rZW5zYCA6ICcnfSkgXHUwMEI3IGVzYyB0byBpbnRlcnJ1cHRgfTwvdGV4dD5cbiAgICAgICAgICAgICAge2NvbXBhY3RTdGF0dXMoKT8ucGhhc2UgPT09ICd3cml0aW5nJyAmJiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWFyZ2luTGVmdDogMSwgd2lkdGg6IDE2IH19PlxuICAgICAgICAgICAgICAgICAgPFByb2dyZXNzQmFyIHZhcmlhbnQ9XCJ0aGluXCIgdmFsdWU9e2NvbXBhY3RTdGF0dXMoKS5zZWN0aW9uIC8gOH0gd2lkdGg9ezE2fSBwZXJjZW50YWdlPXtmYWxzZX0gY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Ym9vdC5kaXNwbGF5Q3dkfTwvdGV4dD59XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3Byb2Nlc3MuZW52LlBJQ09fUEVSRiAmJiAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gdXNlRnJhbWVTdGF0cygpXG4gICAgICAgICAgcmV0dXJuIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMSAkeyhzdGF0cy5yZW5kZXJNcyA/PyAwKS50b0ZpeGVkKDEpfW1zIFx1MDBCNyAke3N0YXRzLmZwc31mcHMgXHUwMEI3ICR7ZGVyaXZlZCgpLnRyYW5zY3JpcHQubGVuZ3RofSBpdGVtc2B9PC90ZXh0PlxuICAgICAgICB9KSgpfVxuICAgICAgICB7cnVubmluZ1NoZWxscyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUyNjk5ICR7cnVubmluZ1NoZWxsc31gfTwvdGV4dD59XG4gICAgICAgIHtwZW5kaW5nV2FrZXVwcyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUyM0YwICR7cGVuZGluZ1dha2V1cHN9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e21vZGVsKCkubmFtZX08L3RleHQ+XG4gICAgICAgIHtlZmZvcnRBcHBsaWVzKCkgJiYgZWZmb3J0KCkgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUwMEI3ICR7ZWZmb3J0KCl9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+XHUyMTkxPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Ake3VzYWdlLnByb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSBpbmB9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+XHUyMTkzPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Ake3VzYWdlLmNvbXBsZXRpb25Ub2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gb3V0YH08L3RleHQ+XG4gICAgICAgIHt1c2FnZS50aG91Z2h0VG9rZW5zID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTI3MjYgJHt1c2FnZS50aG91Z2h0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IHRoaW5rYH08L3RleHQ+fVxuICAgICAgICB7bW9kZWwoKS5jb250ZXh0ID4gMCAmJiBkZXJpdmVkKCkubGFzdFByb21wdFRva2VucyA+IDAgJiYgZGVyaXZlZCgpLmxhc3RQcm9tcHRNb2RlbCA9PT0gbW9kZWwoKS5uYW1lICYmICgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGN0ID0gTWF0aC5taW4oMTAwLCBNYXRoLnJvdW5kKChkZXJpdmVkKCkubGFzdFByb21wdFRva2VucyAvIG1vZGVsKCkuY29udGV4dCkgKiAxMDApKVxuICAgICAgICAgIHJldHVybiA8dGV4dCBzdHlsZT17eyBjb2xvcjogcGN0ID49IDgwID8gUkVEIDogTVVURUQgfX0+e2BjdHggJHtwY3R9JWB9PC90ZXh0PlxuICAgICAgICB9KSgpfVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBhcHBlbmRGaWxlLCByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIHByb2plY3REaXIsIHByb2plY3RIaXN0b3J5RmlsZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgTUFYX1BST01QVFNfUEVSX1NDT1BFID0gMTAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwZW5kUHJvbXB0KHJvb3QsIHRleHQpIHtcbiAgZW5zdXJlRGlyKHByb2plY3REaXIocm9vdCkpXG4gIGF3YWl0IGFwcGVuZEZpbGUocHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpLCBKU09OLnN0cmluZ2lmeSh7IHRleHQsIGF0OiBEYXRlLm5vdygpIH0pICsgJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJvbXB0TGluZXModGV4dCkge1xuICByZXR1cm4gdGV4dFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbGluZS50cmltKCkgPyBKU09OLnBhcnNlKGxpbmUpIDogbnVsbFxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9tcHRzKGZpbGUsIHNjb3BlKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZW50cmllcyA9IHBhcnNlUHJvbXB0TGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gICAgcmV0dXJuIGVudHJpZXNcbiAgICAgIC5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnRleHQgPT09ICdzdHJpbmcnICYmIGUudGV4dC50cmltKCkpXG4gICAgICAuc2xpY2UoLU1BWF9QUk9NUFRTX1BFUl9TQ09QRSlcbiAgICAgIC5tYXAoKGUpID0+ICh7IHRleHQ6IGUudGV4dCwgYXQ6IGUuYXQgfHwgMCwgc2NvcGUgfSkpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdFByb21wdHMocm9vdCkge1xuICByZXR1cm4gcmVhZFByb21wdHMocHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpLCAncHJvamVjdCcpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2xvYmFsUHJvbXB0cygpIHtcbiAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gIGxldCBwcm9qZWN0cyA9IFtdXG4gIHRyeSB7XG4gICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICB9IGNhdGNoIHt9XG4gIGNvbnN0IG5lc3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHByb2plY3RzLm1hcCgocCkgPT4gcmVhZFByb21wdHMoam9pbihwcm9qZWN0c0RpciwgcCwgJ2hpc3RvcnkuanNvbmwnKSwgJ2V2ZXJ5d2hlcmUnKSksXG4gIClcbiAgcmV0dXJuIG5lc3RlZC5mbGF0KCkuc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpLnNsaWNlKDAsIE1BWF9QUk9NUFRTX1BFUl9TQ09QRSlcbn1cbiIsICJpbXBvcnQgeyByZWFkZGlyLCBzdGF0IH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnXG5pbXBvcnQgeyBwaWNvSG9tZSB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxUb29sc0RpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3Rvb2xzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RUb29sc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHJvb3QsICcucGljbycsICd0b29scycpXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKHRvb2wsIGZpbGUpIHtcbiAgaWYgKCF0b29sIHx8IHR5cGVvZiB0b29sICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdkZWZhdWx0IGV4cG9ydCBpcyBub3QgYSB0b29sIG9iamVjdCcpXG4gIGlmICh0eXBlb2YgdG9vbC5uYW1lICE9PSAnc3RyaW5nJyB8fCAhdG9vbC5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wubmFtZSBtdXN0IGJlIGEgc3RyaW5nJylcbiAgaWYgKHR5cGVvZiB0b29sLmRlc2NyaXB0aW9uICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKCd0b29sLmRlc2NyaXB0aW9uIG11c3QgYmUgYSBzdHJpbmcnKVxuICBpZiAodHlwZW9mIHRvb2wuZXhlY3V0ZSAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVycm9yKCd0b29sLmV4ZWN1dGUgbXVzdCBiZSBhIGZ1bmN0aW9uJylcbiAgaWYgKCF0b29sLnNjaGVtYSB8fCB0eXBlb2YgdG9vbC5zY2hlbWEgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuc2NoZW1hIG11c3QgYmUgYW4gb2JqZWN0JylcbiAgcmV0dXJuIHsgLi4udG9vbCwgX2ZpbGU6IGZpbGUgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkVG9vbChmaWxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbXRpbWVNcyB9ID0gYXdhaXQgc3RhdChmaWxlKVxuICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnQoYCR7cGF0aFRvRmlsZVVSTChmaWxlKS5ocmVmfT92PSR7bXRpbWVNc31gKVxuICBjb25zdCBleHBvcnRlZCA9IG1vZHVsZS5kZWZhdWx0XG4gIGNvbnN0IHRvb2wgPSB0eXBlb2YgZXhwb3J0ZWQgPT09ICdmdW5jdGlvbicgPyBhd2FpdCBleHBvcnRlZChjb250ZXh0KSA6IGV4cG9ydGVkXG4gIHJldHVybiB2YWxpZGF0ZSh0b29sLCBmaWxlKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgY29udGV4dCwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH1cbiAgfVxuICBjb25zdCB0b29scyA9IFtdXG4gIGNvbnN0IGVycm9ycyA9IFtdXG4gIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgIGlmICghbmFtZS5lbmRzV2l0aCgnLmpzJykgJiYgIW5hbWUuZW5kc1dpdGgoJy5tanMnKSkgY29udGludWVcbiAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIG5hbWUpXG4gICAgdHJ5IHtcbiAgICAgIHRvb2xzLnB1c2goeyAuLi4oYXdhaXQgbG9hZFRvb2woZmlsZSwgY29udGV4dCkpLCBzb3VyY2UgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9ycy5wdXNoKHsgZmlsZSwgZXJyb3I6IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDIwMCkgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgdG9vbHMsIGVycm9ycyB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290IH0pIHtcbiAgY29uc3QgY29udGV4dCA9IHsgY3dkLCByb290IH1cbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxUb29sc0RpcigpLCBjb250ZXh0LCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdFRvb2xzRGlyKHJvb3QpLCBjb250ZXh0LCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgWy4uLmdsb2JhbC50b29scywgLi4ucHJvamVjdC50b29sc10pIGJ5TmFtZS5zZXQodG9vbC5uYW1lLCB0b29sKVxuICByZXR1cm4geyB0b29sczogWy4uLmJ5TmFtZS52YWx1ZXMoKV0sIGVycm9yczogWy4uLmdsb2JhbC5lcnJvcnMsIC4uLnByb2plY3QuZXJyb3JzXSB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDdXJyZW50KHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmVhZEZpbGUocGF0aCwgJ3V0Zi04JylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV2ZXJ0RWRpdHMoZWRpdHMpIHtcbiAgY29uc3QgcmV2ZXJ0ZWQgPSBbXVxuICBjb25zdCBza2lwcGVkID0gW11cbiAgZm9yIChjb25zdCBlZGl0IG9mIFsuLi5lZGl0c10ucmV2ZXJzZSgpKSB7XG4gICAgY29uc3QgeyBwYXRoLCBiZWZvcmUsIGFmdGVyIH0gPSBlZGl0LnJldmVydFxuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZWFkQ3VycmVudChwYXRoKVxuICAgIGlmIChjdXJyZW50ID09PSBhZnRlcikge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGJlZm9yZSwgJ3V0Zi04JylcbiAgICAgIHJldmVydGVkLnB1c2goZWRpdC5jYWxsSWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IHBhdGgsIGNhbGxJZDogZWRpdC5jYWxsSWQsIHJlYXNvbjogJ2ZpbGUgY2hhbmdlZCBzaW5jZSBlZGl0JyB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyByZXZlcnRlZCwgc2tpcHBlZCB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFwcGx5RWRpdHMoZWRpdHMpIHtcbiAgY29uc3QgcmVhcHBsaWVkID0gW11cbiAgY29uc3Qgc2tpcHBlZCA9IFtdXG4gIGZvciAoY29uc3QgZWRpdCBvZiBlZGl0cykge1xuICAgIGNvbnN0IHsgcGF0aCwgYmVmb3JlLCBhZnRlciB9ID0gZWRpdC5yZXZlcnRcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVhZEN1cnJlbnQocGF0aClcbiAgICBpZiAoY3VycmVudCA9PT0gYmVmb3JlKSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aCwgYWZ0ZXIsICd1dGYtOCcpXG4gICAgICByZWFwcGxpZWQucHVzaChlZGl0LmNhbGxJZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgcGF0aCwgY2FsbElkOiBlZGl0LmNhbGxJZCwgcmVhc29uOiAnZmlsZSBjaGFuZ2VkIHNpbmNlIHJldmVydCcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmVhcHBsaWVkLCBza2lwcGVkIH1cbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gdHJhbnNjcmlwdFRvTWFya2Rvd24odHJhbnNjcmlwdCwgeyB0aXRsZSA9ICdwaWNvIHNlc3Npb24nIH0gPSB7fSkge1xuICBjb25zdCBwYXJ0cyA9IFtgIyAke3RpdGxlfWAsICcnXVxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJhbnNjcmlwdCkge1xuICAgIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykge1xuICAgICAgcGFydHMucHVzaCgnIyMgWW91JywgJycsIGl0ZW0udGV4dCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICBwYXJ0cy5wdXNoKGl0ZW0uaW50ZXJydXB0ZWQgPyBgJHtpdGVtLnRleHR9XFxuXFxuKihpbnRlcnJ1cHRlZCkqYCA6IGl0ZW0udGV4dCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICd0b29sJykge1xuICAgICAgY29uc3QgbGFiZWwgPSBpdGVtLmRpZmYgPyBgICgrJHtpdGVtLmRpZmYuYWRkaXRpb25zfSAtJHtpdGVtLmRpZmYuZGVsZXRpb25zfSlgIDogJydcbiAgICAgIHBhcnRzLnB1c2goYD4gJHtpdGVtLnN0YXR1cyA9PT0gJ3JldmVydGVkJyA/ICdcdTIxQTknIDogJ1x1MjcxMyd9IFxcYCR7aXRlbS5uYW1lfVxcYCAke2l0ZW0udGl0bGV9JHtsYWJlbH1gLCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgICBwYXJ0cy5wdXNoKGA+IHN1bW1hcnk6ICR7aXRlbS50ZXh0fWAsICcnKVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuam9pbignXFxuJylcbn1cbiIsICJpbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXRpb25Db250ZXh0KHsgdmFsdWUsIHJlc29sdmUgfSkge1xuICBpZiAodmFsdWUuaW5jbHVkZXMoJ1xcbicpKSByZXR1cm4gbnVsbFxuICBjb25zdCBtID0gdmFsdWUubWF0Y2goL15cXC8oXFxTKykgKC4qKSQvKVxuICBpZiAoIW0pIHJldHVybiBudWxsXG4gIGNvbnN0IHNvdXJjZSA9IHJlc29sdmUobVsxXS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIXNvdXJjZSB8fCBzb3VyY2UubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICBjb25zdCB0b2tlbnMgPSBtWzJdLnNwbGl0KCcgJylcbiAgY29uc3QgcGFydGlhbCA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgY29uc3QgbWF0Y2hlcyA9IHNvdXJjZVxuICAgIC5tYXAoKHMpID0+IFtmdXp6eVNjb3JlKHBhcnRpYWwsIHMpLCBzXSlcbiAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgICAubWFwKChbLCBzXSkgPT4gcylcbiAgcmV0dXJuIHsgcGFydGlhbCwgbWF0Y2hlcywgc3RhcnQ6IHZhbHVlLmxlbmd0aCAtIHBhcnRpYWwubGVuZ3RoIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpIHtcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIGN0eC5zdGFydCkgKyBjYW5kaWRhdGUgKyAnICdcbn1cbiIsICJpbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCBmZyBmcm9tICdmYXN0LWdsb2InXG5cbmNvbnN0IE1BWF9GSUxFUyA9IDUwMDBcbmNvbnN0IFRUTCA9IDUwMDBcblxubGV0IGNhY2hlZCA9IHsgYXQ6IDAsIGN3ZDogbnVsbCwgZmlsZXM6IFtdIH1cblxuZnVuY3Rpb24gcmlwZ3JlcEZpbGVzKGN3ZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBhcmdzID0gWyctLWZpbGVzJywgJy0taGlkZGVuJywgJy0tZ2xvYicsICchKiovLmdpdC8qKicsICctLXNvcnRyPW1vZGlmaWVkJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgcmVzb2x2ZShlcnIgJiYgIXN0ZG91dCA/IG51bGwgOiBzdGRvdXQuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKSlcbiAgICB9KVxuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdEZpbGVzKGN3ZCkge1xuICBpZiAoY2FjaGVkLmN3ZCA9PT0gY3dkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQuZmlsZXNcbiAgbGV0IGZpbGVzID0gYXdhaXQgcmlwZ3JlcEZpbGVzKGN3ZClcbiAgaWYgKCFmaWxlcykge1xuICAgIGZpbGVzID0gYXdhaXQgZmcoJyoqLyonLCB7XG4gICAgICBjd2QsXG4gICAgICBvbmx5RmlsZXM6IHRydWUsXG4gICAgICBkb3Q6IHRydWUsXG4gICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICB9KS5jYXRjaCgoKSA9PiBbXSlcbiAgfVxuICBjYWNoZWQgPSB7IGF0OiBEYXRlLm5vdygpLCBjd2QsIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBNQVhfRklMRVMpIH1cbiAgcmV0dXJuIGNhY2hlZC5maWxlc1xufVxuIiwgImltcG9ydCB7IGNvZGVUb0FOU0kgfSBmcm9tICdAc2hpa2lqcy9jbGknXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBzaGlraVRoZW1lIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgTEFOR1MgPSB7XG4gIGpzOiAnanMnLCBtanM6ICdqcycsIGNqczogJ2pzJywganN4OiAnanN4JywgdHM6ICd0cycsIHRzeDogJ3RzeCcsXG4gIGpzb246ICdqc29uJywganNvbmw6ICdqc29uJywgbWQ6ICdtZCcsIHB5OiAncHl0aG9uJywgcmI6ICdydWJ5JywgZ286ICdnbycsXG4gIHJzOiAncnVzdCcsIGM6ICdjJywgaDogJ2MnLCBjcHA6ICdjcHAnLCBqYXZhOiAnamF2YScsIGNzczogJ2NzcycsXG4gIGh0bWw6ICdodG1sJywgdnVlOiAndnVlJywgc2g6ICdiYXNoJywgYmFzaDogJ2Jhc2gnLCB6c2g6ICdiYXNoJyxcbiAgeW1sOiAneWFtbCcsIHlhbWw6ICd5YW1sJywgdG9tbDogJ3RvbWwnLCBzcWw6ICdzcWwnLCBzdmVsdGU6ICdzdmVsdGUnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFuZ0ZvclBhdGgocGF0aCkge1xuICBjb25zdCBleHQgPSBTdHJpbmcocGF0aCkuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpXG4gIHJldHVybiBMQU5HU1tleHRdIHx8ICd0eHQnXG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IE1hcCgpXG5jb25zdCBwZW5kaW5nID0gbmV3IFNldCgpXG5jb25zdCBmYWlsZWQgPSBuZXcgU2V0KClcbmNvbnN0IFt2ZXJzaW9uLCBzZXRWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuXG5leHBvcnQgY29uc3QgaGlnaGxpZ2h0VmVyc2lvbiA9IHZlcnNpb25cblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodChjb2RlLCBsYW5nKSB7XG4gIGNvbnN0IHNhZmVMYW5nID0gbGFuZyAmJiAhZmFpbGVkLmhhcyhsYW5nKSA/IGxhbmcgOiAndHh0J1xuICBjb25zdCB0aGVtZSA9IHNoaWtpVGhlbWUoKVxuICByZXR1cm4gY29kZVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBgJHt0aGVtZX1cXG4ke3NhZmVMYW5nfVxcbiR7bGluZX1gXG4gICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHJldHVybiBjYWNoZS5nZXQoa2V5KVxuICAgICAgd2FybShsaW5lLCBzYWZlTGFuZywgdGhlbWUsIGtleSlcbiAgICAgIHJldHVybiBsaW5lXG4gICAgfSlcbiAgICAuam9pbignXFxuJylcbn1cblxuZnVuY3Rpb24gd2FybShsaW5lLCBsYW5nLCB0aGVtZSwga2V5KSB7XG4gIGlmIChwZW5kaW5nLmhhcyhrZXkpKSByZXR1cm5cbiAgcGVuZGluZy5hZGQoa2V5KVxuICBjb2RlVG9BTlNJKGxpbmUsIGxhbmcsIHRoZW1lKVxuICAgIC50aGVuKChhbnNpKSA9PiBjYWNoZS5zZXQoa2V5LCBhbnNpLnJlcGxhY2UoL1xcbiQvLCAnJykpKVxuICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICBmYWlsZWQuYWRkKGxhbmcpXG4gICAgICBjYWNoZS5zZXQoa2V5LCBsaW5lKVxuICAgIH0pXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgcGVuZGluZy5kZWxldGUoa2V5KVxuICAgICAgc2V0VmVyc2lvbigodikgPT4gdiArIDEpXG4gICAgfSlcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5cbmNvbnN0IFBBTEVUVEVTID0ge1xuICBkYXJrOiB7XG4gICAgZGVzYzogJ2xpZ2h0IHRleHQgZm9yIGRhcmsgdGVybWluYWxzJyxcbiAgICBhY2NlbnQ6ICcjNkJFNzk1JyxcbiAgICBmZzogJyNlNWU3ZWInLFxuICAgIGZnU29mdDogJyM5Y2EzYWYnLFxuICAgIG11dGVkOiAnIzZiNzI4MCcsXG4gICAgZmFpbnQ6ICcjNGI1NTYzJyxcbiAgICBwYW5lbEJnOiAnIzFlMWUyMicsXG4gICAgc2VsZWN0Qmc6ICcjMzc0MTUxJyxcbiAgICByZWQ6ICcjZjg3MTcxJyxcbiAgICBoaWdobGlnaHQ6ICcjZmZmZmZmJyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxuICBsaWdodDoge1xuICAgIGRlc2M6ICdkYXJrIHRleHQgZm9yIGxpZ2h0IHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzBmOWQ2MycsXG4gICAgZmc6ICcjMWYyNDMwJyxcbiAgICBmZ1NvZnQ6ICcjNGI1NTYzJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnI2EzYThiMycsXG4gICAgcGFuZWxCZzogJyNlOWU5ZWUnLFxuICAgIHNlbGVjdEJnOiAnI2Q0ZDRkYycsXG4gICAgcmVkOiAnI2RjMjYyNicsXG4gICAgaGlnaGxpZ2h0OiAnIzExMTgyNycsXG4gICAgc2hpa2k6ICdnaXRodWItbGlnaHQnLFxuICB9LFxuICBub3JkOiB7XG4gICAgZGVzYzogJ2FyY3RpYyBibHVlcyBvbiBwb2xhciBuaWdodCcsXG4gICAgYWNjZW50OiAnIzg4YzBkMCcsXG4gICAgZmc6ICcjZDhkZWU5JyxcbiAgICBmZ1NvZnQ6ICcjYWFiMmM0JyxcbiAgICBtdXRlZDogJyM3Yjg4YTEnLFxuICAgIGZhaW50OiAnIzYxNmU4OCcsXG4gICAgcGFuZWxCZzogJyMzYjQyNTInLFxuICAgIHNlbGVjdEJnOiAnIzQzNGM1ZScsXG4gICAgcmVkOiAnI2JmNjE2YScsXG4gICAgaGlnaGxpZ2h0OiAnI2VjZWZmNCcsXG4gICAgc2hpa2k6ICdub3JkJyxcbiAgfSxcbn1cblxuZXhwb3J0IGxldCBERUZBVUxUX0FDQ0VOVCA9IFBBTEVUVEVTLmRhcmsuYWNjZW50XG5leHBvcnQgbGV0IEZHID0gUEFMRVRURVMuZGFyay5mZ1xuZXhwb3J0IGxldCBGR19TT0ZUID0gUEFMRVRURVMuZGFyay5mZ1NvZnRcbmV4cG9ydCBsZXQgTVVURUQgPSBQQUxFVFRFUy5kYXJrLm11dGVkXG5leHBvcnQgbGV0IEZBSU5UID0gUEFMRVRURVMuZGFyay5mYWludFxuZXhwb3J0IGxldCBQQU5FTF9CRyA9IFBBTEVUVEVTLmRhcmsucGFuZWxCZ1xuZXhwb3J0IGxldCBTRUxFQ1RfQkcgPSBQQUxFVFRFUy5kYXJrLnNlbGVjdEJnXG5leHBvcnQgbGV0IFJFRCA9IFBBTEVUVEVTLmRhcmsucmVkXG5leHBvcnQgbGV0IEhJR0hMSUdIVCA9IFBBTEVUVEVTLmRhcmsuaGlnaGxpZ2h0XG5cbmxldCBjdXJyZW50UGFsZXR0ZSA9ICdkYXJrJ1xubGV0IGV4cGxpY2l0QWNjZW50ID0gbnVsbFxuXG5jb25zdCBbYWNjZW50VmFsdWUsIHNldEFjY2VudFZhbHVlXSA9IGNyZWF0ZVNpZ25hbChERUZBVUxUX0FDQ0VOVClcblxuZXhwb3J0IGNvbnN0IGFjY2VudCA9IGFjY2VudFZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY2NlbnQoY29sb3IpIHtcbiAgZXhwbGljaXRBY2NlbnQgPSBjb2xvciB8fCBudWxsXG4gIHNldEFjY2VudFZhbHVlKGV4cGxpY2l0QWNjZW50IHx8IERFRkFVTFRfQUNDRU5UKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGFsZXR0ZShuYW1lKSB7XG4gIGN1cnJlbnRQYWxldHRlID0gUEFMRVRURVNbbmFtZV0gPyBuYW1lIDogJ2RhcmsnXG4gIGNvbnN0IHAgPSBQQUxFVFRFU1tjdXJyZW50UGFsZXR0ZV1cbiAgREVGQVVMVF9BQ0NFTlQgPSBwLmFjY2VudFxuICBGRyA9IHAuZmdcbiAgRkdfU09GVCA9IHAuZmdTb2Z0XG4gIE1VVEVEID0gcC5tdXRlZFxuICBGQUlOVCA9IHAuZmFpbnRcbiAgUEFORUxfQkcgPSBwLnBhbmVsQmdcbiAgU0VMRUNUX0JHID0gcC5zZWxlY3RCZ1xuICBSRUQgPSBwLnJlZFxuICBISUdITElHSFQgPSBwLmhpZ2hsaWdodFxuICBzZXRBY2NlbnRWYWx1ZShleHBsaWNpdEFjY2VudCB8fCBwLmFjY2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVOYW1lKCkge1xuICByZXR1cm4gY3VycmVudFBhbGV0dGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVMaXN0KCkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoUEFMRVRURVMpLm1hcCgoW2tleSwgcF0pID0+ICh7IGtleSwgZGVzYzogcC5kZXNjIH0pKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpa2lUaGVtZSgpIHtcbiAgcmV0dXJuIFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXS5zaGlraVxufVxuIiwgImltcG9ydCB7IERpZmYsIE1hcmtkb3duLCBTcGlubmVyIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVEIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IGhpZ2hsaWdodCwgbGFuZ0ZvclBhdGggfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcblxuZXhwb3J0IHsgZGVmYXVsdFRpdGxlIGFzIHVpVGl0bGUgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzJ1xuXG5mdW5jdGlvbiBkaWZmUHJldmlld0xpbmVzKGRpZmYsIHJldmVydCkge1xuICBpZiAoZGlmZj8uaHVua3M/Lmxlbmd0aCkgcmV0dXJuIGRpZmYuaHVua3MucmVkdWNlKChzdW0sIGgpID0+IHN1bSArIGgubGluZXMubGVuZ3RoLCAwKVxuICAvLyBldmVudHMgcmVjb3JkZWQgYmVmb3JlIGNyZWF0ZWQtZmlsZSB3cml0ZXMgY2FycmllZCBodW5rczogc2l6ZSBmcm9tIHRoZSBjb250ZW50IGl0c2VsZlxuICByZXR1cm4gTWF0aC5tYXgoU3RyaW5nKHJldmVydD8uYWZ0ZXIgfHwgJycpLnNwbGl0KCdcXG4nKS5sZW5ndGgsIFN0cmluZyhyZXZlcnQ/LmJlZm9yZSB8fCAnJykuc3BsaXQoJ1xcbicpLmxlbmd0aCwgMilcbn1cblxuZnVuY3Rpb24gVG9vbENhcmQoeyBuYW1lLCB0aXRsZSwgc3RhdHVzLCBkaWZmLCByZXZlcnQsIGZ1bGxPdXRwdXQsIGVycm9yLCBiYWNrZ3JvdW5kLCB2ZXJib3NlIH0pIHtcbiAgY29uc3QgcnVubmluZyA9IHN0YXR1cyA9PT0gJ3J1bm5pbmcnXG4gIGNvbnN0IGludGVycnVwdGVkID0gc3RhdHVzID09PSAnaW50ZXJydXB0ZWQnXG4gIGNvbnN0IHJldmVydGVkID0gc3RhdHVzID09PSAncmV2ZXJ0ZWQnXG4gIGNvbnN0IGZhaWxlZCA9IHN0YXR1cyA9PT0gJ2Vycm9yJ1xuICBjb25zdCBvdXRMaW5lcyA9IGZ1bGxPdXRwdXQgPyBmdWxsT3V0cHV0LnNwbGl0KCdcXG4nKSA6IG51bGxcblxuICBjb25zdCBpbmZvID0gcnVubmluZyA/ICdydW5uaW5nJ1xuICAgIDogaW50ZXJydXB0ZWQgPyAnaW50ZXJydXB0ZWQnXG4gICAgOiByZXZlcnRlZCA/ICdyZXZlcnRlZCdcbiAgICA6IGZhaWxlZCA/ICdmYWlsZWQnXG4gICAgOiBiYWNrZ3JvdW5kID8gJ2JhY2tncm91bmQgXHUwMEI3IC9zaGVsbHMnXG4gICAgOiBkaWZmID8gYCske2RpZmYuYWRkaXRpb25zfSAtJHtkaWZmLmRlbGV0aW9uc31gXG4gICAgOiBvdXRMaW5lcyA/IGAke291dExpbmVzLmxlbmd0aH0gJHtvdXRMaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYFxuICAgIDogJ2RvbmUnXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICB7cnVubmluZ1xuICAgICAgICAgID8gPFNwaW5uZXIgY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IGludGVycnVwdGVkIHx8IGZhaWxlZCA/IFJFRCA6IHJldmVydGVkID8gTVVURUQgOiBhY2NlbnQoKSB9fT57aW50ZXJydXB0ZWQgPyAnXHUyNzE3JyA6IGZhaWxlZCA/ICdcdTI3MTcnIDogcmV2ZXJ0ZWQgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7bmFtZS5wYWRFbmQoNSl9IGB9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGRyB9fT57dGl0bGUgfHwgbmFtZX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7aW5mb31gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgICAge2ZhaWxlZCAmJiBlcnJvciAmJiAoXG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2AgICR7ZXJyb3J9YH08L3RleHQ+XG4gICAgICApfVxuICAgICAge3JldmVydCAmJiAhcnVubmluZyAmJiAhcmV2ZXJ0ZWQgJiYgIShkaWZmICYmIGRpZmYuYWRkaXRpb25zID09PSAwICYmIGRpZmYuZGVsZXRpb25zID09PSAwKSAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogTWF0aC5taW4oZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpICsgMSwgMTIpLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPERpZmZcbiAgICAgICAgICAgIGJlZm9yZT17cmV2ZXJ0LmJlZm9yZX1cbiAgICAgICAgICAgIGFmdGVyPXtyZXZlcnQuYWZ0ZXJ9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ0ZvclBhdGgocmV2ZXJ0LnBhdGgpfVxuICAgICAgICAgICAgaGlnaGxpZ2h0PXtoaWdobGlnaHR9XG4gICAgICAgICAgICBjb250ZXh0PXszfVxuICAgICAgICAgICAgZm9sZHM9e2ZhbHNlfVxuICAgICAgICAgICAgZm9jdXNlZD17ZmFsc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXI9e2ZhbHNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICAgIHtvdXRMaW5lcyAmJiB2ZXJib3NlICYmICFydW5uaW5nICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCQgJHt0aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICB7b3V0TGluZXMuc2xpY2UoMCwgMjAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge291dExpbmVzLmxlbmd0aCA+IDIwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtvdXRMaW5lcy5sZW5ndGggLSAyMDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQmFubmVyKHsgdmVyc2lvbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDAsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6IHRydWUsIGNvbG9yOiBhY2NlbnQoKSB9fT57JyAgcGljbyd9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIHYke3ZlcnNpb259YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVzc2FnZSh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICByZXR1cm4gPFRvb2xDYXJkIHsuLi5pdGVtfSB2ZXJib3NlPXt2ZXJib3NlfSAvPlxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntpdGVtLnNvdXJjZSA9PT0gJ2NvbXBhY3QnID8gJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyBjb252ZXJzYXRpb24gY29tcGFjdGVkIGFib3ZlIHRoaXMgcG9pbnQnIDogJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyByZXdvdW5kIGNvbnZlcnNhdGlvbid9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDUwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA+IDUwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtsaW5lcy5sZW5ndGggLSA1MDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndGhvdWdodHMnKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PnsnXHUyNzI2IHRob3VnaHRzJ308L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7bGluZXMubGVuZ3RofSAke2xpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt2ZXJib3NlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMuc2xpY2UoMCwgMzAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgaXRhbGljOiB0cnVlIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiAzMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gMzAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ25vdGljZScpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNjk5ICR7aXRlbS50ZXh0LnJlcGxhY2UoL15cXFtzeXN0ZW0gbm90aWZpY2F0aW9uXFxdXFxzKi8sICcnKX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdza2lsbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNzI2IHNraWxsOiAke2l0ZW0ubmFtZX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e2l0ZW0udGV4dH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgdGV4dCA9IGl0ZW0uaW50ZXJydXB0ZWQgPyBgJHtpdGVtLnRleHR9ICooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHRcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8TWFya2Rvd24gdGV4dD17dGV4dH0gaGlnaGxpZ2h0PXtoaWdobGlnaHR9IGNvZGVCZz17bnVsbH0gLz5cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IE1hcmtkb3duLCBTY3JvbGxCb3gsIHVzZUlucHV0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGQUlOVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEhFTFBfVEVYVCA9IChjb21tYW5kcykgPT4gYHBpY28gaXMgYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbC4gSXQgcmVhZHMsIGVkaXRzLCBhbmQgc2VhcmNoZXMgZmlsZXMsIHJ1bnMgY29tbWFuZHMsIGFuZCBzdHJlYW1zIGl0cyB3b3JrIGludG8gdGhpcyB0cmFuc2NyaXB0LlxuXG4jIyBDb21tYW5kc1xuXG5UeXBlIFxcYC9cXGAgaW4gdGhlIGNvbXBvc2VyIHRvIGZpbHRlciB0aGVzZSBhcyB5b3UgdHlwZS5cblxuJHtjb21tYW5kcy5tYXAoKGMpID0+IGAtIFxcYC8ke2MubmFtZX1cXGAgLSAke2MuZGVzY31gKS5qb2luKCdcXG4nKX1cblxuVHdvIGtpbmRzIG9mIHVzZXItZGVmaW5lZCBlbnRyaWVzIGpvaW4gdGhpcyBtZW51OlxuXG4tICoqY29tbWFuZHMqKiAoXFxgfi8ucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgb3IgXFxgLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgKTogcHJvbXB0IHRlbXBsYXRlcyB5b3UgaW52b2tlIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBcXGAkQVJHVU1FTlRTXFxgIGluIHRoZSBib2R5IGlzIHJlcGxhY2VkIHdpdGggd2hhdGV2ZXIgZm9sbG93cyB0aGUgY29tbWFuZDsgd2l0aG91dCBhIHBsYWNlaG9sZGVyLCBhcmdzIGFyZSBhcHBlbmRlZC4gVGhlIG1vZGVsIG5ldmVyIHNlZXMgdGhlc2UgdW50aWwgeW91IHJ1biBvbmUuXG4tICoqc2tpbGxzKiogKFxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCBvciBcXGAucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgKTogY2FwYWJpbGl0aWVzIHdpdGggYSBuYW1lIGFuZCBkZXNjcmlwdGlvbi4gWW91IGNhbiBpbnZva2UgdGhlbSBsaWtlIGNvbW1hbmRzLCBhbmQgdGhlIGFnZW50IGNhbiBhbHNvIGRpc2NvdmVyIGFuZCBsb2FkIHRoZW0gaXRzZWxmIHZpYSB0aGUgc2tpbGwgdG9vbC5cbi0gKip0b29scyoqIChcXGB+Ly5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBvciBcXGAucGljby90b29scy88bmFtZT4uanNcXGApOiBFUyBtb2R1bGVzIGRlZmF1bHQtZXhwb3J0aW5nIFxcYHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgZXhlY3V0ZSB9XFxgIChvciBhIGZhY3RvcnkgcmVjZWl2aW5nIFxcYHsgY3dkLCByb290IH1cXGApLiBUaGV5IGpvaW4gdGhlIGFnZW50J3MgdG9vbHNldCBhbmQgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBlZGl0cyBhcHBseSBvbiB0aGUgbmV4dCBtZXNzYWdlLiBBc2sgdGhlIGFnZW50IHRvIGJ1aWxkIG9uZSBmb3IgeW91OiB0aGUgYnVpbHQtaW4gXFxgL25ldy10b29sXFxgIHNraWxsIHRlYWNoZXMgaXQgdGhlIGZvcm1hdC5cblxuSW4gdGhlIE1DUCBwYW5lbDogc3BhY2Ugb3IgZW50ZXIgdG9nZ2xlcyBhIHNlcnZlciwgXFxgdFxcYCBsaXN0cyBpdHMgdG9vbHMsIFxcYHJcXGAgcmVjb25uZWN0cywgXFxgYVxcYCBhZGRzLCBcXGBkXFxgIHJlbW92ZXMuIFVuZmlsdGVyZWQgbGlzdHMgKGVmZm9ydCwgcmV3aW5kIG9wdGlvbnMsIE1DUCkgYWxzbyBtb3ZlIHdpdGggXFxgalxcYC9cXGBrXFxgIGFuZCBqdW1wIHdpdGggXFxgZ1xcYC9cXGBHXFxgLlxuXG4jIyBDb21wb3NlclxuXG4tIFxcYGVudGVyXFxgIHNlbmRzLCBcXGBzaGlmdCtlbnRlclxcYCBpbnNlcnRzIGEgbmV3bGluZVxuLSBcXGBAXFxgIG9wZW5zIGEgZnV6enkgZmlsZSBwaWNrZXI7IGVudGVyIGluc2VydHMgdGhlIHNlbGVjdGVkIHBhdGhcbi0gZHJhZyBhbiBpbWFnZSBmaWxlIGludG8gdGhlIHRlcm1pbmFsIHRvIGF0dGFjaCBpdDogaXQgYXBwZWFycyBpbmxpbmUgYXMgXFxgW0ltYWdlICNOXVxcYCwgZXhhY3RseSB3aGVyZSB5b3VyIGN1cnNvciBpcywgc28gaW1hZ2VzIGNhbiBzaXQgYmV0d2VlbiBzZW50ZW5jZXM7IGJhY2tzcGFjZSBhZnRlciBvbmUgcmVtb3ZlcyB0aGUgd2hvbGUgYXR0YWNobWVudFxuLSBcXGB0YWJcXGAgY29tcGxldGVzOiBcXGAvc3VtbTx0YWI+XFxgIGZpbmlzaGVzIHRoZSBjb21tYW5kIG5hbWUgYW5kIGN5Y2xlcyB0aHJvdWdoIG1hdGNoZXMgb24gcmVwZWF0OyBhZnRlciBhbiBhcmd1bWVudCBzcGFjZSBpdCBjb21wbGV0ZXMgdmFsdWVzIChcXGAvbW9kZWwgZmxhPHRhYj5cXGAsIFxcYC9jb2xvciA8dGFiPlxcYCwgXFxgL2VmZm9ydCA8dGFiPlxcYCkgYW5kIGZpbGUgcGF0aHMgZm9yIHNraWxscyBhbmQgY29tbWFuZHMuIEtlZXAgdHlwaW5nIHRvIG5hcnJvdywgdGFiIG9yIGVudGVyIGluc2VydHNcbi0gXFxgdXBcXGAgYW5kIFxcYGRvd25cXGAgb24gYW4gZW1wdHkgY29tcG9zZXIgcmVjYWxsIG1lc3NhZ2VzIHlvdSBhbHJlYWR5IHNlbnRcbi0gXFxgY3RybCtyXFxgIGZ1enp5LXNlYXJjaGVzIHlvdXIgcHJvbXB0IGhpc3Rvcnkgd2l0aCBhIHByZXZpZXc7IGVudGVyIHB1dHMgdGhlIG1hdGNoIGJhY2sgaW4gdGhlIGNvbXBvc2VyXG4tIFxcYGN0cmwrc1xcYCBvcGVucyB0aGUgc2Vzc2lvbiBwaWNrZXIgKHNhbWUgYXMgXFxgL3Jlc3VtZVxcYCk7IFxcYGN0cmwrdFxcYCBvcGVucyB0aGUgbW9kZWwgcGlja2VyXG4tIFxcYGN0cmwrcFxcYCBzd2l0Y2hlcyBwcm9qZWN0czogcGljayBvbmUgYW5kIHBpY28ganVtcHMgdG8gaXRzIG1vc3QgcmVjZW50IHNlc3Npb24sIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdG9vbHMsIGNvbnRleHQsIGFuZCBNQ1Agc2VydmVycyB0byBtYXRjaDsgXFxgY3RybCt4XFxgIHR3aWNlIGRlbGV0ZXMgYSBwcm9qZWN0J3MgcGljbyBoaXN0b3J5IChhbGwgaXRzIHNlc3Npb25zIGFuZCBtZW1vcmllcyk7IFxcYC9uZXdcXGAgc3RhcnRzIGEgZnJlc2ggc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBwcm9qZWN0XG4tIFxcYGN0cmwrYlxcYCBjeWNsZXMgdGhpbmtpbmcgZWZmb3J0IChkZWZhdWx0LCBsb3csIG1lZGl1bSwgaGlnaCwgbWF4KSBvbiBtb2RlbHMgdGhhdCBzdXBwb3J0IGl0OyBcXGAvZWZmb3J0XFxgIG9wZW5zIHRoZSBmdWxsIHBpY2tlclxuLSBpbnNpZGUgYSBzZWFyY2ggcGFuZWwsIFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGluc3RlYWQ6IHRoaXMgc2Vzc2lvbiwgdGhpcyBwcm9qZWN0LCBvciBldmVyeXdoZXJlXG4tIFxcYC9yZXdpbmRcXGAgcmVzdG9yZXMgdGhlIGNvbnZlcnNhdGlvbiB0byBhbiBlYXJsaWVyIG1lc3NhZ2U7IGEgcmV3aW5kIGNhbiBiZSB1bmRvbmUgd2l0aCBcXGBjdHJsK3pcXGBcbi0gbWVzc2FnZXMgc2VudCB3aGlsZSB0aGUgYWdlbnQgaXMgcmVzcG9uZGluZyBxdWV1ZSB1cCBhYm92ZSB0aGUgY29tcG9zZXIgYW5kIGFyZSBkZWxpdmVyZWQgYXMgb25lIG1lc3NhZ2Ugd2hlbiB0aGUgdHVybiBmaW5pc2hlczsgXFxgdXBcXGAgcHVsbHMgdGhlbSBiYWNrIGZvciBlZGl0aW5nXG4tIFxcYGVzY1xcYCBpbnRlcnJ1cHRzIGEgc3RyZWFtaW5nIHJlc3BvbnNlLCBvciBjbGVhcnMgdGhlIGNvbXBvc2VyIHdoZW4gaWRsZVxuXG4jIyBNb3ZpbmcgYXJvdW5kXG5cbi0gXFxgdGFiXFxgIHN3aXRjaGVzIGZvY3VzIGJldHdlZW4gdGhlIHRyYW5zY3JpcHQgYW5kIHRoZSBjb21wb3NlclxuLSB3aXRoIHRoZSB0cmFuc2NyaXB0IGZvY3VzZWQsIFxcYHVwXFxgL1xcYGRvd25cXGAvXFxgalxcYC9cXGBrXFxgIHNjcm9sbCBhbmQgXFxgZ1xcYC9cXGBHXFxgIGp1bXAgdG8gdGhlIGVuZHNcbi0gbG9uZyBzZXNzaW9ucyByZW5kZXIgb25seSB0aGUgbmV3ZXN0IDUwIG1lc3NhZ2VzOyBzY3JvbGxpbmcgdG8gdGhlIHZlcnkgdG9wIGxvYWRzIG9sZGVyIG9uZXMgaW4gYmF0Y2hlcyAodGhlIHRvcCBsaW5lIHNob3dzIGhvdyBtYW55IGFyZSBoaWRkZW4pXG4tIFxcYGN0cmwrb1xcYCBleHBhbmRzIGFuZCBjb2xsYXBzZXMgdG9vbCBvdXRwdXQgaW4gdGhlIHRyYW5zY3JpcHRcbi0gdGhlIG1vdXNlIHdoZWVsIHNjcm9sbHM7IGNsaWNrLWRyYWcgc2VsZWN0cyB0ZXh0IGFuZCBjb3BpZXMgaXQgb24gcmVsZWFzZVxuLSBcXGBjdHJsK2NcXGAgdHdpY2UgZXhpdHNcblxuIyMgU2hlbGxzXG5cblRoZSBhZ2VudCBjYW4gcnVuIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIChkZXYgc2VydmVycywgd2F0Y2hlcnMpIHdpdGggXFxgYmFzaCBiYWNrZ3JvdW5kOiB0cnVlXFxgLCB0aGVuIHJlYWQgdGhlaXIgb3V0cHV0IGFuZCBzdG9wIHRoZW0gaXRzZWxmLiBcXGAvc2hlbGxzXFxgIGxpc3RzIHRoZW06IGVudGVyIG9wZW5zIGEgbGl2ZSBvdXRwdXQgdmlldywgXFxga1xcYCBraWxscyAocHJlc3MgdHdpY2UpLCBcXGBkXFxgIGRpc21pc3NlcyBhIGRlYWQgb25lLiBBIFxcYFx1MjY5OSBOXFxgIGluIHRoZSBmb290ZXIgc2hvd3MgaG93IG1hbnkgYXJlIHJ1bm5pbmcuIFdoZW4gYSBzaGVsbCBleGl0cyBvbiBpdHMgb3duLCB0aGUgYWdlbnQgaXMgbm90aWZpZWQgYW5kIHJlc3BvbmRzOyBzaGVsbHMgZGllIHdpdGggcGljbywgYW5kIHF1aXR0aW5nIHdhcm5zIHlvdSBpZiBhbnkgYXJlIHN0aWxsIHVwLlxuXG4jIyBTdWJzY3JpcHRpb25zXG5cblxcYC9jb25uZWN0XFxgIGxpc3RzIHN1YnNjcmlwdGlvbiBwcm92aWRlcnMgeW91IGNhbiBzaWduIGluIHdpdGggaW5zdGVhZCBvZiBBUEkga2V5cy4gT3BlbkFJIChDaGF0R1BUIC8gQ29kZXggcGxhbikgc2lnbnMgaW4gdGhyb3VnaCB5b3VyIGJyb3dzZXIgdmlhIE9BdXRoOyB0b2tlbnMgYXJlIHN0b3JlZCBpbiBcXGB+Ly5waWNvL2F1dGguanNvblxcYCBhbmQgcmVmcmVzaGVkIGF1dG9tYXRpY2FsbHksIHNvIHlvdSBzaWduIGluIG9uY2UuIE9uY2UgY29ubmVjdGVkLCBjb2RleCBtb2RlbHMgYXBwZWFyIGluIFxcYC9tb2RlbFxcYCwgYmlsbGVkIHRvIHlvdXIgcGxhbi4gXFxgZFxcYCBpbiB0aGUgcGFuZWwgZGlzY29ubmVjdHMuXG5cbiMjIFdlYiBzZWFyY2hcblxuV2l0aCBhIFtkcmVkZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25hdGhhbnB5ZXJzL2RyZWRnZSkgZW5kcG9pbnQgY29uZmlndXJlZCwgdGhlIGFnZW50IGdldHMgdHdvIGV4dHJhIHRvb2xzOiBcXGB3ZWJfc2VhcmNoXFxgIChyYW5rZWQgcmVzdWx0cywgR29vZ2xlLXN0eWxlIG9wZXJhdG9ycykgYW5kIFxcYHdlYl9mZXRjaFxcYCAoYW55IHVybCBhcyBjbGVhbiBwYWdpbmF0ZWQgbWFya2Rvd24sIGluY2x1ZGluZyBwZGYgYW5kIGRvY3gpLiBDb25maWd1cmUgaXQgYXMgXFxgXCJkcmVkZ2VcIjogeyBcInVybFwiOiBcIi4uLlwiLCBcImFwaUtleVwiOiBcIi4uLlwiIH1cXGAgaW4gXFxgfi8ucGljby9jb25maWcuanNvblxcYCwgb3Igd2l0aCBcXGBEUkVER0VfVVJMXFxgIGFuZCBcXGBEUkVER0VfQVBJX0tFWVxcYC4gV2l0aG91dCBhIGNvbmZpZ3VyZWQgZW5kcG9pbnQgdGhlIHRvb2xzIGFyZSBub3Qgb2ZmZXJlZCB0byB0aGUgbW9kZWwgYXQgYWxsLlxuXG4jIyBNZW1vcnlcblxuVGhlIGFnZW50IHNhdmVzIGR1cmFibGUgZmFjdHMgd2l0aCB0aGUgcmVtZW1iZXIgdG9vbDogb25lIGZpbGUgcGVyIG1lbW9yeSB1bmRlciBcXGB+Ly5waWNvL21lbW9yeVxcYCAoZ2xvYmFsKSBvciB0aGUgcHJvamVjdCdzIGRpcmVjdG9yeSBpbiBcXGB+Ly5waWNvL3Byb2plY3RzXFxgLiBPbmx5IGEgb25lLWxpbmUgaW5kZXggaXMgaW4gaXRzIGNvbnRleHQ7IGl0IGxvYWRzIGEgc3BlY2lmaWMgbWVtb3J5IHdpdGggdGhlIHJlY2FsbCB0b29sIHdoZW4gcmVsZXZhbnQuIFxcYC9tZW1vcnlcXGAgbGlzdHMgZXZlcnl0aGluZyBpdCBrbm93cyB3aXRoIGEgY29udGVudCBwcmV2aWV3OiBcXGBjdHJsK3NcXGAgY3ljbGVzIHRoZSBzY29wZSBmaWx0ZXIgKGFsbCwgcHJvamVjdCwgZ2xvYmFsKSBhbmQgXFxgY3RybCt4XFxgIHR3aWNlIGZvcmdldHMgdGhlIHNlbGVjdGVkIG1lbW9yeS4gWW91IGNhbiBhbHNvIGFzayB0aGUgYWdlbnQgdG8gcmVtZW1iZXIsIGZvcmdldCwgb3IgY2xlYW4gdXAgaXRzIG1lbW9yaWVzIGluIHBsYWluIGxhbmd1YWdlLlxuXG4jIyBXYWtlLXVwc1xuXG5UaGUgYWdlbnQgY2FuIHNjaGVkdWxlIG9uZS10aW1lIHdha2UtdXBzIGZvciBpdHNlbGYgd2l0aCB0aGUgc2NoZWR1bGVfd2FrZXVwIHRvb2w6IGFmdGVyIHRoZSBkZWxheSBpdCByZWNlaXZlcyBpdHMgb3duIG5vdGUgYXMgYSBzeXN0ZW0gbm90aWZpY2F0aW9uIGFuZCBhY3RzIG9uIGl0LiBSZWN1cnJpbmcgbG9vcHMgYXJlIGp1c3QgdGhlIGFnZW50IHJlc2NoZWR1bGluZyBhdCB0aGUgZW5kIG9mIGVhY2ggd2FrZS11cC4gXFxgL3dha2V1cHNcXGAgbGlzdHMgcGVuZGluZyBvbmVzIHdpdGggbGl2ZSBjb3VudGRvd25zOyBlbnRlciBvciBcXGBrXFxgIGNhbmNlbHMuIEEgXFxgXHUyM0YwIE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcGVuZGluZy4gV2FrZS11cHMgbGl2ZSBpbiBtZW1vcnkgYW5kIGFyZSBsb3N0IHdoZW4gcGljbyBleGl0cy5cblxuIyMgQXBwZWFyYW5jZVxuXG5waWNvIHBpY2tzIGEgbGlnaHQgb3IgZGFyayBwYWxldHRlIGF0IHN0YXJ0dXAgYnkgYXNraW5nIHRoZSB0ZXJtaW5hbCBmb3IgaXRzIGJhY2tncm91bmQgY29sb3IgKE9TQyAxMSksIHNvIGl0IG1hdGNoZXMgd2hhdGV2ZXIgdGhlbWUgeW91ciB0ZXJtaW5hbCB1c2VzLiBcXGAvdGhlbWVcXGAgb3BlbnMgYSBwaWNrZXIgdGhhdCBwcmV2aWV3cyBlYWNoIHRoZW1lIGFzIHlvdSBtb3ZlIGFuZCBwZXJzaXN0cyB5b3VyIGNob2ljZSBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgOyBcXGAvdGhlbWUgbGlnaHRcXGAsIFxcYC90aGVtZSBkYXJrXFxgLCBvciBcXGAvdGhlbWUgYXV0b1xcYCBhcHBsaWVzIG9uZSBkaXJlY3RseS4gXFxgL2NvbG9yXFxgIHRpbnRzIGEgc2luZ2xlIHNlc3Npb24ncyBhY2NlbnQgYW5kIGlzIGluZGVwZW5kZW50IG9mIHRoZSBwYWxldHRlLlxuXG4jIyBDb250ZXh0XG5cbnBpY28gcmVhZHMgQUdFTlRTLm1kIGZpbGVzIGF1dG9tYXRpY2FsbHk6IGEgZ2xvYmFsIG9uZSBmcm9tIH4vLnBpY28sIHRoZW4gZXZlcnkgYW5jZXN0b3Igb2YgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB1cCB0byB0aGUgZ2l0IHJvb3QuIERlZXBlciBmaWxlcyB3aW4uIEFHRU5UUy5tZCBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyBsb2FkIGxhemlseSB0aGUgZmlyc3QgdGltZSBhIHRvb2wgdG91Y2hlcyB0aGF0IHN1YnRyZWUuIEluIGFueSBwcm9qZWN0IGRpcmVjdG9yeSB3aXRob3V0IGFuIEFHRU5UUy5tZCwgYSBDTEFVREUubWQgaXMgaG9ub3JlZCBhcyBhIGZhbGxiYWNrIHNvIGV4aXN0aW5nIHJlcG9zIHdvcmsgdW5jaGFuZ2VkOyBBR0VOVFMubWQgYWx3YXlzIHdpbnMgd2hlbiBib3RoIGV4aXN0LCBhbmQgdGhlIGZhbGxiYWNrIG5ldmVyIGFwcGxpZXMgdG8gdGhlIGdsb2JhbCBmaWxlLlxuXG5TZXNzaW9ucyBhcmUgc3RvcmVkIHVuZGVyIH4vLnBpY28gYXMganNvbmwgZXZlbnQgbG9nczsgXFxgL3Jlc3VtZVxcYCBmb2xkcyBvbmUgYmFjayBpbnRvIGV4YWN0bHkgdGhpcyB2aWV3LlxuXG5cXGAvY29udGV4dFxcYCBicmVha3MgZG93biB3aGF0IHRoZSBuZXh0IHJlcXVlc3Qgd2lsbCBjb250YWluIC0gc3lzdGVtIHByb21wdCwgdG9vbCBzY2hlbWFzLCBwcm9qZWN0IGluc3RydWN0aW9ucywgbWVtb3J5IGluZGV4LCBjb21wYWN0aW9uIHN1bW1hcnksIGFuZCBjb252ZXJzYXRpb24gLSB3aXRoIGFuIGVzdGltYXRlZCBzaXplIGZvciBlYWNoIHBpZWNlIG5leHQgdG8gdGhlIHByb3ZpZGVyLW1lYXN1cmVkIHRvdGFsLlxuXG5UaGUgZm9vdGVyJ3MgXFxgY3R4ICVcXGAgc2hvd3MgaG93IGZ1bGwgdGhlIG1vZGVsJ3MgY29udGV4dCBpcy4gQXQgODUlIHBpY28gYXV0by1jb21wYWN0czogdGhlIG9sZGVyIGNvbnZlcnNhdGlvbiBpcyBzdW1tYXJpemVkIGluIGEgc3RydWN0dXJlZCBmb3JtLCB0aGUgbW9zdCByZWNlbnQgdHVybnMgYXJlIGtlcHQgdmVyYmF0aW0sIGFuZCB0aGUgbW9kZWwgaXMgdG9sZCB3aGVyZSB0aGUgZnVsbCBzZXNzaW9uIGZpbGUgbGl2ZXMgc28gaXQgY2FuIHJlYWQgZXhhY3QgZGV0YWlscyBiYWNrIG9uIGRlbWFuZC4gTm90aGluZyB2aXNpYmxlIGNoYW5nZXMgaW4gdGhlIHRyYW5zY3JpcHQsIGFuZCByZXdpbmQgc3RpbGwgd29ya3MgYWNyb3NzIGl0LiBcXGAvY29tcGFjdFxcYCBydW5zIGl0IG1hbnVhbGx5IGFuZCB0YWtlcyBvcHRpb25hbCBmb2N1cyBpbnN0cnVjdGlvbnMgKFxcYC9jb21wYWN0IGZvY3VzIG9uIHRoZSBBUEkgY2hhbmdlc1xcYCkuIFNldCBcXGBcImF1dG9Db21wYWN0XCI6IGZhbHNlXFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAgdG8gZGlzYWJsZSB0aGUgYXV0b21hdGljIHRyaWdnZXIuXG5cbi0tLVxuXG4qZXNjIHRha2VzIHlvdSBiYWNrIHRvIHRoZSBjb252ZXJzYXRpb24qYFxuXG5leHBvcnQgZnVuY3Rpb24gSGVscCh7IGNvbW1hbmRzLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PnBpY28gXHUwMEI3IGhlbHA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MVx1MjE5MyBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkIHNjcm9sbGJhcj5cbiAgICAgICAgPE1hcmtkb3duIHRleHQ9e0hFTFBfVEVYVChjb21tYW5kcyl9IGNvZGVCZz17bnVsbH0gLz5cbiAgICAgIDwvU2Nyb2xsQm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIE1lbnUsIFBpY2tMaXN0LCBSYWRpbywgU2Nyb2xsQm94LCBUZXh0SW5wdXQsIHVzZUZvY3VzLCB1c2VJbnB1dCwgdXNlSW50ZXJ2YWwgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVBZ28oYXQpIHtcbiAgY29uc3QgcyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBhdCkgLyAxMDAwKSlcbiAgaWYgKHMgPCA2MCkgcmV0dXJuIGAke3N9cyBhZ29gXG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKHMgLyA2MClcbiAgaWYgKG0gPCA2MCkgcmV0dXJuIGAke219bSBhZ29gXG4gIGNvbnN0IGggPSBNYXRoLmZsb29yKG0gLyA2MClcbiAgaWYgKGggPCAyNCkgcmV0dXJuIGAke2h9aCBhZ29gXG4gIHJldHVybiBgJHtNYXRoLmZsb29yKGggLyAyNCl9ZCBhZ29gXG59XG5cbmZ1bmN0aW9uIFBhbmVsRnJhbWUoeyB0aXRsZSwgaGludCwgcmlnaHQsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pnt0aXRsZX08L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3JpZ2h0fVxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2hpbnR9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY29wZVRhYnMoeyBzY29wZXMsIGFjdGl2ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgIHtzY29wZXMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgIDx0ZXh0IGtleT17c30gc3R5bGU9e3sgY29sb3I6IGkgPT09IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQsIGJvbGQ6IGkgPT09IGFjdGl2ZSB9fT57YCR7aSA+IDAgPyAnICAnIDogJyd9JHtzfWB9PC90ZXh0PlxuICAgICAgKSl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsUGFuZWwoeyBtb2RlbHMsIGN1cnJlbnQsIGRlZmF1bHROYW1lLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKG1vZGVsc1swXSB8fCBudWxsKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgY3Vyc29yKCkpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoY3Vyc29yKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2VsZWN0IG1vZGVsXCIgaGludD1cImVudGVyOiB0aGlzIHNlc3Npb24gXHUwMEI3IGN0cmwrczogc2V0IGFzIGRlZmF1bHQgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXttb2RlbHN9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtb2RlbHMuLi5cIlxuICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgbS5uYW1lKSA+PSAwfVxuICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXtzZXRDdXJzb3J9XG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICBzY3JvbGxvZmY9ezF9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2ZmID0gbS5hdmFpbGFibGUgPT09IGZhbHNlXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBib2xkOiAhb2ZmLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogb2ZmID8gTVVURUQgOiBGRyB9fT57bS5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IGFjY2VudCgpIH19PnsnIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGRlZmF1bHROYW1lICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57JyBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgICAge29mZiA/IGBuZWVkcyAke20ua2V5SGludH1gIDogbS5wcmljZSA/IGAkJHttLnByaWNlLmlufSBpbiBcdTAwQjcgJCR7bS5wcmljZS5vdXR9IG91dGAgOiBtLnByb3ZpZGVyID09PSAnY29kZXgnID8gJ3N1YnNjcmlwdGlvbicgOiAncHJpY2UgdW5rbm93bid9XG4gICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnttLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIaXN0b3J5UGFuZWwoeyBwcm9tcHRzLCBzY29wZXMsIHNjb3BlSW5kZXgsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChwcm9tcHRzWzBdIHx8IG51bGwpXG4gIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBhbnlNYXRjaCA9IHByb21wdHMuc29tZSgocCkgPT4gZnV6enlTY29yZShxdWVyeSgpLCBwLnRleHQpID49IDApXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJTZWFyY2ggcHJvbXB0c1wiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gZWRpdCBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17cHJvbXB0c31cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9tcHRzLi4uXCJcbiAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC50ZXh0KSA+PSAwfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldFF1ZXJ5fVxuICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvblBpY2socC50ZXh0KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3RpbWVBZ28ocC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge2FueU1hdGNoICYmIHByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRleHQuc2xpY2UoMCwgMjAwMCl9PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgcHJvbXB0czwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmV3aW5kUGlja1BhbmVsKHsgZW50cmllcywgc3RhdHMsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChlbnRyaWVzWzBdIHx8IG51bGwpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlJld2luZCB0byBhIG1lc3NhZ2VcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGNob29zZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2VudHJpZXN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVzc2FnZXMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KG0pID0+IHNldFByZXZpZXcobSl9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7c3RhdHMobS5pbmRleCkubXNnc30gYWZ0ZXJgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgcmV3aW5kaW5nIGhlcmUgZHJvcHMgJHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLm1zZ3N9IGVudHJpZXNgfTwvdGV4dD5cbiAgICAgICAgICAgICAge3N0YXRzKHByZXZpZXcoKS5pbmRleCkuZWRpdHMubWFwKChtLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIFx1MjFBOSAke20udGl0bGV9YH08L3RleHQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3ByZXZpZXcoKS50ZXh0LnNsaWNlKDAsIDIwMDApfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgbWVzc2FnZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZEFjdGlvblBhbmVsKHsgdGFyZ2V0LCBvcHRpb25zLCBmb2N1c2VkLCBvblN1Ym1pdCwgb25CYWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PlJld2luZCBvcHRpb25zPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnsndG86ICd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt0YXJnZXQudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtvcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NH1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uU3VibWl0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkJhY2t9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG8sIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57by5sYWJlbH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7by5kZXNjfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyIHRvIGNvbmZpcm0gXHUwMEI3IGVzYyB0byBwaWNrIGEgZGlmZmVyZW50IG1lc3NhZ2U8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRXNjYXBlKGZvY3VzZWQsIG9uQ2xvc2UpIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKCkpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzdW1lUGFuZWwoeyBzZXNzaW9ucywgc2NvcGVzLCBzY29wZUluZGV4LCBsb2FkaW5nLCBmb2N1c2VkLCBvblBpY2ssIG9uRGVsZXRlLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHNlc3Npb25zWzBdIHx8IG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcoKSkge1xuICAgICAgb25EZWxldGUocHJldmlldygpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJSZXN1bWUgYSBzZXNzaW9uXCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byByZXN1bWUgXHUwMEI3IGN0cmwreCBkZWxldGUgXHUwMEI3IGVzYyB0byBjbG9zZVwiXG4gICAgICByaWdodD17PFNjb3BlVGFicyBzY29wZXM9e3Njb3Blc30gYWN0aXZlPXtzY29wZUluZGV4fSAvPn1cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgc2Vzc2lvbnMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHNlc3Npb25zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBzZXNzaW9ucyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e3Nlc3Npb25zfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmICFsb2FkaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBzZXNzaW9ucy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIHMpID0+IGZ1enp5U2NvcmUocSwgcy50aXRsZSkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhzKSA9PiBzZXRQcmV2aWV3KHMpfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5jb2xvciAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogcy5jb2xvciB9fT57J1x1MjVBQSAnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e3MudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3RpbWVBZ28ocy5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtwcmV2aWV3KCkudHVybnN9ICR7cHJldmlldygpLnR1cm5zID09PSAxID8gJ3R1cm4nIDogJ3R1cm5zJ30gXHUwMEI3ICR7dGltZUFnbyhwcmV2aWV3KCkuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntwcmV2aWV3KCkuaGVhZGVyLnJvb3R9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3ByZXZpZXcoKS50aXRsZS5zbGljZSgwLCA1MDApfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gc2Vzc2lvbnM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1lbW9yeVBhbmVsKHsgbWVtb3JpZXMsIHNjb3Blcywgc2NvcGVJbmRleCwgZm9jdXNlZCwgb25Gb3JnZXQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29ySXRlbSwgc2V0Q3Vyc29ySXRlbV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3BhbmUsIHNldFBhbmVdID0gY3JlYXRlU2lnbmFsKCdsaXN0JylcbiAgY29uc3QgcHJldmlldyA9IG1lbW9yaWVzLmluY2x1ZGVzKGN1cnNvckl0ZW0oKSkgPyBjdXJzb3JJdGVtKCkgOiBtZW1vcmllc1swXSB8fCBudWxsXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICd0YWInICYmICFldmVudC5jdHJsICYmICFldmVudC5tZXRhKSB7XG4gICAgICBzZXRQYW5lKChwKSA9PiAocCA9PT0gJ2xpc3QnID8gJ3ByZXZpZXcnIDogJ2xpc3QnKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldykge1xuICAgICAgb25Gb3JnZXQocHJldmlldylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTWVtb3J5XCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgdGFiOiBmb2N1cyBwcmV2aWV3IFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGN0cmwreCBmb3JnZXQgKHR3aWNlKSBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge21lbW9yaWVzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtZW1vcmllcyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21lbW9yaWVzfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIHBhbmUoKSA9PT0gJ2xpc3QnfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtZW1vcmllcy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgYCR7bS5uYW1lfSAke20uZGVzY3JpcHRpb259YCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9e3NldEN1cnNvckl0ZW19XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsoKSA9PiB7fX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke20uc2NvcGV9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldyA/IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZCAmJiBwYW5lKCkgPT09ICdwcmV2aWV3J30gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57cHJldmlldy5kZXNjcmlwdGlvbiB8fCAnbm8gZGVzY3JpcHRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e3ByZXZpZXcuYm9keX08L3RleHQ+XG4gICAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1lbW9yaWVzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZvcnRQYW5lbCh7IGxldmVscywgY3VycmVudCwgZGVmYXVsdExldmVsLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IGl0ZW1zID0gbGV2ZWxzXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJykge1xuICAgICAgb25QaWNrRGVmYXVsdChpdGVtc1tjdXJzb3IoKV0pXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBsYWJlbCA9IChsKSA9PiAobC5rZXkgPT09IG51bGwgPyAnZGVmYXVsdCcgOiBsLmtleSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhpbmtpbmcgZWZmb3J0XCIgaGludD1cImovayB0byBtb3ZlIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEN1cnNvcn1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KGwsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntsYWJlbChsKS5wYWRFbmQoTWF0aC5tYXgoMTAsIGxhYmVsKGwpLmxlbmd0aCArIDEpKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57bC5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAge2wua2V5ID09PSBjdXJyZW50ICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PnsnICBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICAgIHtsLmtleSA9PT0gZGVmYXVsdExldmVsICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57JyAgXHUwMEI3IGRlZmF1bHQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVBhbmVsKHsgdGhlbWVzLCBwcmVmLCBmb2N1c2VkLCBvblBpY2ssIG9uUHJldmlldywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwoTWF0aC5tYXgoMCwgdGhlbWVzLmZpbmRJbmRleCgodCkgPT4gdC5rZXkgPT09IHByZWYpKSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhlbWVcIiBoaW50PVwiai9rIHRvIG1vdmUgYW5kIHByZXZpZXcgXHUwMEI3IGVudGVyIHRvIGFwcGx5IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgaXRlbXM9e3RoZW1lc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9eyhpKSA9PiB7XG4gICAgICAgICAgICBzZXRDdXJzb3IoaSlcbiAgICAgICAgICAgIG9uUHJldmlldyh0aGVtZXNbaV0pXG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHQsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19Pnt0LmtleS5wYWRFbmQoTWF0aC5tYXgoMTAsIHQua2V5Lmxlbmd0aCArIDEpKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57dC5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAge3Qua2V5ID09PSBwcmVmICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PnsnICBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmZvTGlzdFBhbmVsKHsgdGl0bGUsIHJvd3MsIGZvY3VzZWQsIG9uQ2xvc2UgfSkge1xuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPXt0aXRsZX0gaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTQsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3Jvd3MubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ub3RoaW5nIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGkpID0+IChcbiAgICAgICAgICAgICAgPGJveCBrZXk9e2Ake3Jvdy5uYW1lfS0ke2l9YH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e3Jvdy5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIHtyb3cubm90ZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3Jvdy5ub3RlfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntyb3cuZGVzYyB8fCAnbm8gZGVzY3JpcHRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJvamVjdFBhbmVsKHsgcHJvamVjdHMsIGxvYWRpbmcsIGZvY3VzZWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvamVjdHNbMF0gfHwgbnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldygpKSB7XG4gICAgICBvbkRlbGV0ZShwcmV2aWV3KCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU3dpdGNoIHByb2plY3RcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGp1bXAgdG8gaXRzIGxhc3Qgc2Vzc2lvbiBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgcHJvamVjdHMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHByb2plY3RzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBrbm93biBwcm9qZWN0cyB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtwcm9qZWN0c31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgcHJvamVjdHMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBwKSA9PiBmdXp6eVNjb3JlKHEsIHAucGF0aCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5sYXRlc3QuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHAubGF0ZXN0LmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC5wYXRofTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtwLmN1cnJlbnQgPyAnY3VycmVudCBcdTAwQjcgJyA6ICcnfSR7dGltZUFnbyhwLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHLCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57cHJldmlldygpLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS5jb3VudH0gJHtwcmV2aWV3KCkuY291bnQgPT09IDEgPyAnc2Vzc2lvbicgOiAnc2Vzc2lvbnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5sYXRlc3QuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2BsYXN0OiAke3ByZXZpZXcoKS5sYXRlc3QudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHByb2plY3RzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaGVsbHNQYW5lbCh7IHZlcnNpb24sIHNoZWxscywgcmVhZE91dHB1dCwgZm9jdXNlZCwgb25LaWxsLCBvbkRpc21pc3MsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcbiAgdm9pZCB2ZXJzaW9uXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzaGVsbHNbTWF0aC5taW4oaW5kZXgoKSwgc2hlbGxzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkIHx8IHZpZXdpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgcyA9IHNlbGVjdGVkKClcbiAgICBpZiAocyAmJiBldmVudC5rZXkgPT09ICdrJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25LaWxsKHMpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH0gZWxzZSBpZiAocyAmJiBldmVudC5rZXkgPT09ICdkJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25EaXNtaXNzKHMpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCB1cHRpbWUgPSAocykgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKCgocy5lbmRlZEF0IHx8IERhdGUubm93KCkpIC0gcy5zdGFydGVkQXQpIC8gMTAwMClcbiAgICByZXR1cm4gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tJHtzZWNzICUgNjB9c2BcbiAgfVxuXG4gIGlmICh2aWV3aW5nKCkpIHtcbiAgICBjb25zdCBvdXQgPSByZWFkT3V0cHV0KHZpZXdpbmcoKSlcbiAgICBpZiAoIW91dCkge1xuICAgICAgc2V0Vmlld2luZyhudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lcyA9IG91dC5vdXRwdXQgPyBvdXQub3V0cHV0LnNwbGl0KCdcXG4nKSA6IFtdXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UGFuZWxGcmFtZVxuICAgICAgICAgIHRpdGxlPXtgc2hlbGwgJHtvdXQuaWR9IFx1MDBCNyAke291dC5jb21tYW5kLnNsaWNlKDAsIDYwKX1gfVxuICAgICAgICAgIGhpbnQ9e2Ake291dC5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdydW5uaW5nJyA6IGBleGl0ZWQgXHUwMEI3IGNvZGUgJHtvdXQuZXhpdENvZGV9YH0gXHUwMEI3ICR7b3V0LnRvdGFsTGluZXN9IGxpbmVzIFx1MDBCNyBqL2sgc2Nyb2xsIFx1MDBCNyBlc2MgYmFja2B9XG4gICAgICAgID5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE2LCBtYXJnaW5Ub3A6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gb3V0cHV0IHlldDwvdGV4dD5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsT2Zmc2V0PXsxZTl9IG9uU2Nyb2xsPXsoKSA9PiB7fX0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIHtsaW5lcy5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L1BhbmVsRnJhbWU+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNoZWxsc1wiIGhpbnQ9XCJlbnRlciB2aWV3IG91dHB1dCBcdTAwQjcgayBraWxsIFx1MDBCNyBkIGRpc21pc3MgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7c2hlbGxzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gYmFja2dyb3VuZCBzaGVsbHMgXHUwMEI3IHRoZSBhZ2VudCBzdGFydHMgdGhlbSB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZTwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3NoZWxsc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VibWl0PXsocykgPT4gc2V0Vmlld2luZyhzLmlkKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gYWNjZW50KCkgOiBzLmV4aXRDb2RlID09PSAwID8gTVVURUQgOiBSRUQgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdcdTI2OTknIDogcy5leGl0Q29kZSA9PT0gMCA/ICdcdTI3MTMnIDogJ1x1MjcxNyd9XG4gICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cy5pZC5wYWRFbmQoTWF0aC5tYXgoMywgcy5pZC5sZW5ndGggKyAxKSl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBhY3RpdmUgPyBGRyA6IEZHX1NPRlQgfX0+e3MuY29tbWFuZH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke3Muc3RhdHVzID09PSAncnVubmluZycgPyBgdXAgJHt1cHRpbWUocyl9YCA6IGBleGl0ICR7cy5leGl0Q29kZX0gXHUwMEI3ICR7dXB0aW1lKHMpfWB9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25uZWN0UGFuZWwoeyBwcm92aWRlcnMsIGZvY3VzZWQsIG9uQ29ubmVjdCwgb25EaXNjb25uZWN0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBwcm92aWRlcnNbTWF0aC5taW4oaW5kZXgoKSwgcHJvdmlkZXJzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCBwID0gc2VsZWN0ZWQoKVxuICAgIGlmIChwICYmIGV2ZW50LmtleSA9PT0gJ2QnICYmICFldmVudC5jdHJsICYmIHAuY29ubmVjdGVkKSB7XG4gICAgICBvbkRpc2Nvbm5lY3QocClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25uZWN0IGEgc3Vic2NyaXB0aW9uXCIgaGludD1cImVudGVyIHNpZ24gaW4gXHUwMEI3IGQgZGlzY29ubmVjdCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtwcm92aWRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvbkNvbm5lY3QocCl9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBwLmNvbm5lY3RlZCA/IGFjY2VudCgpIDogTVVURUQgfX0+e3AuY29ubmVjdGVkID8gJ1x1MjVBQScgOiAnXHUyNUFCJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cC5sYWJlbH0gIGB9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmNvbm5lY3RlZCA/IGBjb25uZWN0ZWQke3AuZW1haWwgPyBgIGFzICR7cC5lbWFpbH1gIDogJyd9YCA6ICdub3QgY29ubmVjdGVkJ31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gV2FrZXVwc1BhbmVsKHsgd2FrZXVwcywgZm9jdXNlZCwgb25DYW5jZWwsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdGljaywgc2V0VGlja10gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUludGVydmFsKCgpID0+IHNldFRpY2soKHQpID0+IHQgKyAxKSwgMTAwMClcbiAgdm9pZCB0aWNrKClcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHdha2V1cHNbTWF0aC5taW4oaW5kZXgoKSwgd2FrZXVwcy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgdyA9IHNlbGVjdGVkKClcbiAgICBpZiAodyAmJiBldmVudC5rZXkgPT09ICdrJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25DYW5jZWwodylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGNvdW50ZG93biA9IChhdCkgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpXG4gICAgaWYgKHNlY3MgPCA2MCkgcmV0dXJuIGBpbiAke3NlY3N9c2BcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNzIC8gNjApXG4gICAgaWYgKG1pbnMgPCA2MCkgcmV0dXJuIGBpbiAke21pbnN9bSAke3NlY3MgJSA2MH1zYFxuICAgIHJldHVybiBgaW4gJHtNYXRoLmZsb29yKG1pbnMgLyA2MCl9aCAke21pbnMgJSA2MH1tYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNjaGVkdWxlZCB3YWtlLXVwc1wiIGhpbnQ9XCJlbnRlciBvciBrIGNhbmNlbCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHt3YWtldXBzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcGVuZGluZyB3YWtlLXVwcyBcdTAwQjcgdGhlIGFnZW50IHNjaGVkdWxlcyB0aGVtIHdpdGggc2NoZWR1bGVfd2FrZXVwPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17d2FrZXVwc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyh3KSA9PiBvbkNhbmNlbCh3KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHcsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgXHUyM0YwICR7dy5pZH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57Y291bnRkb3duKHcuYXQpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtuZXcgRGF0ZSh3LmF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEsIGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt3Lm5vdGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5jb25zdCBNQ1BfU1RBVFVTID0ge1xuICBjb25uZWN0ZWQ6IHsgaWNvbjogJ1x1MjVBQScsIGNvbG9yOiBhY2NlbnQoKSB9LFxuICBjb25uZWN0aW5nOiB7IGljb246ICdcdTI1Q0MnLCBjb2xvcjogJyNmYmJmMjQnIH0sXG4gIGVycm9yOiB7IGljb246ICdcdTI3MTcnLCBjb2xvcjogUkVEIH0sXG4gIGRpc2FibGVkOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogRkFJTlQgfSxcbiAgaWRsZTogeyBpY29uOiAnXHUyNUFCJywgY29sb3I6IE1VVEVEIH0sXG59XG5cbmZ1bmN0aW9uIEZvcm1GaWVsZCh7IGxhYmVsLCBhY3RpdmUsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gTWNwQWRkRm9ybSh7IGZvY3VzZWQsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2FuY2VsIH0pIHtcbiAgY29uc3QgW25hbWUsIHNldE5hbWVdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbc2NvcGUsIHNldFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgnZ2xvYmFsJylcbiAgY29uc3QgW3RyYW5zcG9ydCwgc2V0VHJhbnNwb3J0XSA9IGNyZWF0ZVNpZ25hbCgnc3RkaW8nKVxuICBjb25zdCBbdGFyZ2V0LCBzZXRUYXJnZXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbaGVhZGVycywgc2V0SGVhZGVyc10gPSBjcmVhdGVTaWduYWwoJycpXG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICduYW1lJyB9KVxuICBmbS5pdGVtKCduYW1lJylcbiAgZm0uaXRlbSgnc2NvcGUnKVxuICBmbS5pdGVtKCd0cmFuc3BvcnQnKVxuICBmbS5pdGVtKCd0YXJnZXQnKVxuICBpZiAodHJhbnNwb3J0KCkgPT09ICdodHRwJykgZm0uaXRlbSgnaGVhZGVycycpXG4gIGZtLml0ZW0oJ2FkZCcpXG4gIGZtLml0ZW0oJ2NhbmNlbCcpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DYW5jZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgaHR0cCA9IHRyYW5zcG9ydCgpID09PSAnaHR0cCdcblxuICBjb25zdCBzdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyTmFtZSA9IG5hbWUoKS50cmltKClcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldCgpLnRyaW0oKVxuICAgIGlmICghc2VydmVyTmFtZSB8fCAvXFxzLy50ZXN0KHNlcnZlck5hbWUpKSByZXR1cm4gb25JbnZhbGlkKCduYW1lIGlzIHJlcXVpcmVkIGFuZCBjYW5ub3QgY29udGFpbiBzcGFjZXMnKVxuICAgIGlmICghdmFsdWUpIHJldHVybiBvbkludmFsaWQoaHR0cCA/ICd1cmwgaXMgcmVxdWlyZWQnIDogJ2NvbW1hbmQgaXMgcmVxdWlyZWQnKVxuICAgIGlmIChodHRwICYmICEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCd1cmwgbXVzdCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8nKVxuICAgIGlmICghaHR0cCAmJiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCdhIHN0ZGlvIGNvbW1hbmQgY2Fubm90IHN0YXJ0IHdpdGggYSB1cmw7IHBpY2sgdGhlIGh0dHAgdHJhbnNwb3J0JylcbiAgICBjb25zdCBleHRyYSA9IGhlYWRlcnMoKS50cmltKClcbiAgICBvbkFkZChzZXJ2ZXJOYW1lLCBodHRwICYmIGV4dHJhID8gYCR7dmFsdWV9ICR7ZXh0cmF9YCA6IHZhbHVlLCBzY29wZSgpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwibmFtZVwiIGFjdGl2ZT17Zm0uaXMoJ25hbWUnKX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ25hbWUnKX0gcGxhY2Vob2xkZXI9XCJsaW5lYXJcIiBvbkNoYW5nZT17c2V0TmFtZX0gLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJzY29wZVwiIGFjdGl2ZT17Zm0uaXMoJ3Njb3BlJyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydnbG9iYWwnLCAncHJvamVjdCddfSBzZWxlY3RlZD17c2NvcGUoKX0gb25DaGFuZ2U9e3NldFNjb3BlfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzY29wZScpfSAvPlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwidHJhbnNwb3J0XCIgYWN0aXZlPXtmbS5pcygndHJhbnNwb3J0Jyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydzdGRpbycsICdodHRwJ119IHNlbGVjdGVkPXt0cmFuc3BvcnQoKX0gb25DaGFuZ2U9e3NldFRyYW5zcG9ydH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndHJhbnNwb3J0Jyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9e2h0dHAgPyAndXJsJyA6ICdjb21tYW5kJ30gYWN0aXZlPXtmbS5pcygndGFyZ2V0Jyl9PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndGFyZ2V0Jyl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aHR0cCA/ICdodHRwczovL21jcC5saW5lYXIuYXBwL21jcCcgOiAnbnB4IC15IEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZXJ2ZXItZmlsZXN5c3RlbSAvdG1wJ31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRUYXJnZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIHtodHRwICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cImhlYWRlcnMgXHUwMEI3IG9wdGlvbmFsXCIgYWN0aXZlPXtmbS5pcygnaGVhZGVycycpfT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2hlYWRlcnMnKX0gcGxhY2Vob2xkZXI9J0F1dGhvcml6YXRpb249XCJCZWFyZXIgLi4uXCIgWC1UZWFtPVwiY29yZVwiJyBvbkNoYW5nZT17c2V0SGVhZGVyc30gLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cImFkZFwiIG9uUHJlc3M9e3N1Ym1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnYWRkJyl9IC8+XG4gICAgICAgIDx0ZXh0PiAgPC90ZXh0PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiY2FuY2VsXCIgb25QcmVzcz17b25DYW5jZWx9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2NhbmNlbCcpfSB2YXJpYW50PVwiZGltXCIgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNY3BQYW5lbCh7IHNlcnZlcnMsIGZvY3VzZWQsIG9uVG9nZ2xlLCBvblJlY29ubmVjdCwgb25SZW1vdmUsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbYWRkaW5nLCBzZXRBZGRpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQgJiYgIWFkZGluZygpLCAoKSA9PiAodmlld2luZygpID8gc2V0Vmlld2luZyhudWxsKSA6IG9uQ2xvc2UoKSkpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzZXJ2ZXJzW01hdGgubWluKGluZGV4KCksIHNlcnZlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcbiAgY29uc3Qgdmlld2VkID0gKCkgPT4gc2VydmVycy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHZpZXdpbmcoKSkgfHwgbnVsbFxuXG4gIGlmICh2aWV3aW5nKCkgJiYgdmlld2VkKCkpIHtcbiAgICBjb25zdCBzZXJ2ZXIgPSB2aWV3ZWQoKVxuICAgIGNvbnN0IGRlc2NyaWJlID0gKHQpID0+IHQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXlxcW1teXFxdXSpcXF1cXHMqLywgJycpLnRyaW0oKSB8fCAnbm8gZGVzY3JpcHRpb24nXG4gICAgcmV0dXJuIChcbiAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgIHRpdGxlPXtgTUNQIHNlcnZlcnMgXHUwMEI3ICR7c2VydmVyLm5hbWV9IFx1MDBCNyAke3NlcnZlci50b29scy5sZW5ndGh9ICR7c2VydmVyLnRvb2xzLmxlbmd0aCA9PT0gMSA/ICd0b29sJyA6ICd0b29scyd9YH1cbiAgICAgICAgaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgYmFjayB0byBzZXJ2ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHRvb2xzIHJlcG9ydGVkIFx1MDBCNyBpcyB0aGUgc2VydmVyIGNvbm5lY3RlZD88L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICB7c2VydmVyLnRvb2xzLm1hcCgodCwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3gga2V5PXt0Lm5hbWV9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57dC5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57ZGVzY3JpYmUodCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9QYW5lbEZyYW1lPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTUNQIHNlcnZlcnNcIlxuICAgICAgaGludD17YWRkaW5nKClcbiAgICAgICAgPyAndGFiIG1vdmVzIGJldHdlZW4gZmllbGRzIFx1MDBCNyBqL2sgKyBzcGFjZSBwaWNrcyBhIHJhZGlvIG9wdGlvbiBcdTAwQjcgZXNjIGNhbmNlbHMnXG4gICAgICAgIDogJ3NwYWNlL2VudGVyIHRvZ2dsZSBcdTAwQjcgdCB0b29scyBcdTAwQjcgciByZWNvbm5lY3QgXHUwMEI3IGEgYWRkIFx1MDBCNyBkIHJlbW92ZSBcdTAwQjcgZXNjIGNsb3NlJ31cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHthZGRpbmcoKSA/IChcbiAgICAgICAgICA8TWNwQWRkRm9ybVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG9uQWRkPXsobmFtZSwgc3BlYywgc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgb25BZGQobmFtZSwgc3BlYywgc2NvcGUpXG4gICAgICAgICAgICAgIHNldEFkZGluZyhmYWxzZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkludmFsaWQ9e29uSW52YWxpZH1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRBZGRpbmcoZmFsc2UpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBzZXJ2ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gTUNQIHNlcnZlcnMgY29uZmlndXJlZCBcdTAwQjcgcHJlc3MgYSB0byBhZGQgb25lPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2VydmVyc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IG9uVG9nZ2xlKHMubmFtZSl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IGFjdGl2ZSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ID0gTUNQX1NUQVRVU1tzLnN0YXR1c10gfHwgTUNQX1NUQVRVUy5pZGxlXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc3QuY29sb3IgfX0+e3N0Lmljb259PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLm5hbWUucGFkRW5kKE1hdGgubWF4KDE0LCBzLm5hbWUubGVuZ3RoICsgMSkpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAge3Muc2NvcGUgPT09ICdwcm9qZWN0JyAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTAwQjdwICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IFJFRCA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IHMuZXJyb3IgOiBzLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgPyBgJHtzLnRvb2xDb3VudH0gdG9vbHNgIDogcy5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YCAgJHtzLmNvbW1hbmQuc2xpY2UoMCwgNDApfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICAgIHshYWRkaW5nKCkgJiYgKFxuICAgICAgICA8TWNwS2V5c1xuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgb25LZXk9eyhrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBzZWxlY3RlZCgpXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnYScpIHNldEFkZGluZyh0cnVlKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICcgJykgb25Ub2dnbGUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdyJykgb25SZWNvbm5lY3Qocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdkJykgb25SZW1vdmUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICd0Jykgc2V0Vmlld2luZyhzLm5hbWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcEtleXMoeyBmb2N1c2VkLCBvbktleSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKFsnICcsICdhJywgJ3InLCAnZCcsICd0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgb25LZXkoZXZlbnQua2V5KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiBudWxsXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7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YSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxHQUFFLEtBQU0sRUFBQyxVQUFXLEVBQUMsTUFBTyxFQUFDLFdBQVksRUFBQyxNQUFPLE1BQUssRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsTUFBSyxPQUFRLENBQUMsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLE1BQUssTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEVBQUMsRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMs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cHJvdmlkZXJzIiwgImNhY2hlZCIsICJtb2RlbHMiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAiY2FjaGVGaWxlIiwgImNhY2hlZCIsICJUVEwiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAiY29uZmlnIiwgImV4aXN0c1N5bmMiLCAiaG9tZWRpciIsICJkaXJuYW1lIiwgImpvaW4iLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJqb2luIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY2FuRGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJjb25maWciLCAic2NvcGUiLCAicGVuZGluZyIsICJyZWdpc3RyeSIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgIndyaXRlRmlsZSIsICJqb2luIiwgInNjYW5EaXIiLCAic2NvcGUiLCAiaG9tZWRpciIsICJjb25maWciLCAic2hlbGxzIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAidW5saW5rIiwgImpvaW4iLCAic2NvcGUiLCAicGFyc2VBcmdzIiwgImNhbGwiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAic2NvcGUiLCAiZXhpc3RzU3luYyIsICJqb2luIiwgIm1vZGVscyIsICJwcm92aWRlcnMiLCAiY2hhdGdwdCIsICJjYXRhbG9nRGF0YSIsICJjb2RleENyZWRzIiwgImNvbmZpZyIsICJtb2RlbCIsICJib290IiwgInNoZWxscyIsICJyZWFkRmlsZVN5bmMiLCAicmVzb2x2ZSIsICJ0aGVtZSIsICJ3YWtldXBzIiwgImV4aXN0c1N5bmMiLCAid3JpdGVGaWxlIiwgImhvbWVkaXIiLCAiam9pbiIsICJjcmVhdGVTaWduYWwiLCAiTWVudSIsICJTY3JvbGxCb3giLCAidXNlRm9jdXMiLCAidXNlSW5wdXQiLCAiYXBwZW5kRmlsZSIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NvcGUiLCAicmVhZGRpciIsICJzdGF0IiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJmZyIsICJUVEwiLCAicmVzb2x2ZSIsICJjcmVhdGVTaWduYWwiLCAiY3JlYXRlU2lnbmFsIiwgInRoZW1lIiwgImZhaWxlZCIsICJ2ZXJzaW9uIiwgIk1hcmtkb3duIiwgImpzeCIsICJqc3hzIiwgIk1hcmtkb3duIiwgImNyZWF0ZVNpZ25hbCIsICJTY3JvbGxCb3giLCAidXNlSW5wdXQiLCAianN4IiwgImpzeHMiLCAibW9kZWxzIiwgImNyZWF0ZVNpZ25hbCIsICJ1c2VJbnB1dCIsICJTY3JvbGxCb3giLCAidmVyc2lvbiIsICJzaGVsbHMiLCAicHJvdmlkZXJzIiwgIndha2V1cHMiLCAic2NvcGUiLCAianN4IiwgImpzeHMiLCAiYm9vdCIsICJ2ZXJzaW9uIiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAibW9kZWwiLCAiZGVmYXVsdE1vZGVsIiwgIml0ZW1zIiwgInVzYWdlIiwgImpvaW4iLCAid3JpdGVGaWxlIiwgImhvbWVkaXIiLCAidXNlRm9jdXMiLCAidXNlSW5wdXQiLCAiZXhpc3RzU3luYyIsICJTY3JvbGxCb3giLCAiTWVudSIsICJzY29wZSIsICJqc3giLCAicmVhZEZpbGVTeW5jIiwgImNvbm5lY3RPcGVuQUkiLCAicnVuSGVhZGxlc3MiXQp9Cg==
|
|
5996
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy91aS9mdXp6eS5qcyIsICIuLi9zcmMvdWkvYXR0YWNobWVudHMuanMiLCAiLi4vc3JjL2hlYWRsZXNzLmpzIiwgIi4uL3NyYy9tYWluLmpzeCIsICIuLi9zcmMvY2xpLWFyZ3MuanMiLCAiLi4vc3JjL2NvcmUvdGVybWluYWwtdGhlbWUuanMiLCAiLi4vc3JjL2NvcmUvd2FrZXVwcy5qcyIsICIuLi9zcmMvdWkvYXBwLmpzeCIsICIuLi9zcmMvY29yZS9oaXN0b3J5LmpzIiwgIi4uL3NyYy9jb3JlL3VzZXItdG9vbHMuanMiLCAiLi4vc3JjL2NvcmUvcmV3aW5kLmpzIiwgIi4uL3NyYy9jb3JlL2V4cG9ydC5qcyIsICIuLi9zcmMvdWkvY29tcGxldGlvbi5qcyIsICIuLi9zcmMvdWkvZmlsZXMuanMiLCAiLi4vc3JjL3VpL2hpZ2hsaWdodC5qcyIsICIuLi9zcmMvdWkvdGhlbWUuanMiLCAiLi4vc3JjL3VpL3RyYW5zY3JpcHQuanN4IiwgIi4uL3NyYy91aS9oZWxwLmpzeCIsICIuLi9zcmMvdWkvcGFuZWxzLmpzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgc2V0S2V5cyB9IGZyb20gJ0BwcnNtL2FpJ1xuXG5jb25zdCBQUk9WSURFUlMgPSBbXG4gIHsgaWQ6ICdnb29nbGUnLCBsYWJlbDogJ0dlbWluaScsIGVudjogWydHRU1JTklfQVBJX0tFWScsICdHT09HTEVfQUlfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICdhbnRocm9waWMnLCBsYWJlbDogJ0NsYXVkZScsIGVudjogWydBTlRIUk9QSUNfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSScsIGVudjogWydPUEVOQUlfQVBJX0tFWSddIH0sXG4gIHsgaWQ6ICd4YWknLCBsYWJlbDogJ0dyb2snLCBlbnY6IFsnWEFJX0FQSV9LRVknXSB9LFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzY292ZXJLZXlzKGVudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IGtleXMgPSB7fVxuICBmb3IgKGNvbnN0IHAgb2YgUFJPVklERVJTKSB7XG4gICAgY29uc3QgbmFtZSA9IHAuZW52LmZpbmQoKG4pID0+IGVudltuXSlcbiAgICBpZiAobmFtZSkga2V5c1twLmlkXSA9IGVudltuYW1lXVxuICB9XG4gIHJldHVybiBrZXlzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUtleXMoa2V5cykge1xuICBzZXRLZXlzKGtleXMpXG4gIHJldHVybiBPYmplY3Qua2V5cyhrZXlzKVxufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5SGludChwcm92aWRlcklkKSB7XG4gIHJldHVybiBQUk9WSURFUlMuZmluZCgocCkgPT4gcC5pZCA9PT0gcHJvdmlkZXJJZCk/LmVudlswXSB8fCBgJHtwcm92aWRlcklkLnRvVXBwZXJDYXNlKCl9X0FQSV9LRVlgXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpIHtcbiAgcmV0dXJuIG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRNb2RlbChtb2RlbHMpIHtcbiAgcmV0dXJuIG1vZGVscy5maW5kKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzdGltYXRlQ29zdChtb2RlbCwgdXNhZ2UpIHtcbiAgaWYgKCFtb2RlbD8ucHJpY2UgfHwgIXVzYWdlKSByZXR1cm4gMFxuICBjb25zdCBpbkNvc3QgPSAodXNhZ2UucHJvbXB0VG9rZW5zIHx8IDApICogbW9kZWwucHJpY2UuaW5cbiAgY29uc3Qgb3V0Q29zdCA9ICh1c2FnZS5jb21wbGV0aW9uVG9rZW5zIHx8IDApICogbW9kZWwucHJpY2Uub3V0XG4gIHJldHVybiAoaW5Db3N0ICsgb3V0Q29zdCkgLyAxZTZcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5leHBvcnQgZnVuY3Rpb24gcGljb0hvbWUoKSB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5QSUNPX0hPTUUgfHwgam9pbihob21lZGlyKCksICcucGljbycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0S2V5KHJvb3QpIHtcbiAgcmV0dXJuIHJlc29sdmUocm9vdCkucmVwbGFjZSgvWy9cXFxcOl0vZywgJy0nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFByb2plY3RSb290KGN3ZCkge1xuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgJy5naXQnKSkpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIgfHwgZGlyID09PSBob21lKSByZXR1cm4gcmVzb2x2ZShjd2QpXG4gICAgZGlyID0gcGFyZW50XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3REaXIocm9vdCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnLCBwcm9qZWN0S2V5KHJvb3QpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vzc2lvbnNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnc2Vzc2lvbnMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ2hpc3RvcnkuanNvbmwnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1jcEZpbGUocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnbWNwLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsTWNwRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21jcC5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFNraWxsc0RpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3NraWxscycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0U2tpbGxzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ3NraWxscycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxBZ2VudHNGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnQUdFTlRTLm1kJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURpcihkaXIpIHtcbiAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgcmV0dXJuIGRpclxufVxuIiwgIntcImdvb2dsZVwiOntcIm1vZGVsc1wiOntcImdlbWluaS0zLjEtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgRmxhc2ggTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvdy1sYXRlbmN5IEdlbWluaSBtb2RlbCBmb3IgaGlnaC12b2x1bWUgbXVsdGltb2RhbCBhbmQgYWdlbnQgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MS41LFwiY2FjaGVfcmVhZFwiOjAuMDI1LFwiaW5wdXRfYXVkaW9cIjowLjV9fSxcImdlbWluaS0yLjUtZmxhc2gtcHJldmlldy10dHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaCBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxMH19LFwiZ2VtaW5pLTIuNS1wcm9cIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1wcm9cIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiR29vZ2xlJ3MgcHJvdmVuIHJlYXNvbmluZyBtb2RlbCBmb3IgY29kaW5nLCBtYXRoLCBhbmQgbXVsdGltb2RhbCBhbmFseXNpc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMjgsXCJtYXhcIjozMjc2OH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4yNX19fSxcImdlbWluaS0yLjUtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIHdvcmtob3JzZSBmb3IgbXVsdGltb2RhbCBhcHBzIHdoZXJlIGxhdGVuY3kgYW5kIHByaWNlIG1hdHRlclwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjowLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMyxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjAzLFwiaW5wdXRfYXVkaW9cIjoxfX0sXCJnZW1pbmktMy41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0zLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAzLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1tYS00LTMxYi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTMxYi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAzMUIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJMYXJnZXN0IEdlbW1hIDQgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIG9wZW4sIHNlbGYtaG9zdGVkIGNoYXQgYW5kIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTIuMC1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMi4wLWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRWFybGllciBHZW1pbmkgRmxhc2ggd29ya2hvcnNlIGZvciByZXNwb25zaXZlIG11bHRpbW9kYWwgYXBwcyBhbmQgdG9vbCB1c2VcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6ODE5Mn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIjp7XCJpZFwiOlwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIixcIm5hbWVcIjpcIkdlbWluaSBFbWJlZGRpbmcgMDAxXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwNDgsXCJvdXRwdXRcIjoxfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowfX0sXCJnZW1pbmktMy4xLXByby1wcmV2aWV3LWN1c3RvbXRvb2xzXCI6e1wiaWRcIjpcImdlbWluaS0zLjEtcHJvLXByZXZpZXctY3VzdG9tdG9vbHNcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgUHJvIFByZXZpZXcgQ3VzdG9tIFRvb2xzXCIsXCJkZXNjcmlwdGlvblwiOlwiQWR2YW5jZWQgR2VtaW5pIG1vZGVsIGZvciBjb21wbGV4IHJlYXNvbmluZywgY29kaW5nLCBhbmQgbXVsdGltb2RhbCBhbmFseXNpc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiOntcImlkXCI6XCJnZW1pbmktZmxhc2gtbGl0ZS1sYXRlc3RcIixcIm5hbWVcIjpcIkdlbWluaSBGbGFzaC1MaXRlIExhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkxvdy1sYXRlbmN5IEdlbWluaSBtb2RlbCBmb3IgaGlnaC12b2x1bWUgbXVsdGltb2RhbCBhbmQgYWdlbnQgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6NTEyLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIFBybyBmb3IgaGlnaGVyLWZpZGVsaXR5IGltYWdlIGdlbmVyYXRpb24gYW5kIGRlc2lnbi1oZWF2eSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyMH19LFwiZ2VtaW5pLTIuNS1mbGFzaC1pbWFnZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYVwiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIGltYWdlIG1vZGVsIGZvciBmYXN0IGdlbmVyYXRpb24sIGVkaXRzLCBhbmQgY2hhcmFjdGVyLWNvbnNpc3RlbnQgYXNzZXRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjMyNzY4LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlYW4gR2VtaW5pIDIuNSBsYW5lIGZvciBjaGVhcCBtdWx0aW1vZGFsIHRyYWZmaWMgYW5kIHF1aWNrIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjUxMixcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMSxcImlucHV0X2F1ZGlvXCI6MC4zfX0sXCJnZW1pbmktb21uaS1mbGFzaC1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS1vbW5pLWZsYXNoLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSBPbW5pIEZsYXNoIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJWaWRlbyBnZW5lcmF0aW9uIGFuZCBlZGl0aW5nIG1vZGVsIGZvciBmYXN0LCBjb252ZXJzYXRpb25hbCB0ZXh0LSBhbmQgaW1hZ2UtdG8tdmlkZW8gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA2LTMwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDYtMzBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiXSxcIm91dHB1dFwiOltcInZpZGVvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6MTcuNX19LFwiZ2VtaW5pLTMuMS1mbGFzaC1pbWFnZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtaW1hZ2UtcHJldmlld1wiLFwibmFtZVwiOlwiTmFubyBCYW5hbmEgMlwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo2NTUzNixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjYwfX0sXCJnZW1pbmktMy4xLXByby1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtcHJvLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgUHJvIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmctZmlyc3QgR2VtaW5pIHByZXZpZXcgZm9yIGFnZW50aWMgY29kaW5nIGFuZCBjb21wbGV4IHByb2JsZW0gc29sdmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbW1hLTQtMjZiLWE0Yi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTI2Yi1hNGItaXRcIixcIm5hbWVcIjpcIkdlbW1hIDQgMjZCIEE0QiBJVFwiLFwiZGVzY3JpcHRpb25cIjpcIk9wZW4gR2VtbWEgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIGVmZmljaWVudCBjaGF0IGFuZCBzZWxmLWhvc3RlZCBkZXBsb3ltZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTMtcHJvLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzIFBybyBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiUHJldmlldyBHZW1pbmkgZmxhZ3NoaXAgZm9yIGNvbXBsZXggcmVhc29uaW5nLCBjb2RpbmcsIGFuZCByaWNoIG11bHRpbW9kYWwgcHJvbXB0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTE4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMThcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdlbWluaS0zLWZsYXNoLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMgRmxhc2ggUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIk5ldyBHZW1pbmkgZmxhc2ggbGFuZSBicmluZ2luZyBmcm9udGllci1zdHlsZSBtdWx0aW1vZGFsIHJlYXNvbmluZyB0byBjaGVhcGVyIHJ1bnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjozLFwiY2FjaGVfcmVhZFwiOjAuMDUsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IFBybyBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MjB9fSxcImdlbWluaS1mbGFzaC1sYXRlc3RcIjp7XCJpZFwiOlwiZ2VtaW5pLWZsYXNoLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoIExhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIG1vZGVsIGJhbGFuY2luZyBtdWx0aW1vZGFsIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCBjb3N0XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjAsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMDc1LFwiaW5wdXRfYXVkaW9cIjoxfX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoLUxpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4wNzUsXCJvdXRwdXRcIjowLjN9fX19LFwiYW50aHJvcGljXCI6e1wibW9kZWxzXCI6e1wiY2xhdWRlLW9wdXMtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMVwiOntcImlkXCI6XCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgSGFpa3UgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBDbGF1ZGUgbW9kZWwgZm9yIHJlc3BvbnNpdmUgYXNzaXN0YW5jZSwgY2xhc3NpZmljYXRpb24sIGFuZCBsaWdodHdlaWdodCBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLWhhaWt1XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAyLTI4XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTAtMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMC0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjEsXCJjYWNoZV93cml0ZVwiOjEuMjV9fSxcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTEtMjAyNTA4MDVcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDMtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjUsXCJjYWNoZV93cml0ZVwiOjE4Ljc1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBDbGF1ZGUgbW9kZWwgZm9yIGNvZGluZywgYW5hbHlzaXMsIGFnZW50IHdvcmtmbG93cywgYW5kIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA3LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLW9wdXMtNC03XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtN1wiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC43XCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nZXIgT3B1cyB0aWVyIGZvciBhZHZhbmNlZCBzb2Z0d2FyZSB3b3JrIGFuZCBoaWdoLXN0YWtlcyByZWFzb25pbmdcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNVwiLFwiZGVzY3JpcHRpb25cIjpcIkV2ZXJ5ZGF5IENsYXVkZSBhZ2VudCBtb2RlbCBmb3IgY29kaW5nLCBwbGFubmluZywgYnJvd3NpbmcsIGFuZCBnZW5lcmFsIHdvcmtcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0zMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX19LFwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC04XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtOFwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC44XCIsXCJkZXNjcmlwdGlvblwiOlwiVG9wIENsYXVkZSBPcHVzIHRpZXIgZm9yIHRoZSBoYXJkZXN0IHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo1MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNwZWVkXCI6XCJmYXN0XCJ9LFwiaGVhZGVyc1wiOntcImFudGhyb3BpYy1iZXRhXCI6XCJmYXN0LW1vZGUtMjAyNi0wMi0wMVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtb3B1cy00LTFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC0xXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjEgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAzLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjozMjAwMH0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS41LFwiY2FjaGVfd3JpdGVcIjoxOC43NX19LFwiY2xhdWRlLWZhYmxlLTVcIjp7XCJpZFwiOlwiY2xhdWRlLWZhYmxlLTVcIixcIm5hbWVcIjpcIkNsYXVkZSBGYWJsZSA1XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2xhdWRlIG1vZGVsIGZvciBjcmVhdGl2ZSB3cml0aW5nLCBhbmFseXNpcywgYW5kIGNvbnRyb2xsZWQgYWdlbnQgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1mYWJsZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19LFwiY2xhdWRlLWhhaWt1LTQtNVwiOntcImlkXCI6XCJjbGF1ZGUtaGFpa3UtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgSGFpa3UgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBDbGF1ZGUgbGFuZSBmb3IgbGlnaHR3ZWlnaHQgYWdlbnRzLCBvZmZpY2UgdGFza3MsIGFuZCByZXNwb25zaXZlIGNoYXRcIixcImZhbWlseVwiOlwiY2xhdWRlLWhhaWt1XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAyLTI4XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTAtMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMC0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjEsXCJjYWNoZV93cml0ZVwiOjEuMjV9fSxcImNsYXVkZS1vcHVzLTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTZcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZW5kIENsYXVkZSBmb3IgZGlmZmljdWx0IGNvZGluZywgcGxhbm5pbmcsIGFuZCBzbG93ZXIgZXhwZXJ0IHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNlwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjZcIixcImRlc2NyaXB0aW9uXCI6XCJDbGF1ZGUgd29ya2hvcnNlIGZvciBjb2RpbmcgYWdlbnRzLCBjYXJlZnVsIGFuYWx5c2lzLCBhbmQgcHJvZHVjdGlvbiBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fX19LFwib3BlbmFpXCI6e1wibW9kZWxzXCI6e1wibzNcIjp7XCJpZFwiOlwibzNcIixcIm5hbWVcIjpcIm8zXCIsXCJkZXNjcmlwdGlvblwiOlwiRGVsaWJlcmF0ZSBvLXNlcmllcyByZWFzb25lciBmb3IgaGFyZCBtYXRoLCBjb2RpbmcsIGFuZCBtdWx0aS1zdGVwIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MzA3Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEzLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuMi1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuMi1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjIgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVyLWFjY3VyYWN5IEdQVC01LjIgdmFyaWFudCBmb3IgdG91Z2hlciByZWFzb25pbmcgYW5kIHJldmlldyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyMSxcIm91dHB1dFwiOjE2OH19LFwiZ3B0LTUuNlwiOntcImlkXCI6XCJncHQtNS42XCIsXCJuYW1lXCI6XCJHUFQtNS42XCIsXCJkZXNjcmlwdGlvblwiOlwiRnJvbnRpZXIgR1BULTUuNiBtb2RlbCBmb3IgY29tcGxleCBwcm9mZXNzaW9uYWwgd29yaywgY29kaW5nLCBhbmQgYWdlbnRpYyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcImdwdC01XCI6e1wiaWRcIjpcImdwdC01XCIsXCJuYW1lXCI6XCJHUFQtNVwiLFwiZGVzY3JpcHRpb25cIjpcIk9yaWdpbmFsIEdQVC01IHdvcmtob3JzZSBmb3IgcmVhc29uaW5nLCBjb2RpbmcsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtMy41LXR1cmJvXCI6e1wiaWRcIjpcImdwdC0zLjUtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC0zLjUtdHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjEtMDktMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMy0wMy0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIzLTExLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjE2Mzg1LFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MH19LFwiZ3B0LTUtcHJvXCI6e1wiaWRcIjpcImdwdC01LXByb1wiLFwibmFtZVwiOlwiR1BULTUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVyLWFjY3VyYWN5IEdQVC01IHRpZXIgZm9yIHRvdWdoIGFuYWx5c2lzLCBjb2RpbmcgcmV2aWV3cywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0wNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjI3MjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjEyMH19LFwiZ3B0LTRvXCI6e1wiaWRcIjpcImdwdC00b1wiLFwibmFtZVwiOlwiR1BULTRvXCIsXCJkZXNjcmlwdGlvblwiOlwiT21uaS1lcmEgR1BUIGZvciBtdWx0aW1vZGFsIGNoYXQsIHByYWN0aWNhbCBjb2RpbmcsIGFuZCBnZW5lcmFsIGFzc2lzdGFudHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwiZ3B0LTRcIjp7XCJpZFwiOlwiZ3B0LTRcIixcIm5hbWVcIjpcIkdQVC00XCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjgxOTJ9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjo2MH19LFwibzQtbWluaVwiOntcImlkXCI6XCJvNC1taW5pXCIsXCJuYW1lXCI6XCJvNC1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBvLXNlcmllcyBtb2RlbCBmb3IgY29tcGFjdCByZWFzb25pbmcsIGNvZGluZywgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcIm8tbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4xLFwib3V0cHV0XCI6NC40LFwiY2FjaGVfcmVhZFwiOjAuMjc1fX0sXCJvMy1wcm9cIjp7XCJpZFwiOlwibzMtcHJvXCIsXCJuYW1lXCI6XCJvMy1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoLWVmZm9ydCBvMyB0aWVyIGZvciBkaWZmaWN1bHQgdGVjaG5pY2FsIHJlYXNvbmluZyBhbmQgY2FyZWZ1bCBhbnN3ZXJzXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTEwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyMCxcIm91dHB1dFwiOjgwfX0sXCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiOntcImlkXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwibmFtZVwiOlwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDUtMTNcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wNS0xMylcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA1LTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoxNX19LFwiZ3B0LTUuNC1uYW5vXCI6e1wiaWRcIjpcImdwdC01LjQtbmFub1wiLFwibmFtZVwiOlwiR1BULTUuNCBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hlYXBlc3QgR1BULTUuNCBsYW5lIGZvciBzaW1wbGUgcm91dGluZywgZXh0cmFjdGlvbiwgYW5kIGJ1bGsgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4yLFwib3V0cHV0XCI6MS4yNSxcImNhY2hlX3JlYWRcIjowLjAyfX0sXCJncHQtNS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUgQ2hhdCAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjEtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGV4IEdQVCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgY29kZSByZXZpZXcsIGFuZCBwcmFjdGljYWwgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY29kZXgtc3BhcmtcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleC1zcGFya1wiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleCBTcGFya1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleC1zcGFya1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjEwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LTUuMS1jb2RleC1tYXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleC1tYXhcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggTWF4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMyBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNG8tMjAyNC0wOC0wNlwiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wOC0wNlwiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA4LTA2KVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA4LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fSxcInRleHQtZW1iZWRkaW5nLWFkYS0wMDJcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjItMTJcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMi0xMi0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIyLTEyLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjB9fSxcIm8zLW1pbmlcIjp7XCJpZFwiOlwibzMtbWluaVwiLFwibmFtZVwiOlwibzMtbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsZXIgby1zZXJpZXMgcmVhc29uZXIgZm9yIGVjb25vbWljYWwgY29kaW5nLCBtYXRoLCBhbmQgcGxhbm5pbmcgdGFza3NcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTAxLTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC41NX19LFwiZ3B0LTUuMlwiOntcImlkXCI6XCJncHQtNS4yXCIsXCJuYW1lXCI6XCJHUFQtNS4yXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVsaWFibGUgR1BUIGdlbmVyYXRpb24gZm9yIGJyb2FkIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgcHJvZHVjdCB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4zLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjMtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjMgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLXNtYWxsXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjAyLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuNi1sdW5hXCI6e1wiaWRcIjpcImdwdC01LjYtbHVuYVwiLFwibmFtZVwiOlwiR1BULTUuNiBMdW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29zdC1lZmZpY2llbnQgR1BULTUuNiBtb2RlbCBmb3IgZmFzdCwgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo2LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MixcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4yLFwiY2FjaGVfd3JpdGVcIjoyLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX19fSxcImdwdC01LjEtY29kZXgtbWluaVwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LXJlYWx0aW1lLTIuMVwiOntcImlkXCI6XCJncHQtcmVhbHRpbWUtMi4xXCIsXCJuYW1lXCI6XCJHUFQtUmVhbHRpbWUtMi4xXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhbHRpbWUgc3BlZWNoLXRvLXNwZWVjaCBtb2RlbCB3aXRoIGNvbmZpZ3VyYWJsZSByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgcm9idXN0IHZvaWNlLWFnZW50IGJlaGF2aW9yXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImF1ZGlvXCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwiaW5wdXRcIjo5NjAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoyNCxcImNhY2hlX3JlYWRcIjowLjQsXCJpbnB1dF9hdWRpb1wiOjMyLFwib3V0cHV0X2F1ZGlvXCI6NjR9fSxcImdwdC01LjYtdGVycmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi10ZXJyYVwiLFwibmFtZVwiOlwiR1BULTUuNiBUZXJyYVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIEdQVC01LjYgbW9kZWwgZm9yIGNhcGFibGUsIGNvc3QtZWZmaWNpZW50IGV2ZXJ5ZGF5IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJjYWNoZV93cml0ZVwiOjMuMTI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fX0sXCJncHQtNS4xLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjEtY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjEgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BULTUuMSBmb3IgcG9saXNoZWQgYXNzaXN0YW50cywgd3JpdGluZywgYW5kIHByb2R1Y3QgY29udmVyc2F0aW9uc1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4yLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4yIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIjp7XCJpZFwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA2LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDYtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcImdwdC1pbWFnZS0xLjVcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTEuNVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTEuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNC4xLW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTQuMS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNC4xIG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJUaW55IEdQVC00LjEgb3B0aW9uIGZvciBjbGFzc2lmaWNhdGlvbiwgcm91dGluZywgYW5kIHZlcnkgaGlnaC12b2x1bWUgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LTRvLTIwMjQtMTEtMjBcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMTEtMjBcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0xMS0yMClcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJvMVwiOntcImlkXCI6XCJvMVwiLFwibmFtZVwiOlwibzFcIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjo3LjV9fSxcIm8xLXByb1wiOntcImlkXCI6XCJvMS1wcm9cIixcIm5hbWVcIjpcIm8xLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk8tc2VyaWVzIHJlYXNvbmluZyBtb2RlbCBmb3IgaGFyZCBhbmFseXNpcywgbWF0aCwgY29kaW5nLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDMtMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wMy0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1MCxcIm91dHB1dFwiOjYwMH19LFwiZ3B0LTUuNFwiOntcImlkXCI6XCJncHQtNS40XCIsXCJuYW1lXCI6XCJHUFQtNS40XCIsXCJkZXNjcmlwdGlvblwiOlwiQWdlbnQtcmVhZHkgR1BUIGZvciBjb2RpbmcgYW5kIGNvbXB1dGVyLXVzZSB3b3JrZmxvd3MgYXQgYSBsb3dlciBjb3N0XCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNX19fSxcImdwdC01LjQtbWluaVwiOntcImlkXCI6XCJncHQtNS40LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjQgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlN0cm9uZyBzbWFsbCBHUFQgZm9yIGNvZGluZyBzdWJhZ2VudHMsIHF1aWNrIHRvb2wgdXNlLCBhbmQgaGlnaC12b2x1bWUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6MC43NSxcIm91dHB1dFwiOjQuNSxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ3B0LTQuMVwiOntcImlkXCI6XCJncHQtNC4xXCIsXCJuYW1lXCI6XCJHUFQtNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiTG9uZy1saXZlZCBHUFQgd29ya2hvcnNlIGZvciBjb2RpbmcsIGluc3RydWN0aW9uIGZvbGxvd2luZywgYW5kIHByb2R1Y3Rpb24gYXBwc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJvMy1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcIm5hbWVcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0MCxcImNhY2hlX3JlYWRcIjoyLjV9fSxcImdwdC01LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUtbWluaVwiLFwibmFtZVwiOlwiR1BULTUgTWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIEdQVC01IGZvciByZXNwb25zaXZlIGFnZW50cywgY29kaW5nIGhlbHAsIGFuZCBldmVyeWRheSBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtaW1hZ2UtMVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTFcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuQUkgaW1hZ2UgbW9kZWwgZm9yIHByb2R1Y3Rpb24gZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBicmFuZC1zYWZlIHZpc3VhbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1taW5pXCI6e1wiaWRcIjpcImdwdC00LjEtbWluaVwiLFwibmFtZVwiOlwiR1BULTQuMSBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQWZmb3JkYWJsZSBHUFQtNC4xIGxhbmUgZm9yIGZhc3QgY29kaW5nIGhlbHAgYW5kIHN0cnVjdHVyZWQgZXh0cmFjdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDRcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjQsXCJvdXRwdXRcIjoxLjYsXCJjYWNoZV9yZWFkXCI6MC4xfX0sXCJncHQtNC10dXJib1wiOntcImlkXCI6XCJncHQtNC10dXJib1wiLFwibmFtZVwiOlwiR1BULTQgVHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTEyXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjMwfX0sXCJncHQtaW1hZ2UtMS1taW5pXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUtbmFub1wiOntcImlkXCI6XCJncHQtNS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNSBOYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNSBsYW5lIGZvciByb3V0aW5nLCBleHRyYWN0aW9uLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGJ1bGsgam9ic1wiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA1LFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDA1fX0sXCJncHQtNS40LXByb1wiOntcImlkXCI6XCJncHQtNS40LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNCBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJNb3JlIGV4YWN0IEdQVC01LjQgdGllciBmb3IgZGVtYW5kaW5nIHByb2Zlc3Npb25hbCByZWFzb25pbmcgYW5kIGFnZW50IHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwiZ3B0LTUuNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNS1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVzdC1hY2N1cmFjeSBHUFQtNS41IHRpZXIgZm9yIHNsb3dlciwgcHJlY2lzaW9uLWhlYXZ5IHJlYXNvbmluZyBhbmQgY29kaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC00by1taW5pXCI6e1wiaWRcIjpcImdwdC00by1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNG8gbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIG9tbmkgR1BUIGZvciBjaGVhcCBtdWx0aW1vZGFsIGFzc2lzdGFuY2UgYW5kIHByb2R1Y3Rpb24tc2NhbGUgdHJhZmZpY1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNy0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA3LTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowLjYsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC01LjYtc29sXCI6e1wiaWRcIjpcImdwdC01LjYtc29sXCIsXCJuYW1lXCI6XCJHUFQtNS42IFNvbFwiLFwiZGVzY3JpcHRpb25cIjpcIkZyb250aWVyIEdQVC01LjYgbW9kZWwgZm9yIGNvbXBsZXggcHJvZmVzc2lvbmFsIHdvcmssIGNvZGluZywgYW5kIGFnZW50aWMgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDItMTZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA3LTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjYwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9fX0sXCJncHQtNS1jb2RleFwiOntcImlkXCI6XCJncHQtNS1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUtQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMi1jb2RleFwiOntcImlkXCI6XCJncHQtNS4yLWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS4yIENvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kZS1zcGVjaWFsaXN0IEdQVCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGxvbmctcnVubmluZyBzb2Z0d2FyZSBhZ2VudHNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LWltYWdlLTJcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTJcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0yXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fSxcImdwdC01LjFcIjp7XCJpZFwiOlwiZ3B0LTUuMVwiLFwibmFtZVwiOlwiR1BULTUuMVwiLFwiZGVzY3JpcHRpb25cIjpcIlNoYXJwZXIgR1BULTUgZ2VuZXJhdGlvbiBmb3IgY29kaW5nLCBwcm9kdWN0IHdvcmssIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjVcIjp7XCJpZFwiOlwiZ3B0LTUuNVwiLFwibmFtZVwiOlwiR1BULTUuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkRlZmF1bHQgZnJvbnRpZXIgR1BUIGZvciBjb2RpbmcsIGNvbXB1dGVyIHVzZSwgcmVzZWFyY2gsIGFuZCBrbm93bGVkZ2Ugd29ya1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEyLjUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjI1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxfX19fX0sXCJ4YWlcIjp7XCJtb2RlbHNcIjp7XCJncm9rLTQuMjAtbXVsdGktYWdlbnQtMDMwOVwiOntcImlkXCI6XCJncm9rLTQuMjAtbXVsdGktYWdlbnQtMDMwOVwiLFwibmFtZVwiOlwiR3JvayA0LjIwIE11bHRpLUFnZW50XCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOmZhbHNlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1ub24tcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKE5vbi1SZWFzb25pbmcpXCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLTQuM1wiOntcImlkXCI6XCJncm9rLTQuM1wiLFwibmFtZVwiOlwiR3JvayA0LjNcIixcImRlc2NyaXB0aW9uXCI6XCJ4QUkncyBHcm9rIGZvciBjaGF0LCBjb2RpbmcsIGFnZW50aWMgdG9vbHMsIGFuZCBsb3dlciBoYWxsdWNpbmF0aW9uIHJpc2tcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2staW1hZ2luZS1pbWFnZS1xdWFsaXR5XCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZS1xdWFsaXR5XCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgSW1hZ2UgUXVhbGl0eVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiLFwicGRmXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODAwMCxcIm91dHB1dFwiOjB9fSxcImdyb2staW1hZ2luZS12aWRlb1wiOntcImlkXCI6XCJncm9rLWltYWdpbmUtdmlkZW9cIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBWaWRlb1wiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAxLTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDEtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widmlkZW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDI0LFwib3V0cHV0XCI6MH19LFwiZ3Jvay00LjVcIjp7XCJpZFwiOlwiZ3Jvay00LjVcIixcIm5hbWVcIjpcIkdyb2sgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwieEFJJ3MgbGF0ZXN0IEdyb2sgZm9yIGNoYXQsIGNvZGluZywgYWdlbnRpYyB0b29scywgYW5kIGxvd2VyIGhhbGx1Y2luYXRpb24gcmlza1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NTAwMDAwLFwib3V0cHV0XCI6NTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo2LFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjEsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MX19fSxcImdyb2stNC4yMC0wMzA5LXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCAoUmVhc29uaW5nKVwiLFwiZGVzY3JpcHRpb25cIjpcIlJlYXNvbmluZyBHcm9rIGZvciBkb2N1bWVudC1oZWF2eSBhbmFseXNpcyBhbmQgbG9uZy1ob3Jpem9uIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay1pbWFnaW5lLWltYWdlXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcImltYWdlXCIsXCJwZGZcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MDAwLFwib3V0cHV0XCI6MH19LFwiZ3Jvay1idWlsZC0wLjFcIjp7XCJpZFwiOlwiZ3Jvay1idWlsZC0wLjFcIixcIm5hbWVcIjpcIkdyb2sgQnVpbGQgMC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHcm9rIGNvZGluZyBtb2RlbCB0dW5lZCBmb3IgYWdlbnRpYyBlbmdpbmVlcmluZyBhbmQgaXRlcmF0aXZlIGVkaXRzXCIsXCJmYW1pbHlcIjpcImdyb2stYnVpbGRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjU2MDAwLFwib3V0cHV0XCI6MjU2MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6MixcIm91dHB1dFwiOjQsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjQsXCJjYWNoZV9yZWFkXCI6MC40fX19fX19IiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHNuYXBzaG90IGZyb20gJy4vY2F0YWxvZy1zbmFwc2hvdC5qc29uJyB3aXRoIHsgdHlwZTogJ2pzb24nIH1cblxuY29uc3QgQ0FUQUxPR19VUkwgPSAnaHR0cHM6Ly9tb2RlbHMuZGV2L2FwaS5qc29uJ1xuY29uc3QgU1VQUE9SVEVEID0gWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXVxuY29uc3QgVFRMID0gMjQgKiA2MCAqIDYwICogMTAwMFxuXG5mdW5jdGlvbiBjYWNoZUZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtb2RlbHMtY2FjaGUuanNvbicpXG59XG5cbmZ1bmN0aW9uIHN1YnNldChkYXRhKSB7XG4gIGNvbnN0IG91dCA9IHt9XG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgU1VQUE9SVEVEKSB7XG4gICAgaWYgKGRhdGFbcHJvdmlkZXJdPy5tb2RlbHMpIG91dFtwcm92aWRlcl0gPSB7IG1vZGVsczogZGF0YVtwcm92aWRlcl0ubW9kZWxzIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDYWNoZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoZXIoQ0FUQUxPR19VUkwpXG4gIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihgY2F0YWxvZyBmZXRjaCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gIGNvbnN0IHByb3ZpZGVycyA9IHN1YnNldChhd2FpdCByZXNwb25zZS5qc29uKCkpXG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlKCksIEpTT04uc3RyaW5naWZ5KHsgYXQ6IERhdGUubm93KCksIHByb3ZpZGVycyB9KSlcbiAgcmV0dXJuIHByb3ZpZGVyc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENhdGFsb2coeyBmZXRjaGVyID0gZmV0Y2ggfSA9IHt9KSB7XG4gIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHJlYWRDYWNoZSgpXG4gIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIGNhY2hlZC5wcm92aWRlcnNcbiAgcmVmcmVzaENhdGFsb2coeyBmZXRjaGVyIH0pLmNhdGNoKCgpID0+IHt9KVxuICByZXR1cm4gY2FjaGVkPy5wcm92aWRlcnMgfHwgc25hcHNob3Rcbn1cblxuY29uc3QgdGV4dE1vZGVsID0gKG0pID0+XG4gIG0udG9vbF9jYWxsID09PSB0cnVlICYmXG4gICghbS5tb2RhbGl0aWVzIHx8IChtLm1vZGFsaXRpZXMuaW5wdXQ/LmluY2x1ZGVzKCd0ZXh0JykgJiYgbS5tb2RhbGl0aWVzLm91dHB1dD8uaW5jbHVkZXMoJ3RleHQnKSkpXG5cbmNvbnN0IGRhdGVkRHVwbGljYXRlID0gKGlkKSA9PiAvLVxcZHs4fSQvLnRlc3QoaWQpXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TW9kZWxzKHByb3ZpZGVycywgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3Qgb3JkZXIgPSBTVVBQT1JURUQuZmlsdGVyKChwKSA9PiBwcm92aWRlcklkcy5pbmNsdWRlcyhwKSlcbiAgY29uc3QgbW9kZWxzID0gW11cbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBvcmRlcikge1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhwcm92aWRlcnNbcHJvdmlkZXJdPy5tb2RlbHMgfHwge30pXG4gICAgICAuZmlsdGVyKChbaWQsIG1dKSA9PiB0ZXh0TW9kZWwobSkgJiYgIWRhdGVkRHVwbGljYXRlKGlkKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBTdHJpbmcoYlsxXS5yZWxlYXNlX2RhdGUgfHwgJycpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGFbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKSkpXG4gICAgZm9yIChjb25zdCBbaWQsIG1dIG9mIGVudHJpZXMpIHtcbiAgICAgIG1vZGVscy5wdXNoKHtcbiAgICAgICAgbmFtZTogYCR7cHJvdmlkZXJ9LyR7aWR9YCxcbiAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgIGRlc2M6IG0uZGVzY3JpcHRpb24gfHwgbS5uYW1lIHx8IGlkLFxuICAgICAgICBwcmljZTogbS5jb3N0ICYmIG0uY29zdC5pbnB1dCAhPSBudWxsID8geyBpbjogbS5jb3N0LmlucHV0LCBvdXQ6IG0uY29zdC5vdXRwdXQgfSA6IG51bGwsXG4gICAgICAgIGVmZm9ydDogISFtLnJlYXNvbmluZyxcbiAgICAgICAgLy8gdGhlIG1lYXN1cmVkIGZpbGwgbnVtYmVyIGlzIGlucHV0IHRva2Vucywgc28gcHJlZmVyIHRoZSBpbnB1dCBsaW1pdFxuICAgICAgICAvLyBhcyB0aGUgZGVub21pbmF0b3Igd2hlcmUgdGhlIHByb3ZpZGVyIGRpc3Rpbmd1aXNoZXMgaXRcbiAgICAgICAgY29udGV4dDogbS5saW1pdD8uaW5wdXQgfHwgbS5saW1pdD8uY29udGV4dCB8fCBudWxsLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGVsc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRob2NNb2RlbChuYW1lLCBwcm92aWRlcklkcykge1xuICBjb25zdCBtYXRjaCA9IG5hbWUubWF0Y2goL14oW2EtejAtOS1dKylcXC8oLispJC8pXG4gIGlmICghbWF0Y2ggfHwgIXByb3ZpZGVySWRzLmluY2x1ZGVzKG1hdGNoWzFdKSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICAgIHByb3ZpZGVyOiBtYXRjaFsxXSxcbiAgICBkZXNjOiAnbm90IGluIGNhdGFsb2cnLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogZmFsc2UsXG4gICAgY29udGV4dDogbnVsbCxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG4vLyB0aGUgYmFja2VuZCBoaWRlcyBtb2RlbHMgZnJvbSBjbGllbnRzIGJlbG93IGEgdmVyc2lvbiBmbG9vciwgc28gc2VuZCBhXG4vLyB2ZXJzaW9uIGNvbWZvcnRhYmx5IGFib3ZlIGl0XG5jb25zdCBNT0RFTFNfVVJMID0gJ2h0dHBzOi8vY2hhdGdwdC5jb20vYmFja2VuZC1hcGkvY29kZXgvbW9kZWxzP2NsaWVudF92ZXJzaW9uPTIuMC4wJ1xuY29uc3QgVFRMID0gMjQgKiA2MCAqIDYwICogMTAwMFxuXG5mdW5jdGlvbiBjYWNoZUZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb2RleC1tb2RlbHMtY2FjaGUuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBDb2RleE1vZGVscyhlbnRyaWVzKSB7XG4gIHJldHVybiBlbnRyaWVzLm1hcCgobSkgPT4gKHtcbiAgICBuYW1lOiBgY29kZXgvJHttLnNsdWd9YCxcbiAgICBwcm92aWRlcjogJ2NvZGV4JyxcbiAgICBkZXNjOiBgJHttLmRlc2NyaXB0aW9uIHx8IG0ubGFiZWwgfHwgbS5zbHVnfSBcdTAwQjcgdmlhIENoYXRHUFQgcGxhbmAsXG4gICAgcHJpY2U6IG51bGwsXG4gICAgZWZmb3J0OiB0cnVlLFxuICAgIGNvbnRleHQ6IG0uY29udGV4dF93aW5kb3cgfHwgbnVsbCxcbiAgfSkpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29kZXhNb2RlbHMoY3JlZGVudGlhbHMpIHtcbiAgbGV0IGNhY2hlZCA9IG51bGxcbiAgdHJ5IHtcbiAgICBjYWNoZWQgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGNhY2hlRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7fVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQubW9kZWxzKVxuICBpZiAoIWNyZWRlbnRpYWxzKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkPy5tb2RlbHMgfHwgW10pXG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKE1PREVMU19VUkwsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NyZWRlbnRpYWxzLmFwaUtleX1gLFxuICAgICAgICAuLi5jcmVkZW50aWFscy5oZWFkZXJzLFxuICAgICAgICBvcmlnaW5hdG9yOiAnY29kZXhfY2xpX3JzJyxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKHJlc3BvbnNlLnN0YXR1cykpXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIGNvbnN0IG1vZGVscyA9IChkYXRhLm1vZGVscyB8fCBbXSkubWFwKChtKSA9PiAoe1xuICAgICAgc2x1ZzogbS5zbHVnLFxuICAgICAgZGVzY3JpcHRpb246IG0uZGVzY3JpcHRpb24sXG4gICAgICBsYWJlbDogbS5sYWJlbCB8fCBtLmRpc3BsYXlfbmFtZSxcbiAgICAgIGNvbnRleHRfd2luZG93OiBtLmNvbnRleHRfd2luZG93IHx8IG0ubWF4X2NvbnRleHRfd2luZG93IHx8IG51bGwsXG4gICAgfSkpXG4gICAgaWYgKG1vZGVscy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcignZW1wdHkgbW9kZWwgbGlzdCcpXG4gICAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gICAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBtb2RlbHMgfSkpXG4gICAgcmV0dXJuIG1hcENvZGV4TW9kZWxzKG1vZGVscylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2VydmVyIH0gZnJvbSAnbm9kZTpodHRwJ1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0bydcbmltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSwgY2htb2QgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBDTElFTlRfSUQgPSAnYXBwX0VNb2FtRUVaNzNmMENrWGFYcDdocmFubidcbmNvbnN0IEFVVEhfVVJMID0gJ2h0dHBzOi8vYXV0aC5vcGVuYWkuY29tL29hdXRoL2F1dGhvcml6ZSdcbmNvbnN0IFRPS0VOX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC90b2tlbidcbmNvbnN0IFJFRElSRUNUX1BPUlQgPSAxNDU1XG5jb25zdCBSRURJUkVDVF9VUkkgPSBgaHR0cDovL2xvY2FsaG9zdDoke1JFRElSRUNUX1BPUlR9L2F1dGgvY2FsbGJhY2tgXG5jb25zdCBTQ09QRSA9ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcydcbmNvbnN0IFJFRlJFU0hfU0tFV19NUyA9IDUgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gYXV0aEZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdhdXRoLmpzb24nKVxufVxuXG5mdW5jdGlvbiBiYXNlNjR1cmwoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcKy9nLCAnLScpLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoLz0rJC8sICcnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlSnd0Q2xhaW1zKHRva2VuKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRva2VuLnNwbGl0KCcuJylbMV1cbiAgICByZXR1cm4gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShwYXlsb2FkLCAnYmFzZTY0dXJsJykudG9TdHJpbmcoJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY2NvdW50SWRGcm9tQ2xhaW1zKGNsYWltcykge1xuICByZXR1cm4gY2xhaW1zWydodHRwczovL2FwaS5vcGVuYWkuY29tL2F1dGgnXT8uY2hhdGdwdF9hY2NvdW50X2lkIHx8IGNsYWltcy5jaGF0Z3B0X2FjY291bnRfaWQgfHwgbnVsbFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQXV0aCgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShhdXRoRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVBdXRoKGF1dGgpIHtcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShhdXRoRmlsZSgpLCBKU09OLnN0cmluZ2lmeShhdXRoLCBudWxsLCAyKSArICdcXG4nKVxuICBhd2FpdCBjaG1vZChhdXRoRmlsZSgpLCAwbzYwMClcbn1cblxuYXN5bmMgZnVuY3Rpb24gdG9rZW5SZXF1ZXN0KHBhcmFtcykge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFRPS0VOX1VSTCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgYm9keTogbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCksXG4gIH0pXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRva2VuIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c30gJHthd2FpdCByZXNwb25zZS50ZXh0KCl9YClcbiAgfVxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmZ1bmN0aW9uIHN0b3JlVG9rZW5zKGF1dGgsIHRva2Vucykge1xuICBjb25zdCBjbGFpbXMgPSB0b2tlbnMuaWRfdG9rZW4gPyBkZWNvZGVKd3RDbGFpbXModG9rZW5zLmlkX3Rva2VuKSA6IHt9XG4gIGF1dGgub3BlbmFpID0ge1xuICAgIGFjY2Vzc190b2tlbjogdG9rZW5zLmFjY2Vzc190b2tlbixcbiAgICByZWZyZXNoX3Rva2VuOiB0b2tlbnMucmVmcmVzaF90b2tlbiB8fCBhdXRoLm9wZW5haT8ucmVmcmVzaF90b2tlbixcbiAgICBpZF90b2tlbjogdG9rZW5zLmlkX3Rva2VuIHx8IGF1dGgub3BlbmFpPy5pZF90b2tlbixcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50SWRGcm9tQ2xhaW1zKGNsYWltcykgfHwgYXV0aC5vcGVuYWk/LmFjY291bnRfaWQgfHwgbnVsbCxcbiAgICBlbWFpbDogY2xhaW1zLmVtYWlsIHx8IGF1dGgub3BlbmFpPy5lbWFpbCB8fCBudWxsLFxuICAgIGV4cGlyZXNfYXQ6IERhdGUubm93KCkgKyAodG9rZW5zLmV4cGlyZXNfaW4gfHwgMzYwMCkgKiAxMDAwLFxuICB9XG4gIHJldHVybiBhdXRoXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0T3BlbkFJKHsgb3BlbkJyb3dzZXIgPSB0cnVlLCB0aW1lb3V0TXMgPSA1ICogNjAgKiAxMDAwLCBvblVybCA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCB2ZXJpZmllciA9IGJhc2U2NHVybChyYW5kb21CeXRlcyg2NCkpXG4gIGNvbnN0IGNoYWxsZW5nZSA9IGJhc2U2NHVybChjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmVyaWZpZXIpLmRpZ2VzdCgpKVxuICBjb25zdCBzdGF0ZSA9IGJhc2U2NHVybChyYW5kb21CeXRlcygyNCkpXG5cbiAgY29uc3QgdXJsID0gYCR7QVVUSF9VUkx9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgIHJlZGlyZWN0X3VyaTogUkVESVJFQ1RfVVJJLFxuICAgIHNjb3BlOiBTQ09QRSxcbiAgICBjb2RlX2NoYWxsZW5nZTogY2hhbGxlbmdlLFxuICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuICAgIHN0YXRlLFxuICAgIHByb21wdDogJ2xvZ2luJyxcbiAgICBpZF90b2tlbl9hZGRfb3JnYW5pemF0aW9uczogJ3RydWUnLFxuICAgIGNvZGV4X2NsaV9zaW1wbGlmaWVkX2Zsb3c6ICd0cnVlJyxcbiAgICBvcmlnaW5hdG9yOiAnY29kZXhfY2xpX3JzJyxcbiAgfSkudG9TdHJpbmcoKX1gXG5cbiAgY29uc3QgY29kZSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIoKHJlcSwgcmVzKSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0VXJsID0gbmV3IFVSTChyZXEudXJsLCBgaHR0cDovL2xvY2FsaG9zdDoke1JFRElSRUNUX1BPUlR9YClcbiAgICAgIGlmIChyZXF1ZXN0VXJsLnBhdGhuYW1lICE9PSAnL2F1dGgvY2FsbGJhY2snKSB7XG4gICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KS5lbmQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGdvdFN0YXRlID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdzdGF0ZScpXG4gICAgICBjb25zdCBnb3RDb2RlID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdjb2RlJylcbiAgICAgIGNvbnN0IGdvdEVycm9yID0gcmVxdWVzdFVybC5zZWFyY2hQYXJhbXMuZ2V0KCdlcnJvcicpXG4gICAgICByZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSlcbiAgICAgIHJlcy5lbmQoXG4gICAgICAgIGdvdENvZGUgJiYgZ290U3RhdGUgPT09IHN0YXRlXG4gICAgICAgICAgPyAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ25lZCBpbiAtIHlvdSBjYW4gcmV0dXJuIHRvIHBpY288L2JvZHk+PC9odG1sPidcbiAgICAgICAgICA6ICc8aHRtbD48Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBwYWRkaW5nOiAycmVtXCI+c2lnbi1pbiBmYWlsZWQgLSByZXR1cm4gdG8gcGljbyBhbmQgdHJ5IGFnYWluPC9ib2R5PjwvaHRtbD4nLFxuICAgICAgKVxuICAgICAgY2xlYW51cCgpXG4gICAgICBpZiAoZ290RXJyb3IpIHJlamVjdChuZXcgRXJyb3IoYGF1dGhvcml6YXRpb24gZmFpbGVkOiAke2dvdEVycm9yfWApKVxuICAgICAgZWxzZSBpZiAoIWdvdENvZGUgfHwgZ290U3RhdGUgIT09IHN0YXRlKSByZWplY3QobmV3IEVycm9yKCdhdXRob3JpemF0aW9uIGZhaWxlZDogbWlzc2luZyBjb2RlIG9yIHN0YXRlIG1pc21hdGNoJykpXG4gICAgICBlbHNlIHJlc29sdmUoZ290Q29kZSlcbiAgICB9KVxuXG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KG5ldyBFcnJvcignc2lnbi1pbiB0aW1lZCBvdXQnKSlcbiAgICB9LCB0aW1lb3V0TXMpXG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgc2VydmVyLmNsb3NlKClcbiAgICB9XG5cbiAgICBzZXJ2ZXIub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY2xlYW51cCgpXG4gICAgICByZWplY3QoZXJyLmNvZGUgPT09ICdFQUREUklOVVNFJyA/IG5ldyBFcnJvcihgcG9ydCAke1JFRElSRUNUX1BPUlR9IGlzIGluIHVzZSAoaXMgYW5vdGhlciBzaWduLWluIG9yIGNvZGV4IHJ1bm5pbmc/KWApIDogZXJyKVxuICAgIH0pXG4gICAgc2VydmVyLmxpc3RlbihSRURJUkVDVF9QT1JULCAnMTI3LjAuMC4xJywgKCkgPT4ge1xuICAgICAgb25VcmwodXJsKVxuICAgICAgaWYgKG9wZW5Ccm93c2VyKSBleGVjRmlsZSgnb3BlbicsIFt1cmxdLCAoKSA9PiB7fSlcbiAgICB9KVxuICB9KVxuXG4gIGNvbnN0IHRva2VucyA9IGF3YWl0IHRva2VuUmVxdWVzdCh7XG4gICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG4gICAgY29kZSxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICBjb2RlX3ZlcmlmaWVyOiB2ZXJpZmllcixcbiAgfSlcblxuICBjb25zdCBhdXRoID0gc3RvcmVUb2tlbnMoYXdhaXQgcmVhZEF1dGgoKSwgdG9rZW5zKVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbiAgcmV0dXJuIHsgZW1haWw6IGF1dGgub3BlbmFpLmVtYWlsLCBhY2NvdW50SWQ6IGF1dGgub3BlbmFpLmFjY291bnRfaWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbmFpQ3JlZGVudGlhbHMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGNvbnN0IHN0b3JlZCA9IGF1dGgub3BlbmFpXG4gIGlmICghc3RvcmVkPy5hY2Nlc3NfdG9rZW4pIHJldHVybiBudWxsXG5cbiAgaWYgKERhdGUubm93KCkgPiAoc3RvcmVkLmV4cGlyZXNfYXQgfHwgMCkgLSBSRUZSRVNIX1NLRVdfTVMpIHtcbiAgICBpZiAoIXN0b3JlZC5yZWZyZXNoX3Rva2VuKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IHRva2VuUmVxdWVzdCh7XG4gICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdG9yZWQucmVmcmVzaF90b2tlbixcbiAgICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZSBlbWFpbCcsXG4gICAgfSlcbiAgICBjb25zdCByZWZyZXNoZWQgPSBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpXG4gICAgYXdhaXQgd3JpdGVBdXRoKHJlZnJlc2hlZClcbiAgICByZXR1cm4gY3JlZGVudGlhbHNGcm9tKHJlZnJlc2hlZC5vcGVuYWkpXG4gIH1cbiAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShzdG9yZWQpXG59XG5cbmZ1bmN0aW9uIGNyZWRlbnRpYWxzRnJvbShzdG9yZWQpIHtcbiAgcmV0dXJuIHtcbiAgICBhcGlLZXk6IHN0b3JlZC5hY2Nlc3NfdG9rZW4sXG4gICAgaGVhZGVyczogc3RvcmVkLmFjY291bnRfaWQgPyB7ICdjaGF0Z3B0LWFjY291bnQtaWQnOiBzdG9yZWQuYWNjb3VudF9pZCB9IDoge30sXG4gICAgZW1haWw6IHN0b3JlZC5lbWFpbCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbmFpQ29ubmVjdGVkKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICByZXR1cm4gISEoYXV0aC5vcGVuYWk/LmFjY2Vzc190b2tlbiAmJiBhdXRoLm9wZW5haT8ucmVmcmVzaF90b2tlbilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haVN0YXR1cygpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0ZWQ6ICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pLFxuICAgIGVtYWlsOiBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdE9wZW5BSSgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgZGVsZXRlIGF1dGgub3BlbmFpXG4gIGF3YWl0IHdyaXRlQXV0aChhdXRoKVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5mdW5jdGlvbiBjb25maWdGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29uZmlnLmpzb24nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZygpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjb25maWdGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDb25maWcocGF0Y2gpIHtcbiAgY29uc3QgY29uZmlnID0geyAuLi4oYXdhaXQgcmVhZENvbmZpZygpKSwgLi4ucGF0Y2ggfVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNvbmZpZ0ZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSArICdcXG4nKVxuICByZXR1cm4gY29uZmlnXG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdsb2JhbEFnZW50c0ZpbGUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5mdW5jdGlvbiByZWFkSWZFeGlzdHMocGF0aCkge1xuICB0cnkge1xuICAgIHJldHVybiBleGlzdHNTeW5jKHBhdGgpID8gcmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250ZXh0U3RvcERpcihjd2QpIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICcuZ2l0JykpIHx8IGRpciA9PT0gaG9tZSkgcmV0dXJuIGRpclxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgcmV0dXJuIHJlc29sdmUoY3dkKVxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmZ1bmN0aW9uIGFuY2VzdG9yRGlycyhjd2QsIHN0b3BEaXIpIHtcbiAgY29uc3QgZGlycyA9IFtdXG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBkaXJzLnVuc2hpZnQoZGlyKVxuICAgIGlmIChkaXIgPT09IHN0b3BEaXIpIGJyZWFrXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSBicmVha1xuICAgIGRpciA9IHBhcmVudFxuICB9XG4gIHJldHVybiBkaXJzXG59XG5cbi8vIEFHRU5UUy5tZCBpcyBjYW5vbmljYWw7IENMQVVERS5tZCBpcyBob25vcmVkIHBlciBkaXJlY3Rvcnkgb25seSB3aGVuIG5vXG4vLyBBR0VOVFMubWQgZXhpc3RzIHRoZXJlLCBzbyByZXBvcyBkb2N1bWVudGVkIGZvciBvdGhlciBhZ2VudHMgc3RpbGwgd29yay5cbi8vIHRoZSBmYWxsYmFjayBuZXZlciBhcHBsaWVzIHRvIHRoZSBnbG9iYWwgZmlsZTogdGhhdCBpcyB+Ly5waWNvL0FHRU5UUy5tZFxuLy8gYWxvbmUsIGFuZCBwZXJzb25hbCBmaWxlcyBsaWtlIH4vLmNsYXVkZS9DTEFVREUubWQgYXJlIGFub3RoZXIgdG9vbCdzXG5mdW5jdGlvbiByZWFkRGlyQ29udGV4dChkaXIpIHtcbiAgY29uc3QgYWdlbnRzID0gam9pbihkaXIsICdBR0VOVFMubWQnKVxuICBjb25zdCBhZ2VudHNDb250ZW50ID0gcmVhZElmRXhpc3RzKGFnZW50cylcbiAgaWYgKGFnZW50c0NvbnRlbnQpIHJldHVybiB7IHBhdGg6IGFnZW50cywgY29udGVudDogYWdlbnRzQ29udGVudCB9XG4gIGNvbnN0IGNsYXVkZSA9IGpvaW4oZGlyLCAnQ0xBVURFLm1kJylcbiAgY29uc3QgY2xhdWRlQ29udGVudCA9IHJlYWRJZkV4aXN0cyhjbGF1ZGUpXG4gIGlmIChjbGF1ZGVDb250ZW50KSByZXR1cm4geyBwYXRoOiBjbGF1ZGUsIGNvbnRlbnQ6IGNsYXVkZUNvbnRlbnQgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN0YXJ0dXBDb250ZXh0KGN3ZCkge1xuICBjb25zdCBzdG9wRGlyID0gY29udGV4dFN0b3BEaXIoY3dkKVxuICBjb25zdCBmaWxlcyA9IFtdXG4gIGNvbnN0IGdsb2JhbENvbnRlbnQgPSByZWFkSWZFeGlzdHMoZ2xvYmFsQWdlbnRzRmlsZSgpKVxuICBpZiAoZ2xvYmFsQ29udGVudCkgZmlsZXMucHVzaCh7IHBhdGg6IGdsb2JhbEFnZW50c0ZpbGUoKSwgY29udGVudDogZ2xvYmFsQ29udGVudCB9KVxuICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSkge1xuICAgIGNvbnN0IGVudHJ5ID0gcmVhZERpckNvbnRleHQoZGlyKVxuICAgIGlmIChlbnRyeSkgZmlsZXMucHVzaChlbnRyeSlcbiAgfVxuICByZXR1cm4geyBmaWxlcywgc3RvcERpciB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0VHJhY2tlcih7IHN0b3BEaXIsIGxvYWRlZCB9KSB7XG4gIHJldHVybiB7XG4gICAgbG9hZGVkLFxuICAgIGNoZWNrKGZpbGVQYXRoKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBkaXJuYW1lKHJlc29sdmUoZmlsZVBhdGgpKVxuICAgICAgaWYgKCF0YXJnZXQuc3RhcnRzV2l0aChzdG9wRGlyKSkgcmV0dXJuIFtdXG4gICAgICBjb25zdCBmcmVzaCA9IFtdXG4gICAgICBmb3IgKGNvbnN0IGRpciBvZiBhbmNlc3RvckRpcnModGFyZ2V0LCBzdG9wRGlyKSkge1xuICAgICAgICBpZiAobG9hZGVkLmhhcyhqb2luKGRpciwgJ0FHRU5UUy5tZCcpKSB8fCBsb2FkZWQuaGFzKGpvaW4oZGlyLCAnQ0xBVURFLm1kJykpKSBjb250aW51ZVxuICAgICAgICBjb25zdCBlbnRyeSA9IHJlYWREaXJDb250ZXh0KGRpcilcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgbG9hZGVkLmFkZChlbnRyeS5wYXRoKVxuICAgICAgICAgIGZyZXNoLnB1c2goZW50cnkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmcmVzaFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZ2xvYmFsU2tpbGxzRGlyLCBwcm9qZWN0U2tpbGxzRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXIodGV4dCkge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL14tLS1cXG4oW1xcc1xcU10qPylcXG4tLS1cXG4/LylcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgbWV0YToge30sIGJvZHk6IHRleHQgfVxuICBjb25zdCBtZXRhID0ge31cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hdGNoWzFdLnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IHNlcCA9IGxpbmUuaW5kZXhPZignOicpXG4gICAgaWYgKHNlcCA9PT0gLTEpIGNvbnRpbnVlXG4gICAgbWV0YVtsaW5lLnNsaWNlKDAsIHNlcCkudHJpbSgpXSA9IGxpbmUuc2xpY2Uoc2VwICsgMSkudHJpbSgpXG4gIH1cbiAgcmV0dXJuIHsgbWV0YSwgYm9keTogdGV4dC5zbGljZShtYXRjaFswXS5sZW5ndGgpIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBza2lsbHMgPSBbXVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIG5hbWVzKSB7XG4gICAgaWYgKCFlbnRyeS5pc0RpcmVjdG9yeSgpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgZW50cnkubmFtZSwgJ1NLSUxMLm1kJylcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgICAgc2tpbGxzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZW50cnkubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBza2lsbHNcbn1cblxuY29uc3QgQVNLX1JVTEUgPSBgQmVmb3JlIHdyaXRpbmcgYW55dGhpbmcsIHJlc29sdmUgYW1iaWd1aXR5OlxuLSBJZiB0aGUgdXNlciBkaWQgbm90IHNheSBnbG9iYWwgb3IgcHJvamVjdCwgYXNrIGV4YWN0bHkgb25lIHF1ZXN0aW9uOiBcImdsb2JhbCAoYXZhaWxhYmxlIGV2ZXJ5d2hlcmUpIG9yIGp1c3QgdGhpcyBwcm9qZWN0P1wiIERvIG5vdCBndWVzcyBzaWxlbnRseS5cbi0gSWYgdGhlIGJlaGF2aW9yIG9yIG91dHB1dCBpcyB1bmRlcnNwZWNpZmllZCwgc3RhdGUgdGhlIGFzc3VtcHRpb25zIHlvdSBhcmUgbWFraW5nIGluIG9uZSBzaG9ydCBsaW5lIGJlZm9yZSBwcm9jZWVkaW5nLCBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCB5b3UuYFxuXG5jb25zdCBORVdfVE9PTF9TS0lMTCA9IGBDcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBwaWNvIHRvb2wgaXMgYW4gRVMgbW9kdWxlIHdob3NlIGRlZmF1bHQgZXhwb3J0IGlzIGVpdGhlciBhIHRvb2wgb2JqZWN0IG9yIGEgZmFjdG9yeVxuXFxgKGNvbnRleHQpID0+IHRvb2xcXGAgd2hlcmUgY29udGV4dCBpcyBcXGB7IGN3ZCwgcm9vdCB9XFxgLiBUaGUgdG9vbCBvYmplY3Qgc2hhcGU6XG5cblxcYFxcYFxcYGpzXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICd3b3JkX2NvdW50JyxcbiAgZGVzY3JpcHRpb246ICdDb3VudCB3b3JkcywgbGluZXMsIGFuZCBjaGFyYWN0ZXJzIGluIGEgZmlsZScsXG4gIHNjaGVtYToge1xuICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeScgfSxcbiAgICB3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnaW5jbHVkZSB3b3JkIGNvdW50Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgfSxcbiAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgd29yZHMgPSB0cnVlIH0pID0+IHtcbiAgICAvLyByZXR1cm4gYW55IEpTT04tc2VyaWFsaXphYmxlIHZhbHVlOyB0aHJvdyBhbiBFcnJvciB0byByZXBvcnQgZmFpbHVyZVxuICAgIHJldHVybiB7IHBhdGgsIHdvcmRzOiA0MiB9XG4gIH0sXG59XG5cXGBcXGBcXGBcblxuU2NoZW1hIHByb3BlcnRpZXMgc3VwcG9ydDogdHlwZSAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4sIGFycmF5LCBvYmplY3QpLCBkZXNjcmlwdGlvbixcbm9wdGlvbmFsLCBlbnVtIChzdHJpbmcgdmFsdWVzKSwgaXRlbXMgKGZvciBhcnJheXMpLCBwcm9wZXJ0aWVzIChmb3IgbmVzdGVkIG9iamVjdHMpLlxuXG5Mb2NhdGlvbnM6IFxcYC5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBpbiB0aGUgcHJvamVjdCByb290IGZvciBwcm9qZWN0IHRvb2xzLFxuXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgZm9yIHRvb2xzIGF2YWlsYWJsZSBldmVyeXdoZXJlLiBEZWZhdWx0IHRvIHRoZSBwcm9qZWN0IHVubGVzc1xudGhlIHVzZXIgYXNrcyBmb3IgYSBnbG9iYWwgdG9vbC4gTm9kZSBidWlsdGlucyBjYW4gYmUgaW1wb3J0ZWQ7IG5wbSBwYWNrYWdlcyBjYW5ub3QgYmVcbmFzc3VtZWQuIFRvb2xzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgb3IgZWRpdGVkIHRvb2wgaXMgdXNhYmxlIG9uIHRoZSBuZXh0XG5tZXNzYWdlIHdpdGggbm8gcmVzdGFydC5cblxuU3RlcHM6XG4xLiBEZWNpZGUgdGhlIHRvb2wgbmFtZSAoc25ha2VfY2FzZSksIGlucHV0cywgYW5kIG91dHB1dCBzaGFwZSBmcm9tIHRoZSB1c2VyJ3MgcmVxdWVzdC5cbjIuIFdyaXRlIHRoZSBtb2R1bGUgdG8gdGhlIHJpZ2h0IGxvY2F0aW9uIHdpdGggdGhlIHdyaXRlIHRvb2wuXG4zLiBTYW5pdHktY2hlY2sgaXQgbG9hZHM6IFxcYG5vZGUgLS1pbnB1dC10eXBlPW1vZHVsZSAtZSBcImNvbnN0IHQgPSAoYXdhaXQgaW1wb3J0KCdmaWxlOi8vPGFicyBwYXRoPicpKS5kZWZhdWx0OyBjb25zb2xlLmxvZyh0Lm5hbWUpXCJcXGAgKGFkanVzdCBpZiB0aGUgZXhwb3J0IGlzIGEgZmFjdG9yeSkuXG40LiBUZWxsIHRoZSB1c2VyIHRoZSB0b29sIGlzIHJlYWR5IGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBmcm9tIHRoZWlyIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19TS0lMTF9TS0lMTCA9IGBDcmVhdGUgYSBwaWNvIHNraWxsIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBza2lsbCBpcyBhIG1hcmtkb3duIGZpbGUgYXQgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCAoZ2xvYmFsKSB3aXRoIGZyb250bWF0dGVyIGFuZCBhbiBpbnN0cnVjdGlvbiBib2R5OlxuXG5cXGBcXGBcXGBcbi0tLVxubmFtZTogcmVsZWFzZS1ub3Rlc1xuZGVzY3JpcHRpb246IGRyYWZ0IHJlbGVhc2Ugbm90ZXMgZnJvbSBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZ1xuLS0tXG5JbnN0cnVjdGlvbnMgdGhlIGFnZW50IGZvbGxvd3Mgd2hlbiB0aGlzIHNraWxsIGlzIGxvYWRlZC4gQmUgaW1wZXJhdGl2ZSBhbmQgc3BlY2lmaWMuXG5cXGBcXGBcXGBcblxuVGhlIGRlc2NyaXB0aW9uIG1hdHRlcnMgbW9zdDogaXQgaXMgbGlzdGVkIGluIHRoZSBhZ2VudCdzIHN5c3RlbSBwcm9tcHQsIGFuZCB0aGUgYWdlbnRcbmRlY2lkZXMgZnJvbSBpdCB3aGVuIHRvIGxvYWQgdGhlIHNraWxsIG9uIGl0cyBvd24uIFdyaXRlIGl0IGFzIGEgdHJpZ2dlciBjb25kaXRpb25cbihcIndoZW4gdGhlIHVzZXIgYXNrcyBmb3IgWFwiKSwgbm90IG1hcmtldGluZy4gVGhlIGJvZHkgaXMgb25seSBsb2FkZWQgb24gaW52b2NhdGlvbiwgc29cbml0IGNhbiBiZSBsb25nIGFuZCBkZXRhaWxlZC4gU3VwcG9ydGluZyBmaWxlcyBtYXkgc2l0IG5leHQgdG8gU0tJTEwubWQgaW4gdGhlIHNhbWVcbmRpcmVjdG9yeSBhbmQgYmUgcmVmZXJlbmNlZCBieSByZWxhdGl2ZSBwYXRoLlxuXG5Ta2lsbHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ldyBza2lsbCBpcyB1c2FibGUgZnJvbSB0aGUgbmV4dCBtZXNzYWdlLmBcblxuY29uc3QgTkVXX0NPTU1BTkRfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBjb21tYW5kIGZyb20gdGhlIHVzZXIncyBkZXNjcmlwdGlvbi5cblxuJHtBU0tfUlVMRX1cblxuQSBjb21tYW5kIGlzIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSBVU0VSIGludm9rZXMgYXMgXFxgLzxuYW1lPiBbYXJnc11cXGAuIFRoZSBhZ2VudCBuZXZlclxuc2VlcyBjb21tYW5kcyB1bnRpbCBvbmUgaXMgcnVuLCBzbyB1c2UgYSBjb21tYW5kIGZvciB1c2VyLXRyaWdnZXJlZCBtYWNyb3MgYW5kIGEgc2tpbGxcbmZvciBjYXBhYmlsaXRpZXMgdGhlIGFnZW50IHNob3VsZCByZWFjaCBmb3Igb24gaXRzIG93bi5cblxuSXQgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAocHJvamVjdCkgb3JcblxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIChnbG9iYWwpLCBvcHRpb25hbGx5IHdpdGggYSBkZXNjcmlwdGlvbiBpbiBmcm9udG1hdHRlcjpcblxuXFxgXFxgXFxgXG4tLS1cbmRlc2NyaXB0aW9uOiByZXZpZXcgYSBmaWxlIGZvciBzZWN1cml0eSBwcm9ibGVtc1xuLS0tXG5SZXZpZXcgJEFSR1VNRU5UUyBmb3Igc2VjdXJpdHkgcHJvYmxlbXMuIEZvY3VzIG9uIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3JldHMuXG5cXGBcXGBcXGBcblxuXFxgJEFSR1VNRU5UU1xcYCBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgdGhlIHBsYWNlaG9sZGVyLFxuYXJndW1lbnRzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgYm9keS4gQ29tbWFuZHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ld1xuY29tbWFuZCBhcHBlYXJzIGluIHRoZSBzbGFzaCBtZW51IGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTa2lsbEluZGV4KHJvb3QpIHtcbiAgY29uc3QgYnVpbHRpbiA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LXRvb2wnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBjdXN0b20gcGljbyB0b29sIGZyb20gYSBkZXNjcmlwdGlvbiBvZiB3aGF0IGl0IHNob3VsZCBkbycsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19UT09MX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1za2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIHBpY28gc2tpbGwgdGhhdCB0ZWFjaGVzIHRoZSBhZ2VudCBhIHJldXNhYmxlIGNhcGFiaWxpdHknLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfU0tJTExfU0tJTEwsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LWNvbW1hbmQnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNsYXNoIGNvbW1hbmQsIGEgcHJvbXB0IHRlbXBsYXRlIHRoZSB1c2VyIGludm9rZXMnLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfQ09NTUFORF9TS0lMTCxcbiAgICB9LFxuICBdXG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsU2tpbGxzRGlyKCksICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0U2tpbGxzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHNraWxsIG9mIFsuLi5idWlsdGluLCAuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KHNraWxsLm5hbWUsIHNraWxsKVxuICBjb25zdCBza2lsbHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gc2tpbGxzLFxuICAgIGFzeW5jIGxvYWQobmFtZSkge1xuICAgICAgY29uc3Qgc2tpbGwgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNraWxsKSByZXR1cm4gbnVsbFxuICAgICAgaWYgKHNraWxsLmJvZHkpIHJldHVybiBza2lsbC5ib2R5XG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoc2tpbGwuZmlsZSwgJ3V0Zi04JykpXG4gICAgICByZXR1cm4gYm9keVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuaW1wb3J0IHsgcGFyc2VGcm9udG1hdHRlciB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQ29tbWFuZHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb21tYW5kcycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0Q29tbWFuZHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnY29tbWFuZHMnKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgY29tbWFuZHMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIGNvbW1hbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRDb21tYW5kKGJvZHksIGFyZ3MpIHtcbiAgcmV0dXJuIGJvZHkuaW5jbHVkZXMoJyRBUkdVTUVOVFMnKVxuICAgID8gYm9keS5yZXBsYWNlQWxsKCckQVJHVU1FTlRTJywgYXJncylcbiAgICA6IGFyZ3NcbiAgICAgID8gYCR7Ym9keS50cmltKCl9XFxuXFxuJHthcmdzfWBcbiAgICAgIDogYm9keVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tbWFuZEluZGV4KHJvb3QpIHtcbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxDb21tYW5kc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdENvbW1hbmRzRGlyKHJvb3QpLCAncHJvamVjdCcpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgWy4uLmdsb2JhbCwgLi4ucHJvamVjdF0pIGJ5TmFtZS5zZXQoY29tbWFuZC5uYW1lLCBjb21tYW5kKVxuICBjb25zdCBjb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG5cbiAgcmV0dXJuIHtcbiAgICBsaXN0OiAoKSA9PiBjb21tYW5kcyxcbiAgICBhc3luYyBsb2FkKG5hbWUsIGFyZ3MgPSAnJykge1xuICAgICAgY29uc3QgY29tbWFuZCA9IGJ5TmFtZS5nZXQobmFtZSlcbiAgICAgIGlmICghY29tbWFuZCkgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShjb21tYW5kLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGV4cGFuZENvbW1hbmQoYm9keS50cmltKCksIGFyZ3MudHJpbSgpKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbm5lY3RNQ1AgfSBmcm9tICdAcHJzbS9haSdcbmltcG9ydCB7IGdsb2JhbE1jcEZpbGUsIHByb2plY3RNY3BGaWxlLCBwcm9qZWN0RGlyLCBlbnN1cmVEaXIsIHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gdG9rZW5pemUoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGNvbnN0IHJlID0gLyhbQS1aYS16MC05Xy1dKz0pP1wiKFteXCJdKilcInwoW0EtWmEtejAtOV8tXSs9KT8nKFteJ10qKSd8KFxcUyspL2dcbiAgbGV0IG1cbiAgd2hpbGUgKChtID0gcmUuZXhlYyhzdHIpKSkge1xuICAgIGlmIChtWzFdICE9PSB1bmRlZmluZWQgfHwgbVszXSAhPT0gdW5kZWZpbmVkKSB0b2tlbnMucHVzaCgobVsxXSA/PyBtWzNdKSArIChtWzJdID8/IG1bNF0pKVxuICAgIGVsc2UgdG9rZW5zLnB1c2gobVsyXSA/PyBtWzRdID8/IG1bNV0pXG4gIH1cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21tYW5kKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG5cbiAgY29uc3QgZW52ID0ge31cbiAgd2hpbGUgKHRva2Vucy5sZW5ndGggJiYgL15bQS1aYS16X11bQS1aYS16MC05X10qPS8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW5zWzBdLmluZGV4T2YoJz0nKVxuICAgIGVudlt0b2tlbnNbMF0uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbnNbMF0uc2xpY2Uoc2VwICsgMSlcbiAgICB0b2tlbnMuc2hpZnQoKVxuICB9XG4gIGlmICghdG9rZW5zLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBjb21tYW5kJylcbiAgcmV0dXJuIHsgY29tbWFuZDogdG9rZW5zWzBdLCBhcmdzOiB0b2tlbnMuc2xpY2UoMSksIGVudiB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlcnZlclNwZWMoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cilcbiAgaWYgKCEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodG9rZW5zWzBdIHx8ICcnKSkgcmV0dXJuIHsgdHlwZTogJ3N0ZGlvJywgLi4ucGFyc2VDb21tYW5kKHN0cikgfVxuXG4gIGNvbnN0IFt1cmwsIC4uLnJlc3RdID0gdG9rZW5zXG4gIGNvbnN0IGhlYWRlcnMgPSB7fVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHJlc3QpIHtcbiAgICBjb25zdCBzZXAgPSB0b2tlbi5pbmRleE9mKCc9JylcbiAgICBpZiAoc2VwIDwgMSkgdGhyb3cgbmV3IEVycm9yKGBodHRwIHNlcnZlciBzcGVjIG9ubHkgdGFrZXMgYSB1cmwgYW5kIEhlYWRlcj12YWx1ZSBwYWlycywgZ290IFwiJHt0b2tlbn1cImApXG4gICAgaGVhZGVyc1t0b2tlbi5zbGljZSgwLCBzZXApXSA9IHRva2VuLnNsaWNlKHNlcCArIDEpXG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogJ2h0dHAnLCB1cmwsIGhlYWRlcnMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSnNvbihmaWxlLCBmYWxsYmFjaykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2tcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlZ2lzdHJ5KCkge1xuICByZXR1cm4gcmVhZEpzb24oZ2xvYmFsTWNwRmlsZSgpLCB7IHNlcnZlcnM6IHt9IH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoZ2xvYmFsTWNwRmlsZSgpLCBKU09OLnN0cmluZ2lmeShyZWdpc3RyeSwgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpIHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZEpzb24ocHJvamVjdE1jcEZpbGUocm9vdCksIHt9KVxuICByZXR1cm4geyBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkIHx8IHt9LCBzZXJ2ZXJzOiBjb25maWcuc2VydmVycyB8fCB7fSB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCB3cml0ZUZpbGUocHJvamVjdE1jcEZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRyYW5zcG9ydEZhY3RvcnkoY29tbWFuZCkge1xuICAgIGNvbnN0IHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgICBpZiAoc3BlYy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgICAgcmV0dXJuICgpID0+XG4gICAgICAgIG5ldyBTdHJlYW1hYmxlSFRUUENsaWVudFRyYW5zcG9ydChuZXcgVVJMKHNwZWMudXJsKSwge1xuICAgICAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICAgIHJldHVybiAoKSA9PlxuICAgICAgbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICAgICAgY29tbWFuZDogc3BlYy5jb21tYW5kLFxuICAgICAgICBhcmdzOiBzcGVjLmFyZ3MsXG4gICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICAgICAgc3RkZXJyOiAncGlwZScsXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0aW5nJ1xuICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICBvbkNoYW5nZSgpXG4gICAgdHJ5IHtcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gYXdhaXQgY29ubmVjdE1DUCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRyYW5zcG9ydDogYXdhaXQgdHJhbnNwb3J0RmFjdG9yeShzZXJ2ZXIuY29tbWFuZCksXG4gICAgICB9KVxuICAgICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0ZWQnXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Vycm9yJ1xuICAgICAgc2VydmVyLmVycm9yID0gU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMzAwKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICAgIG9uQ2hhbmdlKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKHNlcnZlcj8uY29ubmVjdGlvbikge1xuICAgICAgYXdhaXQgc2VydmVyLmNvbm5lY3Rpb24uY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29ubmVjdEFsbCgpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBbXVxuICAgICAgZm9yIChjb25zdCBzZXJ2ZXIgb2Ygc2VydmVycy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHBlbmRpbmcucHVzaChjb25uZWN0KHNlcnZlci5uYW1lKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQocGVuZGluZylcbiAgICB9LFxuICAgIGFzeW5jIGFkZChuYW1lLCBjb21tYW5kLCBzY29wZSA9ICdnbG9iYWwnKSB7XG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBjb25maWcuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgcmVnaXN0cnkuc2VydmVyc1tuYW1lXSA9IGNvbW1hbmRcbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIHNlcnZlcnMuc2V0KG5hbWUsIHsgbmFtZSwgY29tbWFuZCwgc2NvcGUsIGVuYWJsZWQ6IHRydWUsIHN0YXR1czogJ2lkbGUnLCBlcnJvcjogbnVsbCwgY29ubmVjdGlvbjogbnVsbCB9KVxuICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gc2VydmVycy5nZXQobmFtZSk/LnNjb3BlXG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBkZWxldGUgY29uZmlnLnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgIHNlcnZlcnMuZGVsZXRlKG5hbWUpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfSxcbiAgICBhc3luYyB0b2dnbGUobmFtZSkge1xuICAgICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICAgIGlmICghc2VydmVyKSByZXR1cm5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSBmYWxzZVxuICAgICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Rpc2FibGVkJ1xuICAgICAgICBjb25maWcuZGlzYWJsZWRbbmFtZV0gPSB0cnVlXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHNlcnZlcnMua2V5cygpKSBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyLCB3cml0ZUZpbGUsIG1rZGlyLCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1lbW9yeURpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbHVnaWZ5KG5hbWUpIHtcbiAgY29uc3Qgc2x1ZyA9IFN0cmluZyhuYW1lKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKVxuICAgIC5zbGljZSgwLCA2MClcbiAgaWYgKCFzbHVnKSB0aHJvdyBuZXcgRXJyb3IoJ21lbW9yeSBuYW1lIG11c3QgY29udGFpbiBsZXR0ZXJzIG9yIG51bWJlcnMnKVxuICByZXR1cm4gc2x1Z1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc2NvcGUpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBtZW1vcmllcyA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBuYW1lcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aCgnLm1kJykpIGNvbnRpbnVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSwgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksICd1dGYtOCcpKVxuICAgICAgbWVtb3JpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IG1ldGEubmFtZSB8fCBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBmaWxlOiBqb2luKGRpciwgZmlsZSksXG4gICAgICAgIGJvZHk6IGJvZHkudHJpbSgpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIG1lbW9yaWVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1vcnkocm9vdCkge1xuICBjb25zdCBkaXJGb3IgPSAoc2NvcGUpID0+IChzY29wZSA9PT0gJ2dsb2JhbCcgPyBnbG9iYWxNZW1vcnlEaXIoKSA6IHByb2plY3RNZW1vcnlEaXIocm9vdCkpXG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBsaXN0KCkge1xuICAgICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxNZW1vcnlEaXIoKSwgJ2dsb2JhbCcpXG4gICAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0TWVtb3J5RGlyKHJvb3QpLCAncHJvamVjdCcpXG4gICAgICByZXR1cm4gWy4uLnByb2plY3QsIC4uLmdsb2JhbF1cbiAgICB9LFxuICAgIGFzeW5jIHJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlID0gJ3Byb2plY3QnIH0pIHtcbiAgICAgIGlmICghWydwcm9qZWN0JywgJ2dsb2JhbCddLmluY2x1ZGVzKHNjb3BlKSkgdGhyb3cgbmV3IEVycm9yKCdzY29wZSBtdXN0IGJlIHByb2plY3Qgb3IgZ2xvYmFsJylcbiAgICAgIGNvbnN0IHNsdWcgPSBzbHVnaWZ5KG5hbWUpXG4gICAgICBjb25zdCBkaXIgPSBkaXJGb3Ioc2NvcGUpXG4gICAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGAke3NsdWd9Lm1kYClcbiAgICAgIGNvbnN0IHRleHQgPSBgLS0tXFxubmFtZTogJHtzbHVnfVxcbmRlc2NyaXB0aW9uOiAke1N0cmluZyhkZXNjcmlwdGlvbikucmVwbGFjZSgvXFxuL2csICcgJyl9XFxuLS0tXFxuJHtjb250ZW50fVxcbmBcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlLCB0ZXh0LCAndXRmLTgnKVxuICAgICAgcmV0dXJuIHsgbmFtZTogc2x1Zywgc2NvcGUsIGZpbGUgfVxuICAgIH0sXG4gICAgYXN5bmMgZm9yZ2V0KG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIG1lbW9yeSBuYW1lZCBcIiR7bmFtZX1cImApXG4gICAgICBhd2FpdCB1bmxpbmsobWVtb3J5LmZpbGUpXG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSB9XG4gICAgfSxcbiAgICBhc3luYyByZWNhbGwobmFtZSkge1xuICAgICAgY29uc3QgbWVtb3JpZXMgPSBhd2FpdCB0aGlzLmxpc3QoKVxuICAgICAgY29uc3QgbWVtb3J5ID0gbWVtb3JpZXMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKVxuICAgICAgaWYgKCFtZW1vcnkpIHtcbiAgICAgICAgY29uc3Qga25vd24gPSBtZW1vcmllcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKSB8fCAnbm9uZSdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCI7IGtub3duIG1lbW9yaWVzOiAke2tub3dufWApXG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSwgZmlsZTogbWVtb3J5LmZpbGUsIGNvbnRlbnQ6IG1lbW9yeS5ib2R5IH1cbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vcnlJbmRleChtZW1vcmllcywgcm9vdCkge1xuICBpZiAobWVtb3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGBZb3UgaGF2ZSBubyBzYXZlZCBtZW1vcmllcyB5ZXQuIFRoaXMgaW5kZXggbGlzdHMgdGhlbSB3aGVuIHlvdSBzYXZlIGR1cmFibGUgZmFjdHMgd2l0aCB0aGUgcmVtZW1iZXIgdG9vbDsgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB5b3VyIG1lbW9yaWVzIGZyb20gdGhpcyBpbmRleCBhbG9uZSwgd2l0aG91dCBzZWFyY2hpbmcgdGhlIGZpbGVzeXN0ZW0uYFxuICB9XG4gIGNvbnN0IGxpbmVzID0gbWVtb3JpZXMubWFwKChtKSA9PiBgLSAke20ubmFtZX0gKCR7bS5zY29wZX0pOiAke20uZGVzY3JpcHRpb259YClcbiAgcmV0dXJuIFtcbiAgICBgTWVtb3JpZXMgeW91IGhhdmUgc2F2ZWQuIFRoaXMgaW5kZXggaXMgY29tcGxldGU6IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIGl0IGRpcmVjdGx5LCBsb2FkIG9uZSB3aXRoIHRoZSByZWNhbGwgdG9vbCB3aGVuIGl0cyBjb250ZW50IGlzIHJlbGV2YW50LCBhbmQgbmV2ZXIgc2VhcmNoIHRoZSBmaWxlc3lzdGVtIGZvciBtZW1vcmllcy4gVGhlIGZpbGVzIGxpdmUgaW4gJHtwcm9qZWN0TWVtb3J5RGlyKHJvb3QpfSBhbmQgJHtnbG9iYWxNZW1vcnlEaXIoKX0gYW5kIGNhbiBiZSBlZGl0ZWQgb3IgZGVsZXRlZCB3aXRoIG9yZGluYXJ5IHRvb2xzIHdoZW4gYXNrZWQgdG8gY3VyYXRlIHRoZW0uYCxcbiAgICAuLi5saW5lcyxcbiAgXS5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZmluZFByb2plY3RSb290IH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IGxvYWRTdGFydHVwQ29udGV4dCwgY3JlYXRlQ29udGV4dFRyYWNrZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgeyBjcmVhdGVTa2lsbEluZGV4IH0gZnJvbSAnLi9za2lsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kSW5kZXggfSBmcm9tICcuL2NvbW1hbmRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWNwUnVudGltZSB9IGZyb20gJy4vbWNwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWVtb3J5IH0gZnJvbSAnLi9tZW1vcnkuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZSA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIGNvbnN0IHJvb3QgPSBmaW5kUHJvamVjdFJvb3QoY3dkKVxuICBjb25zdCBzdGFydHVwQ29udGV4dCA9IGxvYWRTdGFydHVwQ29udGV4dChjd2QpXG4gIGNvbnN0IHRyYWNrZXIgPSBjcmVhdGVDb250ZXh0VHJhY2tlcih7XG4gICAgc3RvcERpcjogc3RhcnR1cENvbnRleHQuc3RvcERpcixcbiAgICBsb2FkZWQ6IG5ldyBTZXQoc3RhcnR1cENvbnRleHQuZmlsZXMubWFwKChmKSA9PiBmLnBhdGgpKSxcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBkaXNwbGF5Q3dkOiBjd2Quc3RhcnRzV2l0aChob21lKSA/IGN3ZC5yZXBsYWNlKGhvbWUsICd+JykgOiBjd2QsXG4gICAgc3RhcnR1cENvbnRleHQsXG4gICAgdHJhY2tlcixcbiAgICBza2lsbHM6IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgocm9vdCksXG4gICAgY29tbWFuZHM6IGF3YWl0IGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSxcbiAgICBtY3A6IGF3YWl0IGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZTogb25NY3BDaGFuZ2UgfSksXG4gICAgbWVtb3J5OiBjcmVhdGVNZW1vcnkocm9vdCksXG4gIH1cbn1cbiIsICJjb25zdCBERUZBVUxUX1NMSUNFX0NIQVJTID0gMjQwMDBcbmNvbnN0IE1BWF9TTElDRV9DSEFSUyA9IDEwMDAwMFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURyZWRnZShjb25maWcgPSB7fSwgZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3QgdXJsID0gZW52LkRSRURHRV9VUkwgfHwgY29uZmlnLmRyZWRnZT8udXJsIHx8IG51bGxcbiAgaWYgKCF1cmwpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgdXJsOiB1cmwucmVwbGFjZSgvXFwvKyQvLCAnJyksXG4gICAgYXBpS2V5OiBlbnYuRFJFREdFX0FQSV9LRVkgfHwgY29uZmlnLmRyZWRnZT8uYXBpS2V5IHx8IG51bGwsXG4gIH1cbn1cblxuY29uc3QgQ0FMTF9USU1FT1VUX01TID0gMTIwMDAwXG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGwoZHJlZGdlLCBwYXRoLCBwYXJhbXMsIHNpZ25hbCkge1xuICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKVxuICAvLyBib3VuZGVkIGFib3ZlIGRyZWRnZSdzIG93biA5MHMgcXVldWUgY2VpbGluZyBzbyBhIHdlZGdlZCBzZXJ2ZXIgYmVjb21lc1xuICAvLyBhIHRvb2wgZXJyb3IgaW5zdGVhZCBvZiBhIGh1bmcgdHVyblxuICBjb25zdCBzaWduYWxzID0gW0Fib3J0U2lnbmFsLnRpbWVvdXQoQ0FMTF9USU1FT1VUX01TKSwgLi4uKHNpZ25hbCA/IFtzaWduYWxdIDogW10pXVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2RyZWRnZS51cmx9JHtwYXRofT8ke3F1ZXJ5fWAsIHtcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLmFueShzaWduYWxzKSxcbiAgICBoZWFkZXJzOiBkcmVkZ2UuYXBpS2V5ID8geyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7ZHJlZGdlLmFwaUtleX1gIH0gOiB7fSxcbiAgfSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiBudWxsKVxuICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcihgZHJlZGdlIHJldHVybmVkIGh0dHAgJHtyZXNwb25zZS5zdGF0dXN9IHdpdGggbm8gdXNhYmxlIGJvZHlgKVxuICByZXR1cm4gYm9keVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViVG9vbHMoeyBkcmVkZ2UsIHJlY29yZGVyLCBzaWduYWwgfSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG5hbWU6ICd3ZWJfc2VhcmNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnU2VhcmNoIHRoZSB3ZWIuIEdvb2dsZS1zdHlsZSBvcGVyYXRvcnMgd29yazogc2l0ZTosIGZpbGV0eXBlOnBkZiwgcXVvdGVkIHBocmFzZXMuIFJldHVybnMgcmFua2VkIHJlc3VsdHM7IHBhc3MgYSByZXN1bHQgdXJsIHRvIHdlYl9mZXRjaCB0byByZWFkIGl0LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgcTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgfSxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IHEgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBxIH0pXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9zZWFyY2gnLCB7IHEgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHRocm93IG5ldyBFcnJvcihib2R5LmVycm9yPy5tZXNzYWdlIHx8ICdzZWFyY2ggZmFpbGVkJylcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IChib2R5LnJlc3VsdHMgfHwgW10pLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB0aXRsZTogci50aXRsZSxcbiAgICAgICAgICB1cmw6IHIudXJsLFxuICAgICAgICAgIHNuaXBwZXQ6IHIuc25pcHBldCxcbiAgICAgICAgICBzb3VyY2U6IHIuc291cmNlLFxuICAgICAgICB9KSlcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYmFja2VuZHMgPSAoYm9keS5iYWNrZW5kcyB8fCBbXSkubWFwKChiKSA9PiBgJHtiLm5hbWV9OiAke2Iuc3RhdHVzfWApLmpvaW4oJywgJylcbiAgICAgICAgICByZXR1cm4geyByZXN1bHRzLCBub3RlOiBiYWNrZW5kcyA/IGBubyByZXN1bHRzIFx1MDBCNyBiYWNrZW5kczogJHtiYWNrZW5kc31gIDogJ25vIHJlc3VsdHMnIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXN1bHRzIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX2ZldGNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRmV0Y2ggYSB1cmwgYW5kIHJlYWQgaXQgYXMgY2xlYW4gbWFya2Rvd24gKGh0bWwsIHBkZiwgZG9jeCwgYW5kIHRleHR1YWwgZm9ybWF0cyBsaWtlIGpzb24pLiBMb25nIGRvY3VtZW50cyBhcnJpdmUgaW4gc2xpY2VzOiB0aGUgcmVzdWx0IHNheXMgd2hpY2ggc2xpY2UgeW91IGhhdmUgKGUuZy4gXCJzbGljZSAxIG9mIDEyXCIpIGFuZCBuZXh0X2N1cnNvciBjb250aW51ZXMgZnJvbSB0aGVyZS4gRXZlcnkgc2xpY2UgeW91IGZldGNoIHBlcm1hbmVudGx5IG9jY3VwaWVzIGNvbnZlcnNhdGlvbiBjb250ZXh0LCBzbyBvbmx5IHdhbGsgY3Vyc29ycyBmb3IgY29udGVudCB5b3UgYWN0dWFsbHkgbmVlZCwgYW5kIHJhaXNlIG1heENoYXJzIG9ubHkgd2hlbiB0aGUgdGFzayBnZW51aW5lbHkgbmVlZHMgYSBiaWdnZXIgd2luZG93LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgdXJsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB1cmwgdG8gZmV0Y2gnIH0sXG4gICAgICAgIGN1cnNvcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdwYWdpbmF0aW9uIGN1cnNvciBmcm9tIGEgcHJldmlvdXMgd2ViX2ZldGNoIG9mIHRoZSBzYW1lIHVybCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIG1heENoYXJzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogYHNsaWNlIHNpemUgaW4gY2hhcmFjdGVycywgZGVmYXVsdCAke0RFRkFVTFRfU0xJQ0VfQ0hBUlN9LCBtYXggJHtNQVhfU0xJQ0VfQ0hBUlN9YCwgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyB1cmwsIGN1cnNvciwgbWF4Q2hhcnMgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiB1cmwucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCAnJykuc2xpY2UoMCwgODApIH0pXG4gICAgICAgIGNvbnN0IHNsaWNlID0gTWF0aC5taW4oTUFYX1NMSUNFX0NIQVJTLCBNYXRoLm1heCgxMDAwLCBtYXhDaGFycyB8fCBERUZBVUxUX1NMSUNFX0NIQVJTKSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IGNhbGwoZHJlZGdlLCAnL2ZldGNoJywgeyB1cmwsIG1heENoYXJzOiBzbGljZSwgLi4uKGN1cnNvciAmJiB7IGN1cnNvciB9KSB9LCBzaWduYWwpXG4gICAgICAgIGlmICghYm9keS5vaykge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgbWVzc2FnZSwgcmV0cnlhYmxlIH0gPSBib2R5LmVycm9yIHx8IHt9XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2NvZGUgfHwgJ2ZldGNoIGZhaWxlZCd9OiAke21lc3NhZ2UgfHwgdXJsfSR7cmV0cnlhYmxlID8gJyAocmV0cnlhYmxlKScgOiAnJ31gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgbWFya2Rvd24sIG1ldGFkYXRhLCBwYWdpbmF0aW9uIH0gPSBib2R5LmRvY1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hcmtkb3duLFxuICAgICAgICAgIHRpdGxlOiBtZXRhZGF0YT8udGl0bGUgfHwgbnVsbCxcbiAgICAgICAgICBmaW5hbFVybDogbWV0YWRhdGE/LmZpbmFsX3VybCB8fCB1cmwsXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/LnRvdGFsX2NodW5rcyA+IDEgJiYgeyBzbGljZTogYCR7cGFnaW5hdGlvbi5jaHVua19pbmRleCArIDF9IG9mICR7cGFnaW5hdGlvbi50b3RhbF9jaHVua3N9YCB9KSxcbiAgICAgICAgICAuLi4ocGFnaW5hdGlvbj8ubmV4dF9jdXJzb3IgJiYgeyBuZXh0X2N1cnNvcjogcGFnaW5hdGlvbi5uZXh0X2N1cnNvciB9KSxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICBdXG59XG4iLCAiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoZWxsTWFuYWdlcih7IG9uQ2hhbmdlID0gKCkgPT4ge30sIG9uRXhpdCA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBzaGVsbHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICBmdW5jdGlvbiBwdWJsaWNWaWV3KHNoZWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgIGNvbW1hbmQ6IHNoZWxsLmNvbW1hbmQsXG4gICAgICBkZXNjcmlwdGlvbjogc2hlbGwuZGVzY3JpcHRpb24sXG4gICAgICBjd2Q6IHNoZWxsLmN3ZCxcbiAgICAgIHN0YXR1czogc2hlbGwuc3RhdHVzLFxuICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgc3RhcnRlZEF0OiBzaGVsbC5zdGFydGVkQXQsXG4gICAgICBlbmRlZEF0OiBzaGVsbC5lbmRlZEF0LFxuICAgICAga2lsbGVkQnk6IHNoZWxsLmtpbGxlZEJ5LFxuICAgICAgbGFzdExpbmU6IHNoZWxsLmxpbmVzLmF0KC0xKSB8fCAnJyxcbiAgICAgIGxpbmVDb3VudDogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvbW1hbmQsIHsgY3dkLCBkZXNjcmlwdGlvbiB9ID0ge30pIHtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIH0pXG4gICAgY29uc3Qgc2hlbGwgPSB7XG4gICAgICBpZCxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfHwgbnVsbCxcbiAgICAgIGN3ZDogY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICBjaGlsZCxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICBlbmRlZEF0OiBudWxsLFxuICAgICAga2lsbGVkQnk6IG51bGwsXG4gICAgICBsaW5lczogW10sXG4gICAgICBwYXJ0aWFsOiAnJyxcbiAgICB9XG5cbiAgICBjb25zdCBwdXNoID0gKGNodW5rKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gc2hlbGwucGFydGlhbCArIGNodW5rLnRvU3RyaW5nKClcbiAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJylcbiAgICAgIHNoZWxsLnBhcnRpYWwgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuICAgICAgc2hlbGwubGluZXMucHVzaCguLi5saW5lcylcbiAgICAgIGlmIChzaGVsbC5saW5lcy5sZW5ndGggPiBNQVhfTElORVMpIHNoZWxsLmxpbmVzLnNwbGljZSgwLCBzaGVsbC5saW5lcy5sZW5ndGggLSBNQVhfTElORVMpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfVxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgcHVzaClcbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBwdXNoKGBbZmFpbGVkIHRvIHN0YXJ0OiAke2Vyci5tZXNzYWdlfV1cXG5gKVxuICAgIH0pXG4gICAgY2hpbGQub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICBpZiAoc2hlbGwucGFydGlhbCkge1xuICAgICAgICBzaGVsbC5saW5lcy5wdXNoKHNoZWxsLnBhcnRpYWwpXG4gICAgICAgIHNoZWxsLnBhcnRpYWwgPSAnJ1xuICAgICAgfVxuICAgICAgc2hlbGwuc3RhdHVzID0gJ2V4aXRlZCdcbiAgICAgIHNoZWxsLmV4aXRDb2RlID0gY29kZSA/PyAoc2lnbmFsID8gMSA6IDApXG4gICAgICBzaGVsbC5lbmRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgb25DaGFuZ2UoKVxuICAgICAgb25FeGl0KHB1YmxpY1ZpZXcoc2hlbGwpKVxuICAgIH0pXG5cbiAgICBzaGVsbHMuc2V0KGlkLCBzaGVsbClcbiAgICBvbkNoYW5nZSgpXG4gICAgcmV0dXJuIHsgaWQgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGlkKSB7XG4gICAgY29uc3Qgc2hlbGwgPSBzaGVsbHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgaWYgKCFzaGVsbCkgdGhyb3cgbmV3IEVycm9yKGBubyBzaGVsbCB3aXRoIGlkICR7aWR9OyBpdCBpcyBnb25lIGFuZCBjYW5ub3QgYmUgaW5zcGVjdGVkIChleGl0ZWQgc2hlbGxzIGRpc2FwcGVhciB3aGVuIGRpc21pc3NlZClgKVxuICAgIHJldHVybiBzaGVsbFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCxcbiAgICBvdXRwdXQoaWQsIHsgdGFpbCA9IDEwMCB9ID0ge30pIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gZ2V0KGlkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHNoZWxsLmlkLFxuICAgICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgICBvdXRwdXQ6IHNoZWxsLmxpbmVzLnNsaWNlKC10YWlsKS5qb2luKCdcXG4nKSxcbiAgICAgICAgdG90YWxMaW5lczogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgICAgfVxuICAgIH0sXG4gICAga2lsbChpZCwgYnkgPSAnbW9kZWwnKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIGlmIChzaGVsbC5zdGF0dXMgIT09ICdydW5uaW5nJykgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6IHNoZWxsLnN0YXR1cywgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlIH1cbiAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gYnlcbiAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR1RFUk0nKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykgc2hlbGwuY2hpbGQua2lsbCgnU0lHS0lMTCcpXG4gICAgICB9LCAzMDAwKS51bnJlZigpXG4gICAgICByZXR1cm4geyBpZDogc2hlbGwuaWQsIHN0YXR1czogJ2tpbGxpbmcnIH1cbiAgICB9LFxuICAgIGRpc21pc3MoaWQpIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKHNoZWxsICYmIHNoZWxsLnN0YXR1cyA9PT0gJ2V4aXRlZCcpIHtcbiAgICAgICAgc2hlbGxzLmRlbGV0ZShTdHJpbmcoaWQpKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0KCkge1xuICAgICAgcmV0dXJuIFsuLi5zaGVsbHMudmFsdWVzKCldLm1hcChwdWJsaWNWaWV3KVxuICAgIH0sXG4gICAgcnVubmluZygpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSAncnVubmluZycpLmxlbmd0aFxuICAgIH0sXG4gICAga2lsbEFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2hlbGwgb2Ygc2hlbGxzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gJ3VzZXInXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5cbmV4cG9ydCBjb25zdCBTRVNTSU9OX1ZFUlNJT04gPSAxXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSwgZGF0YSA9IHt9KSB7XG4gIHJldHVybiB7IGlkOiByYW5kb21VVUlEKCksIGF0OiBEYXRlLm5vdygpLCB0eXBlLCBkYXRhIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdzZXNzaW9uJyxcbiAgICB2ZXJzaW9uOiBTRVNTSU9OX1ZFUlNJT04sXG4gICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxpbmUoZXZlbnQpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmUobGluZSkge1xuICBjb25zdCB0cmltbWVkID0gbGluZS50cmltKClcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gbnVsbFxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZClcbiAgICByZXR1cm4gcGFyc2VkICYmIHR5cGVvZiBwYXJzZWQudHlwZSA9PT0gJ3N0cmluZycgPyBwYXJzZWQgOiBudWxsXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZXModGV4dCkge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKHBhcnNlTGluZSkuZmlsdGVyKEJvb2xlYW4pXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIsIHJtLCBzdGF0LCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IHRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSB0aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIXRpdGxlICYmIHRleHQudHJpbSgpKSB0aXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgaWYgKCF0aXRsZSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHsgZmlsZSwgaGVhZGVyLCB0aXRsZSwgY29sb3IsIHR1cm5zLCBhdDogaW5mby5tdGltZU1zIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdERpcihkaXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICAgIHJldHVybiBuYW1lcy5maWx0ZXIoKG4pID0+IG4uZW5kc1dpdGgoJy5qc29ubCcpKS5tYXAoKG4pID0+IGpvaW4oZGlyLCBuKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb24oZmlsZSkge1xuICByZXR1cm4gdW5saW5rKGZpbGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9qZWN0RGF0YShyb290KSB7XG4gIHJldHVybiBybShwcm9qZWN0RGlyKHJvb3QpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTZXNzaW9ucyh7IHNjb3BlLCByb290IH0pIHtcbiAgbGV0IGZpbGVzID0gW11cbiAgaWYgKHNjb3BlID09PSAnZXZlcnl3aGVyZScpIHtcbiAgICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJylcbiAgICBsZXQgcHJvamVjdHMgPSBbXVxuICAgIHRyeSB7XG4gICAgICBwcm9qZWN0cyA9IGF3YWl0IHJlYWRkaXIocHJvamVjdHNEaXIpXG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnN0IG5lc3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvamVjdHMubWFwKChwKSA9PiBsaXN0RGlyKGpvaW4ocHJvamVjdHNEaXIsIHAsICdzZXNzaW9ucycpKSksXG4gICAgKVxuICAgIGZpbGVzID0gbmVzdGVkLmZsYXQoKVxuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gYXdhaXQgbGlzdERpcihzZXNzaW9uc0Rpcihyb290KSlcbiAgfVxuICBjb25zdCBtZXRhcyA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcCgoZikgPT4gc2Vzc2lvbk1ldGEoZikuY2F0Y2goKCkgPT4gbnVsbCkpKVxuICByZXR1cm4gbWV0YXMuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0aW9uUHJvbXB0KGN1c3RvbUluc3RydWN0aW9ucyA9ICcnKSB7XG4gIGxldCBwcm9tcHQgPSBgWW91ciB0YXNrIGlzIHRvIGNyZWF0ZSBhIGRldGFpbGVkIHN1bW1hcnkgb2YgdGhlIGNvbnZlcnNhdGlvbiBzbyBmYXIsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgeW91ciBwcmV2aW91cyBhY3Rpb25zLiBUaGUgc3VtbWFyeSBtdXN0IGxldCB3b3JrIGNvbnRpbnVlIHNlYW1sZXNzbHkgd2l0aG91dCB0aGUgb3JpZ2luYWwgbWVzc2FnZXMuXG5cbkJlZm9yZSB3cml0aW5nIHRoZSBzdW1tYXJ5LCBkcmFmdCB5b3VyIGFuYWx5c2lzIGluc2lkZSA8YW5hbHlzaXM+IHRhZ3MgKGl0IHdpbGwgYmUgZGlzY2FyZGVkKTogY2hyb25vbG9naWNhbGx5IHJlLXJlYWQgdGhlIGNvbnZlcnNhdGlvbiBhbmQgbm90ZSB0aGUgdXNlcidzIGV4cGxpY2l0IHJlcXVlc3RzIGFuZCBpbnRlbnRzLCB5b3VyIGFwcHJvYWNoLCBrZXkgZGVjaXNpb25zLCBmaWxlIG5hbWVzIGFuZCBjb2RlLCBlcnJvcnMgYW5kIGhvdyB0aGV5IHdlcmUgZml4ZWQsIGFuZCBhbnkgdXNlciBmZWVkYmFjayBvciBjb3JyZWN0aW9ucywgZXNwZWNpYWxseSB3aGVyZSB0aGUgdXNlciB0b2xkIHlvdSB0byBkbyBzb21ldGhpbmcgZGlmZmVyZW50bHkuXG5cblRoZW4gcHJvZHVjZSBhIDxzdW1tYXJ5PiBibG9jayB3aXRoIGV4YWN0bHkgdGhlc2Ugc2VjdGlvbnM6XG5cbjEuIFByaW1hcnkgUmVxdWVzdCBhbmQgSW50ZW50OiBhbGwgb2YgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cywgaW4gZGV0YWlsXG4yLiBLZXkgVGVjaG5pY2FsIENvbmNlcHRzOiB0ZWNobm9sb2dpZXMsIHBhdHRlcm5zLCBhbmQgZGVjaXNpb25zIGluIHBsYXlcbjMuIEZpbGVzIGFuZCBDb2RlIFNlY3Rpb25zOiBmaWxlcyBleGFtaW5lZCwgbW9kaWZpZWQsIG9yIGNyZWF0ZWQ7IHdoeSBlYWNoIG1hdHRlcnM7IGltcG9ydGFudCBzbmlwcGV0cyB2ZXJiYXRpbVxuNC4gRXJyb3JzIGFuZCBGaXhlczogZXZlcnkgZXJyb3IgaGl0IGFuZCBob3cgaXQgd2FzIGZpeGVkLCBpbmNsdWRpbmcgdXNlciBmZWVkYmFjayBhYm91dCBpdFxuNS4gQWxsIFVzZXIgTWVzc2FnZXM6IGV2ZXJ5IG5vbi10b29sLXJlc3VsdCB1c2VyIG1lc3NhZ2UsIHNvIGludGVudCBhbmQgaXRzIGNoYW5nZXMgc3Vydml2ZVxuNi4gUGVuZGluZyBUYXNrczogYW55dGhpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQgYW5kIG5vdCB5ZXQgZG9uZVxuNy4gQ3VycmVudCBXb3JrOiBwcmVjaXNlbHkgd2hhdCB3YXMgaW4gcHJvZ3Jlc3MganVzdCBub3csIHdpdGggZmlsZSBuYW1lcyBhbmQgZGlyZWN0IHF1b3Rlc1xuOC4gTmV4dCBTdGVwOiBvbmx5IGlmIGRpcmVjdGx5IGluIGxpbmUgd2l0aCB0aGUgbW9zdCByZWNlbnQgZXhwbGljaXQgcmVxdWVzdDsgaW5jbHVkZSB2ZXJiYXRpbSBxdW90ZXMgc2hvd2luZyBleGFjdGx5IHdoZXJlIHdvcmsgbGVmdCBvZmYsIG9yIHN0YXRlIHRoYXQgdGhlcmUgaXMgbm9uZVxuXG5UaGlzIHN1bW1hcml6YXRpb24gcmVxdWVzdCBpcyBub3QgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uOiBkbyBub3QgbGlzdCBpdCBhcyBhIHVzZXIgbWVzc2FnZSwgY291bnQgaXQgYXMgYSB0YXNrLCBvciBsZXQgaXQgYXBwZWFyIGFzIHRoZSBjdXJyZW50IHdvcmsgb3IgbmV4dCBzdGVwLiBTdW1tYXJpemUgb25seSB3aGF0IGNhbWUgYmVmb3JlIGl0LlxuXG5SZXNwb25kIHdpdGggcGxhaW4gdGV4dCBvbmx5OiBvbmUgPGFuYWx5c2lzPiBibG9jayBmb2xsb3dlZCBieSBvbmUgPHN1bW1hcnk+IGJsb2NrLmBcblxuICBpZiAoY3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKSkge1xuICAgIHByb21wdCArPSBgXFxuXFxuQWRkaXRpb25hbCBpbnN0cnVjdGlvbnM6XFxuJHtjdXN0b21JbnN0cnVjdGlvbnMudHJpbSgpfWBcbiAgfVxuICByZXR1cm4gcHJvbXB0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb21wYWN0U3VtbWFyeShyYXcpIHtcbiAgbGV0IGZvcm1hdHRlZCA9IHJhdy5yZXBsYWNlKC88YW5hbHlzaXM+W1xcc1xcU10qPzxcXC9hbmFseXNpcz4vLCAnJylcbiAgY29uc3QgbWF0Y2ggPSBmb3JtYXR0ZWQubWF0Y2goLzxzdW1tYXJ5PihbXFxzXFxTXSo/KSg/OjxcXC9zdW1tYXJ5PnwkKS8pXG4gIGlmIChtYXRjaCkge1xuICAgIGZvcm1hdHRlZCA9IG1hdGNoWzFdXG4gIH0gZWxzZSBpZiAoZm9ybWF0dGVkLmluY2x1ZGVzKCc8YW5hbHlzaXM+JykpIHtcbiAgICAvLyB1bmNsb3NlZCBhbmFseXNpcyB3aXRoIG5vIHN1bW1hcnkgYmxvY2s6IHNhbHZhZ2UgZnJvbSB0aGUgZmlyc3RcbiAgICAvLyBzZWN0aW9uIGhlYWRlciByYXRoZXIgdGhhbiBwZXJzaXN0aW5nIHRoZSBzY3JhdGNocGFkXG4gICAgY29uc3Qgc3RhcnQgPSBmb3JtYXR0ZWQuc2VhcmNoKC9eMVxcLlxccy9tKVxuICAgIGZvcm1hdHRlZCA9IHN0YXJ0ID49IDAgPyBmb3JtYXR0ZWQuc2xpY2Uoc3RhcnQpIDogJydcbiAgfVxuICByZXR1cm4gZm9ybWF0dGVkLnJlcGxhY2UoL1xcblxcbisvZywgJ1xcblxcbicpLnRyaW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtbWFyeVNlY3Rpb25zKHRleHQpIHtcbiAgcmV0dXJuICh0ZXh0Lm1hdGNoKC9eXFxkK1xcLlxccy9nbSkgfHwgW10pLmxlbmd0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0IH0gPSB7fSkge1xuICBsZXQgdGV4dCA9IGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbiBvZiB0aGlzIGNvbnZlcnNhdGlvbiB3YXMgY29tcGFjdGVkIHRvIGZyZWUgY29udGV4dC4gU3VtbWFyeSBvZiB3aGF0IGNhbWUgYmVmb3JlOlxcblxcbiR7c3VtbWFyeX1gXG4gIGlmIChzZXNzaW9uRmlsZSkge1xuICAgIHRleHQgKz0gYFxcblxcblRoZSBjb21wbGV0ZSBwcmUtY29tcGFjdGlvbiBoaXN0b3J5IGlzIHByZXNlcnZlZCBhdCAke3Nlc3Npb25GaWxlfSAoanNvbmwsIG9uZSBldmVudCBwZXIgbGluZSkuIElmIHlvdSBuZWVkIGV4YWN0IGRldGFpbHMgZnJvbSBiZWZvcmUgY29tcGFjdGlvbiwgc3VjaCBhcyBjb2RlIHlvdSBnZW5lcmF0ZWQgb3IgcHJlY2lzZSBlcnJvciB0ZXh0LCByZWFkIHRoYXQgZmlsZSB3aXRoIHlvdXIgdG9vbHMuYFxuICB9XG4gIGlmIChyZWNlbnRLZXB0KSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzIGZvbGxvdyB2ZXJiYXRpbS5gXG4gIH1cbiAgdGV4dCArPSBgXFxuXFxuQ29udGludWUgZXhhY3RseSB3aGVyZSB0aGluZ3MgbGVmdCBvZmYuIERvIG5vdCByZWNhcCwgYWNrbm93bGVkZ2UgdGhpcyBzdW1tYXJ5LCBvciByZS1hc2sgc2V0dGxlZCBxdWVzdGlvbnMuYFxuICByZXR1cm4gdGV4dFxufVxuIiwgImltcG9ydCB7IGNvbnRpbnVhdGlvbk1lc3NhZ2UgfSBmcm9tICcuL2NvbXBhY3Rpb24uanMnXG5cbmNvbnN0IERST1BQSU5HX01PREVTID0gWydib3RoJywgJ2NoYXQnLCAnc3VtbWFyeSddXG5cbi8vIGNvbnRleHQgZWRpdGluZzogYSBsYXJnZSB0b29sIHJlc3VsdCBrZWVwcyBnZXR0aW5nIHJlLXNlbnQgd2l0aCBldmVyeVxuLy8gcmVxdWVzdCBsb25nIGFmdGVyIHRoZSBtb2RlbCBoYXMgdXNlZCBpdC4gb25jZSB0aGUgY29udmVyc2F0aW9uIGhhcyBtb3ZlZFxuLy8gb24gKHR3byB1c2VyIHR1cm5zIHBhc3QgaXQpLCB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIGEgc2hvcnQgbm90ZSBpbiB0aGVcbi8vIG1vZGVsJ3MgdmlldyBvbmx5OyB0aGUgdHJhbnNjcmlwdCBhbmQgdGhlIGpzb25sIGtlZXAgdGhlIHJlYWwgdGhpbmcsIGFuZFxuLy8gdGhlIG1vZGVsIGNhbiByZS1ydW4gdGhlIHRvb2wgaWYgaXQgdHJ1bHkgbmVlZHMgdGhlIGRhdGEgYWdhaW5cbmNvbnN0IEVMSURFX01JTl9DSEFSUyA9IDQwMDBcbmNvbnN0IEVMSURFX0FGVEVSX1VTRVJfVFVSTlMgPSAyXG5cbmZ1bmN0aW9uIGVsaWRlU3RhbGVUb29sUmVzdWx0cyhoaXN0b3J5KSB7XG4gIGNvbnN0IHVzZXJJbmRleGVzID0gW11cbiAgaGlzdG9yeS5mb3JFYWNoKChtZXNzYWdlLCBpKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB1c2VySW5kZXhlcy5wdXNoKGkpXG4gIH0pXG4gIGNvbnN0IGN1dG9mZiA9IHVzZXJJbmRleGVzLmF0KC1FTElERV9BRlRFUl9VU0VSX1RVUk5TKVxuICBpZiAoY3V0b2ZmID09PSB1bmRlZmluZWQpIHJldHVybiBoaXN0b3J5XG4gIHJldHVybiBoaXN0b3J5Lm1hcCgobWVzc2FnZSwgaSkgPT4ge1xuICAgIGlmIChpID49IGN1dG9mZiB8fCBtZXNzYWdlLnJvbGUgIT09ICd0b29sJykgcmV0dXJuIG1lc3NhZ2VcbiAgICBjb25zdCBjb250ZW50ID0gU3RyaW5nKG1lc3NhZ2UuY29udGVudCA/PyAnJylcbiAgICBpZiAoY29udGVudC5sZW5ndGggPCBFTElERV9NSU5fQ0hBUlMpIHJldHVybiBtZXNzYWdlXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBjb250ZW50OiBgW3Rvb2wgcmVzdWx0IGVsaWRlZCB0byBzYXZlIGNvbnRleHQ6ICR7Y29udGVudC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoKX0gY2hhcnMuIHJlLXJ1biB0aGUgdG9vbCBpZiB0aGlzIGlzIG5lZWRlZCBhZ2Fpbl1gLFxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gYWN0aXZlUmV3aW5kcyhldmVudHMpIHtcbiAgY29uc3QgY2FuY2VsZWQgPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpIGNhbmNlbGVkLmFkZChlLmRhdGEucmV3aW5kSWQpXG4gIH1cbiAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZCcgJiYgIWNhbmNlbGVkLmhhcyhlLmlkKSlcbn1cblxuZnVuY3Rpb24gZHJvcHBlZElkcyhldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IG5ldyBTZXQoKVxuICBjb25zdCBpbmRleCA9IG5ldyBNYXAoZXZlbnRzLm1hcCgoZSwgaSkgPT4gW2UuaWQsIGldKSlcbiAgZm9yIChjb25zdCByZXdpbmQgb2YgYWN0aXZlUmV3aW5kcyhldmVudHMpKSB7XG4gICAgaWYgKCFEUk9QUElOR19NT0RFUy5pbmNsdWRlcyhyZXdpbmQuZGF0YS5tb2RlKSkgY29udGludWVcbiAgICBjb25zdCBmcm9tID0gaW5kZXguZ2V0KHJld2luZC5kYXRhLnRhcmdldClcbiAgICBjb25zdCB0byA9IGluZGV4LmdldChyZXdpbmQuaWQpXG4gICAgaWYgKGZyb20gPT09IHVuZGVmaW5lZCB8fCB0byA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87IGkrKykgZHJvcHBlZC5hZGQoZXZlbnRzW2ldLmlkKVxuICB9XG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmZ1bmN0aW9uIGFkZFVzYWdlSW50byh0b3RhbCwgdXNhZ2UpIHtcbiAgdG90YWwucHJvbXB0VG9rZW5zICs9IHVzYWdlLnByb21wdFRva2VucyB8fCAwXG4gIHRvdGFsLmNvbXBsZXRpb25Ub2tlbnMgKz0gdXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwXG4gIHRvdGFsLnRvdGFsVG9rZW5zICs9IHVzYWdlLnRvdGFsVG9rZW5zIHx8IDBcbiAgdG90YWwuY2FjaGVkVG9rZW5zICs9IHVzYWdlLmNhY2hlZFRva2VucyB8fCAwXG4gIHRvdGFsLnRob3VnaHRUb2tlbnMgKz0gdXNhZ2UudGhvdWdodFRva2VucyB8fCAwXG59XG5cbmZ1bmN0aW9uIGVtcHR5VXNhZ2UoKSB7XG4gIHJldHVybiB7IHByb21wdFRva2VuczogMCwgY29tcGxldGlvblRva2VuczogMCwgdG90YWxUb2tlbnM6IDAsIGNhY2hlZFRva2VuczogMCwgdGhvdWdodFRva2VuczogMCB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IF9yYXc6IHJhdyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50SWQpIHtcbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5LnB1c2gobWVzc2FnZSlcbiAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnB1c2goZXZlbnRJZClcbn1cblxuZnVuY3Rpb24gZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2VcbiAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScpIHJldHVyblxuICBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnQuaWQpXG5cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgPyBtZXNzYWdlLmNvbnRlbnRcbiAgICAgICAgICAubWFwKChwKSA9PiAocC50eXBlID09PSAndGV4dCcgPyBwLnRleHQgOiBgW2ltYWdlOiAke1N0cmluZyhwLnNvdXJjZT8ucGF0aCB8fCAnJykuc3BsaXQoJy8nKS5wb3AoKSB8fCAnYXR0YWNoZWQnfV1gKSlcbiAgICAgICAgICAuam9pbignJylcbiAgICAgIDogU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndXNlcicsIHRleHQsIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCwgZXZlbnRJZDogZXZlbnQuaWQgfSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQpIHtcbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsIG1vZGVsOiBzdGF0ZS5tb2RlbCB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS50b29sX2NhbGxzIHx8IFtdKSB7XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBhcmdzOiBwYXJzZUFyZ3MoY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpLFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuaWQsXG4gICAgICB9XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goaXRlbSlcbiAgICAgIHN0YXRlLnRvb2xJdGVtcy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3Rvb2wnKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQobWVzc2FnZS50b29sX2NhbGxfaWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0ucmVzdWx0VGV4dCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgeyBtb2RlLCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQgPSBbXSB9ID0gZXZlbnQuZGF0YVxuICBmb3IgKGNvbnN0IGNhbGxJZCBvZiByZXZlcnRlZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGNhbGxJZClcbiAgICBpZiAoaXRlbSkgaXRlbS5zdGF0dXMgPSAncmV2ZXJ0ZWQnXG4gIH1cbiAgaWYgKG1vZGUgPT09ICdzdW1tYXJ5JyAmJiBzdW1tYXJ5VGV4dCkge1xuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAncmV3aW5kJywgdGV4dDogc3VtbWFyeVRleHQgfSlcbiAgICBwdXNoSGlzdG9yeShzdGF0ZSwge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiBgW3N1bW1hcnkgb2YgdGhlIHJld291bmQgY29udmVyc2F0aW9uXVxcbiR7c3VtbWFyeVRleHR9YCxcbiAgICB9LCBldmVudC5pZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3RhdGUoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBkcm9wcGVkSWRzKGV2ZW50cylcbiAgY29uc3QgY2FuY2VsZWRVbmRvVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kX3VuZG8nKS5tYXAoKGUpID0+IGUuZGF0YS5yZXdpbmRJZCksXG4gIClcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICB0cmFuc2NyaXB0OiBbXSxcbiAgICBwcm92aWRlckhpc3Rvcnk6IFtdLFxuICAgIGhpc3RvcnlFdmVudElkczogW10sXG4gICAgbW9kZWw6IG51bGwsXG4gICAgZWZmb3J0OiB1bmRlZmluZWQsXG4gICAgdXNhZ2U6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUJ5TW9kZWw6IHt9LFxuICAgIHVzYWdlQWN0aXZlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VBY3RpdmVCeU1vZGVsOiB7fSxcbiAgICBsYXN0UHJvbXB0VG9rZW5zOiAwLFxuICAgIGxhc3RQcm9tcHRNb2RlbDogbnVsbCxcbiAgICBsb2FkZWRDb250ZXh0OiBuZXcgU2V0KCksXG4gICAgdG9vbEl0ZW1zOiBuZXcgTWFwKCksXG4gIH1cblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2UsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBjb25zdCBieU1vZGVsID0gKHN0YXRlLnVzYWdlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgYWRkVXNhZ2VJbnRvKGJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBpZiAoIWRyb3BwZWQuaGFzKGV2ZW50LmlkKSkge1xuICAgICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2VBY3RpdmUsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIGNvbnN0IGFjdGl2ZUJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICAgIGFkZFVzYWdlSW50byhhY3RpdmVCeU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICAvLyBvbmx5IGV2ZW50cyB0aGF0IHJlY29yZGVkIHRoZSBmaW5hbCByZXF1ZXN0J3Mgc2l6ZSBjYW4gZHJpdmUgdGhlXG4gICAgICAgIC8vIGNvbnRleHQgbWV0ZXI7IG9sZGVyIGN1bXVsYXRpdmUtb25seSBldmVudHMgd291bGQgb3ZlcnN0YXRlIGl0XG4gICAgICAgIGlmIChldmVudC5kYXRhLmxhc3RQcm9tcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSBldmVudC5kYXRhLmxhc3RQcm9tcHRcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPSBldmVudC5kYXRhLm1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChkcm9wcGVkLmhhcyhldmVudC5pZCkpIGNvbnRpbnVlXG5cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b29sX21ldGEnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGV2ZW50LmRhdGEuY2FsbElkKVxuICAgICAgICBpZiAoaXRlbSkgT2JqZWN0LmFzc2lnbihpdGVtLCBldmVudC5kYXRhLCB7IGtpbmQ6ICd0b29sJywgY2FsbElkOiBpdGVtLmNhbGxJZCB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnaW50ZXJydXB0Jzoge1xuICAgICAgICBjb25zdCBsYXN0ID0gc3RhdGUudHJhbnNjcmlwdC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICdhc3Npc3RhbnQnKSBsYXN0LmludGVycnVwdGVkID0gdHJ1ZVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ3Rvb2wnICYmIGxhc3Quc3RhdHVzID09PSAncnVubmluZycpIGxhc3Quc3RhdHVzID0gJ2ludGVycnVwdGVkJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9kZWxfc3dpdGNoJzpcbiAgICAgICAgc3RhdGUubW9kZWwgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdlZmZvcnQnOlxuICAgICAgICBzdGF0ZS5lZmZvcnQgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgIHN0YXRlLnRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgIHN0YXRlLmNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmV3aW5kJzpcbiAgICAgICAgaWYgKCFjYW5jZWxlZFVuZG9UYXJnZXRzLmhhcyhldmVudC5pZCkpIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29tcGFjdCc6IHtcbiAgICAgICAgY29uc3QgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGUgfSA9IGV2ZW50LmRhdGFcbiAgICAgICAgaWYgKGtlZXBGcm9tICE9PSB1bmRlZmluZWQgfHwgc2Vzc2lvbkZpbGUpIHtcbiAgICAgICAgICBjb25zdCBpZHggPSBrZWVwRnJvbSA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5pbmRleE9mKGtlZXBGcm9tKSA6IC0xXG4gICAgICAgICAgY29uc3Qga2VwdCA9IGlkeCA+PSAwID8gc3RhdGUucHJvdmlkZXJIaXN0b3J5LnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIGNvbnN0IGtlcHRJZHMgPSBpZHggPj0gMCA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0OiBrZXB0Lmxlbmd0aCA+IDAgfSkgfSxcbiAgICAgICAgICAgIC4uLmtlcHQsXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCAuLi5rZXB0SWRzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBgW2NvbnZlcnNhdGlvbiBzdW1tYXJ5XVxcbiR7c3VtbWFyeX1gIH0sXG4gICAgICAgICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnR290IGl0LiBDb250aW51aW5nIGZyb20gdGhhdCBzdW1tYXJ5LicgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIG51bGxdXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdjb21wYWN0JywgdGV4dDogc3VtbWFyeSB9KVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0ID0gW11cbiAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW11cbiAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW11cbiAgICAgICAgc3RhdGUudG9vbEl0ZW1zID0gbmV3IE1hcCgpXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb250ZXh0X2ZpbGUnOlxuICAgICAgICBzdGF0ZS5sb2FkZWRDb250ZXh0LmFkZChldmVudC5kYXRhLnBhdGgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdza2lsbCcsIG5hbWU6IGV2ZW50LmRhdGEubmFtZSB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGhvdWdodHMnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndGhvdWdodHMnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NoZWxsX25vdGUnOlxuICAgICAgY2FzZSAnc3lzdGVtX25vdGUnOlxuICAgICAgICBwdXNoSGlzdG9yeShzdGF0ZSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGV2ZW50LmRhdGEudGV4dCB9LCBldmVudC5pZClcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQ6IGV2ZW50LmRhdGEudGV4dC5zcGxpdCgnXFxuJylbMF0gfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBlbGlkZVN0YWxlVG9vbFJlc3VsdHMoc3RhdGUucHJvdmlkZXJIaXN0b3J5KVxuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFbnRyaWVzKHN0YXRlKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBzdGF0ZS50cmFuc2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSBlbnRyaWVzLnB1c2goeyB0ZXh0OiBpdGVtLnRleHQsIGNvbnRlbnQ6IGl0ZW0uY29udGVudCwgaW5kZXgsIGV2ZW50SWQ6IGl0ZW0uZXZlbnRJZCB9KVxuICB9KVxuICByZXR1cm4gZW50cmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV3aW5kU3RhdHMoc3RhdGUsIGluZGV4KSB7XG4gIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKGluZGV4KVxuICByZXR1cm4ge1xuICAgIG1zZ3M6IHRhaWwubGVuZ3RoLFxuICAgIGVkaXRzOiB0YWlsLmZpbHRlcigobSkgPT4gbS5raW5kID09PSAndG9vbCcgJiYgbS5yZXZlcnQgJiYgbS5zdGF0dXMgIT09ICdyZXZlcnRlZCcpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29tcG9zZSwgc2NvcGUsIG1vZGVsLCBub1Rvb2xzQ2FsbGVkLCBJbmhlcml0LCBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVQYXJ0KHBhcnQpIHtcbiAgaWYgKHBhcnQudHlwZSAhPT0gJ2ltYWdlJyB8fCBwYXJ0LnNvdXJjZT8ua2luZCAhPT0gJ3BhdGgnKSByZXR1cm4gcGFydFxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwYXJ0LnNvdXJjZS5wYXRoKVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdiYXNlNjQnLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSwgZGF0YTogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSxcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFtpbWFnZSB1bmF2YWlsYWJsZTogJHtwYXJ0LnNvdXJjZS5wYXRofV1gIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBoaXN0b3J5Lm1hcChhc3luYyAobWVzc2FnZSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgICA/IHsgLi4ubWVzc2FnZSwgY29udGVudDogYXdhaXQgUHJvbWlzZS5hbGwobWVzc2FnZS5jb250ZW50Lm1hcChoeWRyYXRlUGFydCkpIH1cbiAgICAgICAgOiBtZXNzYWdlLFxuICAgICksXG4gIClcbn1cblxuLy8gcmVhc29uaW5nIG1vZGVscyB3aXRoIGxhcmdlIGNvbnRleHRzIGNhbiBzaXQgbWludXRlcyBiZWZvcmUgdGhlIGZpcnN0XG4vLyBvdXRwdXQgdG9rZW47IHRoaXMgZ3VhcmRzIGFnYWluc3QgdHJ1bHkgZGVhZCBzdHJlYW1zLCBub3Qgc2xvdyBvbmVzXG5jb25zdCBTVEFMTF9NUyA9IDMwMDAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGFjdEhpc3RvcnkoeyBoaXN0b3J5LCBtb2RlbE5hbWUsIGF1dGgsIHByb21wdCwgc2lnbmFsLCBvblN0cmVhbSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkoe1xuICAgIGhpc3Rvcnk6IFsuLi5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJyksIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBwcm9tcHQgfV0sXG4gICAgdG9vbHM6IFtdLFxuICAgIGFib3J0U2lnbmFsOiBzaWduYWwsXG4gICAgLi4uKG9uU3RyZWFtICYmIHsgc3RyZWFtOiBvblN0cmVhbSB9KSxcbiAgfSlcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgbmV3IEVycm9yKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG4vLyB0aGUgc3VtbWFyeSBoYXMgYSBmaXhlZCBzaGFwZTogYW4gPGFuYWx5c2lzPiBzY3JhdGNocGFkLCB0aGVuIDggbnVtYmVyZWRcbi8vIHNlY3Rpb25zOyB3YXRjaGluZyBoZWFkZXJzIHN0cmVhbSBieSBpcyByZWFsIHByb2dyZXNzLCBub3QgYW4gZXN0aW1hdGVcbmV4cG9ydCBmdW5jdGlvbiBjb21wYWN0UHJvZ3Jlc3Moc3RyZWFtZWQpIHtcbiAgY29uc3QgY2hhcnMgPSBzdHJlYW1lZC5sZW5ndGhcbiAgY29uc3QgYWZ0ZXJBbmFseXNpcyA9IHN0cmVhbWVkLnNwbGl0KCc8L2FuYWx5c2lzPicpWzFdID8/IHN0cmVhbWVkLnNwbGl0KCc8c3VtbWFyeT4nKVsxXVxuICBpZiAoYWZ0ZXJBbmFseXNpcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBwaGFzZTogJ2FuYWx5emluZycsIHNlY3Rpb246IDAsIGNoYXJzIH1cbiAgY29uc3Qgc2VjdGlvbnMgPSAoYWZ0ZXJBbmFseXNpcy5tYXRjaCgvXlxccypcXGQrXFwuXFxzL2dtKSB8fCBbXSkubGVuZ3RoXG4gIGlmIChzZWN0aW9ucyA9PT0gMCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIHJldHVybiB7IHBoYXNlOiAnd3JpdGluZycsIHNlY3Rpb246IE1hdGgubWluKDgsIHNlY3Rpb25zKSwgY2hhcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZSwgYXV0aCB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIHN5c3RlbTogJ1N1bW1hcml6ZSB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbiBleGNlcnB0IGluIDItNCBkZW5zZSBzZW50ZW5jZXMuIENhcHR1cmUgZGVjaXNpb25zLCBjaGFuZ2VzIG1hZGUsIGFuZCBvcGVuIHF1ZXN0aW9ucy4gT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuJyxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkodGV4dC5zbGljZSgwLCAzMDAwMCkpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuVHVybih7IGhpc3RvcnksIHRvb2xzLCByZWNvcmRlciwgbW9kZWxOYW1lLCBlZmZvcnQsIGF1dGgsIHN5c3RlbSwgc2lnbmFsLCBvblN0cmVhbSwgc3RhbGxNcyA9IFNUQUxMX01TIH0pIHtcbiAgY29uc3QgY29sbGVjdGVkID0gW11cbiAgbGV0IHJvdW5kVGV4dCA9ICcnXG4gIGxldCB1c2FnZVNlZW4gPSBudWxsXG4gIGxldCBzdGFsbGVkID0gZmFsc2VcbiAgLy8gdXNhZ2UgZXZlbnRzIGNhcnJ5IGN1bXVsYXRpdmUgdG90YWxzIHBlciByZXF1ZXN0IHJvdW5kLCBzbyBjb25zZWN1dGl2ZVxuICAvLyBkZWx0YXMgcmVjb3ZlciBlYWNoIHJvdW5kJ3MgdHJ1ZSBpbnB1dCBzaXplOyB0aGUgbGFzdCBkZWx0YSBpcyB0aGUgc2l6ZVxuICAvLyBvZiB0aGUgY3VycmVudCBjb250ZXh0IGFzIGFjdHVhbGx5IHNlbnRcbiAgbGV0IGN1bXVsYXRpdmVQcm9tcHQgPSAwXG4gIGxldCBsYXN0UHJvbXB0VG9rZW5zID0gMFxuXG4gIGNvbnN0IGludGVybmFsID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gIGNvbnN0IG9uVXNlckFib3J0ID0gKCkgPT4gaW50ZXJuYWwuYWJvcnQoKVxuICBpZiAoc2lnbmFsPy5hYm9ydGVkKSBpbnRlcm5hbC5hYm9ydCgpXG4gIGVsc2Ugc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uVXNlckFib3J0LCB7IG9uY2U6IHRydWUgfSlcblxuICBsZXQgd2F0Y2hkb2cgPSBudWxsXG4gIGNvbnN0IGFybSA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgd2F0Y2hkb2cgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN0YWxsZWQgPSB0cnVlXG4gICAgICBpbnRlcm5hbC5hYm9ydCgpXG4gICAgfSwgc3RhbGxNcylcbiAgfVxuXG4gIGNvbnN0IHN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9leGVjdXRpbmcnKSB7XG4gICAgICAvLyBhIHRvb2wgbWF5IGxlZ2l0aW1hdGVseSBydW4gZm9yIG1pbnV0ZXMgKHRlc3Qgc3VpdGVzLCBzbG93IGZldGNoZXMpXG4gICAgICAvLyBhbmQgZW1pdHMgbm90aGluZyB3aGlsZSBpdCBkb2VzOyB0aGUgd2F0Y2hkb2cgZ3VhcmRzIHRoZSBwcm92aWRlclxuICAgICAgLy8gc3RyZWFtLCBzbyBwYXVzZSBpdCB1bnRpbCB0aGUgdG9vbCBmaW5pc2hlcy4gdG9vbHMgY2FycnkgdGhlaXIgb3duXG4gICAgICAvLyB0aW1lb3V0cyAoYmFzaCAxMjBzIGRlZmF1bHQsIHdlYiB0b29scyB2aWEgZHJlZGdlKVxuICAgICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgICAgcmVjb3JkZXIuY3VycmVudENhbGwgPSBldmVudC5jYWxsXG4gICAgICBvblN0cmVhbT8uKGV2ZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGFybSgpXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgcm91bmRUZXh0ICs9IGV2ZW50LmNvbnRlbnRcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NhbGxzX3JlYWR5Jykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogcm91bmRUZXh0LCB0b29sX2NhbGxzOiBldmVudC5jYWxscyB9KVxuICAgICAgcm91bmRUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoZXZlbnQucmVzdWx0KSB9KVxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICd0b29sJywgdG9vbF9jYWxsX2lkOiBldmVudC5jYWxsLmlkLCBjb250ZW50OiBKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBldmVudC5lcnJvciB9KSB9KVxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3VzYWdlJykge1xuICAgICAgdXNhZ2VTZWVuID0gZXZlbnQudXNhZ2VcbiAgICAgIGNvbnN0IHByb21wdCA9IGV2ZW50LnVzYWdlPy5wcm9tcHRUb2tlbnMgfHwgMFxuICAgICAgbGFzdFByb21wdFRva2VucyA9IE1hdGgubWF4KDAsIHByb21wdCAtIGN1bXVsYXRpdmVQcm9tcHQpXG4gICAgICBjdW11bGF0aXZlUHJvbXB0ID0gcHJvbXB0XG4gICAgfVxuICAgIG9uU3RyZWFtPy4oZXZlbnQpXG4gIH1cblxuICBjb25zdCBiYXNlID0gaGlzdG9yeS5sZW5ndGhcbiAgY29uc3Qgc3RlcCA9IGNvbXBvc2UoXG4gICAgc2NvcGUoXG4gICAgICB7IGluaGVyaXQ6IEluaGVyaXQuQ29udmVyc2F0aW9uLCBzeXN0ZW0sIHRvb2xzLCB1bnRpbDogbm9Ub29sc0NhbGxlZCgpLCBzdHJlYW0gfSxcbiAgICAgIChjdHgpID0+XG4gICAgICAgIG1vZGVsKHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgIC4uLihlZmZvcnQgJiYgeyBlZmZvcnQgfSksXG4gICAgICAgICAgLi4uKGF1dGg/LmFwaUtleSAmJiB7IGFwaUtleTogYXV0aC5hcGlLZXkgfSksXG4gICAgICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgICAgIH0pKHsgLi4uY3R4LCBhYm9ydFNpZ25hbDogaW50ZXJuYWwuc2lnbmFsIH0pLFxuICAgICksXG4gIClcblxuICBjb25zdCBwYXJ0aWFsTWVzc2FnZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBbLi4uY29sbGVjdGVkXVxuICAgIGlmIChyb3VuZFRleHQpIG1lc3NhZ2VzLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogcm91bmRUZXh0IH0pXG4gICAgcmV0dXJuIG1lc3NhZ2VzXG4gIH1cblxuICBhcm0oKVxuICB0cnkge1xuICAgIGNvbnN0IG91dCA9IGF3YWl0IHN0ZXAoeyBoaXN0b3J5OiBhd2FpdCBoeWRyYXRlSW1hZ2VzKGhpc3RvcnkpLCB0b29sczogW10gfSlcbiAgICBjb25zdCBpbnRlcnJ1cHRlZCA9ICEhc2lnbmFsPy5hYm9ydGVkIHx8IHN0YWxsZWRcbiAgICBpZiAoaW50ZXJydXB0ZWQpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQsIHN0YWxsZWQgfVxuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IG91dC5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJykuc2xpY2UoYmFzZSlcbiAgICByZXR1cm4geyBtZXNzYWdlcywgdXNhZ2U6IG91dC51c2FnZSB8fCBudWxsLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogZmFsc2UsIHN0YWxsZWQ6IGZhbHNlIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicgfHwgaW50ZXJuYWwuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IHRydWUsIHN0YWxsZWQgfVxuICAgIH1cbiAgICAvLyBhIHByb3ZpZGVyIGVycm9yIG1pZC10dXJuIG11c3Qgbm90IGRpc2NhcmQgdGhlIHJvdW5kcyB0aGF0IGFscmVhZHlcbiAgICAvLyByYW46IHRvb2xzIG11dGF0ZWQgdGhlIHdvcmxkLCBzbyB0aGUgcmVjb3JkIGhhcyB0byBzdXJ2aXZlXG4gICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogdHJ1ZSwgc3RhbGxlZDogZmFsc2UsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKSB9XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydClcbiAgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyA9IHt9KSB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGFyZ3MucGF0aCB8fCBhcmdzLmNvbW1hbmQgfHwgYXJncy5wYXR0ZXJuIHx8IGFyZ3MudXJsIHx8IGFyZ3MubmFtZVxuICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ3N0cmluZycgJiYgY2FuZGlkYXRlKSByZXR1cm4gY2FuZGlkYXRlXG4gIGNvbnN0IHJhdyA9IEpTT04uc3RyaW5naWZ5KGFyZ3MpXG4gIGlmICghcmF3IHx8IHJhdyA9PT0gJ3t9JykgcmV0dXJuIG5hbWVcbiAgcmV0dXJuIHJhdy5sZW5ndGggPiA2MCA/IHJhdy5zbGljZSgwLCA2MCkgKyAnXHUyMDI2JyA6IHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVjb3JkZXIoKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudENhbGw6IG51bGwsXG4gICAgZW50cmllczogW10sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBiZWdpbihuYW1lLCBhcmdzKSB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSB7XG4gICAgICAgIGNhbGxJZDogdGhpcy5jdXJyZW50Q2FsbD8uaWQgPz8gbnVsbCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdGl0bGU6IGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzKSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGV4dHJhKGZpZWxkcykge1xuICAgICAgaWYgKHRoaXMucGVuZGluZykgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcylcbiAgICB9LFxuICAgIGRvbmUoZmllbGRzID0ge30pIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nKSByZXR1cm5cbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMsIHtcbiAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHRoaXMucGVuZGluZy5zdGFydGVkQXQsXG4gICAgICB9KVxuICAgICAgZGVsZXRlIHRoaXMucGVuZGluZy5zdGFydGVkQXRcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcuZnVsbE91dHB1dD8ubGVuZ3RoID4gMjAwMDAwKSB7XG4gICAgICAgIHRoaXMucGVuZGluZy5mdWxsT3V0cHV0ID0gdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQuc2xpY2UoMCwgMjAwMDAwKSArICdcXG5bdHJ1bmNhdGVkXSdcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllcy5wdXNoKHRoaXMucGVuZGluZylcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRlZChyZWNvcmRlciwgbmFtZSwgZm4pIHtcbiAgcmV0dXJuIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgcmVjb3JkZXIuYmVnaW4obmFtZSwgYXJncylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oYXJncylcbiAgICAgIGlmICghcmVjb3JkZXIucGVuZGluZz8uZnVsbE91dHB1dCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7XG4gICAgICAgICAgZnVsbE91dHB1dDogdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmVjb3JkZXIuZG9uZSgpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWNvcmRlci5kb25lKHsgc3RhdHVzOiAnZXJyb3InLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcbmNvbnN0IE1BWF9MSU5FX0xFTkdUSCA9IDIwMDBcblxuZnVuY3Rpb24gaXNCaW5hcnkoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGJ1ZmZlci5sZW5ndGgsIDgwMDApXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYnVmZmVyW2ldID09PSAwKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdyZWFkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlYWQgYSBmaWxlLiBSZXR1cm5zIGxpbmUtbnVtYmVyZWQgY29udGVudC4gVXNlIG9mZnNldC9saW1pdCBmb3IgbGFyZ2UgZmlsZXMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvZmZzZXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnMS1pbmRleGVkIGxpbmUgdG8gc3RhcnQgZnJvbScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggbGluZXMgdG8gcmV0dXJuJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9mZnNldCA9IDEsIGxpbWl0ID0gTUFYX0xJTkVTIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwpXG4gICAgICBpZiAoaXNCaW5hcnkoYnVmKSkgdGhyb3cgbmV3IEVycm9yKGAke3BhdGh9IGlzIGEgYmluYXJ5IGZpbGVgKVxuICAgICAgY29uc3QgbGluZXMgPSBidWYudG9TdHJpbmcoJ3V0Zi04Jykuc3BsaXQoJ1xcbicpXG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgb2Zmc2V0IC0gMSlcbiAgICAgIGNvbnN0IGNvdW50ID0gTWF0aC5taW4obGltaXQsIE1BWF9MSU5FUylcbiAgICAgIGNvbnN0IHNsaWNlZCA9IGxpbmVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGNvdW50KVxuICAgICAgY29uc3QgbnVtYmVyZWQgPSBzbGljZWRcbiAgICAgICAgLm1hcCgobGluZSwgaSkgPT4gYCR7c3RhcnQgKyBpICsgMX1cXHQke2xpbmUubGVuZ3RoID4gTUFYX0xJTkVfTEVOR1RIID8gbGluZS5zbGljZSgwLCBNQVhfTElORV9MRU5HVEgpICsgJ1x1MjAyNicgOiBsaW5lfWApXG4gICAgICAgIC5qb2luKCdcXG4nKVxuXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IHNsaWNlZC5qb2luKCdcXG4nKSB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0geyBjb250ZW50OiBudW1iZXJlZCwgdG90YWxMaW5lczogbGluZXMubGVuZ3RoIH1cbiAgICAgIGlmIChzdGFydCArIGNvdW50IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5ub3RlID0gYHNob3dpbmcgbGluZXMgJHtzdGFydCArIDF9LSR7c3RhcnQgKyBzbGljZWQubGVuZ3RofSBvZiAke2xpbmVzLmxlbmd0aH1gXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgc3RydWN0dXJlZFBhdGNoIH0gZnJvbSAnZGlmZidcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEaWZmKHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIGNvbnRleHRMaW5lcyA9IDMpIHtcbiAgY29uc3QgcGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gocGF0aCwgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgJycsICcnLCB7IGNvbnRleHQ6IGNvbnRleHRMaW5lcyB9KVxuICBsZXQgYWRkaXRpb25zID0gMFxuICBsZXQgZGVsZXRpb25zID0gMFxuICBjb25zdCBodW5rcyA9IHBhdGNoLmh1bmtzLm1hcCgoaCkgPT4gKHtcbiAgICBvbGRTdGFydDogaC5vbGRTdGFydCxcbiAgICBuZXdTdGFydDogaC5uZXdTdGFydCxcbiAgICBsaW5lczogaC5saW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBsaW5lWzBdID09PSAnLScgPyAncmVtb3ZlJyA6IGxpbmVbMF0gPT09ICcrJyA/ICdhZGQnIDogJ2NvbnRleHQnXG4gICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIGFkZGl0aW9ucysrXG4gICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIGRlbGV0aW9ucysrXG4gICAgICByZXR1cm4geyB0eXBlLCB0ZXh0OiBsaW5lLnNsaWNlKDEpIH1cbiAgICB9KSxcbiAgfSkpXG4gIHJldHVybiB7IHBhdGgsIGh1bmtzLCBhZGRpdGlvbnMsIGRlbGV0aW9ucyB9XG59XG4iLCAiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGUoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd3JpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnV3JpdGUgY29udGVudCB0byBhIGZpbGUsIGNyZWF0aW5nIGl0IGFuZCBhbnkgcGFyZW50IGRpcmVjdG9yaWVzIGlmIG5lZWRlZC4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgZnVsbCBmaWxlIGNvbnRlbnQgdG8gd3JpdGUnIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBjb250ZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUoZnVsbCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBsZXQgYmVmb3JlID0gbnVsbFxuICAgICAgdHJ5IHtcbiAgICAgICAgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgaWYgKGJlZm9yZSA9PT0gY29udGVudCkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgcGF0aCwgdW5jaGFuZ2VkOiB0cnVlLCBub3RlOiAnZmlsZSBhbHJlYWR5IGhhZCBleGFjdGx5IHRoaXMgY29udGVudCcgfVxuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGNvbnRlbnQsICd1dGYtOCcpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGggfVxuICAgICAgaWYgKGJlZm9yZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyOiBjb250ZW50IH0gfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5kZWxldGlvbnMgPSBkaWZmLmRlbGV0aW9uc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsICcnLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmU6ICcnLCBhZnRlcjogY29udGVudCB9LCBjcmVhdGVkOiB0cnVlIH0pXG4gICAgICAgIHJlc3VsdC5hZGRpdGlvbnMgPSBkaWZmLmFkZGl0aW9uc1xuICAgICAgICByZXN1bHQuY3JlYXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuY29uc3Qgbm9ybWFsaXplID0gKHMpID0+XG4gIHNcbiAgICAucmVwbGFjZSgvXFxzKyQvZ20sICcnKVxuICAgIC5yZXBsYWNlKC9bXHUyMDE4XHUyMDE5XS9nLCBcIidcIilcbiAgICAucmVwbGFjZSgvW1x1MjAxQ1x1MjAxRF0vZywgJ1wiJylcbiAgICAucmVwbGFjZSgvW1x1MjAxM1x1MjAxNF0vZywgJy0nKVxuXG5mdW5jdGlvbiBsb2NhdGUoY29udGVudCwgb2xkLCBwYXRoKSB7XG4gIGxldCBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihvbGQpXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBpZiAoY29udGVudC5pbmRleE9mKG9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBvbGQubGVuZ3RoLCBjb250ZW50IH1cbiAgfVxuXG4gIGNvbnN0IG5vcm1lZENvbnRlbnQgPSBub3JtYWxpemUoY29udGVudClcbiAgY29uc3Qgbm9ybWVkT2xkID0gbm9ybWFsaXplKG9sZClcbiAgaW5kZXggPSBub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkKVxuICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gIGlmIChub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICB9XG4gIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG5vcm1lZE9sZC5sZW5ndGgsIGNvbnRlbnQ6IG5vcm1lZENvbnRlbnQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlZGl0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGxhY2Ugb2xkVGV4dCB3aXRoIG5ld1RleHQgaW4gYSBmaWxlLiBvbGRUZXh0IG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSB1bmxlc3MgcmVwbGFjZUFsbCBpcyBzZXQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvbGRUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2V4YWN0IHRleHQgdG8gcmVwbGFjZSwgbXVzdCBiZSB1bmlxdWUgaW4gdGhlIGZpbGUnIH0sXG4gICAgICBuZXdUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2VtZW50IHRleHQnIH0sXG4gICAgICByZXBsYWNlQWxsOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdyZXBsYWNlIGV2ZXJ5IG9jY3VycmVuY2UnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgcmVwbGFjZUFsbCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuXG4gICAgICBsZXQgYWZ0ZXJcbiAgICAgIGlmIChyZXBsYWNlQWxsKSB7XG4gICAgICAgIGlmICghYmVmb3JlLmluY2x1ZGVzKG9sZFRleHQpKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gICAgICAgIGFmdGVyID0gYmVmb3JlLnNwbGl0KG9sZFRleHQpLmpvaW4obmV3VGV4dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGxlbmd0aCwgY29udGVudCB9ID0gbG9jYXRlKGJlZm9yZSwgb2xkVGV4dCwgcGF0aClcbiAgICAgICAgYWZ0ZXIgPSBjb250ZW50LnNsaWNlKDAsIGluZGV4KSArIG5ld1RleHQgKyBjb250ZW50LnNsaWNlKGluZGV4ICsgbGVuZ3RoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgYWZ0ZXIsICd1dGYtOCcpXG4gICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBhZnRlcilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXIgfSB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoLCBhZGRpdGlvbnM6IGRpZmYuYWRkaXRpb25zLCBkZWxldGlvbnM6IGRpZmYuZGVsZXRpb25zIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfT1VUUFVUX0NIQVJTID0gMzAwMDBcblxuZnVuY3Rpb24gY2FwcGVkKHRleHQpIHtcbiAgaWYgKHRleHQubGVuZ3RoIDw9IE1BWF9PVVRQVVRfQ0hBUlMpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnNsaWNlKDAsIE1BWF9PVVRQVVRfQ0hBUlMpICsgYFxcbltvdXRwdXQgdHJ1bmNhdGVkIGF0ICR7TUFYX09VVFBVVF9DSEFSU30gY2hhcmFjdGVyc11gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNoKHsgY3dkLCByZWNvcmRlciwgc2lnbmFsLCBzaGVsbHMgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdiYXNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1J1biBhIHNoZWxsIGNvbW1hbmQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXR1cm5zIHN0ZG91dCwgc3RkZXJyLCBhbmQgZXhpdCBjb2RlLiBGb3JlZ3JvdW5kIGNvbW1hbmRzIGFyZSBraWxsZWQgYXQgdGhlIHRpbWVvdXQgKGRlZmF1bHQgMTIwcyksIHNvIG5ldmVyIHdhaXQgb24gbG9uZyBleHRlcm5hbHMgbGlrZSBDSSBydW5zLCBkZXBsb3lzLCBvciB3YXRjaCBsb29wcyBpbiB0aGUgZm9yZWdyb3VuZDogcnVuIHRob3NlIHdpdGggYmFja2dyb3VuZCB0cnVlLCBmaW5pc2ggeW91ciB0dXJuLCBhbmQgdGhlIHNoZWxsXFwncyBleGl0IHdpbGwgbm90aWZ5IHlvdSBzbyB5b3UgY2FuIHJlcG9ydCB0aGUgb3V0Y29tZS4gQmFja2dyb3VuZCBhbHNvIGZpdHMgbG9uZy1saXZlZCBwcm9jZXNzZXMgbGlrZSBkZXYgc2VydmVyczsgY2hlY2sgb24gYSBiYWNrZ3JvdW5kIHNoZWxsIHdpdGggc2hlbGxfb3V0cHV0IGFuZCBzdG9wIGl0IHdpdGggc2hlbGxfa2lsbC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgY29tbWFuZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgY29tbWFuZCB0byBydW4nIH0sXG4gICAgICB0aW1lb3V0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2ZvcmVncm91bmQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgMTIwMDAwOyBwcmVmZXIgYmFja2dyb3VuZCB0cnVlIG92ZXIgYSBsYXJnZSB0aW1lb3V0Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGJhY2tncm91bmQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3J1biBpbiB0aGUgYmFja2dyb3VuZCBhbmQgcmV0dXJuIGEgc2hlbGwgaWQgaW1tZWRpYXRlbHknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZm9yIGJhY2tncm91bmQgc2hlbGxzOiBhIGZldyB3b3JkcyBuYW1pbmcgd2hhdCB0aGlzIGlzIGZvciwgc2hvd24gdG8gdGhlIGh1bWFuIHdhdGNoaW5nIChlLmcuIFwidml0ZSBkZXYgc2VydmVyXCIsIFwid2F0Y2hpbmcgY2lcIiknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogKHsgY29tbWFuZCwgdGltZW91dCwgYmFja2dyb3VuZCwgZGVzY3JpcHRpb24gfSkgPT4ge1xuICAgICAgaWYgKGJhY2tncm91bmQgJiYgc2hlbGxzKSB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IGRlc2NyaXB0aW9uIHx8IGNvbW1hbmQsIGJhY2tncm91bmQ6IHRydWUgfSlcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gc2hlbGxzLnN0YXJ0KGNvbW1hbmQsIHsgY3dkLCBkZXNjcmlwdGlvbiB9KVxuICAgICAgICByZXR1cm4geyBzaGVsbElkOiBpZCwgc3RhdHVzOiAncnVubmluZycgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IGNvbW1hbmQgfSlcbiAgICAgICAgY29uc3QgY2hpbGQgPSBleGVjKFxuICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgdGltZW91dDogdGltZW91dCB8fCAxMjAwMDAsXG4gICAgICAgICAgICBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQsXG4gICAgICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIEZPUkNFX0NPTE9SOiAnMCcsIE5PX0NPTE9SOiAnMScgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGl0Q29kZSA9IGVyciA/ICh0eXBlb2YgZXJyLmNvZGUgPT09ICdudW1iZXInID8gZXJyLmNvZGUgOiAxKSA6IDBcbiAgICAgICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogW3N0ZG91dCwgc3RkZXJyXS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJykgfSlcbiAgICAgICAgICAgIHJlc29sdmUoeyBzdGRvdXQ6IGNhcHBlZChzdGRvdXQgfHwgJycpLCBzdGRlcnI6IGNhcHBlZChzdGRlcnIgfHwgJycpLCBleGl0Q29kZSB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY2hpbGQua2lsbCgpLCB7IG9uY2U6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCBwYXR0ZXJuLCAnLS1nbG9iJywgJyEqKi9ub2RlX21vZHVsZXMvKionLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gMSkgcmVzb2x2ZShudWxsKVxuICAgICAgZWxzZSByZXNvbHZlKHN0ZG91dCA/IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pIDogW10pXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2IoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ2xvYicsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGZpbGVzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJlc3BlY3RzIC5naXRpZ25vcmU7IHVzZSBiYXNoIHRvIGxvb2sgaW5zaWRlIGlnbm9yZWQgcGF0aHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZ2xvYiBwYXR0ZXJuLCBlLmcuIHNyYy8qKi8qLmpzJyB9LFxuICAgICAgbWF4UmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdjYXAgb24gcmV0dXJuZWQgcGF0aHMsIGRlZmF1bHQgMjAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdHRlcm4sIG1heFJlc3VsdHMgPSBNQVhfUkVTVUxUUyB9KSA9PiB7XG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXR0ZXJuIH0pXG4gICAgICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmZyhwYXR0ZXJuLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogZmlsZXMuam9pbignXFxuJykgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBtYXhSZXN1bHRzKSxcbiAgICAgICAgdG90YWxGb3VuZDogZmlsZXMubGVuZ3RoLFxuICAgICAgICB0cnVuY2F0ZWQ6IGZpbGVzLmxlbmd0aCA+IG1heFJlc3VsdHMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9SRVNVTFRTID0gMjAwXG5cbmZ1bmN0aW9uIHJ1blJpcGdyZXAoYXJncywgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSkgPT4ge1xuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICBkb25lKGVyciAmJiAhc3Rkb3V0ID8gJycgOiBzdGRvdXQgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyZXAoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ3JlcCcsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggZmlsZSBjb250ZW50cyB3aXRoIGEgcmVnZXggdXNpbmcgcmlwZ3JlcC4gbW9kZSBcImNvbnRlbnRcIiByZXR1cm5zIG1hdGNoaW5nIGxpbmVzLCBcImZpbGVzXCIgcmV0dXJucyBtYXRjaGluZyBmaWxlIHBhdGhzLCBcImNvdW50XCIgcmV0dXJucyBwZXItZmlsZSBtYXRjaCBjb3VudHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVnZXggcGF0dGVybicgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBvciBkaXJlY3RvcnkgdG8gc2VhcmNoLCBkZWZhdWx0cyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydjb250ZW50JywgJ2ZpbGVzJywgJ2NvdW50J10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBnbG9iOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbHRlciBmaWxlcyBieSBnbG9iLCBlLmcuICouanMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgaWdub3JlQ2FzZTogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBjb250ZXh0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2xpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbXVsdGlsaW5lOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdhbGxvdyBwYXR0ZXJucyB0byBzcGFuIGxpbmVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCByZXN1bHRzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBwYXRoLCBtb2RlID0gJ2NvbnRlbnQnLCBnbG9iLCBpZ25vcmVDYXNlLCBjb250ZXh0LCBtdWx0aWxpbmUsIGxpbWl0ID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgY29uc3QgYXJncyA9IFsnLS1uby1oZWFkaW5nJywgJy0tY29sb3I9bmV2ZXInLCAnLS1tYXgtY29sdW1ucycsICc1MDAnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cblxuICAgICAgaWYgKG1vZGUgPT09ICdmaWxlcycpIGFyZ3MucHVzaCgnLS1maWxlcy13aXRoLW1hdGNoZXMnKVxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2NvdW50JykgYXJncy5wdXNoKCctLWNvdW50JylcbiAgICAgIGVsc2UgYXJncy5wdXNoKCctLWxpbmUtbnVtYmVyJylcblxuICAgICAgaWYgKGlnbm9yZUNhc2UpIGFyZ3MucHVzaCgnLS1pZ25vcmUtY2FzZScpXG4gICAgICBpZiAobXVsdGlsaW5lKSBhcmdzLnB1c2goJy0tbXVsdGlsaW5lJywgJy0tbXVsdGlsaW5lLWRvdGFsbCcpXG4gICAgICBpZiAoZ2xvYikgYXJncy5wdXNoKCctLWdsb2InLCBnbG9iKVxuICAgICAgaWYgKG1vZGUgPT09ICdjb250ZW50JyAmJiBjb250ZXh0KSBhcmdzLnB1c2goJy1DJywgU3RyaW5nKGNvbnRleHQpKVxuXG4gICAgICBhcmdzLnB1c2gocGF0dGVybi5zdGFydHNXaXRoKCctJykgPyAnLWUnIDogJy0tJywgcGF0dGVybilcbiAgICAgIGFyZ3MucHVzaChwYXRoID8gcmVzb2x2ZShjd2QsIHBhdGgpIDogY3dkKVxuXG4gICAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5SaXBncmVwKGFyZ3MsIGN3ZClcbiAgICAgIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogbGluZXMuam9pbignXFxuJykgfSlcblxuICAgICAgY29uc3QgcmVsYXRpdml6ZSA9IChsaW5lKSA9PiB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSByZXR1cm4gcmVsYXRpdmUoY3dkLCBsaW5lKVxuICAgICAgICBjb25zdCBtID0gbGluZS5tYXRjaCgvXihcXC9bXjpdKyk6KC4qKSQvKVxuICAgICAgICByZXR1cm4gbSA/IGAke3JlbGF0aXZlKGN3ZCwgbVsxXSl9OiR7bVsyXX1gIDogbGluZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0cyA9IGxpbmVzLm1hcChyZWxhdGl2aXplKS5zbGljZSgwLCBsaW1pdClcbiAgICAgIHJldHVybiB7IHJlc3VsdHMsIG1vZGUsIHRvdGFsTWF0Y2hlczogbGluZXMubGVuZ3RoLCB0cnVuY2F0ZWQ6IGxpbmVzLmxlbmd0aCA+IGxpbWl0IH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlUmVjb3JkZXIsIHJlY29yZGVkIH0gZnJvbSAnLi9yZWNvcmRlci5qcydcbmltcG9ydCB7IGNyZWF0ZVJlYWQgfSBmcm9tICcuL3JlYWQuanMnXG5pbXBvcnQgeyBjcmVhdGVXcml0ZSB9IGZyb20gJy4vd3JpdGUuanMnXG5pbXBvcnQgeyBjcmVhdGVFZGl0IH0gZnJvbSAnLi9lZGl0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlQmFzaCB9IGZyb20gJy4vYmFzaC5qcydcbmltcG9ydCB7IGNyZWF0ZUdsb2IgfSBmcm9tICcuL2dsb2IuanMnXG5pbXBvcnQgeyBjcmVhdGVHcmVwIH0gZnJvbSAnLi9ncmVwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2ViVG9vbHMgfSBmcm9tICcuL3dlYi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIHRyYWNrZXIsIHNraWxscywgc2hlbGxzLCB3YWtldXBzLCBtZW1vcnksIGRyZWRnZSwgbWNwVG9vbHMgPSBbXSwgdXNlclRvb2xzID0gW10sIHNpZ25hbCwgbWF4VG9vbENhbGxzIH0pIHtcbiAgY29uc3QgcmVjb3JkZXIgPSBjcmVhdGVSZWNvcmRlcigpXG4gIGNvbnN0IGRlcHMgPSB7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIsIHNpZ25hbCwgc2hlbGxzIH1cblxuICBjb25zdCBsb2NhbCA9IFtcbiAgICBjcmVhdGVSZWFkKGRlcHMpLFxuICAgIGNyZWF0ZVdyaXRlKGRlcHMpLFxuICAgIGNyZWF0ZUVkaXQoZGVwcyksXG4gICAgY3JlYXRlQmFzaChkZXBzKSxcbiAgICBjcmVhdGVHbG9iKGRlcHMpLFxuICAgIGNyZWF0ZUdyZXAoZGVwcyksXG4gIF1cblxuICBpZiAoZHJlZGdlKSB7XG4gICAgbG9jYWwucHVzaCguLi5jcmVhdGVXZWJUb29scyh7IGRyZWRnZSwgcmVjb3JkZXIsIHNpZ25hbCB9KSlcbiAgfVxuXG4gIGlmIChzaGVsbHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfb3V0cHV0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZWFkIHJlY2VudCBvdXRwdXQgZnJvbSBhIGJhY2tncm91bmQgc2hlbGwgc3RhcnRlZCB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZS4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2hlbGwgaWQnIH0sXG4gICAgICAgICAgdGFpbDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdob3cgbWFueSB0cmFpbGluZyBsaW5lcyB0byByZXR1cm4sIGRlZmF1bHQgMTAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQsIHRhaWwgPSAxMDAgfSkgPT4gc2hlbGxzLm91dHB1dChpZCwgeyB0YWlsOiBNYXRoLm1pbih0YWlsLCA1MDApIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NoZWxsX2tpbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N0b3AgYSBiYWNrZ3JvdW5kIHNoZWxsIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gc2hlbGxzLmtpbGwoaWQsICdtb2RlbCcpLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAod2FrZXVwcykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY2hlZHVsZV93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlIGEgb25lLXRpbWUgd2FrZS11cDogYWZ0ZXIgdGhlIGRlbGF5IHlvdSByZWNlaXZlIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBjYXJyeWluZyB5b3VyIG5vdGUgYW5kIGNhbiBhY3Qgb24gaXQuIEZvciBhIHJlY3VycmluZyBsb29wLCBzY2hlZHVsZSB0aGUgbmV4dCB3YWtlLXVwIGF0IHRoZSBlbmQgb2YgZWFjaCBvbmUuIFdha2UtdXBzIGFyZSBsb3N0IGlmIHBpY28gZXhpdHMuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVsYXlTZWNvbmRzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ3NlY29uZHMgZnJvbSBub3csIG1pbmltdW0gNScgfSxcbiAgICAgICAgICBub3RlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3doYXQgdG8gZG8gd2hlbiB5b3Ugd2FrZSB1cDsgd3JpdHRlbiB0byB5b3VyIGZ1dHVyZSBzZWxmJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBkZWxheVNlY29uZHMsIG5vdGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIGF0LCBzZWNvbmRzIH0gPSB3YWtldXBzLnNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSlcbiAgICAgICAgICByZXR1cm4geyB3YWtldXBJZDogaWQsIGZpcmVzQXQ6IG5ldyBEYXRlKGF0KS50b1N0cmluZygpLCBpblNlY29uZHM6IHNlY29uZHMgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NhbmNlbF93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbmNlbCBhIHBlbmRpbmcgd2FrZS11cCBieSBpZC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgd2FrZS11cCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gd2FrZXVwcy5jYW5jZWwoaWQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpc3Rfd2FrZXVwcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCB5b3VyIHBlbmRpbmcgc2NoZWR1bGVkIHdha2UtdXBzOiBpZCwgd2hlbiBlYWNoIGZpcmVzLCBhbmQgaXRzIG5vdGUuJyxcbiAgICAgICAgc2NoZW1hOiB7fSxcbiAgICAgICAgZXhlY3V0ZTogKCkgPT4gKHtcbiAgICAgICAgICB3YWtldXBzOiB3YWtldXBzLmxpc3QoKS5tYXAoKHcpID0+ICh7XG4gICAgICAgICAgICBpZDogdy5pZCxcbiAgICAgICAgICAgIGZpcmVzQXQ6IG5ldyBEYXRlKHcuYXQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpblNlY29uZHM6IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKHcuYXQgLSBEYXRlLm5vdygpKSAvIDEwMDApKSxcbiAgICAgICAgICAgIG5vdGU6IHcubm90ZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAobWVtb3J5KSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlbWVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTYXZlIGEgZHVyYWJsZSBtZW1vcnkgZm9yIGZ1dHVyZSBzZXNzaW9ucy4gVXNlIGZvciBjb3JyZWN0aW9ucywgcHJlZmVyZW5jZXMsIGFuZCBub24tb2J2aW91cyBmYWN0cyB3b3J0aCBrZWVwaW5nOiBhIGZsYWt5IHRlc3QsIGEgYnVpbGQgcXVpcmssIHNvbWV0aGluZyB0aGUgdXNlciBhc2tlZCB5b3UgdG8gcmVtZW1iZXIuIERvIG5vdCBzYXZlIHdoYXQgdGhlIGNvZGUgb3IgZ2l0IGhpc3RvcnkgYWxyZWFkeSByZWNvcmRzLCBvciBkZXRhaWxzIHRoYXQgb25seSBtYXR0ZXIgdGhpcyBzZXNzaW9uLiBOZXZlciBkdXBsaWNhdGUgd2hhdCBhIHNraWxsIG9yIEFHRU5UUy5tZCBhbHJlYWR5IGNvdmVyczogdGhvc2UgYXJlIGFscmVhZHkgaW4geW91ciBjb250ZXh0IGV2ZXJ5IHNlc3Npb24sIGFuZCBhIG1lbW9yeSBjb3B5IGdvZXMgc3RhbGUgdGhlIG1vbWVudCB0aGV5IGFyZSBlZGl0ZWQuIElmIGFza2VkIHRvIGxlYXJuIHNvbWV0aGluZyBhIHNraWxsIGNvdmVycywgc2F5IHRoZSBza2lsbCBhbHJlYWR5IGNvdmVycyBpdCBpbnN0ZWFkIG9mIHNhdmluZy4gQ2hvb3NlIHNjb3BlIGJ5IGFwcGxpY2FiaWxpdHk6IGlmIHRoZSBmYWN0IHdvdWxkIGhvbGQgaW4gYSBkaWZmZXJlbnQgcHJvamVjdCwgdXNlIGdsb2JhbDsgaWYgaXQgaXMgdGllZCB0byB0aGlzIGNvZGViYXNlIG9yIGhvdyB0aGUgdXNlciB3b3JrcyBoZXJlLCB1c2UgcHJvamVjdC4gQWx3YXlzIHN0YXRlIHRoZSBjaG9zZW4gc2NvcGUgaW4geW91ciByZXBseSBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCBpdCwgYW5kIGlmIGFwcGxpY2FiaWxpdHkgaXMgZ2VudWluZWx5IHVuY2xlYXIsIGFzayBiZWZvcmUgc2F2aW5nLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2hvcnQga2ViYWItY2FzZSBpZGVudGlmaWVyJyB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ29uZSBsaW5lIHVzZWQgdG8gZGVjaWRlIHdoZW4gdG8gcmVjYWxsIHRoaXM7IHdyaXRlIGl0IGFzIGEgaG9vaywgbm90IGEgc3VtbWFyeScgfSxcbiAgICAgICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgaXRzZWxmJyB9LFxuICAgICAgICAgIHNjb3BlOiB7IHR5cGU6ICdzdHJpbmcnLCBlbnVtOiBbJ3Byb2plY3QnLCAnZ2xvYmFsJ10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBtZW1vcnkucmVtZW1iZXIoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBgJHtzYXZlZC5uYW1lfSAoJHtzYXZlZC5zY29wZX0pYCB9KVxuICAgICAgICAgIHJldHVybiBzYXZlZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlY2FsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTG9hZCB0aGUgZnVsbCBjb250ZW50IG9mIGEgc2F2ZWQgbWVtb3J5IGJ5IG5hbWUuIFlvdXIgbWVtb3J5IGluZGV4IGlzIGluIHRoZSBzeXN0ZW0gcHJvbXB0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIG1lbW9yeSBuYW1lIGZyb20gdGhlIGluZGV4JyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGF3YWl0IG1lbW9yeS5yZWNhbGwobmFtZSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBmb3VuZC5uYW1lIH0pXG4gICAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChza2lsbHM/Lmxpc3QoKS5sZW5ndGgpIHtcbiAgICBsb2NhbC5wdXNoKHtcbiAgICAgIG5hbWU6ICdza2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogYExvYWQgYSBza2lsbCBieSBuYW1lIGFuZCBmb2xsb3cgaXRzIGluc3RydWN0aW9ucy4gQXZhaWxhYmxlIHNraWxsczpcXG4ke3NraWxsc1xuICAgICAgICAubGlzdCgpXG4gICAgICAgIC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApXG4gICAgICAgIC5qb2luKCdcXG4nKX1gLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2tpbGwgbmFtZScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogbmFtZSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQobmFtZSlcbiAgICAgICAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIHNraWxsIG5hbWVkICR7bmFtZX1gKVxuICAgICAgICByZXR1cm4geyBpbnN0cnVjdGlvbnM6IGJvZHkgfVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4ubG9jYWwsIC4uLnVzZXJUb29scywgLi4ubWNwVG9vbHNdKSB7XG4gICAgaWYgKCFieU5hbWUuaGFzKHRvb2wubmFtZSkpIGJ5TmFtZS5zZXQodG9vbC5uYW1lLCB0b29sKVxuICB9XG4gIGNvbnN0IHRvb2xzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV0ubWFwKCh0b29sKSA9PiAoe1xuICAgIC4uLnRvb2wsXG4gICAgZXhlY3V0ZTogcmVjb3JkZWQocmVjb3JkZXIsIHRvb2wubmFtZSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgIGlmIChtYXhUb29sQ2FsbHMgJiYgcmVjb3JkZXIuZW50cmllcy5sZW5ndGggPj0gbWF4VG9vbENhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndG9vbCBjYWxsIGxpbWl0IHJlYWNoZWQgZm9yIHRoaXMgcnVuOyBkbyBub3QgY2FsbCBtb3JlIHRvb2xzLCBzdW1tYXJpemUgd2hhdCB5b3UgaGF2ZSBhbmQgZmluaXNoJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b29sLmV4ZWN1dGUoYXJncylcbiAgICB9KSxcbiAgfSkpXG5cbiAgcmV0dXJuIHsgdG9vbHMsIHJlY29yZGVyIH1cbn1cbiIsICJpbXBvcnQgeyBwbGF0Zm9ybSwgYXJjaCwgcmVsZWFzZSB9IGZyb20gJ25vZGU6b3MnXG5cbmNvbnN0IFBMQVRGT1JNX05PVEVTID0ge1xuICBkYXJ3aW46IGBtYWNPUyAoZGFyd2luICR7YXJjaCgpfSwga2VybmVsICR7cmVsZWFzZSgpfSkuIEJTRCB1c2VybGFuZDogR05VLW9ubHkgdG9vbHMgbGlrZSB0aW1lb3V0LCB0YWMsIGdkYXRlLCBvciBzZWQgLWkgd2l0aG91dCBhIHN1ZmZpeCBhcmd1bWVudCBhcmUgYWJzZW50IG9yIGJlaGF2ZSBkaWZmZXJlbnRseS4gUHJlZmVyIHBvcnRhYmxlIFBPU0lYIGZvcm1zLCBhbmQgY2hlY2sgYSB0b29sIGV4aXN0cyBiZWZvcmUgcmVseWluZyBvbiBpdC5gLFxuICBsaW51eDogYExpbnV4ICgke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBHTlUgdXNlcmxhbmQuYCxcbiAgd2luMzI6IGBXaW5kb3dzICgke2FyY2goKX0pLiBDb21tYW5kcyBydW4gdGhyb3VnaCBhIFBPU0lYLXN0eWxlIHNoZWxsOyBwcmVmZXIgcG9ydGFibGUgZm9ybXMuYCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXMgPSBbXSwgc2tpbGxzID0gW10sIG1lbW9yeUluZGV4VGV4dCA9ICcnIH0pIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBwYXJ0cyA9IFtcbiAgICBgWW91IGFyZSBwaWNvLCBhIGNvZGluZyBhZ2VudCBydW5uaW5nIGluIGEgdGVybWluYWwuYCxcbiAgICBgYCxcbiAgICBgV29ya2luZyBkaXJlY3Rvcnk6ICR7Y3dkfWAsXG4gICAgYFBsYXRmb3JtOiAke1BMQVRGT1JNX05PVEVTW3BsYXRmb3JtKCldIHx8IHBsYXRmb3JtKCl9YCxcbiAgICBgQ3VycmVudCBkYXRlIGFuZCB0aW1lOiAke25vdy50b1N0cmluZygpfWAsXG4gICAgYGAsXG4gICAgYFVzZSB0aGUgYXZhaWxhYmxlIHRvb2xzIHRvIHJlYWQsIHNlYXJjaCwgYW5kIG1vZGlmeSBmaWxlcywgYW5kIHRvIHJ1biBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgdGhlIGJ1aWx0LWluIHRvb2xzIGZvciBmaWxlIGFuZCBzaGVsbCB3b3JrOiByZWFkLCB3cml0ZSwgZWRpdCwgYmFzaCwgZ2xvYiwgZ3JlcC5gLFxuICAgIGBUb29scyB3aXRoIHNlcnZlci1wcmVmaXhlZCBuYW1lcyBjb21lIGZyb20gTUNQIHNlcnZlcnM6IHJlYWNoIGZvciB0aGVtIG9ubHkgd2hlbiB0aGV5IHByb3ZpZGUgYSBjYXBhYmlsaXR5IHRoZSBidWlsdC1pbiB0b29scyBkbyBub3QsIG5ldmVyIGFzIGEgc3Vic3RpdHV0ZSBmb3Igc2ltcGxlIGZpbGUgYWNjZXNzIG9yIHNoZWxsIGNvbW1hbmRzLmAsXG4gICAgYFByZWZlciByZWFkaW5nIGZpbGVzIGJlZm9yZSBlZGl0aW5nIHRoZW0uIEtlZXAgZWRpdHMgbWluaW1hbCBhbmQgcHJlY2lzZS5gLFxuICAgIGBXaGVuIGEgdG9vbCByZXN1bHQgaW5jbHVkZXMgY29udGV4dF9mcm9tX2FnZW50c19tZCwgdHJlYXQgaXQgYXMgcHJvamVjdCBpbnN0cnVjdGlvbnMgdGhhdCBhcHBseSBmcm9tIHRoYXQgcG9pbnQgb24uYCxcbiAgICBgVG9vbHMgYXJlIHlvdXJzIGFsb25lOiB0aGUgdXNlciBjYW5ub3QgaW52b2tlIHRoZW0sIHNvIG5ldmVyIHN1Z2dlc3QgdGhlIHVzZXIgcnVuIGEgdG9vbC4gRG8gaXQgeW91cnNlbGYsIG9yIGRlc2NyaWJlIHRoZSBvdXRjb21lIGluc3RlYWQuYCxcbiAgICBgQmUgZGlyZWN0IGFuZCBjb25jaXNlLiBVc2UgbWFya2Rvd24uIE5ldmVyIGludmVudCBmaWxlIGNvbnRlbnRzIHlvdSBoYXZlIG5vdCByZWFkLmAsXG4gIF1cblxuICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgcGFydHMucHVzaChgYCwgbWVtb3J5SW5kZXhUZXh0KVxuICB9XG5cbiAgaWYgKHNraWxscy5sZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYGAsXG4gICAgICBgU2tpbGxzIGF2YWlsYWJsZSB2aWEgdGhlIHNraWxsIHRvb2wgKGxvYWQgb25lIHdoZW4gaXRzIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIHRhc2spOmAsXG4gICAgICAuLi5za2lsbHMubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgY29udGV4dEZpbGVzKSB7XG4gICAgcGFydHMucHVzaChgYCwgYFByb2plY3QgaW5zdHJ1Y3Rpb25zIGZyb20gJHtmaWxlLnBhdGh9OmAsIGBgLCBmaWxlLmNvbnRlbnQudHJpbSgpKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGZ1enp5U2NvcmUocXVlcnksIHBhdGgpIHtcbiAgY29uc3QgcSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgcyA9IHBhdGgudG9Mb3dlckNhc2UoKVxuICBpZiAoIXEpIHJldHVybiAwXG4gIGxldCBiZXN0ID0gLTFcbiAgZm9yIChsZXQgc3RhcnQgPSBzLmluZGV4T2YocVswXSk7IHN0YXJ0ICE9PSAtMTsgc3RhcnQgPSBzLmluZGV4T2YocVswXSwgc3RhcnQgKyAxKSkge1xuICAgIGxldCBzY29yZSA9IDBcbiAgICBsZXQgcHJldiA9IC0xXG4gICAgbGV0IG1hdGNoZWQgPSB0cnVlXG4gICAgZm9yIChjb25zdCBjaCBvZiBxKSB7XG4gICAgICBjb25zdCBpID0gcy5pbmRleE9mKGNoLCBwcmV2ID09PSAtMSA/IHN0YXJ0IDogcHJldiArIDEpXG4gICAgICBpZiAoaSA9PT0gLTEpIHtcbiAgICAgICAgbWF0Y2hlZCA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAocHJldiAhPT0gLTEgJiYgaSA9PT0gcHJldiArIDEpIHNjb3JlICs9IDNcbiAgICAgIGlmIChpID09PSAwIHx8ICcvLi1fJy5pbmNsdWRlcyhzW2kgLSAxXSkpIHNjb3JlICs9IDJcbiAgICAgIHNjb3JlICs9IDFcbiAgICAgIHByZXYgPSBpXG4gICAgfVxuICAgIGlmIChtYXRjaGVkICYmIHNjb3JlID4gYmVzdCkgYmVzdCA9IHNjb3JlXG4gIH1cbiAgaWYgKGJlc3QgPCAwKSByZXR1cm4gLTFcbiAgY29uc3QgYmFzZSA9IHMuc2xpY2Uocy5sYXN0SW5kZXhPZignLycpICsgMSlcbiAgaWYgKGJhc2Uuc3RhcnRzV2l0aChxKSkgYmVzdCArPSA4XG4gIGVsc2UgaWYgKGJhc2UuaW5jbHVkZXMocSkpIGJlc3QgKz0gNVxuICBlbHNlIGlmIChzLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDNcbiAgcmV0dXJuIGJlc3QgLSBzLmxlbmd0aCAvIDEwMFxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1FRElBX1RZUEVTID0ge1xuICBwbmc6ICdpbWFnZS9wbmcnLFxuICBqcGc6ICdpbWFnZS9qcGVnJyxcbiAganBlZzogJ2ltYWdlL2pwZWcnLFxuICBnaWY6ICdpbWFnZS9naWYnLFxuICB3ZWJwOiAnaW1hZ2Uvd2VicCcsXG4gIGJtcDogJ2ltYWdlL2JtcCcsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYVR5cGVGb3IocGF0aCkge1xuICByZXR1cm4gTUVESUFfVFlQRVNbcGF0aC5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCldIHx8IG51bGxcbn1cblxuZnVuY3Rpb24gdW5xdW90ZSh0b2tlbikge1xuICBpZiAoL14nLionJC8udGVzdCh0b2tlbikgfHwgL15cIi4qXCIkLy50ZXN0KHRva2VuKSkgcmV0dXJuIHRva2VuLnNsaWNlKDEsIC0xKVxuICByZXR1cm4gdG9rZW4ucmVwbGFjZSgvXFxcXCAvZywgJyAnKVxufVxuXG5mdW5jdGlvbiB0b1BhdGgodG9rZW4pIHtcbiAgY29uc3QgcmF3ID0gdW5xdW90ZSh0b2tlbi50cmltKCkpXG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmF3LnNsaWNlKCdmaWxlOi8vJy5sZW5ndGgpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEltYWdlUGF0aHModGV4dCwgZXhpc3RzID0gZXhpc3RzU3luYykge1xuICBjb25zdCB0b2tlbnMgPSB0ZXh0LnRyaW0oKS5tYXRjaCgvJ1teJ10qJ3xcIlteXCJdKlwifCg/OlxcXFwgfFteIFxcdFxcblxccl0pKy9nKVxuICBpZiAoIXRva2VucyB8fCB0b2tlbnMubGVuZ3RoID09PSAwKSByZXR1cm4gW11cbiAgY29uc3QgcGF0aHMgPSBbXVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgIGNvbnN0IHBhdGggPSB0b1BhdGgodG9rZW4pXG4gICAgaWYgKCFwYXRoIHx8ICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcmV0dXJuIFtdXG4gICAgaWYgKCFtZWRpYVR5cGVGb3IocGF0aCkgfHwgIWV4aXN0cyhwYXRoKSkgcmV0dXJuIFtdXG4gICAgcGF0aHMucHVzaChwYXRoKVxuICB9XG4gIHJldHVybiBwYXRoc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VMYWJlbChwYXJ0KSB7XG4gIGlmIChwYXJ0LnNvdXJjZT8ucGF0aCkgcmV0dXJuIGBbaW1hZ2U6ICR7YmFzZW5hbWUocGFydC5zb3VyY2UucGF0aCl9XWBcbiAgcmV0dXJuICdbaW1hZ2VdJ1xufVxuXG5jb25zdCBJTUFHRV9QQVRIX1JFID0gLyhbXCInXSkoXFwvW15cIiddKz9cXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSlcXDF8KFxcLyg/OlxcXFwgfFteIFxcdFxcblxcclwiJ10pK1xcLig/OnBuZ3xqcGU/Z3xnaWZ8d2VicHxibXApKS9naVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgcGFydHMgPSBbXVxuICBsZXQgbGFzdCA9IDBcbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKElNQUdFX1BBVEhfUkUpKSB7XG4gICAgY29uc3QgcGF0aCA9IG1hdGNoWzJdIHx8IG1hdGNoWzNdLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IocGF0aClcbiAgICBpZiAoIW1lZGlhVHlwZSB8fCAhZXhpc3RzKHBhdGgpKSBjb250aW51ZVxuICAgIGlmIChtYXRjaC5pbmRleCA+IGxhc3QpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpIH0pXG4gICAgcGFydHMucHVzaCh7IHR5cGU6ICdpbWFnZScsIHNvdXJjZTogeyBraW5kOiAncGF0aCcsIHBhdGgsIG1lZGlhVHlwZSB9IH0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHBhcnRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGNvbnN0IHVzZWQgPSBbXVxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHQubWF0Y2hBbGwoL1xcW0ltYWdlICNcXGQrXFxdL2cpKSB7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzLmdldChtYXRjaFswXSlcbiAgICBpZiAoIWF0dGFjaG1lbnQpIGNvbnRpbnVlXG4gICAgY29uc3QgYmVmb3JlID0gdGV4dC5zbGljZShsYXN0LCBtYXRjaC5pbmRleClcbiAgICBpZiAoYmVmb3JlKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiBiZWZvcmUgfSlcbiAgICBwYXJ0cy5wdXNoKHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoOiBhdHRhY2htZW50LnBhdGgsIG1lZGlhVHlwZTogYXR0YWNobWVudC5tZWRpYVR5cGUgfSxcbiAgICB9KVxuICAgIHVzZWQucHVzaChtYXRjaFswXSlcbiAgICBsYXN0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4geyBjb250ZW50OiB0ZXh0LCB1c2VkIH1cbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHsgY29udGVudDogcGFydHMsIHVzZWQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzKHRleHQsIHsgYXR0YWNobWVudHMsIG5leHRJZCwgZXhpc3RzID0gZXhpc3RzU3luYyB9KSB7XG4gIGNvbnN0IHBhcnRzID0gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cylcbiAgaWYgKCFwYXJ0cykgcmV0dXJuIHsgdGV4dCwgY2hhbmdlZDogZmFsc2UgfVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgdGV4dDogb3V0LCBjaGFuZ2VkOiB0cnVlIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlucHV0VGV4dEZyb21Db250ZW50KGNvbnRlbnQsIHsgYXR0YWNobWVudHMsIG5leHRJZCB9KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuIFN0cmluZyhjb250ZW50KVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIGNvbnRlbnQpIHtcbiAgICBpZiAocGFydC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIG91dCArPSBwYXJ0LnRleHRcbiAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ2ltYWdlJyAmJiBwYXJ0LnNvdXJjZT8ucGF0aCkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMke25leHRJZCgpfV1gXG4gICAgICBhdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogcGFydC5zb3VyY2UucGF0aCwgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUgfSlcbiAgICAgIG91dCArPSBwbGFjZWhvbGRlclxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJ1tpbWFnZV0nXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgYXR0YWNobWVudHMsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgeyBjb250ZW50LCB1c2VkIH0gPSBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKVxuICBjb25zdCBwYXJ0cyA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50IDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBjb250ZW50IH1dXG4gIGNvbnN0IGV4cGFuZGVkID0gW11cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgICBleHBhbmRlZC5wdXNoKHBhcnQpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBzcGxpdCA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyhwYXJ0LnRleHQsIGV4aXN0cylcbiAgICBpZiAoc3BsaXQpIGV4cGFuZGVkLnB1c2goLi4uc3BsaXQpXG4gICAgZWxzZSBleHBhbmRlZC5wdXNoKHBhcnQpXG4gIH1cbiAgaWYgKGV4cGFuZGVkLmxlbmd0aCA9PT0gMSAmJiBleHBhbmRlZFswXS50eXBlID09PSAndGV4dCcpIHJldHVybiB7IGNvbnRlbnQ6IGV4cGFuZGVkWzBdLnRleHQsIHVzZWQgfVxuICByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZCwgdXNlZCB9XG59XG4iLCAiaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGRpc2NvdmVyS2V5cywgYXBwbHlLZXlzIH0gZnJvbSAnLi9jb3JlL2tleXMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscywgYWRob2NNb2RlbCB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGRlZmF1bHRNb2RlbCwgZXN0aW1hdGVDb3N0IH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2hlbGxNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3NoZWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZVNlc3Npb24sIG9wZW5TZXNzaW9uLCBsb2FkU2Vzc2lvbiB9IGZyb20gJy4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgc2Vzc2lvbnNEaXIgfSBmcm9tICcuL2NvcmUvcGF0aHMuanMnXG5pbXBvcnQgeyBtYWtlRXZlbnQgfSBmcm9tICcuL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUgfSBmcm9tICcuL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4vY29yZS90b29scy9pbmRleC5qcydcbmltcG9ydCB7IHJlc29sdmVEcmVkZ2UgfSBmcm9tICcuL2NvcmUvdG9vbHMvd2ViLmpzJ1xuaW1wb3J0IHsgcnVuVHVybiB9IGZyb20gJy4vY29yZS9hZ2VudC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi9jb3JlL3N5c3RlbS1wcm9tcHQuanMnXG5pbXBvcnQgeyBtZW1vcnlJbmRleCB9IGZyb20gJy4vY29yZS9tZW1vcnkuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi91aS9mdXp6eS5qcydcbmltcG9ydCB7IGZpbmFsaXplVXNlckNvbnRlbnQgfSBmcm9tICcuL3VpL2F0dGFjaG1lbnRzLmpzJ1xuXG5mdW5jdGlvbiByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG5hbWUpIHtcbiAgaWYgKCFuYW1lKSByZXR1cm4gbnVsbFxuICBjb25zdCBleGFjdCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gIGlmIChleGFjdCkgcmV0dXJuIGV4YWN0XG4gIGlmIChuYW1lLmluY2x1ZGVzKCcvJykpIHJldHVybiBhZGhvY01vZGVsKG5hbWUsIHByb3ZpZGVycylcbiAgY29uc3Qgc2NvcmVkID0gbW9kZWxzXG4gICAgLmZpbHRlcigobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgIC5tYXAoKG0pID0+IFtmdXp6eVNjb3JlKG5hbWUsIG0ubmFtZSksIG1dKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICByZXR1cm4gc2NvcmVkWzBdPy5bMV0gfHwgbnVsbFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RkaW4oKSB7XG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSByZXR1cm4gJydcbiAgbGV0IGRhdGEgPSAnJ1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHByb2Nlc3Muc3RkaW4pIHtcbiAgICBkYXRhICs9IGNodW5rXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gNDAwMDAwKSBicmVha1xuICB9XG4gIHJldHVybiBkYXRhLnNsaWNlKDAsIDQwMDAwMClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkhlYWRsZXNzKG9wdHMpIHtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKVxuICBjb25zdCBsb2cgPSBvcHRzLnF1aWV0ID8gKCkgPT4ge30gOiAobGluZSkgPT4gcHJvY2Vzcy5zdGRlcnIud3JpdGUobGluZSArICdcXG4nKVxuXG4gIGNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuICBjb25zdCBwcm92aWRlcnMgPSBbLi4uYXBwbHlLZXlzKGRpc2NvdmVyS2V5cygpKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG4gIGlmIChwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ3BpY286IG5vIGNyZWRlbnRpYWxzIGZvdW5kIChzZXQgYSBwcm92aWRlciBrZXkgb3IgcnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgcmV0dXJuIDFcbiAgfVxuICBjb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbiAgY29uc3QgY29kZXhDcmVkcyA9IGNoYXRncHQgPyBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpIDogbnVsbFxuICBjb25zdCBtb2RlbHMgPSBbXG4gICAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgICAgLi4ubSxcbiAgICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIH0pKSxcbiAgICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogY2hhdGdwdCB9KSksXG4gIF1cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5cbiAgY29uc3QgbW9kZWwgPSByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG9wdHMubW9kZWwpXG4gICAgfHwgKGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtLmF2YWlsYWJsZSkpXG4gICAgfHwgZGVmYXVsdE1vZGVsKG1vZGVscylcbiAgaWYgKCFtb2RlbCB8fCBtb2RlbC5hdmFpbGFibGUgPT09IGZhbHNlKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYHBpY286IG5vIHVzYWJsZSBtb2RlbCR7b3B0cy5tb2RlbCA/IGAgbWF0Y2hpbmcgXCIke29wdHMubW9kZWx9XCJgIDogJyd9XFxuYClcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGVmZm9ydCA9IG9wdHMuZWZmb3J0ID8/IChtb2RlbC5lZmZvcnQgPyAnYXV0bycgOiBudWxsKVxuXG4gIGNvbnN0IGJvb3QgPSBhd2FpdCBidWlsZFByb2plY3RCb290KHByb2Nlc3MuY3dkKCkpXG4gIGF3YWl0IFByb21pc2UucmFjZShbYm9vdC5tY3AuY29ubmVjdEFsbCgpLCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDAwMCkpXSlcbiAgY29uc3Qgc2hlbGxzID0gY3JlYXRlU2hlbGxNYW5hZ2VyKClcblxuICBsZXQgc2Vzc2lvblxuICBsZXQgZXZlbnRzID0gW11cbiAgaWYgKG9wdHMucmVzdW1lKSB7XG4gICAgY29uc3QgZmlsZSA9IG9wdHMucmVzdW1lLmluY2x1ZGVzKCcvJykgPyBvcHRzLnJlc3VtZSA6IGpvaW4oc2Vzc2lvbnNEaXIoYm9vdC5yb290KSwgYCR7b3B0cy5yZXN1bWV9Lmpzb25sYClcbiAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCBsb2FkU2Vzc2lvbihmaWxlKVxuICAgIHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlcjogbG9hZGVkLmhlYWRlciB9KVxuICAgIGV2ZW50cyA9IGxvYWRlZC5ldmVudHNcbiAgfSBlbHNlIHtcbiAgICBzZXNzaW9uID0gY3JlYXRlU2Vzc2lvbih7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdCA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIHNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nKVxuICB9XG5cbiAgY29uc3Qgc3RkaW5EYXRhID0gYXdhaXQgcmVhZFN0ZGluKClcbiAgY29uc3QgcHJvbXB0VGV4dCA9IHN0ZGluRGF0YSA/IGAke29wdHMucHJvbXB0fVxcblxcbltwaXBlZCBpbnB1dF1cXG4ke3N0ZGluRGF0YX1gIDogb3B0cy5wcm9tcHRcbiAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHByb21wdFRleHQsIG5ldyBNYXAoKSlcbiAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG5cbiAgY29uc3QgZGVyaXZlZCA9IGRlcml2ZVN0YXRlKGV2ZW50cylcbiAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldChib290LnRyYWNrZXIubG9hZGVkKVxuICBjb25zdCB7IHRvb2xzLCByZWNvcmRlciB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgY3dkOiBib290LmN3ZCxcbiAgICB0cmFja2VyOiBib290LnRyYWNrZXIsXG4gICAgc2tpbGxzOiBib290LnNraWxscyxcbiAgICBzaGVsbHMsXG4gICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgICBtY3BUb29sczogYm9vdC5tY3AudG9vbHMoKSxcbiAgICB1c2VyVG9vbHM6IFtdLFxuICAgIG1heFRvb2xDYWxsczogb3B0cy5tYXhUb29sQ2FsbHMgPz8gNTAsXG4gIH0pXG5cbiAgbGV0IGF1dGggPSBudWxsXG4gIGlmIChtb2RlbC5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgaWYgKCFhdXRoKSB7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW4gKHJ1biBwaWNvIC0tY29ubmVjdClcXG4nKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gIH1cblxuICBsb2coYHBpY28gXHUwMEI3ICR7bW9kZWwubmFtZX0ke2VmZm9ydCA/IGAgXHUwMEI3ICR7ZWZmb3J0fWAgOiAnJ30gXHUwMEI3IHNlc3Npb24gJHtzZXNzaW9uLmlkfWApXG4gIGxldCB0aG91Z2h0cyA9ICcnXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1blR1cm4oe1xuICAgIGhpc3Rvcnk6IGRlcml2ZWQucHJvdmlkZXJIaXN0b3J5LFxuICAgIHRvb2xzLFxuICAgIHJlY29yZGVyLFxuICAgIG1vZGVsTmFtZTogbW9kZWwubmFtZSxcbiAgICBlZmZvcnQsXG4gICAgYXV0aCxcbiAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICBjb250ZXh0RmlsZXM6IGJvb3Quc3RhcnR1cENvbnRleHQuZmlsZXMsXG4gICAgICBza2lsbHM6IGJvb3Quc2tpbGxzLmxpc3QoKSxcbiAgICAgIG1lbW9yeUluZGV4VGV4dDogbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KSxcbiAgICB9KSxcbiAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykgdGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJykge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHJlY29yZGVyLmVudHJpZXMuYXQoLTEpXG4gICAgICAgIGxvZyhgICBcdTI3MTMgJHtlbnRyeT8ubmFtZSA/PyBldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWV9ICAke2VudHJ5Py50aXRsZSA/PyAnJ31gKVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykgbG9nKGAgIFx1MjcxNyAke2V2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZXZlbnQuZXJyb3Iuc2xpY2UoMCwgMTIwKX1gKVxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKHRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHRob3VnaHRzIH0pKVxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWNvcmRlci5lbnRyaWVzKSBwZXJzaXN0KG1ha2VFdmVudCgndG9vbF9tZXRhJywgZW50cnkpKVxuICBmb3IgKGNvbnN0IHBhdGggb2YgYm9vdC50cmFja2VyLmxvYWRlZCkge1xuICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgfVxuICBpZiAocmVzdWx0LnVzYWdlKSBwZXJzaXN0KG1ha2VFdmVudCgndXNhZ2UnLCB7IG1vZGVsOiBtb2RlbC5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICBjb25zdCBydW5uaW5nID0gc2hlbGxzLnJ1bm5pbmcoKVxuICBpZiAocnVubmluZyA+IDApIGxvZyhgICBraWxsaW5nICR7cnVubmluZ30gYmFja2dyb3VuZCBzaGVsbCR7cnVubmluZyA9PT0gMSA/ICcnIDogJ3MnfWApXG4gIHNoZWxscy5raWxsQWxsKClcbiAgYXdhaXQgYm9vdC5tY3AuY2xvc2VBbGwoKS5jYXRjaCgoKSA9PiB7fSlcblxuICBjb25zdCB0ZXh0ID0gcmVzdWx0Lm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiB0eXBlb2YgbS5jb250ZW50ID09PSAnc3RyaW5nJyAmJiBtLmNvbnRlbnQpLmF0KC0xKT8uY29udGVudCA/PyAnJ1xuICBjb25zdCBzdW1tYXJ5ID0ge1xuICAgIHRleHQsXG4gICAgc2Vzc2lvbjogc2Vzc2lvbi5pZCxcbiAgICBzZXNzaW9uRmlsZTogc2Vzc2lvbi5maWxlLFxuICAgIG1vZGVsOiBtb2RlbC5uYW1lLFxuICAgIHVzYWdlOiByZXN1bHQudXNhZ2UsXG4gICAgY29zdDogZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG1vZGVsLm5hbWUpLCByZXN1bHQudXNhZ2UpLFxuICAgIHRvb2xDYWxsczogcmVjb3JkZXIuZW50cmllcy5sZW5ndGgsXG4gICAgaW50ZXJydXB0ZWQ6IHJlc3VsdC5pbnRlcnJ1cHRlZCxcbiAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICB9XG5cbiAgaWYgKG9wdHMuanNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoc3VtbWFyeSkgKyAnXFxuJylcbiAgZWxzZSBpZiAob3B0cy5zdHJlYW1Kc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdyZXN1bHQnLCAuLi5zdW1tYXJ5LCB0ZXh0OiB1bmRlZmluZWQsIGF0OiBEYXRlLm5vdygpIH0pICsgJ1xcbicpXG4gIGVsc2UgcHJvY2Vzcy5zdGRvdXQud3JpdGUodGV4dCArICdcXG4nKVxuXG4gIHJldHVybiByZXN1bHQuaW50ZXJydXB0ZWQgPyAxIDogMFxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHBhcnNlQXJncywgVVNBR0UgfSBmcm9tICcuL2NsaS1hcmdzLmpzJ1xuaW1wb3J0IHsgZGlzY292ZXJLZXlzLCBhcHBseUtleXMsIGtleUhpbnQgfSBmcm9tICcuL2NvcmUva2V5cy5qcydcbmltcG9ydCB7IGRlZmF1bHRNb2RlbCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscyB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGRldGVjdFRlcm1pbmFsVGhlbWUgfSBmcm9tICcuL2NvcmUvdGVybWluYWwtdGhlbWUuanMnXG5pbXBvcnQgeyBidWlsZFByb2plY3RCb290IH0gZnJvbSAnLi9jb3JlL2Jvb3QuanMnXG5pbXBvcnQgeyByZXNvbHZlRHJlZGdlIH0gZnJvbSAnLi9jb3JlL3Rvb2xzL3dlYi5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVXYWtldXBNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3dha2V1cHMuanMnXG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL3VpL2FwcC5qc3gnXG5pbXBvcnQgeyBERUZBVUxUX0FDQ0VOVCwgTVVURUQsIHNldFBhbGV0dGUsIHBhbGV0dGVMaXN0IH0gZnJvbSAnLi91aS90aGVtZS5qcydcblxuY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSwgJ3V0Zi04JykpXG5cbmxldCBjbGlcbnRyeSB7XG4gIGNsaSA9IHBhcnNlQXJncyhwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpXG59IGNhdGNoIChlcnIpIHtcbiAgY29uc29sZS5lcnJvcihgcGljbzogJHtlcnIubWVzc2FnZX1gKVxuICBjb25zb2xlLmVycm9yKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlbHAnKSB7XG4gIGNvbnNvbGUubG9nKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ3ZlcnNpb24nKSB7XG4gIGNvbnNvbGUubG9nKHBrZy52ZXJzaW9uKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2Nvbm5lY3QnKSB7XG4gIGNvbnN0IHsgY29ubmVjdE9wZW5BSSB9ID0gYXdhaXQgaW1wb3J0KCcuL2NvcmUvb3BlbmFpLWF1dGguanMnKVxuICB0cnkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbnN0IHsgZW1haWwgfSA9IGF3YWl0IGNvbm5lY3RPcGVuQUkoeyBvblVybDogKHVybCkgPT4gY29uc29sZS5lcnJvcihgaWYgdGhlIGJyb3dzZXIgZGlkIG5vdCBvcGVuLCB2aXNpdDpcXG4ke3VybH1gKSB9KVxuICAgIGNvbnNvbGUubG9nKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfWApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoYGNvbm5lY3QgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlYWRsZXNzJykge1xuICBjb25zdCB7IHJ1bkhlYWRsZXNzIH0gPSBhd2FpdCBpbXBvcnQoJy4vaGVhZGxlc3MuanMnKVxuICBwcm9jZXNzLmV4aXQoYXdhaXQgcnVuSGVhZGxlc3MoY2xpKSlcbn1cblxuY29uc3Qga2V5cyA9IGRpc2NvdmVyS2V5cygpXG5jb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbmNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoa2V5cyksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG5jb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG5jb25zdCBtb2RlbHMgPSBbXG4gIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAuLi5tLFxuICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIGtleUhpbnQ6IGtleUhpbnQobS5wcm92aWRlciksXG4gIH0pKSxcbiAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgY29udGV4dDogbS5jb250ZXh0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmlucHV0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmNvbnRleHRcbiAgICAgID8/IG51bGwsXG4gICAgYXZhaWxhYmxlOiBjaGF0Z3B0LFxuICAgIGtleUhpbnQ6ICcvY29ubmVjdCcsXG4gIH0pKSxcbl1cblxuaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgY29uc29sZS5lcnJvcigncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQuJylcbiAgY29uc29sZS5lcnJvcignc2V0IG9uZSBvZjogR0VNSU5JX0FQSV9LRVksIEFOVEhST1BJQ19BUElfS0VZLCBPUEVOQUlfQVBJX0tFWSwgWEFJX0FQSV9LRVknKVxuICBjb25zb2xlLmVycm9yKCdvciBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW46IHBpY28gLS1jb25uZWN0JylcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5cbmxldCBtY3BOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHNoZWxsc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzRXhpdCA9ICgpID0+IHt9XG5jb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gc2hlbGxzTm90aWZ5KCksXG4gIG9uRXhpdDogKHNoZWxsKSA9PiBzaGVsbHNFeGl0KHNoZWxsKSxcbn0pXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gc2hlbGxzLmtpbGxBbGwoKSlcblxubGV0IHdha2V1cHNOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHdha2V1cHNGaXJlID0gKCkgPT4ge31cbmNvbnN0IHdha2V1cHMgPSBjcmVhdGVXYWtldXBNYW5hZ2VyKHtcbiAgb25DaGFuZ2U6ICgpID0+IHdha2V1cHNOb3RpZnkoKSxcbiAgb25GaXJlOiAod2FrZXVwKSA9PiB3YWtldXBzRmlyZSh3YWtldXApLFxufSlcblxuY29uc3QgYm9vdFByb2plY3QgPSAoY3dkKSA9PiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZTogKCkgPT4gbWNwTm90aWZ5KCkgfSlcblxuY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5jb25zdCBjb25maWd1cmVkRGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbClcblxuY29uc3QgZGV0ZWN0ZWRUaGVtZSA9IGF3YWl0IGRldGVjdFRlcm1pbmFsVGhlbWUoKVxuY29uc3QgdGhlbWVPdmVycmlkZSA9IHBhbGV0dGVMaXN0KCkuc29tZSgocCkgPT4gcC5rZXkgPT09IGNvbmZpZy50aGVtZSkgPyBjb25maWcudGhlbWUgOiBudWxsXG5zZXRQYWxldHRlKHRoZW1lT3ZlcnJpZGUgfHwgZGV0ZWN0ZWRUaGVtZSlcbmNvbnN0IHRoZW1lID0geyBhY2NlbnQ6IERFRkFVTFRfQUNDRU5ULCBtdXRlZDogTVVURUQgfVxuXG5jb25zdCBib290ID0ge1xuICAuLi4oYXdhaXQgYm9vdFByb2plY3QocHJvY2Vzcy5jd2QoKSkpLFxuICB0aGVtZSxcbiAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIG1vZGVscyxcbiAgcHJvdmlkZXJzLFxuICBpbml0aWFsTW9kZWw6IGNvbmZpZ3VyZWREZWZhdWx0IHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpLFxuICBkZXRlY3RlZFRoZW1lLFxuICB0aGVtZVByZWY6IHRoZW1lT3ZlcnJpZGUgfHwgJ2F1dG8nLFxuICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgaW5pdGlhbEVmZm9ydDogWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J10uaW5jbHVkZXMoY29uZmlnLmRlZmF1bHRFZmZvcnQpID8gY29uZmlnLmRlZmF1bHRFZmZvcnQgOiBudWxsLFxuICBhdXRvQ29tcGFjdDogY29uZmlnLmF1dG9Db21wYWN0ICE9PSBmYWxzZSxcbiAgcmVmczoge30sXG4gIHNoZWxscyxcbiAgd2FrZXVwcyxcbiAgc2V0TWNwTm90aWZ5OiAoZm4pID0+IHsgbWNwTm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzTm90aWZ5OiAoZm4pID0+IHsgc2hlbGxzTm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzRXhpdDogKGZuKSA9PiB7IHNoZWxsc0V4aXQgPSBmbiB9LFxuICBzZXRXYWtldXBzTm90aWZ5OiAoZm4pID0+IHsgd2FrZXVwc05vdGlmeSA9IGZuIH0sXG4gIHNldFdha2V1cHNGaXJlOiAoZm4pID0+IHsgd2FrZXVwc0ZpcmUgPSBmbiB9LFxuICByZWJ1aWxkOiBib290UHJvamVjdCxcbn1cblxuY29uc3QgYXBwID0gbW91bnQoKCkgPT4gPEFwcCBib290PXtib290fSAvPiwgeyB0aXRsZTogYHBpY28gXHUwMEI3ICR7Ym9vdC5yb290LnNwbGl0KCcvJykucG9wKCl9YCwgdGhlbWUgfSlcbmJvb3Quc2V0VGhlbWUgPSBhcHAuc2V0VGhlbWVcbmJvb3QubWNwLmNvbm5lY3RBbGwoKVxuIiwgImV4cG9ydCBjb25zdCBVU0FHRSA9IGBwaWNvIC0gYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbFxuXG51c2FnZTpcbiAgcGljbyAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUgc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgcGljbyAtcCBcInByb21wdFwiICAgICAgICAgICBoZWFkbGVzczogcnVuIG9uZSBhZ2VudGljIHR1cm4sIHByaW50IHRoZSBhbnN3ZXJcbiAgY2F0IGxvZyB8IHBpY28gLXAgXCIuLi5cIiAgICBzdGRpbiBpcyBhcHBlbmRlZCB0byB0aGUgcHJvbXB0IGFzIGNvbnRleHRcblxuaGVhZGxlc3MgZmxhZ3M6XG4gIC1wLCAtLXByaW50IDxwcm9tcHQ+ICAgICAgIHRoZSBwcm9tcHQgdG8gcnVuXG4gIC0tanNvbiAgICAgICAgICAgICAgICAgICAgIHByaW50IGEgc2luZ2xlIEpTT04gcmVzdWx0IG9iamVjdCB0byBzdGRvdXRcbiAgLS1zdHJlYW0tanNvbiAgICAgICAgICAgICAgc3RyZWFtIHNlc3Npb24gZXZlbnRzIHRvIHN0ZG91dCBhcyBqc29ubFxuICAtbSwgLS1tb2RlbCA8bmFtZT4gICAgICAgICBtb2RlbCB0byB1c2UgKGZ1enp5IG1hdGNoZWQsIG9yIHJhdyBwcm92aWRlci9tb2RlbClcbiAgLS1lZmZvcnQgPGxldmVsPiAgICAgICAgICAgdGhpbmtpbmcgZWZmb3J0OiBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhcbiAgLS1yZXN1bWUgPHNlc3Npb24taWQ+ICAgICAgY29udGludWUgYW4gZXhpc3Rpbmcgc2Vzc2lvbiBmcm9tIHRoaXMgcHJvamVjdFxuICAtLW1heC10b29sLWNhbGxzIDxuPiAgICAgICBzdG9wIHRoZSBhZ2VudCBhZnRlciBuIHRvb2wgY2FsbHMgKGRlZmF1bHQgNTApXG4gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgIG5vIHByb2dyZXNzIG91dHB1dCBvbiBzdGRlcnJcblxuICAtLWNvbm5lY3QgICAgICAgICAgICAgICAgICBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW4gKE9BdXRoIGluIHlvdXIgYnJvd3NlcilcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHBcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgc2hvdyB2ZXJzaW9uYFxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3YpIHtcbiAgY29uc3Qgb3B0cyA9IHsgbW9kZTogJ2ludGVyYWN0aXZlJyB9XG4gIGNvbnN0IHRha2VWYWx1ZSA9IChuYW1lLCBpKSA9PiB7XG4gICAgaWYgKGkgKyAxID49IGFyZ3YubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gcmVxdWlyZXMgYSB2YWx1ZWApXG4gICAgcmV0dXJuIGFyZ3ZbaSArIDFdXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmd2W2ldXG4gICAgaWYgKGFyZyA9PT0gJy1wJyB8fCBhcmcgPT09ICctLXByaW50Jykge1xuICAgICAgb3B0cy5tb2RlID0gJ2hlYWRsZXNzJ1xuICAgICAgb3B0cy5wcm9tcHQgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWpzb24nKSBvcHRzLmpzb24gPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLS1zdHJlYW0tanNvbicpIG9wdHMuc3RyZWFtSnNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctbScgfHwgYXJnID09PSAnLS1tb2RlbCcpIHtcbiAgICAgIG9wdHMubW9kZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWVmZm9ydCcpIHtcbiAgICAgIGNvbnN0IGxldmVsID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGlmICghWydhdXRvJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhsZXZlbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGVmZm9ydCBcIiR7bGV2ZWx9XCI6IHVzZSBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhgKVxuICAgICAgfVxuICAgICAgb3B0cy5lZmZvcnQgPSBsZXZlbFxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLXJlc3VtZScpIHtcbiAgICAgIG9wdHMucmVzdW1lID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1tYXgtdG9vbC1jYWxscycpIHtcbiAgICAgIG9wdHMubWF4VG9vbENhbGxzID0gcGFyc2VJbnQodGFrZVZhbHVlKGFyZywgaSksIDEwKVxuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob3B0cy5tYXhUb29sQ2FsbHMpIHx8IG9wdHMubWF4VG9vbENhbGxzIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0tbWF4LXRvb2wtY2FsbHMgcmVxdWlyZXMgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgICAgfVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWNvbm5lY3QnKSBvcHRzLm1vZGUgPSAnY29ubmVjdCdcbiAgICBlbHNlIGlmIChhcmcgPT09ICctcScgfHwgYXJnID09PSAnLS1xdWlldCcpIG9wdHMucXVpZXQgPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLWgnIHx8IGFyZyA9PT0gJy0taGVscCcpIG9wdHMubW9kZSA9ICdoZWxwJ1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy12JyB8fCBhcmcgPT09ICctLXZlcnNpb24nKSBvcHRzLm1vZGUgPSAndmVyc2lvbidcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBhcmd1bWVudCBcIiR7YXJnfVwiYClcbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdoZWFkbGVzcycgJiYgIW9wdHMucHJvbXB0Py50cmltKCkpIHRocm93IG5ldyBFcnJvcignLXAgcmVxdWlyZXMgYSBub24tZW1wdHkgcHJvbXB0JylcbiAgcmV0dXJuIG9wdHNcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VPc2MxMShyZXNwb25zZSkge1xuICBjb25zdCBtYXRjaCA9IHJlc3BvbnNlLm1hdGNoKC9cXF0xMTtyZ2I6KFswLTlhLWZdKylcXC8oWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspL2kpXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsXG4gIGNvbnN0IGNoYW5uZWwgPSAoaGV4KSA9PiBwYXJzZUludChoZXgsIDE2KSAvICgxNiAqKiBoZXgubGVuZ3RoIC0gMSlcbiAgY29uc3QgbHVtaW5hbmNlID0gMC4yMTI2ICogY2hhbm5lbChtYXRjaFsxXSkgKyAwLjcxNTIgKiBjaGFubmVsKG1hdGNoWzJdKSArIDAuMDcyMiAqIGNoYW5uZWwobWF0Y2hbM10pXG4gIHJldHVybiBsdW1pbmFuY2UgPiAwLjUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZUZyb21Db2xvcmZnYmcodmFsdWUpIHtcbiAgY29uc3QgdG9rZW4gPSAodmFsdWUgfHwgJycpLnNwbGl0KCc7JykuYXQoLTEpXG4gIGlmICghL15cXGQrJC8udGVzdCh0b2tlbikpIHJldHVybiBudWxsXG4gIGNvbnN0IGJnID0gTnVtYmVyKHRva2VuKVxuICByZXR1cm4gYmcgPT09IDcgfHwgYmcgPT09IDE1ID8gJ2xpZ2h0JyA6ICdkYXJrJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0VGVybWluYWxUaGVtZSh7IHRpbWVvdXRNcyA9IDE1MCB9ID0ge30pIHtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiB0aGVtZUZyb21Db2xvcmZnYmcocHJvY2Vzcy5lbnYuQ09MT1JGR0JHKSB8fCAnZGFyaydcbiAgaWYgKCFwcm9jZXNzLnN0ZGluLmlzVFRZIHx8ICFwcm9jZXNzLnN0ZG91dC5pc1RUWSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxsYmFjaygpKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBidWZmZXIgPSAnJ1xuICAgIGxldCBzZXR0bGVkID0gZmFsc2VcbiAgICBjb25zdCB3YXNSYXcgPSBwcm9jZXNzLnN0ZGluLmlzUmF3XG5cbiAgICAvLyBuZXZlciBwYXVzZSgpIGhlcmU6IGFuIGV4cGxpY2l0IHBhdXNlIHN0aWNrcywgYW5kIHRyZW5kJ3MgbW91bnQgb25seVxuICAgIC8vIGF0dGFjaGVzIGEgZGF0YSBsaXN0ZW5lciwgd2hpY2ggd2lsbCBub3QgdW4tcGF1c2UgYW4gZXhwbGljaXRseVxuICAgIC8vIHBhdXNlZCBzdHJlYW0gLSBpbnB1dCB3b3VsZCBiZSBmcm96ZW4gZm9yIHRoZSB3aG9sZSBzZXNzaW9uXG4gICAgY29uc3QgZmluaXNoID0gKHRoZW1lKSA9PiB7XG4gICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuXG4gICAgICBzZXR0bGVkID0gdHJ1ZVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgcHJvY2Vzcy5zdGRpbi5vZmYoJ2RhdGEnLCBvbkRhdGEpXG4gICAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUod2FzUmF3KVxuICAgICAgcmVzb2x2ZSh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCBvbkRhdGEgPSAoY2h1bmspID0+IHtcbiAgICAgIGJ1ZmZlciArPSBjaHVuay50b1N0cmluZygnbGF0aW4xJylcbiAgICAgIGNvbnN0IHRoZW1lID0gcGFyc2VPc2MxMShidWZmZXIpXG4gICAgICBpZiAodGhlbWUpIGZpbmlzaCh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gZmluaXNoKGZhbGxiYWNrKCkpLCB0aW1lb3V0TXMpXG4gICAgcHJvY2Vzcy5zdGRpbi5zZXRSYXdNb2RlKHRydWUpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIG9uRGF0YSlcbiAgICBwcm9jZXNzLnN0ZGluLnJlc3VtZSgpXG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xceDFiXTExOz9cXHgxYlxcXFwnKVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWtldXBNYW5hZ2VyKHsgb25GaXJlID0gKCkgPT4ge30sIG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHdha2V1cHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICByZXR1cm4ge1xuICAgIHNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSkge1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgubWF4KDUsIE1hdGgucm91bmQoZGVsYXlTZWNvbmRzKSlcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDBcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdha2V1cHMuZGVsZXRlKGlkKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICAgIG9uRmlyZSh7IGlkLCBub3RlLCBhdCB9KVxuICAgICAgfSwgc2Vjb25kcyAqIDEwMDApXG4gICAgICB3YWtldXBzLnNldChpZCwgeyBpZCwgbm90ZSwgYXQsIHRpbWVyIH0pXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZCwgYXQsIHNlY29uZHMgfVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCB3YWtldXAgPSB3YWtldXBzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKCF3YWtldXApIHRocm93IG5ldyBFcnJvcihgbm8gcGVuZGluZyB3YWtlLXVwIHdpdGggaWQgJHtpZH1gKVxuICAgICAgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZDogd2FrZXVwLmlkLCBjYW5jZWxsZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4ud2FrZXVwcy52YWx1ZXMoKV1cbiAgICAgICAgLm1hcCgoeyBpZCwgbm90ZSwgYXQgfSkgPT4gKHsgaWQsIG5vdGUsIGF0IH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpXG4gICAgfSxcbiAgICBwZW5kaW5nKCkge1xuICAgICAgcmV0dXJuIHdha2V1cHMuc2l6ZVxuICAgIH0sXG4gICAgY2FuY2VsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCB3YWtldXAgb2Ygd2FrZXVwcy52YWx1ZXMoKSkgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwsIE1lbnUsIFByb2dyZXNzQmFyLCBTY3JvbGxCb3gsIFNoaW1tZXIsIFRleHRBcmVhLCB1c2VGb2N1cywgdXNlRm9jdXNUcmFwLCB1c2VGcmFtZVN0YXRzLCB1c2VJbnB1dCwgdXNlU2VsZWN0aW9uLCB1c2VUb2FzdCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IG1ha2VFdmVudCB9IGZyb20gJy4uL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvbiwgb3BlblNlc3Npb24sIGxvYWRTZXNzaW9uLCBsaXN0U2Vzc2lvbnMsIGRlbGV0ZVNlc3Npb24sIGRlbGV0ZVByb2plY3REYXRhIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUsIHVzZXJFbnRyaWVzLCByZXdpbmRTdGF0cyB9IGZyb20gJy4uL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgYXBwZW5kUHJvbXB0LCBsb2FkUHJvamVjdFByb21wdHMsIGxvYWRHbG9iYWxQcm9tcHRzIH0gZnJvbSAnLi4vY29yZS9oaXN0b3J5LmpzJ1xuaW1wb3J0IHsgcnVuVHVybiwgc3VtbWFyaXplVGV4dCwgY29tcGFjdEhpc3RvcnksIGNvbXBhY3RQcm9ncmVzcyB9IGZyb20gJy4uL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBjb21wYWN0aW9uUHJvbXB0LCBmb3JtYXRDb21wYWN0U3VtbWFyeSwgc3VtbWFyeVNlY3Rpb25zIH0gZnJvbSAnLi4vY29yZS9jb21wYWN0aW9uLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4uL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBzY2FuVXNlclRvb2xzIH0gZnJvbSAnLi4vY29yZS91c2VyLXRvb2xzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4uL2NvcmUvc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi4vY29yZS9jb21tYW5kcy5qcydcbmltcG9ydCB7IHJldmVydEVkaXRzLCByZWFwcGx5RWRpdHMgfSBmcm9tICcuLi9jb3JlL3Jld2luZC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IHRyYW5zY3JpcHRUb01hcmtkb3duIH0gZnJvbSAnLi4vY29yZS9leHBvcnQuanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4uL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgYWRob2NNb2RlbCB9IGZyb20gJy4uL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IHdyaXRlQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBjb25uZWN0T3BlbkFJLCBvcGVuYWlDcmVkZW50aWFscywgb3BlbmFpU3RhdHVzLCBkaXNjb25uZWN0T3BlbkFJIH0gZnJvbSAnLi4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4uL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5pbXBvcnQgeyBjb21wbGV0aW9uQ29udGV4dCwgYXBwbHlDb21wbGV0aW9uIH0gZnJvbSAnLi9jb21wbGV0aW9uLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdEltYWdlUGF0aHMsIG1lZGlhVHlwZUZvciwgZmluYWxpemVVc2VyQ29udGVudCwgcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzLCBpbnB1dFRleHRGcm9tQ29udGVudCB9IGZyb20gJy4vYXR0YWNobWVudHMuanMnXG5pbXBvcnQgeyBsaXN0RmlsZXMgfSBmcm9tICcuL2ZpbGVzLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0VmVyc2lvbiB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuaW1wb3J0IHsgTWVzc2FnZSwgQmFubmVyLCB1aVRpdGxlIH0gZnJvbSAnLi90cmFuc2NyaXB0LmpzeCdcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuL2hlbHAuanN4J1xuaW1wb3J0IHsgTW9kZWxQYW5lbCwgRWZmb3J0UGFuZWwsIFRoZW1lUGFuZWwsIEhpc3RvcnlQYW5lbCwgUmV3aW5kUGlja1BhbmVsLCBSZXdpbmRBY3Rpb25QYW5lbCwgUmVzdW1lUGFuZWwsIFByb2plY3RQYW5lbCwgTWNwUGFuZWwsIE1lbW9yeVBhbmVsLCBJbmZvTGlzdFBhbmVsLCBTaGVsbHNQYW5lbCwgV2FrZXVwc1BhbmVsLCBDb25uZWN0UGFuZWwsIHRpbWVBZ28gfSBmcm9tICcuL3BhbmVscy5qc3gnXG5pbXBvcnQgeyBhY2NlbnQsIHNldEFjY2VudCwgc2V0UGFsZXR0ZSwgcGFsZXR0ZU5hbWUsIHBhbGV0dGVMaXN0LCBERUZBVUxUX0FDQ0VOVCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCwgSElHSExJR0hUIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgRUZGT1JUX0xFVkVMUyA9IFtcbiAgeyBrZXk6IG51bGwsIGRlc2M6ICdsZXQgdGhlIHByb3ZpZGVyIGRlY2lkZSBob3cgbXVjaCB0byB0aGluaycgfSxcbiAgeyBrZXk6ICdsb3cnLCBkZXNjOiAncXVpY2sgYW5zd2VycywgbWluaW1hbCB0aGlua2luZycgfSxcbiAgeyBrZXk6ICdtZWRpdW0nLCBkZXNjOiAnbW9kZXJhdGUgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ2hpZ2gnLCBkZXNjOiAnZ2VuZXJvdXMgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ21heCcsIGRlc2M6ICdtYXhpbXVtIHRoaW5raW5nIGJ1ZGdldCcgfSxcbl1cblxuY29uc3QgQ09NTUFORFMgPSBbXG4gIHsgbmFtZTogJ21vZGVsJywgZGVzYzogJ1N3aXRjaCB0aGUgYWN0aXZlIG1vZGVsIGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ2Nvbm5lY3QnLCBkZXNjOiAnU2lnbiBpbiB3aXRoIENoYXRHUFQgdG8gdXNlIGEgQ29kZXggc3Vic2NyaXB0aW9uJyB9LFxuICB7IG5hbWU6ICdlZmZvcnQnLCBkZXNjOiAnU2V0IHRoZSB0aGlua2luZyBlZmZvcnQgZm9yIHRoaXMgc2Vzc2lvbicgfSxcbiAgeyBuYW1lOiAncmVzdW1lJywgZGVzYzogJ1BpY2sgdXAgYSBwcmV2aW91cyBzZXNzaW9uIHdoZXJlIHlvdSBsZWZ0IG9mZicgfSxcbiAgeyBuYW1lOiAnbmV3JywgZGVzYzogJ1N0YXJ0IGEgbmV3IHNlc3Npb24gaW4gdGhpcyBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICdwcm9qZWN0JywgZGVzYzogJ1N3aXRjaCBwcm9qZWN0czoganVtcCB0byBhbm90aGVyIHByb2plY3QsIHNhbWUgYXMgY3RybCtwJyB9LFxuICB7IG5hbWU6ICdjd2QnLCBkZXNjOiAnU2hvdyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJvamVjdCByb290JyB9LFxuICB7IG5hbWU6ICdza2lsbHMnLCBkZXNjOiAnTGlzdCBldmVyeSBza2lsbDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnY29tbWFuZHMnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kOiBidWlsdGluLCBnbG9iYWwsIGFuZCBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICd0b29scycsIGRlc2M6ICdMaXN0IGJ1aWx0aW4gYW5kIHVzZXItZGVmaW5lZCB0b29sczsgTUNQIHRvb2xzIGxpdmUgaW4gL21jcCcgfSxcbiAgeyBuYW1lOiAncmV3aW5kJywgZGVzYzogJ1Jlc3RvcmUgdGhlIGNvbnZlcnNhdGlvbiB0byBhIHByZXZpb3VzIG1lc3NhZ2UnIH0sXG4gIHsgbmFtZTogJ3JlbmFtZScsIGRlc2M6ICdOYW1lIHRoaXMgc2Vzc2lvbjogL3JlbmFtZSA8bmFtZT4nIH0sXG4gIHsgbmFtZTogJ2NvbG9yJywgZGVzYzogJ0NvbG9yIHRoaXMgc2Vzc2lvbjogL2NvbG9yIDxuYW1lIG9yICNoZXg+JyB9LFxuICB7IG5hbWU6ICd0aGVtZScsIGRlc2M6ICdQaWNrIGEgY29sb3IgdGhlbWU7IC90aGVtZSA8bmFtZT4gYXBwbGllcyBvbmUgZGlyZWN0bHknIH0sXG4gIHsgbmFtZTogJ21jcCcsIGRlc2M6ICdNYW5hZ2UgTUNQIHNlcnZlcnM6IGFkZCwgdG9nZ2xlLCByZWNvbm5lY3QnIH0sXG4gIHsgbmFtZTogJ3NoZWxscycsIGRlc2M6ICdWaWV3IGFuZCBtYW5hZ2UgYmFja2dyb3VuZCBzaGVsbHMnIH0sXG4gIHsgbmFtZTogJ3dha2V1cHMnLCBkZXNjOiAnVmlldyBhbmQgY2FuY2VsIHNjaGVkdWxlZCB3YWtlLXVwcycgfSxcbiAgeyBuYW1lOiAnbWVtb3J5JywgZGVzYzogJ0Jyb3dzZSBhbmQgbWFuYWdlIHNhdmVkIG1lbW9yaWVzOiBwcm9qZWN0IGFuZCBnbG9iYWwnIH0sXG4gIHsgbmFtZTogJ2NvbXBhY3QnLCBkZXNjOiAnU3VtbWFyaXplIHRoZSBjb252ZXJzYXRpb24gdG8gZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2NsZWFyJywgZGVzYzogJ0NsZWFyIHRoZSBjb252ZXJzYXRpb24gYW5kIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjb3N0JywgZGVzYzogJ1Nob3cgdG9rZW4gdXNhZ2UgYW5kIGVzdGltYXRlZCBjb3N0IHNvIGZhcicgfSxcbiAgeyBuYW1lOiAnY29udGV4dCcsIGRlc2M6IFwiU2hvdyB3aGF0J3MgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBhbmQgaG93IGJpZyBlYWNoIHBpZWNlIGlzXCIgfSxcbiAgeyBuYW1lOiAnZXhwb3J0JywgZGVzYzogJ1NhdmUgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIHRvIGEgbWFya2Rvd24gZmlsZScgfSxcbiAgeyBuYW1lOiAnaGVscCcsIGRlc2M6ICdMaXN0IGV2ZXJ5IGNvbW1hbmQgYW5kIHdoYXQgaXQgZG9lcycgfSxcbl1cblxuY29uc3QgU0VTU0lPTl9DT0xPUlMgPSB7XG4gIHJlZDogJyNmODcxNzEnLFxuICBvcmFuZ2U6ICcjZmI5MjNjJyxcbiAgeWVsbG93OiAnI2ZhY2MxNScsXG4gIGdyZWVuOiAnIzZCRTc5NScsXG4gIHRlYWw6ICcjMmRkNGJmJyxcbiAgY3lhbjogJyMyMmQzZWUnLFxuICBibHVlOiAnIzYwYTVmYScsXG4gIHB1cnBsZTogJyNhNzhiZmEnLFxuICBwaW5rOiAnI2Y0NzJiNicsXG4gIGdyYXk6ICcjOWNhM2FmJyxcbn1cblxuY29uc3QgSElTVE9SWV9TQ09QRVMgPSBbJ3Nlc3Npb24nLCAncHJvamVjdCcsICdldmVyeXdoZXJlJ11cbmNvbnN0IE1FTU9SWV9TQ09QRVMgPSBbJ2FsbCcsICdwcm9qZWN0JywgJ2dsb2JhbCddXG5jb25zdCBTSEVMTF9TVFJJUF9NQVggPSA1XG5cbi8vIG9ubHkgdGhlIG5ld2VzdCBzbGljZSBvZiBhIGxvbmcgdHJhbnNjcmlwdCByZW5kZXJzOyBvbGRlciBpdGVtcyBsb2FkIGluXG4vLyBiYXRjaGVzIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB0byB0aGUgdG9wLiByZW5kZXIgY29zdCBpcyBwZXItaXRlbSwgc28gdGhpc1xuLy8ga2VlcHMgZGF5LWxvbmcgc2Vzc2lvbnMgYXMgZmFzdCBhcyBmcmVzaCBvbmVzXG5jb25zdCBISVNUT1JZX1dJTkRPVyA9IDUwXG5jb25zdCBSRVNVTUVfU0NPUEVTID0gWydwcm9qZWN0JywgJ2V2ZXJ5d2hlcmUnXVxuXG5leHBvcnQgZnVuY3Rpb24gQXBwKHsgYm9vdCB9KSB7XG4gIGNvbnN0IHsgY3dkLCByb290LCB2ZXJzaW9uLCBtb2RlbHMsIHNraWxscywgbWNwLCB0cmFja2VyLCBzdGFydHVwQ29udGV4dCB9ID0gYm9vdFxuXG4gIGNvbnN0IFtkZXJpdmVkLCBzZXREZXJpdmVkXSA9IGNyZWF0ZVNpZ25hbChkZXJpdmVTdGF0ZShbXSkpXG4gIGNvbnN0IFtvdmVybGF5LCBzZXRPdmVybGF5XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3N0cmVhbWluZywgc2V0U3RyZWFtaW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdGhpbmtpbmdOb3csIHNldFRoaW5raW5nTm93XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdGluZywgc2V0Q29tcGFjdGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0U3RhdHVzLCBzZXRDb21wYWN0U3RhdHVzXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc3RhcnRlZEF0LCBzZXRTdGFydGVkQXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtpbnB1dCwgc2V0SW5wdXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2RlZmF1bHRNb2RlbCwgc2V0RGVmYXVsdE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2VmZm9ydCwgc2V0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtkZWZhdWx0RWZmb3J0LCBzZXREZWZhdWx0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtzaG93RWZmb3J0UGFuZWwsIHNldFNob3dFZmZvcnRQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhlbWVQYW5lbCwgc2V0U2hvd1RoZW1lUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd01lbW9yeVBhbmVsLCBzZXRTaG93TWVtb3J5UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbbWVtU2NvcGUsIHNldE1lbVNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbbWVtb3J5TGlzdCwgc2V0TWVtb3J5TGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFt0aGVtZVByZWYsIHNldFRoZW1lUHJlZl0gPSBjcmVhdGVTaWduYWwoYm9vdC50aGVtZVByZWYgfHwgJ2F1dG8nKVxuICBjb25zdCBbcXVldWVkLCBzZXRRdWV1ZWRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2VudCwgc2V0U2VudF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtoaXN0SWR4LCBzZXRIaXN0SWR4XSA9IGNyZWF0ZVNpZ25hbCgtMSlcbiAgY29uc3QgW2NtZEluZGV4LCBzZXRDbWRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2NtZEN5Y2xlLCBzZXRDbWRDeWNsZV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2ZpbGVJbmRleCwgc2V0RmlsZUluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZmlsZUxpc3QsIHNldEZpbGVMaXN0XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW2ZpbGVzRGlzbWlzc2VkLCBzZXRGaWxlc0Rpc21pc3NlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IGNyZWF0ZVNpZ25hbCgnY2hhdCcpXG4gIGNvbnN0IFt2ZXJib3NlLCBzZXRWZXJib3NlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RlbFBhbmVsLCBzZXRTaG93TW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93SGlzdG9yeVBhbmVsLCBzZXRTaG93SGlzdG9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2hpc3RTY29wZSwgc2V0SGlzdFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbaGlzdFByb21wdHMsIHNldEhpc3RQcm9tcHRzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Nob3dSZXN1bWVQYW5lbCwgc2V0U2hvd1Jlc3VtZVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jlc3VtZVNjb3BlLCBzZXRSZXN1bWVTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jlc3VtZVNlc3Npb25zLCBzZXRSZXN1bWVTZXNzaW9uc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtyZXN1bWVMb2FkaW5nLCBzZXRSZXN1bWVMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNY3BQYW5lbCwgc2V0U2hvd01jcFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dQcm9qZWN0UGFuZWwsIHNldFNob3dQcm9qZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5mb1BhbmVsLCBzZXRJbmZvUGFuZWxdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzaG93U2hlbGxzUGFuZWwsIHNldFNob3dTaGVsbHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93V2FrZXVwc1BhbmVsLCBzZXRTaG93V2FrZXVwc1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25uZWN0UGFuZWwsIHNldFNob3dDb25uZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYXV0aFByb3ZpZGVycywgc2V0QXV0aFByb3ZpZGVyc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaGVsbHNWZXJzaW9uLCBzZXRTaGVsbHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcHJvamVjdHMsIHNldFByb2plY3RzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Byb2plY3RzTG9hZGluZywgc2V0UHJvamVjdHNMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21jcFNlcnZlcnMsIHNldE1jcFNlcnZlcnNdID0gY3JlYXRlU2lnbmFsKG1jcC5saXN0KCkpXG4gIGNvbnN0IFtjb21wbGV0aW5nLCBzZXRDb21wbGV0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBJbmRleCwgc2V0Q29tcEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcmV3aW5kU3RlcCwgc2V0UmV3aW5kU3RlcF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3Jld2luZFRhcmdldCwgc2V0UmV3aW5kVGFyZ2V0XSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtmb2xsb3csIHNldEZvbGxvd10gPSBjcmVhdGVTaWduYWwodHJ1ZSlcbiAgY29uc3QgW2hpc3RXaW5kb3csIHNldEhpc3RXaW5kb3ddID0gY3JlYXRlU2lnbmFsKEhJU1RPUllfV0lORE9XKVxuXG4gIGNvbnN0IHJlZnMgPSBib290LnJlZnNcbiAgcmVmcy5zZXNzaW9uID8/PSBudWxsXG4gIHJlZnMuYWxsRXZlbnRzID8/PSBbXVxuICByZWZzLnBlcnNpc3RlZCA/Pz0gMFxuICByZWZzLmFib3J0ID0gcmVmcy5hYm9ydCB8fCBudWxsXG4gIHJlZnMucmV3aW5kVW5kbyA9IHJlZnMucmV3aW5kVW5kbyB8fCBudWxsXG4gIHJlZnMucXVpdEF0ID8/PSAwXG4gIHJlZnMuYXR0YWNobWVudHMgPz89IG5ldyBNYXAoKVxuICByZWZzLmltYWdlQ291bnQgPz89IDBcblxuICBib290LnNldE1jcE5vdGlmeSgoKSA9PiBzZXRNY3BTZXJ2ZXJzKGJvb3QubWNwLmxpc3QoKSkpXG4gIGJvb3Quc2V0U2hlbGxzTm90aWZ5KCgpID0+IHNldFNoZWxsc1ZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzTm90aWZ5KCgpID0+IHNldFNoZWxsc1ZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzRmlyZSgod2FrZXVwKSA9PiB7XG4gICAgZmxhc2goYHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkYClcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBzY2hlZHVsZWQgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWQuIE5vdGUgdG8gc2VsZjogJHt3YWtldXAubm90ZX1gLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuICBib290LnNldFNoZWxsc0V4aXQoKHNoZWxsKSA9PiB7XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAnbW9kZWwnKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICd1c2VyJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICBub3RlU3lzdGVtKGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgbWFudWFsbHkga2lsbGVkIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuZGVzY3JpcHRpb24gfHwgc2hlbGwuY29tbWFuZH0pIGZyb20gdGhlIHNoZWxscyBwYW5lbCAoU0lHVEVSTSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXN0YXJ0IGl0IHVubGVzcyBhc2tlZC5gLCB7IHdha2U6IGZhbHNlIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGV4aXRlZCBcdTAwQjcgY29kZSAke3NoZWxsLmV4aXRDb2RlfWApXG4gICAgY29uc3QgdGFpbCA9IGJvb3Quc2hlbGxzLm91dHB1dChzaGVsbC5pZCwgeyB0YWlsOiAzMCB9KS5vdXRwdXRcbiAgICBjb25zdCBzZWNzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoKHNoZWxsLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzaGVsbC5zdGFydGVkQXQpIC8gMTAwMCkpXG4gICAgY29uc3QgcmFuID0gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBzaGVsbC5jb21tYW5kfSkgZXhpdGVkIHdpdGggY29kZSAke3NoZWxsLmV4aXRDb2RlfSBhZnRlciAke3Jhbn0uYCArXG4gICAgICAgICh0YWlsID8gYFxcblJlY2VudCBvdXRwdXQ6XFxuJHt0YWlsfWAgOiAnJyksXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG5cbiAgZnVuY3Rpb24gbm90ZVN5c3RlbSh0ZXh0LCB7IHdha2UgfSkge1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID8/PSBbXVxuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzLnB1c2goeyB0ZXh0LCB3YWtlIH0pXG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN5c3RlbU5vdGVzKCkge1xuICAgIGlmICghcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXM/Lmxlbmd0aCB8fCBidXN5KCkgfHwgdmlldygpICE9PSAnY2hhdCcgfHwgIXJlZnMuc2Vzc2lvbikgcmV0dXJuXG4gICAgY29uc3Qgbm90ZXMgPSByZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlc1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID0gW11cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnc3lzdGVtX25vdGUnLCB7IHRleHQ6IG5vdGVzLm1hcCgobikgPT4gbi50ZXh0KS5qb2luKCdcXG5cXG4nKSB9KSlcbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG5vdGVzLnNvbWUoKG4pID0+IG4ud2FrZSkpIHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBjb25zdCBza2lsbENvbW1hbmRzID0gc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogYHNraWxsIFx1MDBCNyAke3MuZGVzY3JpcHRpb24gfHwgcy5zb3VyY2V9YCwgc2tpbGw6IHRydWUgfSkpXG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IGJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoYykgPT4gKHsgbmFtZTogYy5uYW1lLCBkZXNjOiBgY29tbWFuZCBcdTAwQjcgJHtjLmRlc2NyaXB0aW9uIHx8IGMuc291cmNlfWAsIGNvbW1hbmQ6IHRydWUgfSkpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBjb25zdCBzaGFkb3dlZCA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBbLi4uQ09NTUFORFMsIC4uLnNraWxsQ29tbWFuZHMsIC4uLnVzZXJDb21tYW5kc10pIHtcbiAgICBpZiAoYnlOYW1lLmhhcyhjLm5hbWUpKSBzaGFkb3dlZC5wdXNoKGAke2Muc2tpbGwgPyAnc2tpbGwnIDogJ2NvbW1hbmQnfSBcIiR7Yy5uYW1lfVwiYClcbiAgICBlbHNlIGJ5TmFtZS5zZXQoYy5uYW1lLCBjKVxuICB9XG4gIGNvbnN0IGFsbENvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cbiAgaWYgKHNoYWRvd2VkLmxlbmd0aCAmJiAhcmVmcy53YXJuZWRTaGFkb3dlZCkge1xuICAgIHJlZnMud2FybmVkU2hhZG93ZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiBmbGFzaChgc2hhZG93ZWQgYnkgYW4gZWFybGllciBuYW1lLCByZW5hbWUgdG8gdXNlOiAke3NoYWRvd2VkLmpvaW4oJywgJyl9YCksIDApXG4gIH1cblxuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogMzUwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1yaWdodCcsXG4gICAgcmVuZGVyOiAobWVzc2FnZSkgPT4gPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke21lc3NhZ2V9IGB9PC90ZXh0PixcbiAgfSlcblxuICBmdW5jdGlvbiBmbGFzaChtc2cpIHtcbiAgICB0b2FzdChtc2cpXG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVTZXNzaW9uKCkge1xuICAgIGlmICghcmVmcy5zZXNzaW9uKSByZWZzLnNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkLCByb290IH0pXG4gICAgd2hpbGUgKHJlZnMucGVyc2lzdGVkIDwgcmVmcy5hbGxFdmVudHMubGVuZ3RoKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKHJlZnMuYWxsRXZlbnRzW3JlZnMucGVyc2lzdGVkXSlcbiAgICAgIHJlZnMucGVyc2lzdGVkKytcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZXJzaXN0KGV2ZW50KSB7XG4gICAgcmVmcy5hbGxFdmVudHMucHVzaChldmVudClcbiAgICBpZiAocmVmcy5zZXNzaW9uKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSByZWZzLmFsbEV2ZW50cy5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZURlcml2ZSgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZVN0YXRlKHJlZnMuYWxsRXZlbnRzKVxuICAgIHNldERlcml2ZWQoc3RhdGUpXG4gICAgc2V0QWNjZW50KHN0YXRlLmNvbG9yKVxuICAgIGJvb3Quc2V0VGhlbWU/Lih7IGFjY2VudDogc3RhdGUuY29sb3IgfHwgREVGQVVMVF9BQ0NFTlQsIG11dGVkOiBNVVRFRCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2hTdHJlYW0oaXRlbXMpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3RyZWFtaW5nKClcbiAgICBpZiAodGV4dCkgaXRlbXMucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0IH0pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBleGVjdXRlVHVybih0ZXh0KSB7XG4gICAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIHJlZnMuYXR0YWNobWVudHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG4gICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgcmVEZXJpdmUoKVxuICAgIGF3YWl0IHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtQ29tcGFjdGlvbihpbnN0cnVjdGlvbnMgPSAnJykge1xuICAgIGlmIChidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBpZiAoc3RhdGUucHJvdmlkZXJIaXN0b3J5Lmxlbmd0aCA8IDQpIHJldHVybiBmbGFzaCgnbm90aGluZyB0byBjb21wYWN0IHlldCcpXG5cbiAgICBsZXQgYXV0aCA9IG51bGxcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIGlmICghYXV0aCkgcmV0dXJuIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gdXNlckVudHJpZXMoc3RhdGUpXG4gICAgY29uc3Qga2VlcEZyb20gPSBlbnRyaWVzLmF0KC0yKT8uZXZlbnRJZCA/PyBlbnRyaWVzLmF0KC0xKT8uZXZlbnRJZFxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldENvbXBhY3RpbmcodHJ1ZSlcbiAgICBzZXRDb21wYWN0U3RhdHVzKG51bGwpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG4gICAgbGV0IHN0cmVhbWVkID0gJydcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gYXdhaXQgY29tcGFjdEhpc3Rvcnkoe1xuICAgICAgICBoaXN0b3J5OiBzdGF0ZS5wcm92aWRlckhpc3RvcnksXG4gICAgICAgIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lLFxuICAgICAgICBhdXRoLFxuICAgICAgICBwcm9tcHQ6IGNvbXBhY3Rpb25Qcm9tcHQoaW5zdHJ1Y3Rpb25zKSxcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25TdHJlYW06IChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlICE9PSAnY29udGVudCcpIHJldHVyblxuICAgICAgICAgIHN0cmVhbWVkICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgICAgICBzZXRDb21wYWN0U3RhdHVzKGNvbXBhY3RQcm9ncmVzcyhzdHJlYW1lZCkpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgY29uc3Qgc3VtbWFyeSA9IGZvcm1hdENvbXBhY3RTdW1tYXJ5KHJhdylcbiAgICAgIGlmICghc3VtbWFyeSkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBzdW1tYXJ5JylcbiAgICAgIGlmIChzdW1tYXJ5U2VjdGlvbnMoc3VtbWFyeSkgPCA1KSB0aHJvdyBuZXcgRXJyb3IoJ21hbGZvcm1lZCBzdW1tYXJ5LCBjb252ZXJzYXRpb24gbGVmdCB1bnRvdWNoZWQnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbXBhY3QnLCB7IHN1bW1hcnksIGtlZXBGcm9tLCBzZXNzaW9uRmlsZTogcmVmcy5zZXNzaW9uPy5maWxlIHx8IG51bGwgfSkpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnY29tcGFjdGVkIFx1MDBCNyByZWNlbnQgbWVzc2FnZXMga2VwdCB2ZXJiYXRpbScpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkgZmxhc2goJ2NvbXBhY3Rpb24gY2FuY2VsbGVkJylcbiAgICAgIGVsc2UgZmxhc2goYGNvbXBhY3QgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEwMCl9YClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0Q29tcGFjdGluZyhmYWxzZSlcbiAgICAgIHNldENvbXBhY3RTdGF0dXMobnVsbClcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHEgPSBxdWV1ZWQoKVxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSBzZXRJbnB1dChxLmpvaW4oJ1xcbicpKVxuICAgICAgZWxzZSBleGVjdXRlVHVybihxLmpvaW4oJ1xcbicpKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1heWJlQXV0b0NvbXBhY3QoKSB7XG4gICAgaWYgKGJvb3QuYXV0b0NvbXBhY3QgPT09IGZhbHNlIHx8IGJ1c3koKSB8fCBjb21wYWN0aW5nKCkpIHJldHVyblxuICAgIGNvbnN0IGxpbWl0ID0gbW9kZWwoKS5jb250ZXh0XG4gICAgY29uc3QgdXNlZCA9IGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zXG4gICAgaWYgKCFsaW1pdCB8fCAhdXNlZCB8fCBkZXJpdmVkKCkubGFzdFByb21wdE1vZGVsICE9PSBtb2RlbCgpLm5hbWUpIHJldHVyblxuICAgIGNvbnN0IHJhdGlvID0gdXNlZCAvIGxpbWl0XG4gICAgaWYgKHJhdGlvID49IDAuODUpIHtcbiAgICAgIGZsYXNoKGBjb250ZXh0ICR7TWF0aC5yb3VuZChyYXRpbyAqIDEwMCl9JSBmdWxsIFx1MDBCNyBhdXRvLWNvbXBhY3RpbmdgKVxuICAgICAgcGVyZm9ybUNvbXBhY3Rpb24oKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bkFnZW50VHVybigpIHtcbiAgICBsZXQgYXV0aCA9IG51bGxcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIGlmICghYXV0aCkge1xuICAgICAgICBmbGFzaCgnY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW46IHJ1biAvY29ubmVjdCcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRGb2xsb3codHJ1ZSlcbiAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgIHNldEJ1c3kodHJ1ZSlcbiAgICBzZXRTdGFydGVkQXQoRGF0ZS5ub3coKSlcblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICByZWZzLmFib3J0ID0gY29udHJvbGxlclxuICAgIGNvbnN0IGxvYWRlZEJlZm9yZSA9IG5ldyBTZXQodHJhY2tlci5sb2FkZWQpXG4gICAgYm9vdC5za2lsbHMgPSBhd2FpdCBjcmVhdGVTa2lsbEluZGV4KGJvb3Qucm9vdCkuY2F0Y2goKCkgPT4gYm9vdC5za2lsbHMpID8/IGJvb3Quc2tpbGxzXG4gICAgYm9vdC5jb21tYW5kcyA9IGF3YWl0IGNyZWF0ZUNvbW1hbmRJbmRleChib290LnJvb3QpLmNhdGNoKCgpID0+IGJvb3QuY29tbWFuZHMpID8/IGJvb3QuY29tbWFuZHNcbiAgICBjb25zdCBmcmVzaFNraWxscyA9IGJvb3Quc2tpbGxzXG4gICAgY29uc3QgdXNlclRvb2xTY2FuID0gYXdhaXQgc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdDogYm9vdC5yb290IH0pLmNhdGNoKCgpID0+ICh7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9KSlcbiAgICBmb3IgKGNvbnN0IGZhaWx1cmUgb2YgdXNlclRvb2xTY2FuLmVycm9ycykge1xuICAgICAgY29uc3Qga2V5ID0gYCR7ZmFpbHVyZS5maWxlfToke2ZhaWx1cmUuZXJyb3J9YFxuICAgICAgaWYgKCFyZWZzLndhcm5lZFRvb2xzPy5oYXMoa2V5KSkge1xuICAgICAgICA7KHJlZnMud2FybmVkVG9vbHMgPz89IG5ldyBTZXQoKSkuYWRkKGtleSlcbiAgICAgICAgZmxhc2goYHRvb2wgc2tpcHBlZDogJHtmYWlsdXJlLmZpbGUuc3BsaXQoJy8nKS5wb3AoKX0gXHUwMEI3ICR7ZmFpbHVyZS5lcnJvcn1gKVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IHRvb2xzLCByZWNvcmRlciB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICBjd2QsXG4gICAgICB0cmFja2VyLFxuICAgICAgc2tpbGxzOiBmcmVzaFNraWxscyxcbiAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICB3YWtldXBzOiBib290Lndha2V1cHMsXG4gICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIG1jcFRvb2xzOiBtY3AudG9vbHMoKSxcbiAgICAgIHVzZXJUb29sczogdXNlclRvb2xTY2FuLnRvb2xzLFxuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KVxuXG4gICAgcmVmcy50dXJuVGhvdWdodHMgPSAnJ1xuICAgIGNvbnN0IG9uU3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykge1xuICAgICAgICByZWZzLnR1cm5UaG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICAgIHNldFRoaW5raW5nTm93KHRydWUpXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICBzZXRUaGlua2luZ05vdyhmYWxzZSlcbiAgICAgICAgc2V0U3RyZWFtaW5nKChzKSA9PiAocyB8fCAnJykgKyBldmVudC5jb250ZW50KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jYWxsc19yZWFkeScpIHtcbiAgICAgICAgc2V0VGhpbmtpbmdOb3coZmFsc2UpXG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICByZXR1cm4gbmV4dFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9leGVjdXRpbmcnKSB7XG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICBsZXQgYXJncyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFyZ3MgPSBKU09OLnBhcnNlKGV2ZW50LmNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgICBuZXh0LnB1c2goe1xuICAgICAgICAgICAga2luZDogJ3Rvb2wnLFxuICAgICAgICAgICAgY2FsbElkOiBldmVudC5jYWxsLmlkLFxuICAgICAgICAgICAgbmFtZTogZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICAgICAgdGl0bGU6IHVpVGl0bGUoZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLCBhcmdzKSxcbiAgICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnIHx8IGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHJlY29yZGVyLmVudHJpZXMuYXQoLTEpXG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+XG4gICAgICAgICAgby5tYXAoKGl0ZW0pID0+XG4gICAgICAgICAgICBpdGVtLmtpbmQgPT09ICd0b29sJyAmJiBpdGVtLmNhbGxJZCA9PT0gZXZlbnQuY2FsbC5pZFxuICAgICAgICAgICAgICA/IHsgLi4uaXRlbSwgLi4uKGVudHJ5Py5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWQgPyBlbnRyeSA6IHt9KSwga2luZDogJ3Rvb2wnLCBzdGF0dXM6IGVudHJ5Py5zdGF0dXMgfHwgJ2RvbmUnIH1cbiAgICAgICAgICAgICAgOiBpdGVtLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHJ1blR1cm4oe1xuICAgICAgICBoaXN0b3J5OiBkZXJpdmVkKCkucHJvdmlkZXJIaXN0b3J5LFxuICAgICAgICB0b29scyxcbiAgICAgICAgcmVjb3JkZXIsXG4gICAgICAgIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lLFxuICAgICAgICBlZmZvcnQ6IGVmZm9ydEFwcGxpZXMoKSA/IGVmZm9ydCgpID8/ICdhdXRvJyA6IG51bGwsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIHN5c3RlbTogYnVpbGRTeXN0ZW1Qcm9tcHQoe1xuICAgICAgICAgIGN3ZCxcbiAgICAgICAgICBjb250ZXh0RmlsZXM6IHN0YXJ0dXBDb250ZXh0LmZpbGVzLFxuICAgICAgICAgIHNraWxsczogZnJlc2hTa2lsbHMubGlzdCgpLFxuICAgICAgICAgIG1lbW9yeUluZGV4VGV4dDogbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KSxcbiAgICAgICAgfSksXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG9uU3RyZWFtLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldE92ZXJsYXkoW10pXG4gICAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgICAgIHNldFRoaW5raW5nTm93KGZhbHNlKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgICBmbGFzaChgZXJyb3I6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTIwKX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlZnMudHVyblRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHJlZnMudHVyblRob3VnaHRzIH0pKVxuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcmVjb3JkZXIuZW50cmllcykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rvb2xfbWV0YScsIGVudHJ5KSlcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgdHJhY2tlci5sb2FkZWQpIHtcbiAgICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgICB9XG4gICAgaWYgKHJlc3VsdC51c2FnZSkgcGVyc2lzdChtYWtlRXZlbnQoJ3VzYWdlJywgeyBtb2RlbDogbW9kZWwoKS5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gICAgc2V0T3ZlcmxheShbXSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgICBzZXRUaGlua2luZ05vdyhmYWxzZSlcbiAgICByZURlcml2ZSgpXG4gICAgc2V0QnVzeShmYWxzZSlcbiAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgIGlmIChyZXN1bHQuc3RhbGxlZCkge1xuICAgICAgZmxhc2goJ21vZGVsIHN0YWxsZWQgXHUwMEI3IHR1cm4gaW50ZXJydXB0ZWQnKVxuICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgcHJldmlvdXMgdHVybiB3YXMgY3V0IG9mZiBhdXRvbWF0aWNhbGx5OiB0aGUgbW9kZWwgcHJvZHVjZWQgbm8gb3V0cHV0IGZvciA1IG1pbnV0ZXMgKHByb3ZpZGVyIHN0YWxsKS4gV29yayBtYXkgaGF2ZSBzdG9wcGVkIG1pZC10YXNrOyBwaWNrIHVwIHdoZXJlIGl0IGxlZnQgb2ZmLicsXG4gICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgZmxhc2goYGVycm9yOiAke3Jlc3VsdC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgICBub3RlU3lzdGVtKFxuICAgICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSBwcmV2aW91cyB0dXJuIGVuZGVkIHdpdGggYSBwcm92aWRlciBlcnJvcjogJHtyZXN1bHQuZXJyb3Iuc2xpY2UoMCwgMzAwKX0uIFdvcmsgbWF5IGhhdmUgc3RvcHBlZCBtaWQtdGFzazsgcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi5gLFxuICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2Uge1xuICAgICAgICBleGVjdXRlVHVybihxLmpvaW4oJ1xcbicpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gICAgbWF5YmVBdXRvQ29tcGFjdCgpXG4gIH1cblxuICBmdW5jdGlvbiBjb21wbGV0aW9uU291cmNlKG5hbWUpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NvbG9yJykgcmV0dXJuIE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgIGlmIChuYW1lID09PSAndGhlbWUnKSByZXR1cm4gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICBpZiAobmFtZSA9PT0gJ2VmZm9ydCcpIHJldHVybiBbJ2RlZmF1bHQnLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgaWYgKG5hbWUgPT09ICdtb2RlbCcpIHJldHVybiBtb2RlbHMuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpLm1hcCgobSkgPT4gbS5uYW1lKVxuICAgIGNvbnN0IGNtZCA9IGFsbENvbW1hbmRzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAoY21kPy5za2lsbCB8fCBjbWQ/LmNvbW1hbmQpIHJldHVybiBmaWxlTGlzdCgpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NDb21wbGV0aW9uKCkge1xuICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgc2V0Q29tcEluZGV4KDApXG4gIH1cblxuICBmdW5jdGlvbiBhY2NlcHRDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICAgIHNldElucHV0KGFwcGx5Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpKVxuICAgIGRpc21pc3NDb21wbGV0aW9uKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbmQodGV4dCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgcmVmcy5hYm9ydD8uYWJvcnQoKVxuICB9XG5cbiAgY29uc3QgZm10VG9rZW5zID0gKG4pID0+IChuID49IDEwMDAgPyBgJHsobiAvIDEwMDApLnRvRml4ZWQoMSl9a2AgOiBTdHJpbmcobikpXG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaE1lbW9yaWVzKCkge1xuICAgIHNldE1lbW9yeUxpc3QoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGZvcmdldE1lbW9yeShtKSB7XG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmZvcmdldEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZm9yZ2V0QXJtID0geyBmaWxlOiBtLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGZvcmdldCBcIiR7bS5uYW1lfVwiYClcbiAgICB9XG4gICAgcmVmcy5mb3JnZXRBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGJvb3QubWVtb3J5LmZvcmdldChtLm5hbWUpXG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgZmxhc2goYGZvcmdvdCAke20ubmFtZX0gKCR7bS5zY29wZX0pYClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBmb3JnZXQgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5Db250ZXh0UGFuZWwoKSB7XG4gICAgY29uc3QgZXN0ID0gKHRleHQpID0+IE1hdGgucm91bmQoU3RyaW5nKHRleHQpLmxlbmd0aCAvIDQpXG4gICAgY29uc3QgdG9rID0gKG4pID0+IGB+JHtmbXRUb2tlbnMobil9IHRva2BcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuXG4gICAgY29uc3QgbWVtb3J5SW5kZXhUZXh0ID0gbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KVxuICAgIGNvbnN0IHNraWxsTGlzdCA9IGJvb3Quc2tpbGxzLmxpc3QoKVxuICAgIGNvbnN0IGZpbGVzID0gc3RhcnR1cENvbnRleHQuZmlsZXNcbiAgICBjb25zdCBzeXN0ZW1GdWxsID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogZmlsZXMsIHNraWxsczogc2tpbGxMaXN0LCBtZW1vcnlJbmRleFRleHQgfSlcbiAgICBjb25zdCBzeXN0ZW1CYXNlID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogW10sIHNraWxsczogW10sIG1lbW9yeUluZGV4VGV4dDogJycgfSlcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGNvbnN0IHsgdG9vbHMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGRyZWRnZTogYm9vdC5kcmVkZ2UsXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICB9KVxuICAgIGNvbnN0IHRvb2xUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkodG9vbHMpKVxuXG4gICAgY29uc3QgaGlzdG9yeSA9IHN0YXRlLnByb3ZpZGVySGlzdG9yeVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IGhpc3RvcnlbMF0/LnJvbGUgPT09ICd1c2VyJ1xuICAgICAgJiYgc3RhdGUuaGlzdG9yeUV2ZW50SWRzWzBdID09PSBudWxsXG4gICAgICAmJiBTdHJpbmcoaGlzdG9yeVswXS5jb250ZW50KS5zdGFydHNXaXRoKCdbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbicpXG4gICAgY29uc3Qgc3VtbWFyeVRva2VucyA9IGNvbXBhY3RlZCA/IGVzdChoaXN0b3J5WzBdLmNvbnRlbnQpIDogMFxuICAgIGNvbnN0IG1lc3NhZ2VzID0gY29tcGFjdGVkID8gaGlzdG9yeS5zbGljZSgxKSA6IGhpc3RvcnlcbiAgICBjb25zdCBtZXNzYWdlVG9rZW5zID0gZXN0KEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKSlcblxuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICB7IG5hbWU6ICdzeXN0ZW0gcHJvbXB0JywgZGVzYzogJ2lkZW50aXR5LCBlbnZpcm9ubWVudCwgdG9vbCBndWlkYW5jZScsIG5vdGU6IHRvayhlc3Qoc3lzdGVtQmFzZSkpIH0sXG4gICAgICB7IG5hbWU6IGB0b29sIHNjaGVtYXMgKCR7dG9vbHMubGVuZ3RofSlgLCBkZXNjOiB0b29scy5tYXAoKHQpID0+IHQubmFtZSkuam9pbignIFx1MDBCNyAnKSwgbm90ZTogdG9rKHRvb2xUb2tlbnMpIH0sXG4gICAgXVxuICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBwcm9qZWN0IGluc3RydWN0aW9ucyAoJHtmaWxlcy5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IGZpbGVzLm1hcCgoZikgPT4gZi5wYXRoLnJlcGxhY2UoYCR7Ym9vdC5yb290fS9gLCAnJykpLmpvaW4oJywgJyksXG4gICAgICAgIG5vdGU6IHRvayhmaWxlcy5yZWR1Y2UoKHN1bSwgZikgPT4gc3VtICsgZXN0KGYuY29udGVudCksIDApKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChza2lsbExpc3QubGVuZ3RoKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiBgc2tpbGxzIGluZGV4ICgke3NraWxsTGlzdC5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IHNraWxsTGlzdC5tYXAoKHMpID0+IHMubmFtZSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGVzdChza2lsbExpc3QubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKS5qb2luKCdcXG4nKSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgICAgcm93cy5wdXNoKHsgbmFtZTogJ21lbW9yeSBpbmRleCcsIGRlc2M6ICdvbmUgbGluZSBwZXIgc2F2ZWQgbWVtb3J5Jywgbm90ZTogdG9rKGVzdChtZW1vcnlJbmRleFRleHQpKSB9KVxuICAgIH1cbiAgICBpZiAoY29tcGFjdGVkKSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnY29tcGFjdGlvbiBzdW1tYXJ5JywgZGVzYzogJ3N0YW5kcyBpbiBmb3IgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGxhc3QgY29tcGFjdCcsIG5vdGU6IHRvayhzdW1tYXJ5VG9rZW5zKSB9KVxuICAgIH1cbiAgICByb3dzLnB1c2goe1xuICAgICAgbmFtZTogYGNvbnZlcnNhdGlvbiAoJHttZXNzYWdlcy5sZW5ndGh9IG1lc3NhZ2VzKWAsXG4gICAgICBkZXNjOiBjb21wYWN0ZWQgPyAna2VwdCB2ZXJiYXRpbSBzaW5jZSB0aGUgbGFzdCBjb21wYWN0JyA6ICdldmVyeSBtZXNzYWdlIHRoaXMgc2Vzc2lvbicsXG4gICAgICBub3RlOiB0b2sobWVzc2FnZVRva2VucyksXG4gICAgfSlcblxuICAgIGNvbnN0IHRvdGFsID0gZXN0KHN5c3RlbUZ1bGwpICsgdG9vbFRva2VucyArIHN1bW1hcnlUb2tlbnMgKyBtZXNzYWdlVG9rZW5zXG4gICAgY29uc3QgbGltaXQgPSBtb2RlbCgpLmNvbnRleHRcbiAgICByb3dzLnB1c2goe1xuICAgICAgbmFtZTogJ2VzdGltYXRlZCBuZXh0IHJlcXVlc3QnLFxuICAgICAgZGVzYzogbGltaXQgPyBgb2YgJHtmbXRUb2tlbnMobGltaXQpfSBjb250ZXh0IFx1MDBCNyB+JHtNYXRoLnJvdW5kKCh0b3RhbCAvIGxpbWl0KSAqIDEwMCl9JWAgOiAnY29udGV4dCBzaXplIHVua25vd24gZm9yIHRoaXMgbW9kZWwnLFxuICAgICAgbm90ZTogdG9rKHRvdGFsKSxcbiAgICB9KVxuICAgIGlmIChzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zICYmIHN0YXRlLmxhc3RQcm9tcHRNb2RlbCA9PT0gbW9kZWwoKS5uYW1lKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiAnbGFzdCBtZWFzdXJlZCByZXF1ZXN0JyxcbiAgICAgICAgZGVzYzogJ3Byb3ZpZGVyLXJlcG9ydGVkIGlucHV0IHRva2VucywgdGhlIG51bWJlciBiZWhpbmQgY3R4ICUnLFxuICAgICAgICBub3RlOiBgJHtzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IHRva2AsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHNldEluZm9QYW5lbCh7IHRpdGxlOiBgQ29udGV4dCBcdTAwQjcgJHttb2RlbCgpLm5hbWV9YCwgcm93cyB9KVxuICB9XG5cbiAgY29uc3QgdGhlbWVJdGVtcyA9ICgpID0+IFtcbiAgICAuLi5wYWxldHRlTGlzdCgpLFxuICAgIHsga2V5OiAnYXV0bycsIGRlc2M6IGBmb2xsb3cgdGhlIHRlcm1pbmFsIChkZXRlY3RlZDogJHtib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnfSlgIH0sXG4gIF1cblxuICBmdW5jdGlvbiBwYWxldHRlRm9yKHByZWYpIHtcbiAgICByZXR1cm4gcHJlZiA9PT0gJ2F1dG8nID8gYm9vdC5kZXRlY3RlZFRoZW1lIHx8ICdkYXJrJyA6IHByZWZcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXZpZXdQYWxldHRlKHByZWYpIHtcbiAgICBzZXRQYWxldHRlKHBhbGV0dGVGb3IocHJlZikpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBhY2NlbnQoKSwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVRoZW1lUHJlZihwcmVmKSB7XG4gICAgc2V0VGhlbWVQcmVmKHByZWYpXG4gICAgcHJldmlld1BhbGV0dGUocHJlZilcbiAgICB3cml0ZUNvbmZpZyh7IHRoZW1lOiBwcmVmID09PSAnYXV0bycgPyB1bmRlZmluZWQgOiBwcmVmIH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIGZsYXNoKHByZWYgPT09ICdhdXRvJyA/IGB0aGVtZTogYXV0byBcdTAwQjcgZm9sbG93aW5nIHRoZSB0ZXJtaW5hbCAoJHtwYWxldHRlRm9yKCdhdXRvJyl9KWAgOiBgdGhlbWU6ICR7cHJlZn1gKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjLCBhcmdzID0gJycpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3MgIT09ICdzdHJpbmcnKSBhcmdzID0gJydcbiAgICBzZXRJbnB1dCgnJylcbiAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgIGlmIChjLm5hbWUgPT09ICdyZW5hbWUnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9yZW5hbWUgPG5ldyBuYW1lPicpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgndGl0bGUnLCB7IHRleHQ6IGFyZ3MgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKGBzZXNzaW9uIHJlbmFtZWQgdG8gXCIke2FyZ3N9XCJgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb2xvcicpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgbGV0IHZhbHVlXG4gICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICh2YWx1ZXMuaW5kZXhPZihkZXJpdmVkKCkuY29sb3IpICsgMSkgJSB2YWx1ZXMubGVuZ3RoXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW25leHRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IFNFU1NJT05fQ09MT1JTW2FyZ3MudG9Mb3dlckNhc2UoKV0gfHwgKC9eI1swLTlhLWZBLUZdezZ9JC8udGVzdChhcmdzKSA/IGFyZ3MgOiBudWxsKVxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmxhc2goYHVzYWdlOiAvY29sb3IgdG8gY3ljbGUsIG9yIC9jb2xvciA8JHtuYW1lcy5qb2luKCd8Jyl9fCNoZXg+YClcbiAgICAgIH1cbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb2xvcicsIHsgdmFsdWUgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1t2YWx1ZXMuaW5kZXhPZih2YWx1ZSldXG4gICAgICBmbGFzaChgc2Vzc2lvbiBjb2xvcjogJHtuYW1lIHx8IHZhbHVlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3RoZW1lJykge1xuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gc2V0U2hvd1RoZW1lUGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGNob2ljZSA9IGFyZ3MudG9Mb3dlckNhc2UoKVxuICAgICAgY29uc3QgdmFsaWQgPSBbLi4ucGFsZXR0ZUxpc3QoKS5tYXAoKHApID0+IHAua2V5KSwgJ2F1dG8nXVxuICAgICAgaWYgKCF2YWxpZC5pbmNsdWRlcyhjaG9pY2UpKSByZXR1cm4gZmxhc2goYHRoZW1lOiAke3BhbGV0dGVOYW1lKCl9IFx1MDBCNyAvdGhlbWUgPCR7dmFsaWQuam9pbignfCcpfT5gKVxuICAgICAgYXBwbHlUaGVtZVByZWYoY2hvaWNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLnNraWxsKSB7XG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQoYy5uYW1lKVxuICAgICAgaWYgKCFib2R5KSByZXR1cm4gZmxhc2goYGNvdWxkIG5vdCBsb2FkIHNraWxsICR7Yy5uYW1lfWApXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnc2tpbGwnLCB7IG5hbWU6IGMubmFtZSwgc291cmNlOiAndXNlcicgfSkpXG4gICAgICBzZW5kKGBGb2xsb3cgdGhlc2Ugc2tpbGwgaW5zdHJ1Y3Rpb25zIG5vdy5cXG5cXG4ke2JvZHl9YClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5jb21tYW5kKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYm9vdC5jb21tYW5kcy5sb2FkKGMubmFtZSwgYXJncylcbiAgICAgIGlmICghdGV4dCkgcmV0dXJuIGZsYXNoKGBjb3VsZCBub3QgbG9hZCBjb21tYW5kICR7Yy5uYW1lfWApXG4gICAgICBzZW5kKHRleHQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2Nvbm5lY3QnKSByZXR1cm4gb3BlbkNvbm5lY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ21vZGVsJykge1xuICAgICAgaWYgKCFhcmdzKSByZXR1cm4gc2V0U2hvd01vZGVsUGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGV4YWN0ID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gYXJncylcbiAgICAgIGNvbnN0IGFkaG9jID0gIWV4YWN0ICYmIGFyZ3MuaW5jbHVkZXMoJy8nKSA/IGFkaG9jTW9kZWwoYXJncywgYm9vdC5wcm92aWRlcnMpIDogbnVsbFxuICAgICAgY29uc3Qgc2NvcmVkID0gZXhhY3QgfHwgYWRob2NcbiAgICAgICAgPyBbXVxuICAgICAgICA6IG1vZGVsc1xuICAgICAgICAgICAgLm1hcCgobSkgPT4gW2Z1enp5U2NvcmUoYXJncywgbS5uYW1lKSwgbV0pXG4gICAgICAgICAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgY29uc3QgcGljayA9IGV4YWN0IHx8IGFkaG9jIHx8IHNjb3JlZFswXT8uWzFdXG4gICAgICBpZiAoIXBpY2spIHJldHVybiBmbGFzaChgbm8gYXZhaWxhYmxlIG1vZGVsIG1hdGNoZXMgXCIke2FyZ3N9XCJgKVxuICAgICAgaWYgKHBpY2suYXZhaWxhYmxlID09PSBmYWxzZSkgcmV0dXJuIGZsYXNoKGBzZXQgJHtwaWNrLmtleUhpbnR9IGluIHlvdXIgZW52aXJvbm1lbnQgdG8gdXNlICR7cGljay5uYW1lfWApXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnbW9kZWxfc3dpdGNoJywgeyBmcm9tOiBtb2RlbCgpLm5hbWUsIHRvOiBwaWNrLm5hbWUgfSkpXG4gICAgICBzZXRNb2RlbChwaWNrKVxuICAgICAgZmxhc2goYWRob2MgPyBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfSAobm90IGluIGNhdGFsb2csIHByaWNpbmcgdW5rbm93bilgIDogYG1vZGVsIHNldCB0byAke3BpY2submFtZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdlZmZvcnQnKSB7XG4gICAgICBpZiAoIWVmZm9ydEFwcGxpZXMoKSkgcmV0dXJuIGZsYXNoKGAke21vZGVsKCkubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBlZmZvcnQgY29udHJvbGApXG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93RWZmb3J0UGFuZWwodHJ1ZSlcbiAgICAgIGNvbnN0IGxldmVsID0gYXJncy50b0xvd2VyQ2FzZSgpXG4gICAgICBpZiAobGV2ZWwgPT09ICdkZWZhdWx0JykgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobnVsbClcbiAgICAgIGlmICghRUZGT1JUX0xFVkVMUy5zb21lKChsKSA9PiBsLmtleSA9PT0gbGV2ZWwpKSByZXR1cm4gZmxhc2goJ3VzYWdlOiAvZWZmb3J0IDxkZWZhdWx0fGxvd3xtZWRpdW18aGlnaHxtYXg+JylcbiAgICAgIHJldHVybiBzZXRTZXNzaW9uRWZmb3J0KGxldmVsKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29udGV4dCcpIHJldHVybiBvcGVuQ29udGV4dFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdzaGVsbHMnKSByZXR1cm4gc2V0U2hvd1NoZWxsc1BhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3dha2V1cHMnKSByZXR1cm4gc2V0U2hvd1dha2V1cHNQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdtZW1vcnknKSB7XG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgcmV0dXJuIHNldFNob3dNZW1vcnlQYW5lbCh0cnVlKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncmVzdW1lJykge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncHJvamVjdCcpIHJldHVybiBvcGVuUHJvamVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnY3dkJykge1xuICAgICAgY29uc3Qgcm9vdE5vdGUgPSBib290LnJvb3QgIT09IGJvb3QuY3dkID8gYCBcdTAwQjcgcHJvamVjdCByb290ICR7c2hvcnRlblBhdGgoYm9vdC5yb290KX1gIDogJydcbiAgICAgIHJldHVybiBmbGFzaChgJHtib290LmRpc3BsYXlDd2R9JHtyb290Tm90ZX1gKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnc2tpbGxzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnU2tpbGxzJyxcbiAgICAgICAgcm93czogc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogcy5kZXNjcmlwdGlvbiwgbm90ZTogcy5zb3VyY2UgfSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbW1hbmRzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnQ29tbWFuZHMnLFxuICAgICAgICByb3dzOiBbXG4gICAgICAgICAgLi4uQ09NTUFORFMubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzYywgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5ib290LmNvbW1hbmRzLmxpc3QoKS5tYXAoKGNtZCkgPT4gKHsgbmFtZTogYC8ke2NtZC5uYW1lfWAsIGRlc2M6IGNtZC5kZXNjcmlwdGlvbiwgbm90ZTogY21kLnNvdXJjZSB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAndG9vbHMnKSB7XG4gICAgICBjb25zdCBzY2FuID0gYXdhaXQgc2NhblVzZXJUb29scyh7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgICBjb25zdCB7IHRvb2xzOiBidWlsdGlucyB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICAgIHRyYWNrZXIsXG4gICAgICAgIHNraWxscyxcbiAgICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IG1jcENvdW50ID0gbWNwLnRvb2xzKCkubGVuZ3RoXG4gICAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogYFRvb2xzJHttY3BDb3VudCA/IGAgXHUwMEI3IHBsdXMgJHttY3BDb3VudH0gTUNQIChzZWUgL21jcClgIDogJyd9YCxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLmJ1aWx0aW5zLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLnNwbGl0KCdcXG4nKVswXSwgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLnRvb2xzLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLCBub3RlOiBgJHt0LnNvdXJjZX0gXHUwMEI3ICR7dC5fZmlsZS5zcGxpdCgnLycpLnBvcCgpfWAgfSkpLFxuICAgICAgICAgIC4uLnNjYW4uZXJyb3JzLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5maWxlLnNwbGl0KCcvJykucG9wKCksIGRlc2M6IGUuZXJyb3IsIG5vdGU6ICdicm9rZW4nIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ25ldycpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICAgIHJlZnMuYWxsRXZlbnRzID0gW11cbiAgICAgIHJlZnMucGVyc2lzdGVkID0gMFxuICAgICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgc2V0U2VudChbXSlcbiAgICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgICAgc2V0RWZmb3J0KGRlZmF1bHRFZmZvcnQoKSlcbiAgICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnbmV3IHNlc3Npb24nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdyZXdpbmQnKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICBpZiAodXNlckVudHJpZXMoZGVyaXZlZCgpKS5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm90aGluZyB0byByZXdpbmQgeWV0JylcbiAgICAgIHNldFJld2luZFN0ZXAoJ3BpY2snKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjbGVhcicpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjbGVhcicsIHt9KSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCdjb252ZXJzYXRpb24gY2xlYXJlZCcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbXBhY3QnKSByZXR1cm4gcGVyZm9ybUNvbXBhY3Rpb24oYXJncylcbiAgICBpZiAoYy5uYW1lID09PSAnY29zdCcpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoc3RhdGUudXNhZ2VCeU1vZGVsKVxuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmxhc2goJ25vIHVzYWdlIHlldCcpXG4gICAgICBjb25zdCBjb3N0T2YgPSAoYnlNb2RlbCkgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoYnlNb2RlbCkucmVkdWNlKChzdW0sIFtuYW1lLCB1c2FnZV0pID0+IHN1bSArIGVzdGltYXRlQ29zdChmaW5kTW9kZWwobW9kZWxzLCBuYW1lKSwgdXNhZ2UpLCAwKVxuICAgICAgY29uc3Qgc3BlbnQgPSBjb3N0T2Yoc3RhdGUudXNhZ2VCeU1vZGVsKVxuICAgICAgY29uc3QgYWN0aXZlID0gY29zdE9mKHN0YXRlLnVzYWdlQWN0aXZlQnlNb2RlbClcbiAgICAgIGNvbnN0IHsgcHJvbXB0VG9rZW5zLCBjb21wbGV0aW9uVG9rZW5zIH0gPSBzdGF0ZS51c2FnZVxuICAgICAgY29uc3QgYmFzZSA9IGAkJHtzcGVudC50b0ZpeGVkKDQpfSBzcGVudCBcdTAwQjcgJHtwcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gaW4gXHUwMEI3ICR7Y29tcGxldGlvblRva2Vucy50b0xvY2FsZVN0cmluZygpfSBvdXRgXG4gICAgICBmbGFzaChzcGVudCAtIGFjdGl2ZSA+IDAuMDAwMDUgPyBgJHtiYXNlfSBcdTAwQjcgY3VycmVudCBjb252ZXJzYXRpb24gJCR7YWN0aXZlLnRvRml4ZWQoNCl9YCA6IGJhc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2V4cG9ydCcpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBqb2luKGN3ZCwgYHBpY28tZXhwb3J0LSR7RGF0ZS5ub3coKX0ubWRgKVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGUsIHRyYW5zY3JpcHRUb01hcmtkb3duKGRlcml2ZWQoKS50cmFuc2NyaXB0LCB7IHRpdGxlOiBgcGljbyBzZXNzaW9uIFx1MDBCNyAke2N3ZH1gIH0pKVxuICAgICAgZmxhc2goYGV4cG9ydGVkIHRvICR7ZmlsZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEF1dGhQcm92aWRlcnMoKSB7XG4gICAgY29uc3Qgb3BlbmFpID0gYXdhaXQgb3BlbmFpU3RhdHVzKCkuY2F0Y2goKCkgPT4gKHsgY29ubmVjdGVkOiBmYWxzZSwgZW1haWw6IG51bGwgfSkpXG4gICAgc2V0QXV0aFByb3ZpZGVycyhbXG4gICAgICB7IGlkOiAnb3BlbmFpJywgbGFiZWw6ICdPcGVuQUkgXHUwMEI3IENoYXRHUFQgLyBDb2RleCBwbGFuJywgY29ubmVjdGVkOiBvcGVuYWkuY29ubmVjdGVkLCBlbWFpbDogb3BlbmFpLmVtYWlsIH0sXG4gICAgXSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5Db25uZWN0UGFuZWwoKSB7XG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbCh0cnVlKVxuICAgIHJlZnJlc2hBdXRoUHJvdmlkZXJzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbm5lY3RQcm92aWRlcihwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlci5pZCAhPT0gJ29wZW5haScpIHJldHVyblxuICAgIHNldFNob3dDb25uZWN0UGFuZWwoZmFsc2UpXG4gICAgZmxhc2goJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbm5lY3RPcGVuQUkoKVxuICAgICAgLnRoZW4oYXN5bmMgKHsgZW1haWwgfSkgPT4ge1xuICAgICAgICBib290LnByb3ZpZGVycyA9IFsuLi5uZXcgU2V0KFsuLi5ib290LnByb3ZpZGVycywgJ2NvZGV4J10pXVxuICAgICAgICBjb25zdCBjcmVkcyA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgICAgY29uc3QgY29kZXggPSAoYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNyZWRzKSkubWFwKChtKSA9PiAoeyAuLi5tLCBhdmFpbGFibGU6IHRydWUsIGtleUhpbnQ6ICcvY29ubmVjdCcgfSkpXG4gICAgICAgIGJvb3QubW9kZWxzID0gWy4uLmJvb3QubW9kZWxzLmZpbHRlcigobSkgPT4gbS5wcm92aWRlciAhPT0gJ2NvZGV4JyksIC4uLmNvZGV4XVxuICAgICAgICByZURlcml2ZSgpXG4gICAgICAgIGZsYXNoKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfSBcdTAwQjcgJHtjb2RleC5sZW5ndGh9IGNvZGV4IG1vZGVscyB1bmxvY2tlZCBpbiAvbW9kZWxgKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiBmbGFzaChgY29ubmVjdCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTIwKX1gKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RQcm92aWRlcihwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlci5pZCAhPT0gJ29wZW5haScpIHJldHVyblxuICAgIGF3YWl0IGRpc2Nvbm5lY3RPcGVuQUkoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICBib290LnByb3ZpZGVycyA9IGJvb3QucHJvdmlkZXJzLmZpbHRlcigocCkgPT4gcCAhPT0gJ2NvZGV4JylcbiAgICBib290Lm1vZGVscyA9IGJvb3QubW9kZWxzLm1hcCgobSkgPT4gKG0ucHJvdmlkZXIgPT09ICdjb2RleCcgPyB7IC4uLm0sIGF2YWlsYWJsZTogZmFsc2UgfSA6IG0pKVxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICByZWZyZXNoQXV0aFByb3ZpZGVycygpXG4gICAgZmxhc2goJ2Rpc2Nvbm5lY3RlZCBmcm9tIENoYXRHUFQnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVmcmVzaFNlc3Npb25zKHNjb3BlSW5kZXgpIHtcbiAgICBzZXRSZXN1bWVMb2FkaW5nKHRydWUpXG4gICAgbGlzdFNlc3Npb25zKHsgc2NvcGU6IFJFU1VNRV9TQ09QRVNbc2NvcGVJbmRleF0sIHJvb3QgfSlcbiAgICAgIC50aGVuKChzZXNzaW9ucykgPT4gc2V0UmVzdW1lU2Vzc2lvbnMoc2Vzc2lvbnMuZmlsdGVyKChzKSA9PiBzLmhlYWRlci5pZCAhPT0gcmVmcy5zZXNzaW9uPy5pZCkpKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gc2V0UmVzdW1lTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBmdW5jdGlvbiBzaG9ydGVuUGF0aChwYXRoKSB7XG4gICAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoaG9tZSkgPyBwYXRoLnJlcGxhY2UoaG9tZSwgJ34nKSA6IHBhdGhcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5Qcm9qZWN0UGFuZWwoKSB7XG4gICAgc2V0U2hvd1Byb2plY3RQYW5lbCh0cnVlKVxuICAgIHNldFByb2plY3RzTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiAnZXZlcnl3aGVyZScsIHJvb3QgfSlcbiAgICAgIC50aGVuKChtZXRhcykgPT4ge1xuICAgICAgICBjb25zdCBieVJvb3QgPSBuZXcgTWFwKClcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGFzKSB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBieVJvb3QuZ2V0KG0uaGVhZGVyLnJvb3QpXG4gICAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgYnlSb290LnNldChtLmhlYWRlci5yb290LCB7XG4gICAgICAgICAgICAgIHJvb3Q6IG0uaGVhZGVyLnJvb3QsXG4gICAgICAgICAgICAgIHBhdGg6IHNob3J0ZW5QYXRoKG0uaGVhZGVyLnJvb3QpLFxuICAgICAgICAgICAgICBsYXRlc3Q6IG0sXG4gICAgICAgICAgICAgIGNvdW50OiAxLFxuICAgICAgICAgICAgICBjdXJyZW50OiBtLmhlYWRlci5yb290ID09PSBib290LnJvb3QsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRyeS5jb3VudCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFByb2plY3RzKFsuLi5ieVJvb3QudmFsdWVzKCldKVxuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFByb2plY3RzTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVQcm9qZWN0KHApIHtcbiAgICBpZiAocC5jdXJyZW50KSByZXR1cm4gZmxhc2goJ2Nhbm5vdCBkZWxldGUgdGhlIGN1cnJlbnQgcHJvamVjdCBcdTAwQjcgc3dpdGNoIGF3YXkgZmlyc3QnKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5wcm9qZWN0RGVsZXRlQXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5yb290ICE9PSBwLnJvb3QgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5wcm9qZWN0RGVsZXRlQXJtID0geyByb290OiBwLnJvb3QsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7cC5wYXRofVwiIGFuZCBpdHMgJHtwLmNvdW50fSAke3AuY291bnQgPT09IDEgPyAnc2Vzc2lvbicgOiAnc2Vzc2lvbnMnfWApXG4gICAgfVxuICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlUHJvamVjdERhdGEocC5yb290KVxuICAgICAgc2V0UHJvamVjdHMoKGxpc3QpID0+IGxpc3QuZmlsdGVyKCh4KSA9PiB4LnJvb3QgIT09IHAucm9vdCkpXG4gICAgICBmbGFzaChgZGVsZXRlZCAke3AucGF0aH0gXHUwMEI3ICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ30gcmVtb3ZlZGApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgZGVsZXRlIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzd2l0Y2hQcm9qZWN0KG1ldGEpIHtcbiAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTWNwID0gYm9vdC5tY3BcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBib290LnJlYnVpbGQobWV0YS5oZWFkZXIucm9vdClcbiAgICAgIHByZXZpb3VzTWNwLmNsb3NlQWxsKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICBwcm9jZXNzLmNoZGlyKG5leHQuY3dkKVxuICAgICAgT2JqZWN0LmFzc2lnbihib290LCBuZXh0KVxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxceDFiXTA7cGljbyBcdTAwQjcgJHtuZXh0LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1cXHgwN2ApXG4gICAgICBuZXh0Lm1jcC5jb25uZWN0QWxsKClcbiAgICAgIHNldE1jcFNlcnZlcnMobmV4dC5tY3AubGlzdCgpKVxuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgc2V0RmlsZUxpc3QoW10pXG4gICAgICBhd2FpdCByZXN1bWVTZXNzaW9uKG1ldGEpXG4gICAgICBmbGFzaChgc3dpdGNoZWQgdG8gJHtuZXh0LmRpc3BsYXlDd2R9YClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBzd2l0Y2ggZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb25NZXRhKG1ldGEpIHtcbiAgICBpZiAocmVmcy5zZXNzaW9uPy5pZCA9PT0gbWV0YS5oZWFkZXIuaWQpIHtcbiAgICAgIHJldHVybiBmbGFzaCgnY2Fubm90IGRlbGV0ZSB0aGUgYWN0aXZlIHNlc3Npb24gXHUwMEI3IC9uZXcgZmlyc3QsIHRoZW4gZGVsZXRlIGl0JylcbiAgICB9XG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbWV0YS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGVsZXRlQXJtID0geyBmaWxlOiBtZXRhLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7bWV0YS50aXRsZS5zbGljZSgwLCA1MCl9XCJgKVxuICAgIH1cbiAgICByZWZzLmRlbGV0ZUFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdW1lU2Vzc2lvbihtZXRhKSB7XG4gICAgc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgIHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpXG4gICAgaWYgKG1ldGEuaGVhZGVyLnJvb3QgIT09IGJvb3Qucm9vdCkgcmV0dXJuIHN3aXRjaFByb2plY3QobWV0YSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBoZWFkZXIsIGV2ZW50cyB9ID0gYXdhaXQgbG9hZFNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcy5zZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlOiBtZXRhLmZpbGUsIGhlYWRlciB9KVxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbLi4uZXZlbnRzXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSBldmVudHMubGVuZ3RoXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBjYXRhbG9nTWF0Y2ggPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBkZXJpdmVkKCkubW9kZWwgJiYgbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgICAgY29uc3QgcmVzdG9yZWQgPSBkZXJpdmVkKCkubW9kZWxcbiAgICAgICAgJiYgKGNhdGFsb2dNYXRjaCB8fCBhZGhvY01vZGVsKGRlcml2ZWQoKS5tb2RlbCwgYm9vdC5wcm92aWRlcnMpKVxuICAgICAgaWYgKHJlc3RvcmVkKSB7XG4gICAgICAgIHNldE1vZGVsKHJlc3RvcmVkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICAgIGlmIChkZXJpdmVkKCkubW9kZWwpIGZsYXNoKGBtb2RlbCAke2Rlcml2ZWQoKS5tb2RlbH0gdW5hdmFpbGFibGUsIHVzaW5nICR7ZGVmYXVsdE1vZGVsKCkubmFtZX1gKVxuICAgICAgfVxuICAgICAgc2V0RWZmb3J0KGRlcml2ZWQoKS5lZmZvcnQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFZmZvcnQoKSA6IGRlcml2ZWQoKS5lZmZvcnQpXG4gICAgICBzZXRTZW50KHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubWFwKChlKSA9PiAoeyB0ZXh0OiByZWNhbGxUZXh0KGUpLCBhdDogaGVhZGVyLmNyZWF0ZWRBdCB9KSkpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgc2V0Rm9sbG93KHRydWUpXG4gICAgICBmbGFzaChgcmVzdW1lZCBcdTAwQjcgJHttZXRhLnR1cm5zfSAke21ldGEudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKG1ldGEuYXQpfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgcmVzdW1lIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvcGVuSGlzdG9yeVNlYXJjaCgpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gc2VudCgpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhzZXNzaW9uKSlcbiAgICBzZXRTaG93SGlzdG9yeVBhbmVsKHRydWUpXG4gICAgc2V0SGlzdFNjb3BlKDApXG4gIH1cblxuICBmdW5jdGlvbiBkZWR1cGVQcm9tcHRzKHBvb2wpIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpXG4gICAgY29uc3Qgb3V0ID0gW11cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIFsuLi5wb29sXS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdCkpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhlbnRyeS50ZXh0KSkgY29udGludWVcbiAgICAgIHNlZW4uYWRkKGVudHJ5LnRleHQpXG4gICAgICBvdXQucHVzaChlbnRyeSlcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoSGlzdFNjb3BlKG5leHQpIHtcbiAgICBzZXRIaXN0U2NvcGUobmV4dClcbiAgICBpZiAobmV4dCA9PT0gMCkgcmV0dXJuIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2VudCgpKSlcbiAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpXG4gICAgaWYgKG5leHQgPT09IDEpIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKFsuLi5zZW50KCksIC4uLnByb2plY3RdKSlcbiAgICBjb25zdCBnbG9iYWwgPSBhd2FpdCBsb2FkR2xvYmFsUHJvbXB0cygpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0LCAuLi5nbG9iYWxdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1SZXdpbmQob3B0KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmV3aW5kVGFyZ2V0KClcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGNvbnN0IHsgZWRpdHMgfSA9IHJld2luZFN0YXRzKHN0YXRlLCB0YXJnZXQuaW5kZXgpXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2VkaXRzLmxlbmd0aH0gJHtlZGl0cy5sZW5ndGggPT09IDEgPyAnZWRpdCcgOiAnZWRpdHMnfWBcbiAgICBsZXQgcmV2ZXJ0ZWQgPSBbXVxuICAgIGxldCBza2lwcGVkID0gW11cblxuICAgIGlmIChvcHQua2V5ID09PSAnYm90aCcgfHwgb3B0LmtleSA9PT0gJ2NvZGUnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXZlcnRFZGl0cyhlZGl0cylcbiAgICAgIHJldmVydGVkID0gcmVzdWx0LnJldmVydGVkXG4gICAgICBza2lwcGVkID0gcmVzdWx0LnNraXBwZWRcbiAgICB9XG5cbiAgICBsZXQgc3VtbWFyeVRleHQgPSBudWxsXG4gICAgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgY29uc3QgdGFpbCA9IHN0YXRlLnRyYW5zY3JpcHQuc2xpY2UodGFyZ2V0LmluZGV4KVxuICAgICAgY29uc3QgdGV4dCA9IHRhaWwuZmlsdGVyKChtKSA9PiBtLnRleHQpLm1hcCgobSkgPT4gYCR7bS5raW5kfTogJHttLnRleHR9YCkuam9pbignXFxuJylcbiAgICAgIGZsYXNoKCdzdW1tYXJpemluZy4uLicpXG4gICAgICBsZXQgYXV0aCA9IG51bGxcbiAgICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgc3VtbWFyeVRleHQgPSBhd2FpdCBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsIGF1dGggfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICBmbGFzaCgnc3VtbWFyeSBtb2RlbCBjYWxsIGZhaWxlZCBcdTAwQjcga2VwdCBhIGNydWRlIGRpZ2VzdCBvZiB0aGUgcmV3b3VuZCB0dXJucycpXG4gICAgICAgIHJldHVybiB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5zbGljZSgwLCAzKS5tYXAoKG0pID0+IG0udGV4dC5zcGxpdCgvXFxzKy8pLnNsaWNlKDAsIDYpLmpvaW4oJyAnKSkuam9pbignIFx1MDBCNyAnKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IG1ha2VFdmVudCgncmV3aW5kJywgeyB0YXJnZXQ6IHRhcmdldC5ldmVudElkLCBtb2RlOiBvcHQua2V5LCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQsIHNraXBwZWQgfSlcbiAgICBwZXJzaXN0KGV2ZW50KVxuICAgIHJlZnMucmV3aW5kVW5kbyA9IHsgcmV3aW5kSWQ6IGV2ZW50LmlkLCBlZGl0czogZWRpdHMuZmlsdGVyKChlKSA9PiByZXZlcnRlZC5pbmNsdWRlcyhlLmNhbGxJZCkpIH1cbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG9wdC5rZXkgIT09ICdjb2RlJykgc2V0SW5wdXQocmVjYWxsVGV4dCh0YXJnZXQpKVxuXG4gICAgY29uc3Qgc2tpcHBlZE5vdGUgPSBza2lwcGVkLmxlbmd0aCA/IGAgXHUwMEI3IHNraXBwZWQgJHtza2lwcGVkLmxlbmd0aH0gZHJpZnRlZGAgOiAnJ1xuICAgIGlmIChvcHQua2V5ID09PSAnY29kZScpIGZsYXNoKGByZXZlcnRlZCAke2VkaXRzTGFiZWx9LCBjb252ZXJzYXRpb24ga2VwdCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ3N1bW1hcnknKSBmbGFzaChgcmV3b3VuZCBhbmQgc3VtbWFyaXplZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ2JvdGgnKSBmbGFzaChgcmV3b3VuZCwgJHtlZGl0c0xhYmVsfSByZXZlcnRlZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBmbGFzaChgcmV3b3VuZCwgZmlsZSBjaGFuZ2VzIGtlcHQgXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBzZXRSZXdpbmRTdGVwKG51bGwpXG4gICAgc2V0UmV3aW5kVGFyZ2V0KG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1bmRvUmV3aW5kKCkge1xuICAgIGNvbnN0IHVuZG8gPSByZWZzLnJld2luZFVuZG9cbiAgICBpZiAoIXVuZG8pIHJldHVyblxuICAgIGNvbnN0IHsgc2tpcHBlZCB9ID0gYXdhaXQgcmVhcHBseUVkaXRzKHVuZG8uZWRpdHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ3Jld2luZF91bmRvJywgeyByZXdpbmRJZDogdW5kby5yZXdpbmRJZCB9KSlcbiAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgcmVEZXJpdmUoKVxuICAgIGZsYXNoKHNraXBwZWQubGVuZ3RoID8gYHJld2luZCB1bmRvbmUgXHUwMEI3ICR7c2tpcHBlZC5sZW5ndGh9IGZpbGUocykgZHJpZnRlZGAgOiAncmV3aW5kIHVuZG9uZScpXG4gIH1cblxuICBmdW5jdGlvbiByZWNhbGxUZXh0KGVudHJ5KSB7XG4gICAgcmV0dXJuIGlucHV0VGV4dEZyb21Db250ZW50KGVudHJ5LmNvbnRlbnQgPz8gZW50cnkudGV4dCwge1xuICAgICAgYXR0YWNobWVudHM6IHJlZnMuYXR0YWNobWVudHMsXG4gICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBhbnlQYW5lbCA9ICgpID0+XG4gICAgc2hvd01vZGVsUGFuZWwoKSB8fCBzaG93RWZmb3J0UGFuZWwoKSB8fCBzaG93VGhlbWVQYW5lbCgpIHx8IHNob3dNZW1vcnlQYW5lbCgpIHx8IHNob3dIaXN0b3J5UGFuZWwoKSB8fCBzaG93UmVzdW1lUGFuZWwoKSB8fCBzaG93TWNwUGFuZWwoKSB8fFxuICAgIHNob3dQcm9qZWN0UGFuZWwoKSB8fCBzaG93U2hlbGxzUGFuZWwoKSB8fCBzaG93V2FrZXVwc1BhbmVsKCkgfHwgc2hvd0Nvbm5lY3RQYW5lbCgpIHx8XG4gICAgaW5mb1BhbmVsKCkgIT09IG51bGwgfHwgcmV3aW5kU3RlcCgpICE9PSBudWxsXG5cbiAgLy8gdGhlIHJpY2ggdHdvLXBhbmUgcGFuZWxzIGRpbSB0aGUgY29udmVyc2F0aW9uIGJlaGluZCB0aGVtOyBxdWljayBwaWNrZXJzXG4gIC8vIChlZmZvcnQsIHRoZW1lKSBzdGF5IGxpZ2h0d2VpZ2h0IGFuZCBsZWF2ZSBpdCBhbG9uZVxuICBjb25zdCBkaW1taW5nUGFuZWwgPSAoKSA9PiBhbnlQYW5lbCgpICYmICFzaG93RWZmb3J0UGFuZWwoKSAmJiAhc2hvd1RoZW1lUGFuZWwoKVxuXG4gIGZ1bmN0aW9uIGtpbGxTaGVsbChzaGVsbCkge1xuICAgIGlmIChzaGVsbC5zdGF0dXMgIT09ICdydW5uaW5nJykgcmV0dXJuIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBhbHJlYWR5IGV4aXRlZGApXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLnNoZWxsS2lsbEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuaWQgIT09IHNoZWxsLmlkIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuc2hlbGxLaWxsQXJtID0geyBpZDogc2hlbGwuaWQsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGtpbGwgXCIke3NoZWxsLmRlc2NyaXB0aW9uIHx8IGBzaGVsbCAke3NoZWxsLmlkfWB9XCJgKVxuICAgIH1cbiAgICByZWZzLnNoZWxsS2lsbEFybSA9IG51bGxcbiAgICBib290LnNoZWxscy5raWxsKHNoZWxsLmlkLCAndXNlcicpXG4gIH1cblxuICBjb25zdCBlZmZvcnRBcHBsaWVzID0gKCkgPT4gISFtb2RlbCgpLmVmZm9ydFxuXG4gIGZ1bmN0aW9uIHNldFNlc3Npb25FZmZvcnQobmV4dCwgeyBhc0RlZmF1bHQgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnZWZmb3J0JywgeyB0bzogbmV4dCB9KSlcbiAgICBzZXRFZmZvcnQobmV4dClcbiAgICBpZiAoYXNEZWZhdWx0KSB7XG4gICAgICBzZXREZWZhdWx0RWZmb3J0KG5leHQpXG4gICAgICB3cml0ZUNvbmZpZyh7IGRlZmF1bHRFZmZvcnQ6IG5leHQgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgfVxuICAgIGZsYXNoKGBlZmZvcnQ6ICR7bmV4dCA/PyAnZGVmYXVsdCd9JHthc0RlZmF1bHQgPyAnIFx1MDBCNyBzYXZlZCBhcyBkZWZhdWx0JyA6ICcnfWApXG4gIH1cblxuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogJ2lucHV0JyB9KVxuICBmbS5pdGVtKCdmZWVkJylcbiAgZm0uaXRlbSgnaW5wdXQnKVxuICB1c2VGb2N1c1RyYXAoYW55UGFuZWwoKSB8fCB2aWV3KCkgPT09ICdoZWxwJylcbiAgdXNlU2VsZWN0aW9uKHtcbiAgICBvbkNvcHk6ICh0ZXh0KSA9PiBmbGFzaChgY29waWVkICR7dGV4dC5sZW5ndGh9ICR7dGV4dC5sZW5ndGggPT09IDEgPyAnY2hhcmFjdGVyJyA6ICdjaGFyYWN0ZXJzJ31gKSxcbiAgfSlcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJyAmJiBidXN5KCkgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGludGVycnVwdCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ2MnKSB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgICBpZiAobm93IC0gcmVmcy5xdWl0QXQgPCAxNTAwKSB7XG4gICAgICAgIGJvb3Quc2hlbGxzLmtpbGxBbGwoKVxuICAgICAgICBtY3AuY2xvc2VBbGwoKS5jYXRjaCgoKSA9PiB7fSkuZmluYWxseSgoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZzLnF1aXRBdCA9IG5vd1xuICAgICAgICBjb25zdCBydW5uaW5nID0gYm9vdC5zaGVsbHMucnVubmluZygpXG4gICAgICAgIGZsYXNoKHJ1bm5pbmcgPyBgJHtydW5uaW5nfSAke3J1bm5pbmcgPT09IDEgPyAnc2hlbGwnIDogJ3NoZWxscyd9IHJ1bm5pbmcgXHUwMEI3IGN0cmwrYyBhZ2FpbiB0byBleGl0IGFuZCBraWxsICR7cnVubmluZyA9PT0gMSA/ICdpdCcgOiAndGhlbSd9YCA6ICdjdHJsK2MgYWdhaW4gdG8gZXhpdCcpXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ28nKSB7XG4gICAgICBzZXRWZXJib3NlKCh2KSA9PiAhdilcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIG9wZW5IaXN0b3J5U2VhcmNoKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3QnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdwJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgb3BlblByb2plY3RQYW5lbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ2InICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpZiAoIWVmZm9ydEFwcGxpZXMoKSkgZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBvcmRlciA9IFtudWxsLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgICAgIGNvbnN0IG5leHQgPSBvcmRlclsob3JkZXIuaW5kZXhPZihlZmZvcnQoKSA/PyBudWxsKSArIDEpICUgb3JkZXIubGVuZ3RoXVxuICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KG5leHQpXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dIaXN0b3J5UGFuZWwoKSkge1xuICAgICAgc3dpdGNoSGlzdFNjb3BlKChoaXN0U2NvcGUoKSArIDEpICUgSElTVE9SWV9TQ09QRVMubGVuZ3RoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93TWVtb3J5UGFuZWwoKSkge1xuICAgICAgc2V0TWVtU2NvcGUoKHMpID0+IChzICsgMSkgJSBNRU1PUllfU0NPUEVTLmxlbmd0aClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd1Jlc3VtZVBhbmVsKCkpIHtcbiAgICAgIGNvbnN0IG5leHQgPSAocmVzdW1lU2NvcGUoKSArIDEpICUgUkVTVU1FX1NDT1BFUy5sZW5ndGhcbiAgICAgIHNldFJlc3VtZVNjb3BlKG5leHQpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMobmV4dClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneicgJiYgcmVmcy5yZXdpbmRVbmRvICYmICFidXN5KCkgJiYgdmlldygpID09PSAnY2hhdCcpIHtcbiAgICAgIHVuZG9SZXdpbmQoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgZm10RWxhcHNlZCA9IChzKSA9PiAocyA8IDYwID8gYCR7c31zYCA6IGAke01hdGguZmxvb3IocyAvIDYwKX1tICR7cyAlIDYwfXNgKVxuICBjb25zdCBlbGFwc2VkID0gZm10RWxhcHNlZChidXN5KCkgPyBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gc3RhcnRlZEF0KCkpIC8gMTAwMCkpIDogMClcblxuICBjb25zdCBzbGFzaFF1ZXJ5ID0gaW5wdXQoKS5zdGFydHNXaXRoKCcvJykgPyBpbnB1dCgpLnNsaWNlKDEpIDogbnVsbFxuICBjb25zdCBzaG93Q29tbWFuZHMgPSBzbGFzaFF1ZXJ5ICE9PSBudWxsICYmICFzbGFzaFF1ZXJ5LmluY2x1ZGVzKCcgJykgJiYgIWFueVBhbmVsKClcbiAgY29uc3QgbWF0Y2hlZENvbW1hbmRzID0gIXNob3dDb21tYW5kc1xuICAgID8gW11cbiAgICA6IGNtZEN5Y2xlKClcbiAgICAgID8gY21kQ3ljbGUoKS5tYXRjaGVzXG4gICAgICA6IGFsbENvbW1hbmRzLmZpbHRlcigoYykgPT4gYy5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzbGFzaFF1ZXJ5LnRvTG93ZXJDYXNlKCkpKVxuXG4gIGNvbnN0IGF0TWF0Y2ggPSBpbnB1dCgpLm1hdGNoKC8oXnxbXFxzKF0pQChbXlxcc0BdKikkLylcbiAgY29uc3Qgc2hvd0ZpbGVzID0gYXRNYXRjaCAhPT0gbnVsbCAmJiAhc2hvd0NvbW1hbmRzICYmICFmaWxlc0Rpc21pc3NlZCgpICYmICFhbnlQYW5lbCgpXG4gIGlmIChzaG93RmlsZXMpIHtcbiAgICBsaXN0RmlsZXMoY3dkKS50aGVuKChmaWxlcykgPT4ge1xuICAgICAgaWYgKGZpbGVzICE9PSBmaWxlTGlzdCgpKSBzZXRGaWxlTGlzdChmaWxlcylcbiAgICB9KVxuICB9XG4gIGNvbnN0IG1hdGNoZWRGaWxlcyA9IHNob3dGaWxlc1xuICAgID8gZmlsZUxpc3QoKVxuICAgICAgICAubWFwKChmKSA9PiBbZnV6enlTY29yZShhdE1hdGNoWzJdLCBmKSwgZl0pXG4gICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgICAgICAgLm1hcCgoWywgZl0pID0+IGYpXG4gICAgOiBbXVxuXG4gIGZ1bmN0aW9uIHBpY2tGaWxlKGYpIHtcbiAgICBjb25zdCB2ID0gaW5wdXQoKVxuICAgIGNvbnN0IGF0ID0gdi5sYXN0SW5kZXhPZignQCcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKGYpXG4gICAgY29uc3QgZnVsbCA9IGpvaW4oYm9vdC5jd2QsIGYpXG4gICAgaWYgKG1lZGlhVHlwZSAmJiBleGlzdHNTeW5jKGZ1bGwpKSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IGZ1bGwsIG1lZGlhVHlwZSB9KVxuICAgICAgc2V0SW5wdXQodi5zbGljZSgwLCBhdCkgKyBwbGFjZWhvbGRlciArICcgJylcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5wdXQodi5zbGljZSgwLCBhdCArIDEpICsgZiArICcgJylcbiAgICB9XG4gICAgc2V0RmlsZUluZGV4KDApXG4gIH1cblxuICBjb25zdCBjb21wQ3R4ID0gY29tcGxldGluZygpID8gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZTogaW5wdXQoKSwgcmVzb2x2ZTogY29tcGxldGlvblNvdXJjZSB9KSA6IG51bGxcbiAgY29uc3Qgc2hvd0NvbXBsZXRpb24gPSAhIWNvbXBDdHggJiYgY29tcEN0eC5tYXRjaGVzLmxlbmd0aCA+IDAgJiYgIXNob3dDb21tYW5kcyAmJiAhc2hvd0ZpbGVzICYmICFhbnlQYW5lbCgpXG5cbiAgY29uc3QgcmV3aW5kRW50cmllcyA9ICgpID0+IHVzZXJFbnRyaWVzKGRlcml2ZWQoKSlcbiAgY29uc3QgcmV3aW5kT3B0aW9ucyA9ICgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmV3aW5kVGFyZ2V0KClcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIFtdXG4gICAgY29uc3QgeyBtc2dzLCBlZGl0cyB9ID0gcmV3aW5kU3RhdHMoZGVyaXZlZCgpLCB0YXJnZXQuaW5kZXgpXG4gICAgY29uc3QgZSA9IGVkaXRzLmxlbmd0aFxuICAgIGNvbnN0IGVkaXRzTGFiZWwgPSBgJHtlfSAke2UgPT09IDEgPyAnZWRpdCcgOiAnZWRpdHMnfWBcbiAgICBjb25zdCBvcHRzID0gW11cbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2JvdGgnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBhbmQgY29udmVyc2F0aW9uJywgZGVzYzogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3ICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWRgIH0pXG4gICAgb3B0cy5wdXNoKHtcbiAgICAgIGtleTogJ2NoYXQnLFxuICAgICAgbGFiZWw6IGUgPiAwID8gJ3Jlc3RvcmUgY29udmVyc2F0aW9uIG9ubHknIDogJ3Jlc3RvcmUgY29udmVyc2F0aW9uJyxcbiAgICAgIGRlc2M6IGUgPiAwID8gJ2NoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGZpbGUgY2hhbmdlcyBrZXB0JyA6IGBjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyBkcm9wcyAke21zZ3N9IGVudHJpZXNgLFxuICAgIH0pXG4gICAgaWYgKGUgPiAwKSBvcHRzLnB1c2goeyBrZXk6ICdjb2RlJywgbGFiZWw6ICdyZXN0b3JlIGNvZGUgb25seScsIGRlc2M6IGBjb252ZXJzYXRpb24ga2VwdCBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goeyBrZXk6ICdzdW1tYXJ5JywgbGFiZWw6ICdyZXdpbmQgYW5kIGtlZXAgYSBzdW1tYXJ5JywgZGVzYzogJ2Ryb3BwZWQgZW50cmllcyBjb2xsYXBzZSBpbnRvIGEgb25lLWxpbmUgbm90ZScgfSlcbiAgICByZXR1cm4gb3B0c1xuICB9KSgpXG5cbiAgY29uc3QgeyB1c2FnZUFjdGl2ZTogdXNhZ2UgfSA9IGRlcml2ZWQoKVxuICBzaGVsbHNWZXJzaW9uKClcbiAgY29uc3QgbGl2ZVNoZWxscyA9IGJvb3Quc2hlbGxzLmxpc3QoKS5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSAncnVubmluZycpXG4gIGNvbnN0IHBlbmRpbmdXYWtldXBzID0gYm9vdC53YWtldXBzLnBlbmRpbmcoKVxuXG4gIGlmICh2aWV3KCkgPT09ICdoZWxwJykge1xuICAgIHJldHVybiA8SGVscCBjb21tYW5kcz17Q09NTUFORFN9IG9uQ2xvc2U9eygpID0+IHNldFZpZXcoJ2NoYXQnKX0gLz5cbiAgfVxuXG4gIGhpZ2hsaWdodFZlcnNpb24oKVxuXG4gIGNvbnN0IHRyYW5zY3JpcHQgPSBkZXJpdmVkKCkudHJhbnNjcmlwdFxuICBjb25zdCBoaWRkZW5Db3VudCA9IE1hdGgubWF4KDAsIHRyYW5zY3JpcHQubGVuZ3RoIC0gaGlzdFdpbmRvdygpKVxuICBjb25zdCBpdGVtcyA9IFsuLi50cmFuc2NyaXB0LnNsaWNlKGhpZGRlbkNvdW50KSwgLi4ub3ZlcmxheSgpXVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAnMTAwJScgfX0+XG4gICAgICA8U2Nyb2xsQm94XG4gICAgICAgIHN0eWxlPXt7IGZsZXhHcm93OiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIH19XG4gICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdmZWVkJyl9XG4gICAgICAgIHNjcm9sbE9mZnNldD17Zm9sbG93KCkgPyAxZTkgOiBvZmZzZXQoKX1cbiAgICAgICAgb25TY3JvbGw9eyhuZXh0LCBtZXRhKSA9PiB7XG4gICAgICAgICAgc2V0Rm9sbG93KCEhbWV0YT8uYXRCb3R0b20pXG4gICAgICAgICAgLy8gYmFjayBhdCB0aGUgYm90dG9tOiBsb2FkZWQgaGlzdG9yeSBpcyBvZmYtc2NyZWVuLCBzbyByZS1oaWRpbmdcbiAgICAgICAgICAvLyBpdCBpcyBpbnZpc2libGUgYW5kIHJlc3RvcmVzIHRoZSBzbWFsbCByZW5kZXIgd2luZG93XG4gICAgICAgICAgaWYgKG1ldGE/LmF0Qm90dG9tICYmIGhpc3RXaW5kb3coKSA+IEhJU1RPUllfV0lORE9XKSBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwICYmIGhpZGRlbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgLy8ga2VlcCB0aGUgdmlldyBhbmNob3JlZDogZXN0aW1hdGUgdGhlIHJvd3MgdGhlIG5ldyBiYXRjaCBhZGRzXG4gICAgICAgICAgICAvLyBhbmQgc2Nyb2xsIHBhc3QgdGhlbSBzbyB0aGUgY3VycmVudCB0b3AgaXRlbSBzdGF5cyBpbiBwbGFjZVxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSBNYXRoLm1pbihISVNUT1JZX1dJTkRPVywgaGlkZGVuQ291bnQpXG4gICAgICAgICAgICBjb25zdCBhdmdSb3dzID0gTWF0aC5tYXgoMiwgTWF0aC5yb3VuZCgobWV0YT8ubWF4T2Zmc2V0IHx8IDApIC8gTWF0aC5tYXgoMSwgaXRlbXMubGVuZ3RoKSkpXG4gICAgICAgICAgICBzZXRIaXN0V2luZG93KCh3KSA9PiB3ICsgSElTVE9SWV9XSU5ET1cpXG4gICAgICAgICAgICBzZXRPZmZzZXQoYWRkZWQgKiBhdmdSb3dzKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldE9mZnNldChuZXh0KVxuICAgICAgICB9fVxuICAgICAgICBzY3JvbGxiYXJcbiAgICAgID5cbiAgICAgICAge2l0ZW1zLmxlbmd0aCA9PT0gMCAmJiA8QmFubmVyIHZlcnNpb249e3ZlcnNpb259IC8+fVxuICAgICAgICB7aGlkZGVuQ291bnQgPiAwICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBhZGRpbmdYOiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBpdGFsaWM6IHRydWUgfX0+e2BcdTIzMDMgJHtoaWRkZW5Db3VudC50b0xvY2FsZVN0cmluZygpfSBvbGRlciAke2hpZGRlbkNvdW50ID09PSAxID8gJ21lc3NhZ2UnIDogJ21lc3NhZ2VzJ30gXHUwMEI3IHNjcm9sbCB0byB0b3AgdG8gbG9hZGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiA8TWVzc2FnZSBrZXk9e2hpZGRlbkNvdW50ICsgaX0gaXRlbT17aXRlbX0gdmVyYm9zZT17dmVyYm9zZSgpfSAvPil9XG4gICAgICAgIHtzdHJlYW1pbmcoKSAhPT0gbnVsbCAmJiBzdHJlYW1pbmcoKSAhPT0gJycgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlIGtleT1cInN0cmVhbWluZ1wiIGl0ZW09e3sga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IGAke3N0cmVhbWluZygpfVx1MjU4QmAgfX0gLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU2Nyb2xsQm94PlxuXG4gICAgICB7cXVldWVkKCkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3F1ZXVlZCgpLm1hcCgocSwgaSkgPT4gKFxuICAgICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTIwM0EgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PntxLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIHtpID09PSAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgZGltOiB0cnVlIH19PnsnICBwZW5kaW5nIFx1MDBCNyBcdTIxOTEgdG8gZWRpdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSwgYm9sZDogdHJ1ZSB9fT57J1x1Mjc2Rid9PC90ZXh0PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICB7ZGVyaXZlZCgpLnRpdGxlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB0b3A6IDAsIHJpZ2h0OiAwIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke2Rlcml2ZWQoKS50aXRsZX0gYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIDxUZXh0QXJlYVxuICAgICAgICAgIGNvbG9yPXtGR31cbiAgICAgICAgICB2YWx1ZT17aW5wdXQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh2LCB7XG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldElucHV0KGNvbnZlcnRlZC50ZXh0KVxuICAgICAgICAgICAgc2V0Q21kSW5kZXgoMClcbiAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICBzZXRGaWxlSW5kZXgoMClcbiAgICAgICAgICAgIHNldEhpc3RJZHgoLTEpXG4gICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnVzeSgpKSBpbnRlcnJ1cHQoKVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgIHNldEZpbGVzRGlzbWlzc2VkKHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblN1Ym1pdD17c2VuZH1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSAmJiBzaG93RmlsZXMgJiYgbWF0Y2hlZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcGlja0ZpbGUobWF0Y2hlZEZpbGVzW01hdGgubWluKGZpbGVJbmRleCgpLCBtYXRjaGVkRmlsZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0NvbW1hbmRzICYmIG1hdGNoZWRDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN5Y2xlID0gY21kQ3ljbGUoKVxuICAgICAgICAgICAgICBpZiAoIWN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihjbWRJbmRleCgpLCBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBzZXRDbWRDeWNsZSh7IG1hdGNoZXM6IG1hdGNoZWRDb21tYW5kcyB9KVxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KHN0YXJ0KVxuICAgICAgICAgICAgICAgIHNldElucHV0KCcvJyArIG1hdGNoZWRDb21tYW5kc1tzdGFydF0ubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gKGNtZEluZGV4KCkgKyAxKSAlIGN5Y2xlLm1hdGNoZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0Q21kSW5kZXgobmV4dClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBjeWNsZS5tYXRjaGVzW25leHRdLm5hbWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3Bhc3RlJyAmJiBlLnRleHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSBleHRyYWN0SW1hZ2VQYXRocyhlLnRleHQpXG4gICAgICAgICAgICAgIGlmIChwYXRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGgsIG1lZGlhVHlwZTogbWVkaWFUeXBlRm9yKHBhdGgpIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0gZS5jdXJzb3IgPz8gZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICBzZXRJbnB1dChlLnZhbHVlLnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVycy5qb2luKCcgJykgKyBlLnZhbHVlLnNsaWNlKGF0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnYmFja3NwYWNlJyAmJiBlLmN1cnNvciA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBlLnZhbHVlLnNsaWNlKDAsIGUuY3Vyc29yKS5tYXRjaCgvXFxbSW1hZ2UgI1xcZCtcXF0kLylcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5hdHRhY2htZW50cy5kZWxldGUobWF0Y2hbMF0pXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvciAtIG1hdGNoWzBdLmxlbmd0aCkgKyBlLnZhbHVlLnNsaWNlKGUuY3Vyc29yKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSkge1xuICAgICAgICAgICAgICBjb25zdCBjdHggPSBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBlLnZhbHVlLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pXG4gICAgICAgICAgICAgIGlmICghY3R4KSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgaWYgKCFjb21wbGV0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKHRydWUpXG4gICAgICAgICAgICAgICAgc2V0Q29tcEluZGV4KDApXG4gICAgICAgICAgICAgICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgubWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYWNjZXB0Q29tcGxldGlvbihlLnZhbHVlLCBjdHgsIGN0eC5tYXRjaGVzW01hdGgubWluKGNvbXBJbmRleCgpLCBjdHgubWF0Y2hlcy5sZW5ndGggLSAxKV0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmN0cmwgfHwgZS5tZXRhIHx8IHNob3dDb21tYW5kcyB8fCBzaG93RmlsZXMpIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndXAnICYmIGUudmFsdWUgPT09ICcnICYmIHF1ZXVlZCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2V0SW5wdXQocXVldWVkKCkuam9pbignXFxuJykpXG4gICAgICAgICAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyb3dzaW5nID0gaGlzdElkeCgpID49IDBcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiAoYnJvd3NpbmcgfHwgZS52YWx1ZSA9PT0gJycpICYmIGhpc3RJZHgoKSA8IHNlbnQoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgKyAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQoc2VudCgpW3NlbnQoKS5sZW5ndGggLSAxIC0gbl0udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2Rvd24nICYmIGJyb3dzaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgLSAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQobiA8IDAgPyAnJyA6IHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9fVxuICAgICAgICAgIHN1Ym1pdE9uRW50ZXJcbiAgICAgICAgICBjbGVhck9uU3VibWl0XG4gICAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCl9XG4gICAgICAgICAgbWF4SGVpZ2h0PXs4fVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZW50ZXIgdG8gc2VuZCBcdTAwQjcgLyBjb21tYW5kcyBcdTAwQjcgQCBmaWxlcyBcdTAwQjcgdGFiIHRvIHNjcm9sbFwiXG4gICAgICAgICAgY3Vyc29yPXt7IGJsaW5rOiB0cnVlLCBiZzogYWNjZW50KCksIGNvbG9yOiAnYmxhY2snIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cblxuICAgICAge3Nob3dDb21tYW5kcyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge21hdGNoZWRDb21tYW5kcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgY29tbWFuZHM8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRDb21tYW5kc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2NtZEluZGV4KCl9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDbWRJbmRleH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyhjKSA9PiBydW5Db21tYW5kKGMpfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tbWFuZHN9XG4gICAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KGMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntgLyR7Yy5uYW1lfWAucGFkRW5kKG1hdGNoZWRDb21tYW5kcy5yZWR1Y2UoKG0sIHgpID0+IE1hdGgubWF4KG0sIHgubmFtZS5sZW5ndGggKyAzKSwgMTIpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gJyNjYmQ1ZTEnIDogRkFJTlQgfX0+e2MuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkRmlsZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZmlsZUluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0RmlsZUluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9e3BpY2tGaWxlfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZpbGVzRGlzbWlzc2VkKHRydWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0ZpbGVzfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhmLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntmfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb21wbGV0aW9uICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2NvbXBDdHgubWF0Y2hlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjb21wSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDb21wSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17KGNhbmRpZGF0ZSkgPT4gYWNjZXB0Q29tcGxldGlvbihpbnB1dCgpLCBjb21wQ3R4LCBjYW5kaWRhdGUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e2Rpc21pc3NDb21wbGV0aW9ufVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbXBsZXRpb259XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGNhbmRpZGF0ZSwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Y2FuZGlkYXRlfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dNb2RlbFBhbmVsKCkgJiYgKFxuICAgICAgICA8TW9kZWxQYW5lbFxuICAgICAgICAgIG1vZGVscz17bW9kZWxzfVxuICAgICAgICAgIGN1cnJlbnQ9e21vZGVsKCkubmFtZX1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17ZGVmYXVsdE1vZGVsKCkubmFtZX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TW9kZWxQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldERlZmF1bHRNb2RlbChtKVxuICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0TW9kZWw6IG0ubmFtZSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX0gXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHRgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dFZmZvcnRQYW5lbCgpICYmIChcbiAgICAgICAgPEVmZm9ydFBhbmVsXG4gICAgICAgICAgbGV2ZWxzPXtFRkZPUlRfTEVWRUxTfVxuICAgICAgICAgIGN1cnJlbnQ9e2VmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZGVmYXVsdExldmVsPXtkZWZhdWx0RWZmb3J0KCkgPz8gbnVsbH1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93RWZmb3J0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KGwpID0+IHtcbiAgICAgICAgICAgIHNldFNlc3Npb25FZmZvcnQobC5rZXksIHsgYXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dUaGVtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8VGhlbWVQYW5lbFxuICAgICAgICAgIHRoZW1lcz17dGhlbWVJdGVtcygpfVxuICAgICAgICAgIHByZWY9e3RoZW1lUHJlZigpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dUaGVtZVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBhcHBseVRoZW1lUHJlZih0LmtleSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUHJldmlldz17KHQpID0+IHByZXZpZXdQYWxldHRlKHQua2V5KX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93VGhlbWVQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIHByZXZpZXdQYWxldHRlKHRoZW1lUHJlZigpKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0hpc3RvcnlQYW5lbCgpICYmIChcbiAgICAgICAgPEhpc3RvcnlQYW5lbFxuICAgICAgICAgIHByb21wdHM9e2hpc3RQcm9tcHRzKCl9XG4gICAgICAgICAgc2NvcGVzPXtISVNUT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtoaXN0U2NvcGUoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93SGlzdG9yeVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodGV4dCkgPT4geyBzZXRJbnB1dCh0ZXh0KTsgc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSkgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SGlzdG9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UmVzdW1lUGFuZWwoKSAmJiAoXG4gICAgICAgIDxSZXN1bWVQYW5lbFxuICAgICAgICAgIHNlc3Npb25zPXtyZXN1bWVTZXNzaW9ucygpfVxuICAgICAgICAgIHNjb3Blcz17UkVTVU1FX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtyZXN1bWVTY29wZSgpfVxuICAgICAgICAgIGxvYWRpbmc9e3Jlc3VtZUxvYWRpbmcoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93UmVzdW1lUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9e3Jlc3VtZVNlc3Npb259XG4gICAgICAgICAgb25EZWxldGU9e2RlbGV0ZVNlc3Npb25NZXRhfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dSZXN1bWVQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01lbW9yeVBhbmVsKCkgJiYgKFxuICAgICAgICA8TWVtb3J5UGFuZWxcbiAgICAgICAgICBtZW1vcmllcz17bWVtb3J5TGlzdCgpLmZpbHRlcigobSkgPT4gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSA9PT0gJ2FsbCcgfHwgbS5zY29wZSA9PT0gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSl9XG4gICAgICAgICAgc2NvcGVzPXtNRU1PUllfU0NPUEVTfVxuICAgICAgICAgIHNjb3BlSW5kZXg9e21lbVNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01lbW9yeVBhbmVsKCl9XG4gICAgICAgICAgb25Gb3JnZXQ9e2ZvcmdldE1lbW9yeX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TWVtb3J5UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2luZm9QYW5lbCgpICYmIChcbiAgICAgICAgPEluZm9MaXN0UGFuZWxcbiAgICAgICAgICB0aXRsZT17aW5mb1BhbmVsKCkudGl0bGV9XG4gICAgICAgICAgcm93cz17aW5mb1BhbmVsKCkucm93c31cbiAgICAgICAgICBmb2N1c2VkPXtpbmZvUGFuZWwoKSAhPT0gbnVsbH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJbmZvUGFuZWwobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Byb2plY3RQYW5lbCgpICYmIChcbiAgICAgICAgPFByb2plY3RQYW5lbFxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0cygpfVxuICAgICAgICAgIGxvYWRpbmc9e3Byb2plY3RzTG9hZGluZygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dQcm9qZWN0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhwKSA9PiByZXN1bWVTZXNzaW9uKHAubGF0ZXN0KX1cbiAgICAgICAgICBvbkRlbGV0ZT17ZGVsZXRlUHJvamVjdH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxTaGVsbHNQYW5lbFxuICAgICAgICAgIHZlcnNpb249e3NoZWxsc1ZlcnNpb24oKX1cbiAgICAgICAgICBzaGVsbHM9e2Jvb3Quc2hlbGxzLmxpc3QoKX1cbiAgICAgICAgICByZWFkT3V0cHV0PXsoaWQpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBib290LnNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogMjAwMCB9KVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93U2hlbGxzUGFuZWwoKX1cbiAgICAgICAgICBvbktpbGw9e2tpbGxTaGVsbH1cbiAgICAgICAgICBvbkRpc21pc3M9eyhzKSA9PiBib290LnNoZWxscy5kaXNtaXNzKHMuaWQpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dTaGVsbHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgYm9vdC53YWtldXBzLmNhbmNlbCh3LmlkKVxuICAgICAgICAgICAgZmxhc2goYGNhbmNlbGxlZCB3YWtlLXVwICR7dy5pZH1gKVxuICAgICAgICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBjYW5jZWxsZWQgc2NoZWR1bGVkIHdha2UtdXAgJHt3LmlkfSAobm90ZSB3YXM6ICR7dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXNjaGVkdWxlIGl0IHVubGVzcyBhc2tlZC5gLFxuICAgICAgICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93V2FrZXVwc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWNwUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNY3BQYW5lbFxuICAgICAgICAgIHNlcnZlcnM9e21jcFNlcnZlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWNwUGFuZWwoKX1cbiAgICAgICAgICBvblRvZ2dsZT17KG5hbWUpID0+IG1jcC50b2dnbGUobmFtZSl9XG4gICAgICAgICAgb25SZWNvbm5lY3Q9eyhuYW1lKSA9PiBtY3AucmVjb25uZWN0KG5hbWUpfVxuICAgICAgICAgIG9uUmVtb3ZlPXsobmFtZSkgPT4gbWNwLnJlbW92ZShuYW1lKX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkludmFsaWQ9e2ZsYXNofVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNY3BQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAncGljaycgJiYgKFxuICAgICAgICA8UmV3aW5kUGlja1BhbmVsXG4gICAgICAgICAgZW50cmllcz17Wy4uLnJld2luZEVudHJpZXMoKV0ucmV2ZXJzZSgpfVxuICAgICAgICAgIHN0YXRzPXsoaW5kZXgpID0+IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgaW5kZXgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snfVxuICAgICAgICAgIG9uUGljaz17KGVudHJ5KSA9PiB7IHNldFJld2luZFRhcmdldChlbnRyeSk7IHNldFJld2luZFN0ZXAoJ2FjdGlvbicpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmV3aW5kU3RlcChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nICYmIHJld2luZFRhcmdldCgpICYmIChcbiAgICAgICAgPFJld2luZEFjdGlvblBhbmVsXG4gICAgICAgICAgdGFyZ2V0PXtyZXdpbmRUYXJnZXQoKX1cbiAgICAgICAgICBvcHRpb25zPXtyZXdpbmRPcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbid9XG4gICAgICAgICAgb25TdWJtaXQ9e3BlcmZvcm1SZXdpbmR9XG4gICAgICAgICAgb25CYWNrPXsoKSA9PiBzZXRSZXdpbmRTdGVwKCdwaWNrJyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7bGl2ZVNoZWxscy5sZW5ndGggPiAwICYmICFzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge2xpdmVTaGVsbHMuc2xpY2UoMCwgU0hFTExfU1RSSVBfTUFYKS5tYXAoKHMpID0+IChcbiAgICAgICAgICAgIDxib3gga2V5PXtzLmlkfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnsnXHUyNjk5ICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Ake3MuaWR9IFx1MDBCNyBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkdfU09GVCB9fT57cy5kZXNjcmlwdGlvbiB8fCBzLmNvbW1hbmQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgICAke0RhdGUubm93KCkgLSBzLnN0YXJ0ZWRBdCA8IDYwMDAwID8gJzwxbScgOiB0aW1lQWdvKHMuc3RhcnRlZEF0KS5yZXBsYWNlKCcgYWdvJywgJycpfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAge2AgICR7bGl2ZVNoZWxscy5sZW5ndGggPiBTSEVMTF9TVFJJUF9NQVggPyBgKyR7bGl2ZVNoZWxscy5sZW5ndGggLSBTSEVMTF9TVFJJUF9NQVh9IG1vcmUgXHUwMEI3IGAgOiAnJ30vc2hlbGxzYH1cbiAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtidXN5KClcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDxTaGltbWVyIGNvbG9yPXthY2NlbnQoKX0gaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfSByZXZlcnNlPlxuICAgICAgICAgICAgICAgIHtjb21wYWN0aW5nKClcbiAgICAgICAgICAgICAgICAgID8gY29tcGFjdFN0YXR1cygpPy5waGFzZSA9PT0gJ3dyaXRpbmcnID8gYENvbXBhY3RpbmcgXHUwMEI3IHdyaXRpbmcgJHtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbn0vOGAgOiAnQ29tcGFjdGluZyBcdTAwQjcgYW5hbHl6aW5nJ1xuICAgICAgICAgICAgICAgICAgOiB0aGlua2luZ05vdygpID8gJ1RoaW5raW5nJyA6ICdSZXNwb25kaW5nJ31cbiAgICAgICAgICAgICAgPC9TaGltbWVyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgKCR7ZWxhcHNlZH0ke2NvbXBhY3RTdGF0dXMoKSA/IGAgXHUwMEI3IFx1MjE5MyAke2ZtdFRva2VucyhNYXRoLnJvdW5kKGNvbXBhY3RTdGF0dXMoKS5jaGFycyAvIDQpKX0gdG9rZW5zYCA6ICcnfSkgXHUwMEI3IGVzYyB0byBpbnRlcnJ1cHRgfTwvdGV4dD5cbiAgICAgICAgICAgICAge2NvbXBhY3RTdGF0dXMoKT8ucGhhc2UgPT09ICd3cml0aW5nJyAmJiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWFyZ2luTGVmdDogMSwgd2lkdGg6IDE2IH19PlxuICAgICAgICAgICAgICAgICAgPFByb2dyZXNzQmFyIHZhcmlhbnQ9XCJ0aGluXCIgdmFsdWU9e2NvbXBhY3RTdGF0dXMoKS5zZWN0aW9uIC8gOH0gd2lkdGg9ezE2fSBwZXJjZW50YWdlPXtmYWxzZX0gY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Ym9vdC5kaXNwbGF5Q3dkfTwvdGV4dD59XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3Byb2Nlc3MuZW52LlBJQ09fUEVSRiAmJiAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gdXNlRnJhbWVTdGF0cygpXG4gICAgICAgICAgcmV0dXJuIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMSAkeyhzdGF0cy5yZW5kZXJNcyA/PyAwKS50b0ZpeGVkKDEpfW1zIFx1MDBCNyAke3N0YXRzLmZwc31mcHMgXHUwMEI3ICR7ZGVyaXZlZCgpLnRyYW5zY3JpcHQubGVuZ3RofSBpdGVtc2B9PC90ZXh0PlxuICAgICAgICB9KSgpfVxuICAgICAgICB7cGVuZGluZ1dha2V1cHMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMCAke3BlbmRpbmdXYWtldXBzfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnttb2RlbCgpLm5hbWV9PC90ZXh0PlxuICAgICAgICB7ZWZmb3J0QXBwbGllcygpICYmIGVmZm9ydCgpICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MDBCNyAke2VmZm9ydCgpfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHt1c2FnZS5wcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gaW5gfTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MzwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHt1c2FnZS5jb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGB9PC90ZXh0PlxuICAgICAgICB7dXNhZ2UudGhvdWdodFRva2VucyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyNzI2ICR7dXNhZ2UudGhvdWdodFRva2Vucy50b0xvY2FsZVN0cmluZygpfSB0aGlua2B9PC90ZXh0Pn1cbiAgICAgICAge21vZGVsKCkuY29udGV4dCA+IDAgJiYgZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgPT09IG1vZGVsKCkubmFtZSAmJiAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBjdCA9IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgoZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgLyBtb2RlbCgpLmNvbnRleHQpICogMTAwKSlcbiAgICAgICAgICByZXR1cm4gPHRleHQgc3R5bGU9e3sgY29sb3I6IHBjdCA+PSA4MCA/IFJFRCA6IE1VVEVEIH19PntgY3R4ICR7cGN0fSVgfTwvdGV4dD5cbiAgICAgICAgfSkoKX1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyLCBwcm9qZWN0SGlzdG9yeUZpbGUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IE1BWF9QUk9NUFRTX1BFUl9TQ09QRSA9IDEwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGVuZFByb21wdChyb290LCB0ZXh0KSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCBhcHBlbmRGaWxlKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgSlNPTi5zdHJpbmdpZnkoeyB0ZXh0LCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxufVxuXG5mdW5jdGlvbiBwYXJzZVByb21wdExpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGxpbmUudHJpbSgpID8gSlNPTi5wYXJzZShsaW5lKSA6IG51bGxcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUHJvbXB0cyhmaWxlLCBzY29wZSkge1xuICB0cnkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBwYXJzZVByb21wdExpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgIHJldHVybiBlbnRyaWVzXG4gICAgICAuZmlsdGVyKChlKSA9PiB0eXBlb2YgZS50ZXh0ID09PSAnc3RyaW5nJyAmJiBlLnRleHQudHJpbSgpKVxuICAgICAgLnNsaWNlKC1NQVhfUFJPTVBUU19QRVJfU0NPUEUpXG4gICAgICAubWFwKChlKSA9PiAoeyB0ZXh0OiBlLnRleHQsIGF0OiBlLmF0IHx8IDAsIHNjb3BlIH0pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpIHtcbiAgcmV0dXJuIHJlYWRQcm9tcHRzKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgJ3Byb2plY3QnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbFByb21wdHMoKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyID0gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnKVxuICBsZXQgcHJvamVjdHMgPSBbXVxuICB0cnkge1xuICAgIHByb2plY3RzID0gYXdhaXQgcmVhZGRpcihwcm9qZWN0c0RpcilcbiAgfSBjYXRjaCB7fVxuICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm9qZWN0cy5tYXAoKHApID0+IHJlYWRQcm9tcHRzKGpvaW4ocHJvamVjdHNEaXIsIHAsICdoaXN0b3J5Lmpzb25sJyksICdldmVyeXdoZXJlJykpLFxuICApXG4gIHJldHVybiBuZXN0ZWQuZmxhdCgpLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KS5zbGljZSgwLCBNQVhfUFJPTVBUU19QRVJfU0NPUEUpXG59XG4iLCAiaW1wb3J0IHsgcmVhZGRpciwgc3RhdCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsVG9vbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICd0b29scycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0VG9vbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAndG9vbHMnKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZSh0b29sLCBmaWxlKSB7XG4gIGlmICghdG9vbCB8fCB0eXBlb2YgdG9vbCAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgdG9vbCBvYmplY3QnKVxuICBpZiAodHlwZW9mIHRvb2wubmFtZSAhPT0gJ3N0cmluZycgfHwgIXRvb2wubmFtZSkgdGhyb3cgbmV3IEVycm9yKCd0b29sLm5hbWUgbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5kZXNjcmlwdGlvbiAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcigndG9vbC5kZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nJylcbiAgaWYgKHR5cGVvZiB0b29sLmV4ZWN1dGUgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcigndG9vbC5leGVjdXRlIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIGlmICghdG9vbC5zY2hlbWEgfHwgdHlwZW9mIHRvb2wuc2NoZW1hICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCd0b29sLnNjaGVtYSBtdXN0IGJlIGFuIG9iamVjdCcpXG4gIHJldHVybiB7IC4uLnRvb2wsIF9maWxlOiBmaWxlIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZFRvb2woZmlsZSwgY29udGV4dCkge1xuICBjb25zdCB7IG10aW1lTXMgfSA9IGF3YWl0IHN0YXQoZmlsZSlcbiAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KGAke3BhdGhUb0ZpbGVVUkwoZmlsZSkuaHJlZn0/dj0ke210aW1lTXN9YClcbiAgY29uc3QgZXhwb3J0ZWQgPSBtb2R1bGUuZGVmYXVsdFxuICBjb25zdCB0b29sID0gdHlwZW9mIGV4cG9ydGVkID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZXhwb3J0ZWQoY29udGV4dCkgOiBleHBvcnRlZFxuICByZXR1cm4gdmFsaWRhdGUodG9vbCwgZmlsZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIGNvbnRleHQsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9XG4gIH1cbiAgY29uc3QgdG9vbHMgPSBbXVxuICBjb25zdCBlcnJvcnMgPSBbXVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIW5hbWUuZW5kc1dpdGgoJy5qcycpICYmICFuYW1lLmVuZHNXaXRoKCcubWpzJykpIGNvbnRpbnVlXG4gICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBuYW1lKVxuICAgIHRyeSB7XG4gICAgICB0b29scy5wdXNoKHsgLi4uKGF3YWl0IGxvYWRUb29sKGZpbGUsIGNvbnRleHQpKSwgc291cmNlIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpbGUsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAyMDApIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRvb2xzLCBlcnJvcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB7IGN3ZCwgcm9vdCB9XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsVG9vbHNEaXIoKSwgY29udGV4dCwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RUb29sc0Rpcihyb290KSwgY29udGV4dCwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIFsuLi5nbG9iYWwudG9vbHMsIC4uLnByb2plY3QudG9vbHNdKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgcmV0dXJuIHsgdG9vbHM6IFsuLi5ieU5hbWUudmFsdWVzKCldLCBlcnJvcnM6IFsuLi5nbG9iYWwuZXJyb3JzLCAuLi5wcm9qZWN0LmVycm9yc10gfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudChwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGgsICd1dGYtOCcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVydEVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJldmVydGVkID0gW11cbiAgY29uc3Qgc2tpcHBlZCA9IFtdXG4gIGZvciAoY29uc3QgZWRpdCBvZiBbLi4uZWRpdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHsgcGF0aCwgYmVmb3JlLCBhZnRlciB9ID0gZWRpdC5yZXZlcnRcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVhZEN1cnJlbnQocGF0aClcbiAgICBpZiAoY3VycmVudCA9PT0gYWZ0ZXIpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBiZWZvcmUsICd1dGYtOCcpXG4gICAgICByZXZlcnRlZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgZWRpdCcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmV2ZXJ0ZWQsIHNraXBwZWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhcHBseUVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJlYXBwbGllZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgZWRpdHMpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGJlZm9yZSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgcmVhcHBsaWVkLnB1c2goZWRpdC5jYWxsSWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IHBhdGgsIGNhbGxJZDogZWRpdC5jYWxsSWQsIHJlYXNvbjogJ2ZpbGUgY2hhbmdlZCBzaW5jZSByZXZlcnQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlYXBwbGllZCwgc2tpcHBlZCB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zY3JpcHRUb01hcmtkb3duKHRyYW5zY3JpcHQsIHsgdGl0bGUgPSAncGljbyBzZXNzaW9uJyB9ID0ge30pIHtcbiAgY29uc3QgcGFydHMgPSBbYCMgJHt0aXRsZX1gLCAnJ11cbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyYW5zY3JpcHQpIHtcbiAgICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICAgIHBhcnRzLnB1c2goJyMjIFlvdScsICcnLCBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgcGFydHMucHVzaChpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fVxcblxcbiooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gaXRlbS5kaWZmID8gYCAoKyR7aXRlbS5kaWZmLmFkZGl0aW9uc30gLSR7aXRlbS5kaWZmLmRlbGV0aW9uc30pYCA6ICcnXG4gICAgICBwYXJ0cy5wdXNoKGA+ICR7aXRlbS5zdGF0dXMgPT09ICdyZXZlcnRlZCcgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfSBcXGAke2l0ZW0ubmFtZX1cXGAgJHtpdGVtLnRpdGxlfSR7bGFiZWx9YCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgcGFydHMucHVzaChgPiBzdW1tYXJ5OiAke2l0ZW0udGV4dH1gLCAnJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlLCByZXNvbHZlIH0pIHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgbSA9IHZhbHVlLm1hdGNoKC9eXFwvKFxcUyspICguKikkLylcbiAgaWYgKCFtKSByZXR1cm4gbnVsbFxuICBjb25zdCBzb3VyY2UgPSByZXNvbHZlKG1bMV0udG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFzb3VyY2UgfHwgc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdG9rZW5zID0gbVsyXS5zcGxpdCgnICcpXG4gIGNvbnN0IHBhcnRpYWwgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1hdGNoZXMgPSBzb3VyY2VcbiAgICAubWFwKChzKSA9PiBbZnV6enlTY29yZShwYXJ0aWFsLCBzKSwgc10pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgLm1hcCgoWywgc10pID0+IHMpXG4gIHJldHVybiB7IHBhcnRpYWwsIG1hdGNoZXMsIHN0YXJ0OiB2YWx1ZS5sZW5ndGggLSBwYXJ0aWFsLmxlbmd0aCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgwLCBjdHguc3RhcnQpICsgY2FuZGlkYXRlICsgJyAnXG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfRklMRVMgPSA1MDAwXG5jb25zdCBUVEwgPSA1MDAwXG5cbmxldCBjYWNoZWQgPSB7IGF0OiAwLCBjd2Q6IG51bGwsIGZpbGVzOiBbXSB9XG5cbmZ1bmN0aW9uIHJpcGdyZXBGaWxlcyhjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCAnISoqLy5naXQvKionLCAnLS1zb3J0cj1tb2RpZmllZCddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIHJlc29sdmUoZXJyICYmICFzdGRvdXQgPyBudWxsIDogc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RGaWxlcyhjd2QpIHtcbiAgaWYgKGNhY2hlZC5jd2QgPT09IGN3ZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gY2FjaGVkLmZpbGVzXG4gIGxldCBmaWxlcyA9IGF3YWl0IHJpcGdyZXBGaWxlcyhjd2QpXG4gIGlmICghZmlsZXMpIHtcbiAgICBmaWxlcyA9IGF3YWl0IGZnKCcqKi8qJywge1xuICAgICAgY3dkLFxuICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgZG90OiB0cnVlLFxuICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgfSkuY2F0Y2goKCkgPT4gW10pXG4gIH1cbiAgY2FjaGVkID0geyBhdDogRGF0ZS5ub3coKSwgY3dkLCBmaWxlczogZmlsZXMuc2xpY2UoMCwgTUFYX0ZJTEVTKSB9XG4gIHJldHVybiBjYWNoZWQuZmlsZXNcbn1cbiIsICJpbXBvcnQgeyBjb2RlVG9BTlNJIH0gZnJvbSAnQHNoaWtpanMvY2xpJ1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgc2hpa2lUaGVtZSB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IExBTkdTID0ge1xuICBqczogJ2pzJywgbWpzOiAnanMnLCBjanM6ICdqcycsIGpzeDogJ2pzeCcsIHRzOiAndHMnLCB0c3g6ICd0c3gnLFxuICBqc29uOiAnanNvbicsIGpzb25sOiAnanNvbicsIG1kOiAnbWQnLCBweTogJ3B5dGhvbicsIHJiOiAncnVieScsIGdvOiAnZ28nLFxuICByczogJ3J1c3QnLCBjOiAnYycsIGg6ICdjJywgY3BwOiAnY3BwJywgamF2YTogJ2phdmEnLCBjc3M6ICdjc3MnLFxuICBodG1sOiAnaHRtbCcsIHZ1ZTogJ3Z1ZScsIHNoOiAnYmFzaCcsIGJhc2g6ICdiYXNoJywgenNoOiAnYmFzaCcsXG4gIHltbDogJ3lhbWwnLCB5YW1sOiAneWFtbCcsIHRvbWw6ICd0b21sJywgc3FsOiAnc3FsJywgc3ZlbHRlOiAnc3ZlbHRlJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhbmdGb3JQYXRoKHBhdGgpIHtcbiAgY29uc3QgZXh0ID0gU3RyaW5nKHBhdGgpLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gTEFOR1NbZXh0XSB8fCAndHh0J1xufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXAoKVxuY29uc3QgcGVuZGluZyA9IG5ldyBTZXQoKVxuY29uc3QgZmFpbGVkID0gbmV3IFNldCgpXG5jb25zdCBbdmVyc2lvbiwgc2V0VmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcblxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodFZlcnNpb24gPSB2ZXJzaW9uXG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQoY29kZSwgbGFuZykge1xuICBjb25zdCBzYWZlTGFuZyA9IGxhbmcgJiYgIWZhaWxlZC5oYXMobGFuZykgPyBsYW5nIDogJ3R4dCdcbiAgY29uc3QgdGhlbWUgPSBzaGlraVRoZW1lKClcbiAgcmV0dXJuIGNvZGVcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9XFxuJHtzYWZlTGFuZ31cXG4ke2xpbmV9YFxuICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSByZXR1cm4gY2FjaGUuZ2V0KGtleSlcbiAgICAgIHdhcm0obGluZSwgc2FmZUxhbmcsIHRoZW1lLCBrZXkpXG4gICAgICByZXR1cm4gbGluZVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHdhcm0obGluZSwgbGFuZywgdGhlbWUsIGtleSkge1xuICBpZiAocGVuZGluZy5oYXMoa2V5KSkgcmV0dXJuXG4gIHBlbmRpbmcuYWRkKGtleSlcbiAgY29kZVRvQU5TSShsaW5lLCBsYW5nLCB0aGVtZSlcbiAgICAudGhlbigoYW5zaSkgPT4gY2FjaGUuc2V0KGtleSwgYW5zaS5yZXBsYWNlKC9cXG4kLywgJycpKSlcbiAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgZmFpbGVkLmFkZChsYW5nKVxuICAgICAgY2FjaGUuc2V0KGtleSwgbGluZSlcbiAgICB9KVxuICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgIHBlbmRpbmcuZGVsZXRlKGtleSlcbiAgICAgIHNldFZlcnNpb24oKHYpID0+IHYgKyAxKVxuICAgIH0pXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5jb25zdCBQQUxFVFRFUyA9IHtcbiAgZGFyazoge1xuICAgIGRlc2M6ICdsaWdodCB0ZXh0IGZvciBkYXJrIHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzZCRTc5NScsXG4gICAgZmc6ICcjZTVlN2ViJyxcbiAgICBmZ1NvZnQ6ICcjOWNhM2FmJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnIzRiNTU2MycsXG4gICAgcGFuZWxCZzogJyMxZTFlMjInLFxuICAgIHNlbGVjdEJnOiAnIzM3NDE1MScsXG4gICAgcmVkOiAnI2Y4NzE3MScsXG4gICAgaGlnaGxpZ2h0OiAnI2ZmZmZmZicsXG4gICAgc2hpa2k6ICdub3JkJyxcbiAgfSxcbiAgbGlnaHQ6IHtcbiAgICBkZXNjOiAnZGFyayB0ZXh0IGZvciBsaWdodCB0ZXJtaW5hbHMnLFxuICAgIGFjY2VudDogJyMwZjlkNjMnLFxuICAgIGZnOiAnIzFmMjQzMCcsXG4gICAgZmdTb2Z0OiAnIzRiNTU2MycsXG4gICAgbXV0ZWQ6ICcjNmI3MjgwJyxcbiAgICBmYWludDogJyNhM2E4YjMnLFxuICAgIHBhbmVsQmc6ICcjZTllOWVlJyxcbiAgICBzZWxlY3RCZzogJyNkNGQ0ZGMnLFxuICAgIHJlZDogJyNkYzI2MjYnLFxuICAgIGhpZ2hsaWdodDogJyMxMTE4MjcnLFxuICAgIHNoaWtpOiAnZ2l0aHViLWxpZ2h0JyxcbiAgfSxcbiAgbm9yZDoge1xuICAgIGRlc2M6ICdhcmN0aWMgYmx1ZXMgb24gcG9sYXIgbmlnaHQnLFxuICAgIGFjY2VudDogJyM4OGMwZDAnLFxuICAgIGZnOiAnI2Q4ZGVlOScsXG4gICAgZmdTb2Z0OiAnI2FhYjJjNCcsXG4gICAgbXV0ZWQ6ICcjN2I4OGExJyxcbiAgICBmYWludDogJyM2MTZlODgnLFxuICAgIHBhbmVsQmc6ICcjM2I0MjUyJyxcbiAgICBzZWxlY3RCZzogJyM0MzRjNWUnLFxuICAgIHJlZDogJyNiZjYxNmEnLFxuICAgIGhpZ2hsaWdodDogJyNlY2VmZjQnLFxuICAgIHNoaWtpOiAnbm9yZCcsXG4gIH0sXG59XG5cbmV4cG9ydCBsZXQgREVGQVVMVF9BQ0NFTlQgPSBQQUxFVFRFUy5kYXJrLmFjY2VudFxuZXhwb3J0IGxldCBGRyA9IFBBTEVUVEVTLmRhcmsuZmdcbmV4cG9ydCBsZXQgRkdfU09GVCA9IFBBTEVUVEVTLmRhcmsuZmdTb2Z0XG5leHBvcnQgbGV0IE1VVEVEID0gUEFMRVRURVMuZGFyay5tdXRlZFxuZXhwb3J0IGxldCBGQUlOVCA9IFBBTEVUVEVTLmRhcmsuZmFpbnRcbmV4cG9ydCBsZXQgUEFORUxfQkcgPSBQQUxFVFRFUy5kYXJrLnBhbmVsQmdcbmV4cG9ydCBsZXQgU0VMRUNUX0JHID0gUEFMRVRURVMuZGFyay5zZWxlY3RCZ1xuZXhwb3J0IGxldCBSRUQgPSBQQUxFVFRFUy5kYXJrLnJlZFxuZXhwb3J0IGxldCBISUdITElHSFQgPSBQQUxFVFRFUy5kYXJrLmhpZ2hsaWdodFxuXG5sZXQgY3VycmVudFBhbGV0dGUgPSAnZGFyaydcbmxldCBleHBsaWNpdEFjY2VudCA9IG51bGxcblxuY29uc3QgW2FjY2VudFZhbHVlLCBzZXRBY2NlbnRWYWx1ZV0gPSBjcmVhdGVTaWduYWwoREVGQVVMVF9BQ0NFTlQpXG5cbmV4cG9ydCBjb25zdCBhY2NlbnQgPSBhY2NlbnRWYWx1ZVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWNjZW50KGNvbG9yKSB7XG4gIGV4cGxpY2l0QWNjZW50ID0gY29sb3IgfHwgbnVsbFxuICBzZXRBY2NlbnRWYWx1ZShleHBsaWNpdEFjY2VudCB8fCBERUZBVUxUX0FDQ0VOVClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFBhbGV0dGUobmFtZSkge1xuICBjdXJyZW50UGFsZXR0ZSA9IFBBTEVUVEVTW25hbWVdID8gbmFtZSA6ICdkYXJrJ1xuICBjb25zdCBwID0gUEFMRVRURVNbY3VycmVudFBhbGV0dGVdXG4gIERFRkFVTFRfQUNDRU5UID0gcC5hY2NlbnRcbiAgRkcgPSBwLmZnXG4gIEZHX1NPRlQgPSBwLmZnU29mdFxuICBNVVRFRCA9IHAubXV0ZWRcbiAgRkFJTlQgPSBwLmZhaW50XG4gIFBBTkVMX0JHID0gcC5wYW5lbEJnXG4gIFNFTEVDVF9CRyA9IHAuc2VsZWN0QmdcbiAgUkVEID0gcC5yZWRcbiAgSElHSExJR0hUID0gcC5oaWdobGlnaHRcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgcC5hY2NlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlTmFtZSgpIHtcbiAgcmV0dXJuIGN1cnJlbnRQYWxldHRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlTGlzdCgpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFBBTEVUVEVTKS5tYXAoKFtrZXksIHBdKSA9PiAoeyBrZXksIGRlc2M6IHAuZGVzYyB9KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWtpVGhlbWUoKSB7XG4gIHJldHVybiBQQUxFVFRFU1tjdXJyZW50UGFsZXR0ZV0uc2hpa2lcbn1cbiIsICJpbXBvcnQgeyBEaWZmLCBNYXJrZG93biwgU3Bpbm5lciB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBoaWdobGlnaHQsIGxhbmdGb3JQYXRoIH0gZnJvbSAnLi9oaWdobGlnaHQuanMnXG5cbmV4cG9ydCB7IGRlZmF1bHRUaXRsZSBhcyB1aVRpdGxlIH0gZnJvbSAnLi4vY29yZS90b29scy9yZWNvcmRlci5qcydcblxuZnVuY3Rpb24gZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpIHtcbiAgaWYgKGRpZmY/Lmh1bmtzPy5sZW5ndGgpIHJldHVybiBkaWZmLmh1bmtzLnJlZHVjZSgoc3VtLCBoKSA9PiBzdW0gKyBoLmxpbmVzLmxlbmd0aCwgMClcbiAgLy8gZXZlbnRzIHJlY29yZGVkIGJlZm9yZSBjcmVhdGVkLWZpbGUgd3JpdGVzIGNhcnJpZWQgaHVua3M6IHNpemUgZnJvbSB0aGUgY29udGVudCBpdHNlbGZcbiAgcmV0dXJuIE1hdGgubWF4KFN0cmluZyhyZXZlcnQ/LmFmdGVyIHx8ICcnKS5zcGxpdCgnXFxuJykubGVuZ3RoLCBTdHJpbmcocmV2ZXJ0Py5iZWZvcmUgfHwgJycpLnNwbGl0KCdcXG4nKS5sZW5ndGgsIDIpXG59XG5cbmZ1bmN0aW9uIFRvb2xDYXJkKHsgbmFtZSwgdGl0bGUsIHN0YXR1cywgZGlmZiwgcmV2ZXJ0LCBmdWxsT3V0cHV0LCBlcnJvciwgYmFja2dyb3VuZCwgdmVyYm9zZSB9KSB7XG4gIGNvbnN0IHJ1bm5pbmcgPSBzdGF0dXMgPT09ICdydW5uaW5nJ1xuICBjb25zdCBpbnRlcnJ1cHRlZCA9IHN0YXR1cyA9PT0gJ2ludGVycnVwdGVkJ1xuICBjb25zdCByZXZlcnRlZCA9IHN0YXR1cyA9PT0gJ3JldmVydGVkJ1xuICBjb25zdCBmYWlsZWQgPSBzdGF0dXMgPT09ICdlcnJvcidcbiAgY29uc3Qgb3V0TGluZXMgPSBmdWxsT3V0cHV0ID8gZnVsbE91dHB1dC5zcGxpdCgnXFxuJykgOiBudWxsXG5cbiAgY29uc3QgaW5mbyA9IHJ1bm5pbmcgPyAncnVubmluZydcbiAgICA6IGludGVycnVwdGVkID8gJ2ludGVycnVwdGVkJ1xuICAgIDogcmV2ZXJ0ZWQgPyAncmV2ZXJ0ZWQnXG4gICAgOiBmYWlsZWQgPyAnZmFpbGVkJ1xuICAgIDogYmFja2dyb3VuZCA/ICdiYWNrZ3JvdW5kIFx1MDBCNyAvc2hlbGxzJ1xuICAgIDogZGlmZiA/IGArJHtkaWZmLmFkZGl0aW9uc30gLSR7ZGlmZi5kZWxldGlvbnN9YFxuICAgIDogb3V0TGluZXMgPyBgJHtvdXRMaW5lcy5sZW5ndGh9ICR7b3V0TGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30gXHUwMEI3IGN0cmwrb2BcbiAgICA6ICdkb25lJ1xuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAge3J1bm5pbmdcbiAgICAgICAgICA/IDxTcGlubmVyIGNvbG9yPXthY2NlbnQoKX0gLz5cbiAgICAgICAgICA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBpbnRlcnJ1cHRlZCB8fCBmYWlsZWQgPyBSRUQgOiByZXZlcnRlZCA/IE1VVEVEIDogYWNjZW50KCkgfX0+e2ludGVycnVwdGVkID8gJ1x1MjcxNycgOiBmYWlsZWQgPyAnXHUyNzE3JyA6IHJldmVydGVkID8gJ1x1MjFBOScgOiAnXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Ake25hbWUucGFkRW5kKDUpfSBgfTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkcgfX0+e3RpdGxlIHx8IG5hbWV9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke2luZm99YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIHtmYWlsZWQgJiYgZXJyb3IgJiYgKFxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntgICAke2Vycm9yfWB9PC90ZXh0PlxuICAgICAgKX1cbiAgICAgIHtyZXZlcnQgJiYgIXJ1bm5pbmcgJiYgIXJldmVydGVkICYmICEoZGlmZiAmJiBkaWZmLmFkZGl0aW9ucyA9PT0gMCAmJiBkaWZmLmRlbGV0aW9ucyA9PT0gMCkgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IE1hdGgubWluKGRpZmZQcmV2aWV3TGluZXMoZGlmZiwgcmV2ZXJ0KSArIDEsIDEyKSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxEaWZmXG4gICAgICAgICAgICBiZWZvcmU9e3JldmVydC5iZWZvcmV9XG4gICAgICAgICAgICBhZnRlcj17cmV2ZXJ0LmFmdGVyfVxuICAgICAgICAgICAgbGFuZ3VhZ2U9e2xhbmdGb3JQYXRoKHJldmVydC5wYXRoKX1cbiAgICAgICAgICAgIGhpZ2hsaWdodD17aGlnaGxpZ2h0fVxuICAgICAgICAgICAgY29udGV4dD17M31cbiAgICAgICAgICAgIGZvbGRzPXtmYWxzZX1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgc2Nyb2xsYmFyPXtmYWxzZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG4gICAgICB7b3V0TGluZXMgJiYgdmVyYm9zZSAmJiAhcnVubmluZyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AkICR7dGl0bGV9YH08L3RleHQ+XG4gICAgICAgICAge291dExpbmVzLnNsaWNlKDAsIDIwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIHtvdXRMaW5lcy5sZW5ndGggPiAyMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7b3V0TGluZXMubGVuZ3RoIC0gMjAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJhbm5lcih7IHZlcnNpb24gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAwLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBib2xkOiB0cnVlLCBjb2xvcjogYWNjZW50KCkgfX0+eycgIHBpY28nfTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICB2JHt2ZXJzaW9ufWB9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1lc3NhZ2UoeyBpdGVtLCB2ZXJib3NlIH0pIHtcbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgcmV0dXJuIDxUb29sQ2FyZCB7Li4uaXRlbX0gdmVyYm9zZT17dmVyYm9zZX0gLz5cbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57aXRlbS5zb3VyY2UgPT09ICdjb21wYWN0JyA/ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgY29udmVyc2F0aW9uIGNvbXBhY3RlZCBhYm92ZSB0aGlzIHBvaW50JyA6ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgcmV3b3VuZCBjb252ZXJzYXRpb24nfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtsaW5lcy5sZW5ndGh9ICR7bGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30gXHUwMEI3IGN0cmwrb2B9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICAgIHtsaW5lcy5zbGljZSgwLCA1MDApLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiA1MDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gNTAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rob3VnaHRzJykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57J1x1MjcyNiB0aG91Z2h0cyd9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDMwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIGl0YWxpYzogdHJ1ZSB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID4gMzAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjAyNiAke2xpbmVzLmxlbmd0aCAtIDMwMH0gbW9yZSBsaW5lc2B9PC90ZXh0Pn1cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdub3RpY2UnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjY5OSAke2l0ZW0udGV4dC5yZXBsYWNlKC9eXFxbc3lzdGVtIG5vdGlmaWNhdGlvblxcXVxccyovLCAnJyl9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAnc2tpbGwnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjcyNiBza2lsbDogJHtpdGVtLm5hbWV9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntpdGVtLnRleHR9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRleHQgPSBpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fSAqKGludGVycnVwdGVkKSpgIDogaXRlbS50ZXh0XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPE1hcmtkb3duIHRleHQ9e3RleHR9IGhpZ2hsaWdodD17aGlnaGxpZ2h0fSBjb2RlQmc9e251bGx9IC8+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93biwgU2Nyb2xsQm94LCB1c2VJbnB1dCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBIRUxQX1RFWFQgPSAoY29tbWFuZHMpID0+IGBwaWNvIGlzIGEgY29kaW5nIGFnZW50IGluIHlvdXIgdGVybWluYWwuIEl0IHJlYWRzLCBlZGl0cywgYW5kIHNlYXJjaGVzIGZpbGVzLCBydW5zIGNvbW1hbmRzLCBhbmQgc3RyZWFtcyBpdHMgd29yayBpbnRvIHRoaXMgdHJhbnNjcmlwdC5cblxuIyMgQ29tbWFuZHNcblxuVHlwZSBcXGAvXFxgIGluIHRoZSBjb21wb3NlciB0byBmaWx0ZXIgdGhlc2UgYXMgeW91IHR5cGUuXG5cbiR7Y29tbWFuZHMubWFwKChjKSA9PiBgLSBcXGAvJHtjLm5hbWV9XFxgIC0gJHtjLmRlc2N9YCkuam9pbignXFxuJyl9XG5cblR3byBraW5kcyBvZiB1c2VyLWRlZmluZWQgZW50cmllcyBqb2luIHRoaXMgbWVudTpcblxuLSAqKmNvbW1hbmRzKiogKFxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIG9yIFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCk6IHByb21wdCB0ZW1wbGF0ZXMgeW91IGludm9rZSBhcyBcXGAvPG5hbWU+IFthcmdzXVxcYC4gXFxgJEFSR1VNRU5UU1xcYCBpbiB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgYSBwbGFjZWhvbGRlciwgYXJncyBhcmUgYXBwZW5kZWQuIFRoZSBtb2RlbCBuZXZlciBzZWVzIHRoZXNlIHVudGlsIHlvdSBydW4gb25lLlxuLSAqKnNraWxscyoqIChcXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgb3IgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCk6IGNhcGFiaWxpdGllcyB3aXRoIGEgbmFtZSBhbmQgZGVzY3JpcHRpb24uIFlvdSBjYW4gaW52b2tlIHRoZW0gbGlrZSBjb21tYW5kcywgYW5kIHRoZSBhZ2VudCBjYW4gYWxzbyBkaXNjb3ZlciBhbmQgbG9hZCB0aGVtIGl0c2VsZiB2aWEgdGhlIHNraWxsIHRvb2wuXG4tICoqdG9vbHMqKiAoXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgb3IgXFxgLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgKTogRVMgbW9kdWxlcyBkZWZhdWx0LWV4cG9ydGluZyBcXGB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWEsIGV4ZWN1dGUgfVxcYCAob3IgYSBmYWN0b3J5IHJlY2VpdmluZyBcXGB7IGN3ZCwgcm9vdCB9XFxgKS4gVGhleSBqb2luIHRoZSBhZ2VudCdzIHRvb2xzZXQgYW5kIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gZWRpdHMgYXBwbHkgb24gdGhlIG5leHQgbWVzc2FnZS4gQXNrIHRoZSBhZ2VudCB0byBidWlsZCBvbmUgZm9yIHlvdTogdGhlIGJ1aWx0LWluIFxcYC9uZXctdG9vbFxcYCBza2lsbCB0ZWFjaGVzIGl0IHRoZSBmb3JtYXQuXG5cbkluIHRoZSBNQ1AgcGFuZWw6IHNwYWNlIG9yIGVudGVyIHRvZ2dsZXMgYSBzZXJ2ZXIsIFxcYHRcXGAgbGlzdHMgaXRzIHRvb2xzLCBcXGByXFxgIHJlY29ubmVjdHMsIFxcYGFcXGAgYWRkcywgXFxgZFxcYCByZW1vdmVzLiBVbmZpbHRlcmVkIGxpc3RzIChlZmZvcnQsIHJld2luZCBvcHRpb25zLCBNQ1ApIGFsc28gbW92ZSB3aXRoIFxcYGpcXGAvXFxga1xcYCBhbmQganVtcCB3aXRoIFxcYGdcXGAvXFxgR1xcYC5cblxuIyMgQ29tcG9zZXJcblxuLSBcXGBlbnRlclxcYCBzZW5kcywgXFxgc2hpZnQrZW50ZXJcXGAgaW5zZXJ0cyBhIG5ld2xpbmVcbi0gXFxgQFxcYCBvcGVucyBhIGZ1enp5IGZpbGUgcGlja2VyOyBlbnRlciBpbnNlcnRzIHRoZSBzZWxlY3RlZCBwYXRoXG4tIGRyYWcgYW4gaW1hZ2UgZmlsZSBpbnRvIHRoZSB0ZXJtaW5hbCB0byBhdHRhY2ggaXQ6IGl0IGFwcGVhcnMgaW5saW5lIGFzIFxcYFtJbWFnZSAjTl1cXGAsIGV4YWN0bHkgd2hlcmUgeW91ciBjdXJzb3IgaXMsIHNvIGltYWdlcyBjYW4gc2l0IGJldHdlZW4gc2VudGVuY2VzOyBiYWNrc3BhY2UgYWZ0ZXIgb25lIHJlbW92ZXMgdGhlIHdob2xlIGF0dGFjaG1lbnRcbi0gXFxgdGFiXFxgIGNvbXBsZXRlczogXFxgL3N1bW08dGFiPlxcYCBmaW5pc2hlcyB0aGUgY29tbWFuZCBuYW1lIGFuZCBjeWNsZXMgdGhyb3VnaCBtYXRjaGVzIG9uIHJlcGVhdDsgYWZ0ZXIgYW4gYXJndW1lbnQgc3BhY2UgaXQgY29tcGxldGVzIHZhbHVlcyAoXFxgL21vZGVsIGZsYTx0YWI+XFxgLCBcXGAvY29sb3IgPHRhYj5cXGAsIFxcYC9lZmZvcnQgPHRhYj5cXGApIGFuZCBmaWxlIHBhdGhzIGZvciBza2lsbHMgYW5kIGNvbW1hbmRzLiBLZWVwIHR5cGluZyB0byBuYXJyb3csIHRhYiBvciBlbnRlciBpbnNlcnRzXG4tIFxcYHVwXFxgIGFuZCBcXGBkb3duXFxgIG9uIGFuIGVtcHR5IGNvbXBvc2VyIHJlY2FsbCBtZXNzYWdlcyB5b3UgYWxyZWFkeSBzZW50XG4tIFxcYGN0cmwrclxcYCBmdXp6eS1zZWFyY2hlcyB5b3VyIHByb21wdCBoaXN0b3J5IHdpdGggYSBwcmV2aWV3OyBlbnRlciBwdXRzIHRoZSBtYXRjaCBiYWNrIGluIHRoZSBjb21wb3NlclxuLSBcXGBjdHJsK3NcXGAgb3BlbnMgdGhlIHNlc3Npb24gcGlja2VyIChzYW1lIGFzIFxcYC9yZXN1bWVcXGApOyBcXGBjdHJsK3RcXGAgb3BlbnMgdGhlIG1vZGVsIHBpY2tlclxuLSBcXGBjdHJsK3BcXGAgc3dpdGNoZXMgcHJvamVjdHM6IHBpY2sgb25lIGFuZCBwaWNvIGp1bXBzIHRvIGl0cyBtb3N0IHJlY2VudCBzZXNzaW9uLCBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRvb2xzLCBjb250ZXh0LCBhbmQgTUNQIHNlcnZlcnMgdG8gbWF0Y2g7IFxcYGN0cmwreFxcYCB0d2ljZSBkZWxldGVzIGEgcHJvamVjdCdzIHBpY28gaGlzdG9yeSAoYWxsIGl0cyBzZXNzaW9ucyBhbmQgbWVtb3JpZXMpOyBcXGAvbmV3XFxgIHN0YXJ0cyBhIGZyZXNoIHNlc3Npb24gaW4gdGhlIGN1cnJlbnQgcHJvamVjdFxuLSBcXGBjdHJsK2JcXGAgY3ljbGVzIHRoaW5raW5nIGVmZm9ydCAoZGVmYXVsdCwgbG93LCBtZWRpdW0sIGhpZ2gsIG1heCkgb24gbW9kZWxzIHRoYXQgc3VwcG9ydCBpdDsgXFxgL2VmZm9ydFxcYCBvcGVucyB0aGUgZnVsbCBwaWNrZXJcbi0gaW5zaWRlIGEgc2VhcmNoIHBhbmVsLCBcXGBjdHJsK3NcXGAgY3ljbGVzIHRoZSBzY29wZSBpbnN0ZWFkOiB0aGlzIHNlc3Npb24sIHRoaXMgcHJvamVjdCwgb3IgZXZlcnl3aGVyZVxuLSBcXGAvcmV3aW5kXFxgIHJlc3RvcmVzIHRoZSBjb252ZXJzYXRpb24gdG8gYW4gZWFybGllciBtZXNzYWdlOyBhIHJld2luZCBjYW4gYmUgdW5kb25lIHdpdGggXFxgY3RybCt6XFxgXG4tIG1lc3NhZ2VzIHNlbnQgd2hpbGUgdGhlIGFnZW50IGlzIHJlc3BvbmRpbmcgcXVldWUgdXAgYWJvdmUgdGhlIGNvbXBvc2VyIGFuZCBhcmUgZGVsaXZlcmVkIGFzIG9uZSBtZXNzYWdlIHdoZW4gdGhlIHR1cm4gZmluaXNoZXM7IFxcYHVwXFxgIHB1bGxzIHRoZW0gYmFjayBmb3IgZWRpdGluZ1xuLSBcXGBlc2NcXGAgaW50ZXJydXB0cyBhIHN0cmVhbWluZyByZXNwb25zZSwgb3IgY2xlYXJzIHRoZSBjb21wb3NlciB3aGVuIGlkbGVcblxuIyMgTW92aW5nIGFyb3VuZFxuXG4tIFxcYHRhYlxcYCBzd2l0Y2hlcyBmb2N1cyBiZXR3ZWVuIHRoZSB0cmFuc2NyaXB0IGFuZCB0aGUgY29tcG9zZXJcbi0gd2l0aCB0aGUgdHJhbnNjcmlwdCBmb2N1c2VkLCBcXGB1cFxcYC9cXGBkb3duXFxgL1xcYGpcXGAvXFxga1xcYCBzY3JvbGwgYW5kIFxcYGdcXGAvXFxgR1xcYCBqdW1wIHRvIHRoZSBlbmRzXG4tIGxvbmcgc2Vzc2lvbnMgcmVuZGVyIG9ubHkgdGhlIG5ld2VzdCA1MCBtZXNzYWdlczsgc2Nyb2xsaW5nIHRvIHRoZSB2ZXJ5IHRvcCBsb2FkcyBvbGRlciBvbmVzIGluIGJhdGNoZXMgKHRoZSB0b3AgbGluZSBzaG93cyBob3cgbWFueSBhcmUgaGlkZGVuKVxuLSBcXGBjdHJsK29cXGAgZXhwYW5kcyBhbmQgY29sbGFwc2VzIHRvb2wgb3V0cHV0IGluIHRoZSB0cmFuc2NyaXB0XG4tIHRoZSBtb3VzZSB3aGVlbCBzY3JvbGxzOyBjbGljay1kcmFnIHNlbGVjdHMgdGV4dCBhbmQgY29waWVzIGl0IG9uIHJlbGVhc2Vcbi0gXFxgY3RybCtjXFxgIHR3aWNlIGV4aXRzXG5cbiMjIFNoZWxsc1xuXG5UaGUgYWdlbnQgY2FuIHJ1biBsb25nLWxpdmVkIHByb2Nlc3NlcyAoZGV2IHNlcnZlcnMsIHdhdGNoZXJzKSB3aXRoIFxcYGJhc2ggYmFja2dyb3VuZDogdHJ1ZVxcYCwgdGhlbiByZWFkIHRoZWlyIG91dHB1dCBhbmQgc3RvcCB0aGVtIGl0c2VsZi4gXFxgL3NoZWxsc1xcYCBsaXN0cyB0aGVtOiBlbnRlciBvcGVucyBhIGxpdmUgb3V0cHV0IHZpZXcsIGFuZCBcXGBjdHJsK3hcXGAgcmVtb3ZlcyB0aGUgc2VsZWN0ZWQgcm93IC0ga2lsbGluZyBhIHJ1bm5pbmcgc2hlbGwgKHByZXNzIHR3aWNlKSBvciBkaXNtaXNzaW5nIGEgZGVhZCBvbmUgKHNpbmdsZSBwcmVzcykuIEEgXFxgXHUyNjk5IE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcnVubmluZy4gV2hlbiBhIHNoZWxsIGV4aXRzIG9uIGl0cyBvd24sIHRoZSBhZ2VudCBpcyBub3RpZmllZCBhbmQgcmVzcG9uZHM7IHNoZWxscyBkaWUgd2l0aCBwaWNvLCBhbmQgcXVpdHRpbmcgd2FybnMgeW91IGlmIGFueSBhcmUgc3RpbGwgdXAuXG5cbiMjIFN1YnNjcmlwdGlvbnNcblxuXFxgL2Nvbm5lY3RcXGAgbGlzdHMgc3Vic2NyaXB0aW9uIHByb3ZpZGVycyB5b3UgY2FuIHNpZ24gaW4gd2l0aCBpbnN0ZWFkIG9mIEFQSSBrZXlzLiBPcGVuQUkgKENoYXRHUFQgLyBDb2RleCBwbGFuKSBzaWducyBpbiB0aHJvdWdoIHlvdXIgYnJvd3NlciB2aWEgT0F1dGg7IHRva2VucyBhcmUgc3RvcmVkIGluIFxcYH4vLnBpY28vYXV0aC5qc29uXFxgIGFuZCByZWZyZXNoZWQgYXV0b21hdGljYWxseSwgc28geW91IHNpZ24gaW4gb25jZS4gT25jZSBjb25uZWN0ZWQsIGNvZGV4IG1vZGVscyBhcHBlYXIgaW4gXFxgL21vZGVsXFxgLCBiaWxsZWQgdG8geW91ciBwbGFuLiBcXGBkXFxgIGluIHRoZSBwYW5lbCBkaXNjb25uZWN0cy5cblxuIyMgV2ViIHNlYXJjaFxuXG5XaXRoIGEgW2RyZWRnZV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0aGFucHllcnMvZHJlZGdlKSBlbmRwb2ludCBjb25maWd1cmVkLCB0aGUgYWdlbnQgZ2V0cyB0d28gZXh0cmEgdG9vbHM6IFxcYHdlYl9zZWFyY2hcXGAgKHJhbmtlZCByZXN1bHRzLCBHb29nbGUtc3R5bGUgb3BlcmF0b3JzKSBhbmQgXFxgd2ViX2ZldGNoXFxgIChhbnkgdXJsIGFzIGNsZWFuIHBhZ2luYXRlZCBtYXJrZG93biwgaW5jbHVkaW5nIHBkZiBhbmQgZG9jeCkuIENvbmZpZ3VyZSBpdCBhcyBcXGBcImRyZWRnZVwiOiB7IFwidXJsXCI6IFwiLi4uXCIsIFwiYXBpS2V5XCI6IFwiLi4uXCIgfVxcYCBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgLCBvciB3aXRoIFxcYERSRURHRV9VUkxcXGAgYW5kIFxcYERSRURHRV9BUElfS0VZXFxgLiBXaXRob3V0IGEgY29uZmlndXJlZCBlbmRwb2ludCB0aGUgdG9vbHMgYXJlIG5vdCBvZmZlcmVkIHRvIHRoZSBtb2RlbCBhdCBhbGwuXG5cbiMjIE1lbW9yeVxuXG5UaGUgYWdlbnQgc2F2ZXMgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOiBvbmUgZmlsZSBwZXIgbWVtb3J5IHVuZGVyIFxcYH4vLnBpY28vbWVtb3J5XFxgIChnbG9iYWwpIG9yIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IGluIFxcYH4vLnBpY28vcHJvamVjdHNcXGAuIE9ubHkgYSBvbmUtbGluZSBpbmRleCBpcyBpbiBpdHMgY29udGV4dDsgaXQgbG9hZHMgYSBzcGVjaWZpYyBtZW1vcnkgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiByZWxldmFudC4gXFxgL21lbW9yeVxcYCBsaXN0cyBldmVyeXRoaW5nIGl0IGtub3dzIHdpdGggYSBjb250ZW50IHByZXZpZXc6IFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGZpbHRlciAoYWxsLCBwcm9qZWN0LCBnbG9iYWwpIGFuZCBcXGBjdHJsK3hcXGAgdHdpY2UgZm9yZ2V0cyB0aGUgc2VsZWN0ZWQgbWVtb3J5LiBZb3UgY2FuIGFsc28gYXNrIHRoZSBhZ2VudCB0byByZW1lbWJlciwgZm9yZ2V0LCBvciBjbGVhbiB1cCBpdHMgbWVtb3JpZXMgaW4gcGxhaW4gbGFuZ3VhZ2UuXG5cbiMjIFdha2UtdXBzXG5cblRoZSBhZ2VudCBjYW4gc2NoZWR1bGUgb25lLXRpbWUgd2FrZS11cHMgZm9yIGl0c2VsZiB3aXRoIHRoZSBzY2hlZHVsZV93YWtldXAgdG9vbDogYWZ0ZXIgdGhlIGRlbGF5IGl0IHJlY2VpdmVzIGl0cyBvd24gbm90ZSBhcyBhIHN5c3RlbSBub3RpZmljYXRpb24gYW5kIGFjdHMgb24gaXQuIFJlY3VycmluZyBsb29wcyBhcmUganVzdCB0aGUgYWdlbnQgcmVzY2hlZHVsaW5nIGF0IHRoZSBlbmQgb2YgZWFjaCB3YWtlLXVwLiBcXGAvd2FrZXVwc1xcYCBsaXN0cyBwZW5kaW5nIG9uZXMgd2l0aCBsaXZlIGNvdW50ZG93bnM7IGVudGVyIG9yIFxcYGtcXGAgY2FuY2Vscy4gQSBcXGBcdTIzRjAgTlxcYCBpbiB0aGUgZm9vdGVyIHNob3dzIGhvdyBtYW55IGFyZSBwZW5kaW5nLiBXYWtlLXVwcyBsaXZlIGluIG1lbW9yeSBhbmQgYXJlIGxvc3Qgd2hlbiBwaWNvIGV4aXRzLlxuXG4jIyBBcHBlYXJhbmNlXG5cbnBpY28gcGlja3MgYSBsaWdodCBvciBkYXJrIHBhbGV0dGUgYXQgc3RhcnR1cCBieSBhc2tpbmcgdGhlIHRlcm1pbmFsIGZvciBpdHMgYmFja2dyb3VuZCBjb2xvciAoT1NDIDExKSwgc28gaXQgbWF0Y2hlcyB3aGF0ZXZlciB0aGVtZSB5b3VyIHRlcm1pbmFsIHVzZXMuIFxcYC90aGVtZVxcYCBvcGVucyBhIHBpY2tlciB0aGF0IHByZXZpZXdzIGVhY2ggdGhlbWUgYXMgeW91IG1vdmUgYW5kIHBlcnNpc3RzIHlvdXIgY2hvaWNlIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGA7IFxcYC90aGVtZSBsaWdodFxcYCwgXFxgL3RoZW1lIGRhcmtcXGAsIG9yIFxcYC90aGVtZSBhdXRvXFxgIGFwcGxpZXMgb25lIGRpcmVjdGx5LiBcXGAvY29sb3JcXGAgdGludHMgYSBzaW5nbGUgc2Vzc2lvbidzIGFjY2VudCBhbmQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHBhbGV0dGUuXG5cbiMjIENvbnRleHRcblxucGljbyByZWFkcyBBR0VOVFMubWQgZmlsZXMgYXV0b21hdGljYWxseTogYSBnbG9iYWwgb25lIGZyb20gfi8ucGljbywgdGhlbiBldmVyeSBhbmNlc3RvciBvZiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHVwIHRvIHRoZSBnaXQgcm9vdC4gRGVlcGVyIGZpbGVzIHdpbi4gQUdFTlRTLm1kIGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzIGxvYWQgbGF6aWx5IHRoZSBmaXJzdCB0aW1lIGEgdG9vbCB0b3VjaGVzIHRoYXQgc3VidHJlZS4gSW4gYW55IHByb2plY3QgZGlyZWN0b3J5IHdpdGhvdXQgYW4gQUdFTlRTLm1kLCBhIENMQVVERS5tZCBpcyBob25vcmVkIGFzIGEgZmFsbGJhY2sgc28gZXhpc3RpbmcgcmVwb3Mgd29yayB1bmNoYW5nZWQ7IEFHRU5UUy5tZCBhbHdheXMgd2lucyB3aGVuIGJvdGggZXhpc3QsIGFuZCB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGUuXG5cblNlc3Npb25zIGFyZSBzdG9yZWQgdW5kZXIgfi8ucGljbyBhcyBqc29ubCBldmVudCBsb2dzOyBcXGAvcmVzdW1lXFxgIGZvbGRzIG9uZSBiYWNrIGludG8gZXhhY3RseSB0aGlzIHZpZXcuXG5cblxcYC9jb250ZXh0XFxgIGJyZWFrcyBkb3duIHdoYXQgdGhlIG5leHQgcmVxdWVzdCB3aWxsIGNvbnRhaW4gLSBzeXN0ZW0gcHJvbXB0LCB0b29sIHNjaGVtYXMsIHByb2plY3QgaW5zdHJ1Y3Rpb25zLCBtZW1vcnkgaW5kZXgsIGNvbXBhY3Rpb24gc3VtbWFyeSwgYW5kIGNvbnZlcnNhdGlvbiAtIHdpdGggYW4gZXN0aW1hdGVkIHNpemUgZm9yIGVhY2ggcGllY2UgbmV4dCB0byB0aGUgcHJvdmlkZXItbWVhc3VyZWQgdG90YWwuXG5cblRoZSBmb290ZXIncyBcXGBjdHggJVxcYCBzaG93cyBob3cgZnVsbCB0aGUgbW9kZWwncyBjb250ZXh0IGlzLiBBdCA4NSUgcGljbyBhdXRvLWNvbXBhY3RzOiB0aGUgb2xkZXIgY29udmVyc2F0aW9uIGlzIHN1bW1hcml6ZWQgaW4gYSBzdHJ1Y3R1cmVkIGZvcm0sIHRoZSBtb3N0IHJlY2VudCB0dXJucyBhcmUga2VwdCB2ZXJiYXRpbSwgYW5kIHRoZSBtb2RlbCBpcyB0b2xkIHdoZXJlIHRoZSBmdWxsIHNlc3Npb24gZmlsZSBsaXZlcyBzbyBpdCBjYW4gcmVhZCBleGFjdCBkZXRhaWxzIGJhY2sgb24gZGVtYW5kLiBOb3RoaW5nIHZpc2libGUgY2hhbmdlcyBpbiB0aGUgdHJhbnNjcmlwdCwgYW5kIHJld2luZCBzdGlsbCB3b3JrcyBhY3Jvc3MgaXQuIFxcYC9jb21wYWN0XFxgIHJ1bnMgaXQgbWFudWFsbHkgYW5kIHRha2VzIG9wdGlvbmFsIGZvY3VzIGluc3RydWN0aW9ucyAoXFxgL2NvbXBhY3QgZm9jdXMgb24gdGhlIEFQSSBjaGFuZ2VzXFxgKS4gU2V0IFxcYFwiYXV0b0NvbXBhY3RcIjogZmFsc2VcXGAgaW4gXFxgfi8ucGljby9jb25maWcuanNvblxcYCB0byBkaXNhYmxlIHRoZSBhdXRvbWF0aWMgdHJpZ2dlci5cblxuLS0tXG5cbiplc2MgdGFrZXMgeW91IGJhY2sgdG8gdGhlIGNvbnZlcnNhdGlvbipgXG5cbmV4cG9ydCBmdW5jdGlvbiBIZWxwKHsgY29tbWFuZHMsIG9uQ2xvc2UgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+cGljbyBcdTAwQjcgaGVscDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+XHUyMTkxXHUyMTkzIHNjcm9sbCBcdTAwQjcgZXNjIGJhY2s8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQgc2Nyb2xsYmFyPlxuICAgICAgICA8TWFya2Rvd24gdGV4dD17SEVMUF9URVhUKGNvbW1hbmRzKX0gY29kZUJnPXtudWxsfSAvPlxuICAgICAgPC9TY3JvbGxCb3g+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIEJ1dHRvbiwgTWVudSwgUGlja0xpc3QsIFJhZGlvLCBTY3JvbGxCb3gsIFRleHRJbnB1dCwgdXNlRm9jdXMsIHVzZUlucHV0LCB1c2VJbnRlcnZhbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFNFTEVDVF9CRywgUkVEIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZUFnbyhhdCkge1xuICBjb25zdCBzID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIGF0KSAvIDEwMDApKVxuICBpZiAocyA8IDYwKSByZXR1cm4gYCR7c31zIGFnb2BcbiAgY29uc3QgbSA9IE1hdGguZmxvb3IocyAvIDYwKVxuICBpZiAobSA8IDYwKSByZXR1cm4gYCR7bX1tIGFnb2BcbiAgY29uc3QgaCA9IE1hdGguZmxvb3IobSAvIDYwKVxuICBpZiAoaCA8IDI0KSByZXR1cm4gYCR7aH1oIGFnb2BcbiAgcmV0dXJuIGAke01hdGguZmxvb3IoaCAvIDI0KX1kIGFnb2Bcbn1cblxuZnVuY3Rpb24gUGFuZWxGcmFtZSh7IHRpdGxlLCBoaW50LCByaWdodCwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+e3RpdGxlfTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICB7cmlnaHR9XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57aGludH08L3RleHQ+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlVGFicyh7IHNjb3BlcywgYWN0aXZlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAge3Njb3Blcy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgPHRleHQga2V5PXtzfSBzdHlsZT17eyBjb2xvcjogaSA9PT0gYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCwgYm9sZDogaSA9PT0gYWN0aXZlIH19PntgJHtpID4gMCA/ICcgICcgOiAnJ30ke3N9YH08L3RleHQ+XG4gICAgICApKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9kZWxQYW5lbCh7IG1vZGVscywgY3VycmVudCwgZGVmYXVsdE5hbWUsIGZvY3VzZWQsIG9uUGljaywgb25QaWNrRGVmYXVsdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwobW9kZWxzWzBdIHx8IG51bGwpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBjdXJzb3IoKSkge1xuICAgICAgb25QaWNrRGVmYXVsdChjdXJzb3IoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTZWxlY3QgbW9kZWxcIiBoaW50PVwiZW50ZXI6IHRoaXMgc2Vzc2lvbiBcdTAwQjcgY3RybCtzOiBzZXQgYXMgZGVmYXVsdCBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e21vZGVsc31cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIG1vZGVscy4uLlwiXG4gICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLm5hbWUpID49IDB9XG4gICAgICAgICAgb25DdXJzb3JDaGFuZ2U9e3NldEN1cnNvcn1cbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIHNjcm9sbG9mZj17MX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsobSwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvZmYgPSBtLmF2YWlsYWJsZSA9PT0gZmFsc2VcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6ICFvZmYsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBvZmYgPyBNVVRFRCA6IEZHIH19PnttLm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAge20ubmFtZSA9PT0gY3VycmVudCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogYWNjZW50KCkgfX0+eycgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAge20ubmFtZSA9PT0gZGVmYXVsdE5hbWUgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnsnIFx1MDBCNyBkZWZhdWx0J308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICB7b2ZmID8gYG5lZWRzICR7bS5rZXlIaW50fWAgOiBtLnByaWNlID8gYCQke20ucHJpY2UuaW59IGluIFx1MDBCNyAkJHttLnByaWNlLm91dH0gb3V0YCA6IG0ucHJvdmlkZXIgPT09ICdjb2RleCcgPyAnc3Vic2NyaXB0aW9uJyA6ICdwcmljZSB1bmtub3duJ31cbiAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e20uZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhpc3RvcnlQYW5lbCh7IHByb21wdHMsIHNjb3Blcywgc2NvcGVJbmRleCwgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHByb21wdHNbMF0gfHwgbnVsbClcbiAgY29uc3QgW3F1ZXJ5LCBzZXRRdWVyeV0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IGFueU1hdGNoID0gcHJvbXB0cy5zb21lKChwKSA9PiBmdXp6eVNjb3JlKHF1ZXJ5KCksIHAudGV4dCkgPj0gMClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIlNlYXJjaCBwcm9tcHRzXCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byBlZGl0IFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtwcm9tcHRzfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHByb21wdHMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgcCkgPT4gZnV6enlTY29yZShxLCBwLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0UXVlcnl9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uUGljayhwLnRleHQpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhwLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7YW55TWF0Y2ggJiYgcHJldmlldygpID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBwcm9tcHRzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXdpbmRQaWNrUGFuZWwoeyBlbnRyaWVzLCBzdGF0cywgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKGVudHJpZXNbMF0gfHwgbnVsbClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiUmV3aW5kIHRvIGEgbWVzc2FnZVwiIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdG8gY2hvb3NlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17ZW50cmllc31cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtZXNzYWdlcy4uLlwiXG4gICAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIG0udGV4dCkgPj0gMH1cbiAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsobSkgPT4gc2V0UHJldmlldyhtKX1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e20udGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtzdGF0cyhtLmluZGV4KS5tc2dzfSBhZnRlcmB9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2ByZXdpbmRpbmcgaGVyZSBkcm9wcyAke3N0YXRzKHByZXZpZXcoKS5pbmRleCkubXNnc30gZW50cmllc2B9PC90ZXh0PlxuICAgICAgICAgICAgICB7c3RhdHMocHJldmlldygpLmluZGV4KS5lZGl0cy5tYXAoKG0sIGkpID0+IChcbiAgICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgXHUyMUE5ICR7bS50aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRleHQuc2xpY2UoMCwgMjAwMCl9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBtZXNzYWdlczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmV3aW5kQWN0aW9uUGFuZWwoeyB0YXJnZXQsIG9wdGlvbnMsIGZvY3VzZWQsIG9uU3VibWl0LCBvbkJhY2sgfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+UmV3aW5kIG9wdGlvbnM8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+eyd0bzogJ308L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3RhcmdldC50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e29wdGlvbnN9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs0fVxuICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25TdWJtaXR9XG4gICAgICAgICAgb25DYW5jZWw9e29uQmFja31cbiAgICAgICAgICByZW5kZXJJdGVtPXsobywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntvLmxhYmVsfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtvLmRlc2N9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+ZW50ZXIgdG8gY29uZmlybSBcdTAwQjcgZXNjIHRvIHBpY2sgYSBkaWZmZXJlbnQgbWVzc2FnZTwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiB1c2VFc2NhcGUoZm9jdXNlZCwgb25DbG9zZSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQoKSkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXN1bWVQYW5lbCh7IHNlc3Npb25zLCBzY29wZXMsIHNjb3BlSW5kZXgsIGxvYWRpbmcsIGZvY3VzZWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwoc2Vzc2lvbnNbMF0gfHwgbnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldygpKSB7XG4gICAgICBvbkRlbGV0ZShwcmV2aWV3KCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIlJlc3VtZSBhIHNlc3Npb25cIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGVudGVyIHRvIHJlc3VtZSBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBzZXNzaW9ucy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogc2Vzc2lvbnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17c2Vzc2lvbnN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgIWxvYWRpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHNlc3Npb25zLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgcykgPT4gZnV6enlTY29yZShxLCBzLnRpdGxlKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHMpID0+IHNldFByZXZpZXcocyl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLmNvbG9yICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBzLmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cy50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhzLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS50dXJuc30gJHtwcmV2aWV3KCkudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e3ByZXZpZXcoKS5oZWFkZXIucm9vdH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRpdGxlLnNsaWNlKDAsIDUwMCl9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBzZXNzaW9uczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVtb3J5UGFuZWwoeyBtZW1vcmllcywgc2NvcGVzLCBzY29wZUluZGV4LCBmb2N1c2VkLCBvbkZvcmdldCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3JJdGVtLCBzZXRDdXJzb3JJdGVtXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbcGFuZSwgc2V0UGFuZV0gPSBjcmVhdGVTaWduYWwoJ2xpc3QnKVxuICBjb25zdCBwcmV2aWV3ID0gbWVtb3JpZXMuaW5jbHVkZXMoY3Vyc29ySXRlbSgpKSA/IGN1cnNvckl0ZW0oKSA6IG1lbW9yaWVzWzBdIHx8IG51bGxcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ3RhYicgJiYgIWV2ZW50LmN0cmwgJiYgIWV2ZW50Lm1ldGEpIHtcbiAgICAgIHNldFBhbmUoKHApID0+IChwID09PSAnbGlzdCcgPyAncHJldmlldycgOiAnbGlzdCcpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBwcmV2aWV3KSB7XG4gICAgICBvbkZvcmdldChwcmV2aWV3KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJNZW1vcnlcIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyB0YWI6IGZvY3VzIHByZXZpZXcgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgY3RybCt4IGZvcmdldCAodHdpY2UpIFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bWVtb3JpZXMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1lbW9yaWVzIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17bWVtb3JpZXN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgcGFuZSgpID09PSAnbGlzdCd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIG1lbW9yaWVzLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBgJHttLm5hbWV9ICR7bS5kZXNjcmlwdGlvbn1gKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17c2V0Q3Vyc29ySXRlbX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eygpID0+IHt9fVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e20ubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7bS5zY29wZX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3ID8gKFxuICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkICYmIHBhbmUoKSA9PT0gJ3ByZXZpZXcnfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntwcmV2aWV3LmRlc2NyaXB0aW9uIHx8ICdubyBkZXNjcmlwdGlvbid9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCB9fT57cHJldmlldy5ib2R5fTwvdGV4dD5cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWVtb3JpZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVmZm9ydFBhbmVsKHsgbGV2ZWxzLCBjdXJyZW50LCBkZWZhdWx0TGV2ZWwsIGZvY3VzZWQsIG9uUGljaywgb25QaWNrRGVmYXVsdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgaXRlbXMgPSBsZXZlbHNcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnKSB7XG4gICAgICBvblBpY2tEZWZhdWx0KGl0ZW1zW2N1cnNvcigpXSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGxhYmVsID0gKGwpID0+IChsLmtleSA9PT0gbnVsbCA/ICdkZWZhdWx0JyA6IGwua2V5KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJUaGlua2luZyBlZmZvcnRcIiBoaW50PVwiai9rIHRvIG1vdmUgXHUwMEI3IGVudGVyOiB0aGlzIHNlc3Npb24gXHUwMEI3IGN0cmwrczogc2V0IGFzIGRlZmF1bHQgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIHNlbGVjdGVkPXtjdXJzb3IoKX1cbiAgICAgICAgICBvblNlbGVjdD17c2V0Q3Vyc29yfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsobCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2xhYmVsKGwpLnBhZEVuZChNYXRoLm1heCgxMCwgbGFiZWwobCkubGVuZ3RoICsgMSkpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntsLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAge2wua2V5ID09PSBkZWZhdWx0TGV2ZWwgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUGFuZWwoeyB0aGVtZXMsIHByZWYsIGZvY3VzZWQsIG9uUGljaywgb25QcmV2aWV3LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbChNYXRoLm1heCgwLCB0aGVtZXMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gcHJlZikpKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJUaGVtZVwiIGhpbnQ9XCJqL2sgdG8gbW92ZSBhbmQgcHJldmlldyBcdTAwQjcgZW50ZXIgdG8gYXBwbHkgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBpdGVtcz17dGhlbWVzfVxuICAgICAgICAgIHNlbGVjdGVkPXtjdXJzb3IoKX1cbiAgICAgICAgICBvblNlbGVjdD17KGkpID0+IHtcbiAgICAgICAgICAgIHNldEN1cnNvcihpKVxuICAgICAgICAgICAgb25QcmV2aWV3KHRoZW1lc1tpXSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsodCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e3Qua2V5LnBhZEVuZChNYXRoLm1heCgxMCwgdC5rZXkubGVuZ3RoICsgMSkpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pnt0LmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7dC5rZXkgPT09IHByZWYgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEluZm9MaXN0UGFuZWwoeyB0aXRsZSwgcm93cywgZm9jdXNlZCwgb25DbG9zZSB9KSB7XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7cm93cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vdGhpbmcgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICB7cm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IGtleT17YCR7cm93Lm5hbWV9LSR7aX1gfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiBpID09PSAwID8gMCA6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57cm93Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAge3Jvdy5ub3RlICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57cm93Lm5vdGV9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e3Jvdy5kZXNjIHx8ICdubyBkZXNjcmlwdGlvbid9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQcm9qZWN0UGFuZWwoeyBwcm9qZWN0cywgbG9hZGluZywgZm9jdXNlZCwgb25QaWNrLCBvbkRlbGV0ZSwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChwcm9qZWN0c1swXSB8fCBudWxsKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBwcmV2aWV3KCkpIHtcbiAgICAgIG9uRGVsZXRlKHByZXZpZXcoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTd2l0Y2ggcHJvamVjdFwiIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdG8ganVtcCB0byBpdHMgbGFzdCBzZXNzaW9uIFx1MDBCNyBjdHJsK3ggZGVsZXRlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBwcm9qZWN0cy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogcHJvamVjdHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIGtub3duIHByb2plY3RzIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e3Byb2plY3RzfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmICFsb2FkaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9qZWN0cy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC5wYXRoKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmxhdGVzdC5jb2xvciAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogcC5sYXRlc3QuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3AuY3VycmVudCA/ICdjdXJyZW50IFx1MDBCNyAnIDogJyd9JHt0aW1lQWdvKHAubGF0ZXN0LmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntwcmV2aWV3KCkucGF0aH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7cHJldmlldygpLmNvdW50fSAke3ByZXZpZXcoKS5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IFx1MDBCNyAke3RpbWVBZ28ocHJldmlldygpLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YGxhc3Q6ICR7cHJldmlldygpLmxhdGVzdC50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX1gfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcHJvamVjdHM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNoZWxsc1BhbmVsKHsgdmVyc2lvbiwgc2hlbGxzLCByZWFkT3V0cHV0LCBmb2N1c2VkLCBvbktpbGwsIG9uRGlzbWlzcywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFt2aWV3aW5nLCBzZXRWaWV3aW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgKCkgPT4gKHZpZXdpbmcoKSA/IHNldFZpZXdpbmcobnVsbCkgOiBvbkNsb3NlKCkpKVxuICB2b2lkIHZlcnNpb25cblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHNoZWxsc1tNYXRoLm1pbihpbmRleCgpLCBzaGVsbHMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQgfHwgdmlld2luZygpKSByZXR1cm5cbiAgICBjb25zdCBzID0gc2VsZWN0ZWQoKVxuICAgIGlmIChzICYmIGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIGlmIChzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSBvbktpbGwocylcbiAgICAgIGVsc2Ugb25EaXNtaXNzKHMpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCB1cHRpbWUgPSAocykgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKCgocy5lbmRlZEF0IHx8IERhdGUubm93KCkpIC0gcy5zdGFydGVkQXQpIC8gMTAwMClcbiAgICByZXR1cm4gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tJHtzZWNzICUgNjB9c2BcbiAgfVxuXG4gIGlmICh2aWV3aW5nKCkpIHtcbiAgICBjb25zdCBvdXQgPSByZWFkT3V0cHV0KHZpZXdpbmcoKSlcbiAgICBpZiAoIW91dCkge1xuICAgICAgc2V0Vmlld2luZyhudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lcyA9IG91dC5vdXRwdXQgPyBvdXQub3V0cHV0LnNwbGl0KCdcXG4nKSA6IFtdXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8UGFuZWxGcmFtZVxuICAgICAgICAgIHRpdGxlPXtgc2hlbGwgJHtvdXQuaWR9IFx1MDBCNyAke291dC5jb21tYW5kLnNsaWNlKDAsIDYwKX1gfVxuICAgICAgICAgIGhpbnQ9e2Ake291dC5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdydW5uaW5nJyA6IGBleGl0ZWQgXHUwMEI3IGNvZGUgJHtvdXQuZXhpdENvZGV9YH0gXHUwMEI3ICR7b3V0LnRvdGFsTGluZXN9IGxpbmVzIFx1MDBCNyBqL2sgc2Nyb2xsIFx1MDBCNyBlc2MgYmFja2B9XG4gICAgICAgID5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE2LCBtYXJnaW5Ub3A6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gb3V0cHV0IHlldDwvdGV4dD5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsT2Zmc2V0PXsxZTl9IG9uU2Nyb2xsPXsoKSA9PiB7fX0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICAgIHtsaW5lcy5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L1BhbmVsRnJhbWU+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNoZWxsc1wiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdmlldyBvdXRwdXQgXHUwMEI3IGN0cmwreCBraWxsIG9yIGRpc21pc3MgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7c2hlbGxzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gYmFja2dyb3VuZCBzaGVsbHMgXHUwMEI3IHRoZSBhZ2VudCBzdGFydHMgdGhlbSB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZTwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3NoZWxsc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IHNldFZpZXdpbmcocy5pZCl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogcy5zdGF0dXMgPT09ICdydW5uaW5nJyA/IGFjY2VudCgpIDogcy5leGl0Q29kZSA9PT0gMCA/IE1VVEVEIDogUkVEIH19PlxuICAgICAgICAgICAgICAgICAge3Muc3RhdHVzID09PSAncnVubmluZycgPyAnXHUyNjk5JyA6IHMuZXhpdENvZGUgPT09IDAgPyAnXHUyNzEzJyA6ICdcdTI3MTcnfVxuICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3MuaWQucGFkRW5kKE1hdGgubWF4KDMsIHMuaWQubGVuZ3RoICsgMSkpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSwgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5kZXNjcmlwdGlvbiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gRkcgOiBGR19TT0ZUIH19PntgJHtzLmRlc2NyaXB0aW9ufSAgYH08L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzLmRlc2NyaXB0aW9uID8gRkFJTlQgOiBhY3RpdmUgPyBGRyA6IEZHX1NPRlQgfX0+e3MuY29tbWFuZH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke3Muc3RhdHVzID09PSAncnVubmluZycgPyBgdXAgJHt1cHRpbWUocyl9YCA6IGBleGl0ICR7cy5leGl0Q29kZX0gXHUwMEI3ICR7dXB0aW1lKHMpfWB9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25uZWN0UGFuZWwoeyBwcm92aWRlcnMsIGZvY3VzZWQsIG9uQ29ubmVjdCwgb25EaXNjb25uZWN0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBwcm92aWRlcnNbTWF0aC5taW4oaW5kZXgoKSwgcHJvdmlkZXJzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCBwID0gc2VsZWN0ZWQoKVxuICAgIGlmIChwICYmIGV2ZW50LmtleSA9PT0gJ2QnICYmICFldmVudC5jdHJsICYmIHAuY29ubmVjdGVkKSB7XG4gICAgICBvbkRpc2Nvbm5lY3QocClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25uZWN0IGEgc3Vic2NyaXB0aW9uXCIgaGludD1cImVudGVyIHNpZ24gaW4gXHUwMEI3IGQgZGlzY29ubmVjdCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtwcm92aWRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvbkNvbm5lY3QocCl9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBwLmNvbm5lY3RlZCA/IGFjY2VudCgpIDogTVVURUQgfX0+e3AuY29ubmVjdGVkID8gJ1x1MjVBQScgOiAnXHUyNUFCJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cC5sYWJlbH0gIGB9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmNvbm5lY3RlZCA/IGBjb25uZWN0ZWQke3AuZW1haWwgPyBgIGFzICR7cC5lbWFpbH1gIDogJyd9YCA6ICdub3QgY29ubmVjdGVkJ31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gV2FrZXVwc1BhbmVsKHsgd2FrZXVwcywgZm9jdXNlZCwgb25DYW5jZWwsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdGljaywgc2V0VGlja10gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUludGVydmFsKCgpID0+IHNldFRpY2soKHQpID0+IHQgKyAxKSwgMTAwMClcbiAgdm9pZCB0aWNrKClcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHdha2V1cHNbTWF0aC5taW4oaW5kZXgoKSwgd2FrZXVwcy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgdyA9IHNlbGVjdGVkKClcbiAgICBpZiAodyAmJiBldmVudC5rZXkgPT09ICdrJyAmJiAhZXZlbnQuY3RybCkge1xuICAgICAgb25DYW5jZWwodylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGNvdW50ZG93biA9IChhdCkgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpXG4gICAgaWYgKHNlY3MgPCA2MCkgcmV0dXJuIGBpbiAke3NlY3N9c2BcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNzIC8gNjApXG4gICAgaWYgKG1pbnMgPCA2MCkgcmV0dXJuIGBpbiAke21pbnN9bSAke3NlY3MgJSA2MH1zYFxuICAgIHJldHVybiBgaW4gJHtNYXRoLmZsb29yKG1pbnMgLyA2MCl9aCAke21pbnMgJSA2MH1tYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNjaGVkdWxlZCB3YWtlLXVwc1wiIGhpbnQ9XCJlbnRlciBvciBrIGNhbmNlbCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHt3YWtldXBzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcGVuZGluZyB3YWtlLXVwcyBcdTAwQjcgdGhlIGFnZW50IHNjaGVkdWxlcyB0aGVtIHdpdGggc2NoZWR1bGVfd2FrZXVwPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17d2FrZXVwc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyh3KSA9PiBvbkNhbmNlbCh3KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHcsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgXHUyM0YwICR7dy5pZH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57Y291bnRkb3duKHcuYXQpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtuZXcgRGF0ZSh3LmF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEsIGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt3Lm5vdGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5jb25zdCBNQ1BfU1RBVFVTID0ge1xuICBjb25uZWN0ZWQ6IHsgaWNvbjogJ1x1MjVBQScsIGNvbG9yOiBhY2NlbnQoKSB9LFxuICBjb25uZWN0aW5nOiB7IGljb246ICdcdTI1Q0MnLCBjb2xvcjogJyNmYmJmMjQnIH0sXG4gIGVycm9yOiB7IGljb246ICdcdTI3MTcnLCBjb2xvcjogUkVEIH0sXG4gIGRpc2FibGVkOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogRkFJTlQgfSxcbiAgaWRsZTogeyBpY29uOiAnXHUyNUFCJywgY29sb3I6IE1VVEVEIH0sXG59XG5cbmZ1bmN0aW9uIEZvcm1GaWVsZCh7IGxhYmVsLCBhY3RpdmUsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gTWNwQWRkRm9ybSh7IGZvY3VzZWQsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2FuY2VsIH0pIHtcbiAgY29uc3QgW25hbWUsIHNldE5hbWVdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbc2NvcGUsIHNldFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgnZ2xvYmFsJylcbiAgY29uc3QgW3RyYW5zcG9ydCwgc2V0VHJhbnNwb3J0XSA9IGNyZWF0ZVNpZ25hbCgnc3RkaW8nKVxuICBjb25zdCBbdGFyZ2V0LCBzZXRUYXJnZXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbaGVhZGVycywgc2V0SGVhZGVyc10gPSBjcmVhdGVTaWduYWwoJycpXG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICduYW1lJyB9KVxuICBmbS5pdGVtKCduYW1lJylcbiAgZm0uaXRlbSgnc2NvcGUnKVxuICBmbS5pdGVtKCd0cmFuc3BvcnQnKVxuICBmbS5pdGVtKCd0YXJnZXQnKVxuICBpZiAodHJhbnNwb3J0KCkgPT09ICdodHRwJykgZm0uaXRlbSgnaGVhZGVycycpXG4gIGZtLml0ZW0oJ2FkZCcpXG4gIGZtLml0ZW0oJ2NhbmNlbCcpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DYW5jZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgaHR0cCA9IHRyYW5zcG9ydCgpID09PSAnaHR0cCdcblxuICBjb25zdCBzdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyTmFtZSA9IG5hbWUoKS50cmltKClcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldCgpLnRyaW0oKVxuICAgIGlmICghc2VydmVyTmFtZSB8fCAvXFxzLy50ZXN0KHNlcnZlck5hbWUpKSByZXR1cm4gb25JbnZhbGlkKCduYW1lIGlzIHJlcXVpcmVkIGFuZCBjYW5ub3QgY29udGFpbiBzcGFjZXMnKVxuICAgIGlmICghdmFsdWUpIHJldHVybiBvbkludmFsaWQoaHR0cCA/ICd1cmwgaXMgcmVxdWlyZWQnIDogJ2NvbW1hbmQgaXMgcmVxdWlyZWQnKVxuICAgIGlmIChodHRwICYmICEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCd1cmwgbXVzdCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8nKVxuICAgIGlmICghaHR0cCAmJiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCdhIHN0ZGlvIGNvbW1hbmQgY2Fubm90IHN0YXJ0IHdpdGggYSB1cmw7IHBpY2sgdGhlIGh0dHAgdHJhbnNwb3J0JylcbiAgICBjb25zdCBleHRyYSA9IGhlYWRlcnMoKS50cmltKClcbiAgICBvbkFkZChzZXJ2ZXJOYW1lLCBodHRwICYmIGV4dHJhID8gYCR7dmFsdWV9ICR7ZXh0cmF9YCA6IHZhbHVlLCBzY29wZSgpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwibmFtZVwiIGFjdGl2ZT17Zm0uaXMoJ25hbWUnKX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ25hbWUnKX0gcGxhY2Vob2xkZXI9XCJsaW5lYXJcIiBvbkNoYW5nZT17c2V0TmFtZX0gLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJzY29wZVwiIGFjdGl2ZT17Zm0uaXMoJ3Njb3BlJyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydnbG9iYWwnLCAncHJvamVjdCddfSBzZWxlY3RlZD17c2NvcGUoKX0gb25DaGFuZ2U9e3NldFNjb3BlfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzY29wZScpfSAvPlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwidHJhbnNwb3J0XCIgYWN0aXZlPXtmbS5pcygndHJhbnNwb3J0Jyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydzdGRpbycsICdodHRwJ119IHNlbGVjdGVkPXt0cmFuc3BvcnQoKX0gb25DaGFuZ2U9e3NldFRyYW5zcG9ydH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndHJhbnNwb3J0Jyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9e2h0dHAgPyAndXJsJyA6ICdjb21tYW5kJ30gYWN0aXZlPXtmbS5pcygndGFyZ2V0Jyl9PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndGFyZ2V0Jyl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aHR0cCA/ICdodHRwczovL21jcC5saW5lYXIuYXBwL21jcCcgOiAnbnB4IC15IEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZXJ2ZXItZmlsZXN5c3RlbSAvdG1wJ31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRUYXJnZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIHtodHRwICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cImhlYWRlcnMgXHUwMEI3IG9wdGlvbmFsXCIgYWN0aXZlPXtmbS5pcygnaGVhZGVycycpfT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2hlYWRlcnMnKX0gcGxhY2Vob2xkZXI9J0F1dGhvcml6YXRpb249XCJCZWFyZXIgLi4uXCIgWC1UZWFtPVwiY29yZVwiJyBvbkNoYW5nZT17c2V0SGVhZGVyc30gLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cImFkZFwiIG9uUHJlc3M9e3N1Ym1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnYWRkJyl9IC8+XG4gICAgICAgIDx0ZXh0PiAgPC90ZXh0PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiY2FuY2VsXCIgb25QcmVzcz17b25DYW5jZWx9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2NhbmNlbCcpfSB2YXJpYW50PVwiZGltXCIgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNY3BQYW5lbCh7IHNlcnZlcnMsIGZvY3VzZWQsIG9uVG9nZ2xlLCBvblJlY29ubmVjdCwgb25SZW1vdmUsIG9uQWRkLCBvbkludmFsaWQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbYWRkaW5nLCBzZXRBZGRpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQgJiYgIWFkZGluZygpLCAoKSA9PiAodmlld2luZygpID8gc2V0Vmlld2luZyhudWxsKSA6IG9uQ2xvc2UoKSkpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzZXJ2ZXJzW01hdGgubWluKGluZGV4KCksIHNlcnZlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcbiAgY29uc3Qgdmlld2VkID0gKCkgPT4gc2VydmVycy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHZpZXdpbmcoKSkgfHwgbnVsbFxuXG4gIGlmICh2aWV3aW5nKCkgJiYgdmlld2VkKCkpIHtcbiAgICBjb25zdCBzZXJ2ZXIgPSB2aWV3ZWQoKVxuICAgIGNvbnN0IGRlc2NyaWJlID0gKHQpID0+IHQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXlxcW1teXFxdXSpcXF1cXHMqLywgJycpLnRyaW0oKSB8fCAnbm8gZGVzY3JpcHRpb24nXG4gICAgcmV0dXJuIChcbiAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgIHRpdGxlPXtgTUNQIHNlcnZlcnMgXHUwMEI3ICR7c2VydmVyLm5hbWV9IFx1MDBCNyAke3NlcnZlci50b29scy5sZW5ndGh9ICR7c2VydmVyLnRvb2xzLmxlbmd0aCA9PT0gMSA/ICd0b29sJyA6ICd0b29scyd9YH1cbiAgICAgICAgaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgYmFjayB0byBzZXJ2ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHRvb2xzIHJlcG9ydGVkIFx1MDBCNyBpcyB0aGUgc2VydmVyIGNvbm5lY3RlZD88L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICB7c2VydmVyLnRvb2xzLm1hcCgodCwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3gga2V5PXt0Lm5hbWV9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57dC5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57ZGVzY3JpYmUodCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9QYW5lbEZyYW1lPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTUNQIHNlcnZlcnNcIlxuICAgICAgaGludD17YWRkaW5nKClcbiAgICAgICAgPyAndGFiIG1vdmVzIGJldHdlZW4gZmllbGRzIFx1MDBCNyBqL2sgKyBzcGFjZSBwaWNrcyBhIHJhZGlvIG9wdGlvbiBcdTAwQjcgZXNjIGNhbmNlbHMnXG4gICAgICAgIDogJ3NwYWNlL2VudGVyIHRvZ2dsZSBcdTAwQjcgdCB0b29scyBcdTAwQjcgciByZWNvbm5lY3QgXHUwMEI3IGEgYWRkIFx1MDBCNyBkIHJlbW92ZSBcdTAwQjcgZXNjIGNsb3NlJ31cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHthZGRpbmcoKSA/IChcbiAgICAgICAgICA8TWNwQWRkRm9ybVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG9uQWRkPXsobmFtZSwgc3BlYywgc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgb25BZGQobmFtZSwgc3BlYywgc2NvcGUpXG4gICAgICAgICAgICAgIHNldEFkZGluZyhmYWxzZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkludmFsaWQ9e29uSW52YWxpZH1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRBZGRpbmcoZmFsc2UpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBzZXJ2ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gTUNQIHNlcnZlcnMgY29uZmlndXJlZCBcdTAwQjcgcHJlc3MgYSB0byBhZGQgb25lPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2VydmVyc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IG9uVG9nZ2xlKHMubmFtZSl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IGFjdGl2ZSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ID0gTUNQX1NUQVRVU1tzLnN0YXR1c10gfHwgTUNQX1NUQVRVUy5pZGxlXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc3QuY29sb3IgfX0+e3N0Lmljb259PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLm5hbWUucGFkRW5kKE1hdGgubWF4KDE0LCBzLm5hbWUubGVuZ3RoICsgMSkpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAge3Muc2NvcGUgPT09ICdwcm9qZWN0JyAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTAwQjdwICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IFJFRCA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IHMuZXJyb3IgOiBzLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgPyBgJHtzLnRvb2xDb3VudH0gdG9vbHNgIDogcy5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YCAgJHtzLmNvbW1hbmQuc2xpY2UoMCwgNDApfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICAgIHshYWRkaW5nKCkgJiYgKFxuICAgICAgICA8TWNwS2V5c1xuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgb25LZXk9eyhrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBzZWxlY3RlZCgpXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnYScpIHNldEFkZGluZyh0cnVlKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICcgJykgb25Ub2dnbGUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdyJykgb25SZWNvbm5lY3Qocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdkJykgb25SZW1vdmUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICd0Jykgc2V0Vmlld2luZyhzLm5hbWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcEtleXMoeyBmb2N1c2VkLCBvbktleSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKFsnICcsICdhJywgJ3InLCAnZCcsICd0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgb25LZXkoZXZlbnQua2V5KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiBudWxsXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7OztBQUFBLFNBQVMsZUFBZTtBQVNqQixTQUFTLGFBQWEsTUFBTSxRQUFRLEtBQUs7QUFDOUMsUUFBTUEsUUFBTyxDQUFDO0FBQ2QsYUFBVyxLQUFLLFdBQVc7QUFDekIsVUFBTSxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyQyxRQUFJLEtBQU0sQ0FBQUEsTUFBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUk7QUFBQSxFQUNqQztBQUNBLFNBQU9BO0FBQ1Q7QUFFTyxTQUFTLFVBQVVBLE9BQU07QUFDOUIsVUFBUUEsS0FBSTtBQUNaLFNBQU8sT0FBTyxLQUFLQSxLQUFJO0FBQ3pCO0FBRU8sU0FBUyxRQUFRLFlBQVk7QUFDbEMsU0FBTyxVQUFVLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLFlBQVksQ0FBQztBQUMxRjtBQXpCQSxJQUVNO0FBRk47QUFBQTtBQUVBLElBQU0sWUFBWTtBQUFBLE1BQ2hCLEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsa0JBQWtCLG1CQUFtQixFQUFFO0FBQUEsTUFDOUUsRUFBRSxJQUFJLGFBQWEsT0FBTyxVQUFVLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtBQUFBLE1BQy9ELEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7QUFBQSxNQUN6RCxFQUFFLElBQUksT0FBTyxPQUFPLFFBQVEsS0FBSyxDQUFDLGFBQWEsRUFBRTtBQUFBLElBQ25EO0FBQUE7QUFBQTs7O0FDUE8sU0FBUyxVQUFVQyxTQUFRLE1BQU07QUFDdEMsU0FBT0EsUUFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxLQUFLO0FBQ2hEO0FBRU8sU0FBUyxhQUFhQSxTQUFRO0FBQ25DLFNBQU9BLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssS0FBSztBQUN0RDtBQUVPLFNBQVMsYUFBYUMsUUFBTyxPQUFPO0FBQ3pDLE1BQUksQ0FBQ0EsUUFBTyxTQUFTLENBQUMsTUFBTyxRQUFPO0FBQ3BDLFFBQU0sVUFBVSxNQUFNLGdCQUFnQixLQUFLQSxPQUFNLE1BQU07QUFDdkQsUUFBTSxXQUFXLE1BQU0sb0JBQW9CLEtBQUtBLE9BQU0sTUFBTTtBQUM1RCxVQUFRLFNBQVMsV0FBVztBQUM5QjtBQWJBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLFlBQVksaUJBQWlCO0FBQ3RDLFNBQVMsZUFBZTtBQUN4QixTQUFTLFNBQVMsTUFBTSxlQUFlO0FBRWhDLFNBQVMsV0FBVztBQUN6QixTQUFPLFFBQVEsSUFBSSxhQUFhLEtBQUssUUFBUSxHQUFHLE9BQU87QUFDekQ7QUFFTyxTQUFTLFdBQVcsTUFBTTtBQUMvQixTQUFPLFFBQVEsSUFBSSxFQUFFLFFBQVEsV0FBVyxHQUFHO0FBQzdDO0FBRU8sU0FBUyxnQkFBZ0IsS0FBSztBQUNuQyxNQUFJLE1BQU0sUUFBUSxHQUFHO0FBQ3JCLFFBQU0sT0FBTyxRQUFRO0FBQ3JCLFNBQU8sTUFBTTtBQUNYLFFBQUksV0FBVyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUcsUUFBTztBQUMxQyxVQUFNLFNBQVMsUUFBUSxHQUFHO0FBQzFCLFFBQUksV0FBVyxPQUFPLFFBQVEsS0FBTSxRQUFPLFFBQVEsR0FBRztBQUN0RCxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBRU8sU0FBUyxXQUFXLE1BQU07QUFDL0IsU0FBTyxLQUFLLFNBQVMsR0FBRyxZQUFZLFdBQVcsSUFBSSxDQUFDO0FBQ3REO0FBRU8sU0FBUyxZQUFZLE1BQU07QUFDaEMsU0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLFVBQVU7QUFDMUM7QUFFTyxTQUFTLG1CQUFtQixNQUFNO0FBQ3ZDLFNBQU8sS0FBSyxXQUFXLElBQUksR0FBRyxlQUFlO0FBQy9DO0FBRU8sU0FBUyxlQUFlLE1BQU07QUFDbkMsU0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLFVBQVU7QUFDMUM7QUFFTyxTQUFTLGdCQUFnQjtBQUM5QixTQUFPLEtBQUssU0FBUyxHQUFHLFVBQVU7QUFDcEM7QUFFTyxTQUFTLGtCQUFrQjtBQUNoQyxTQUFPLEtBQUssU0FBUyxHQUFHLFFBQVE7QUFDbEM7QUFFTyxTQUFTLGlCQUFpQixNQUFNO0FBQ3JDLFNBQU8sS0FBSyxNQUFNLFNBQVMsUUFBUTtBQUNyQztBQUVPLFNBQVMsbUJBQW1CO0FBQ2pDLFNBQU8sS0FBSyxTQUFTLEdBQUcsV0FBVztBQUNyQztBQUVPLFNBQVMsVUFBVSxLQUFLO0FBQzdCLFlBQVUsS0FBSyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ2xDLFNBQU87QUFDVDtBQTFEQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUE7QUFBQTtBQUFBO0FBQUEsaUNBQUMsUUFBUyxFQUFDLFFBQVMsRUFBQyx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLDJFQUEwRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxPQUFNLGFBQWMsSUFBRyxFQUFDLEdBQUUsZ0NBQStCLEVBQUMsSUFBSyxnQ0FBK0IsTUFBTyxnQ0FBK0IsYUFBYyxpRkFBZ0YsUUFBUyxnQkFBZSxZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLEVBQUMsR0FBRSxrQkFBaUIsRUFBQyxJQUFLLGtCQUFpQixNQUFPLGtCQUFpQixhQUFjLDZFQUE0RSxRQUFTLGNBQWEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxLQUFNLE1BQUssQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxPQUFNLE9BQVEsQ0FBQyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxNQUFLLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxLQUFJLEVBQUMsRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsNEVBQTJFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxHQUFFLEtBQU0sTUFBSyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssYUFBYyxFQUFDLEVBQUMsR0FBRSxvQkFBbUIsRUFBQyxJQUFLLG9CQUFtQixNQUFPLG9CQUFtQixhQUFjLHdFQUF1RSxRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLE1BQUssYUFBYyxJQUFHLEVBQUMsR0FBRSxrQkFBaUIsRUFBQyxJQUFLLGtCQUFpQixNQUFPLGtCQUFpQixhQUFjLDhFQUE2RSxRQUFTLFNBQVEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsTUFBSyxPQUFRLEVBQUMsU0FBVSxRQUFPLFFBQVMsTUFBSyxFQUFDLEdBQUUsb0JBQW1CLEVBQUMsSUFBSyxvQkFBbUIsTUFBTyxvQkFBbUIsYUFBYyw4RUFBNkUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxLQUFJLEdBQUUsUUFBUyxjQUFhLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsTUFBSyxFQUFDLEdBQUUsd0JBQXVCLEVBQUMsSUFBSyx3QkFBdUIsTUFBTyx3QkFBdUIsYUFBYyxxRkFBb0YsUUFBUyxVQUFTLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEVBQUMsRUFBQyxHQUFFLHNDQUFxQyxFQUFDLElBQUssc0NBQXFDLE1BQU8sdUNBQXNDLGFBQWMsZ0ZBQStFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSw0QkFBMkIsRUFBQyxJQUFLLDRCQUEyQixNQUFPLDRCQUEyQixhQUFjLDJFQUEwRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxTQUFRLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksS0FBTSxNQUFLLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsTUFBSyxFQUFDLEdBQUUsOEJBQTZCLEVBQUMsSUFBSyw4QkFBNkIsTUFBTyxtQkFBa0IsYUFBYywrRUFBOEUsUUFBUyxjQUFhLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFFBQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sZUFBYyxhQUFjLHVGQUFzRixRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU0sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLHNFQUFxRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxTQUFRLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksS0FBTSxNQUFLLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsTUFBSyxhQUFjLElBQUcsRUFBQyxHQUFFLDZCQUE0QixFQUFDLElBQUssNkJBQTRCLE1BQU8sNkJBQTRCLGFBQWMsa0dBQWlHLFFBQVMsVUFBUyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLE9BQU8sR0FBRSxRQUFTLENBQUMsT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFFBQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksRUFBQyxHQUFFLGtDQUFpQyxFQUFDLElBQUssa0NBQWlDLE1BQU8saUJBQWdCLGFBQWMsa0ZBQWlGLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFNLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLEVBQUMsR0FBRSwwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLDBCQUF5QixhQUFjLGlGQUFnRixRQUFTLGNBQWEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsc0JBQXFCLEVBQUMsSUFBSyxzQkFBcUIsTUFBTyxzQkFBcUIsYUFBYywrRUFBOEUsUUFBUyxTQUFRLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE1BQUssT0FBUSxFQUFDLFNBQVUsUUFBTyxRQUFTLE1BQUssRUFBQyxHQUFFLHdCQUF1QixFQUFDLElBQUssd0JBQXVCLE1BQU8sd0JBQXVCLGFBQWMsc0ZBQXFGLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMsc0ZBQXFGLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsTUFBSyxhQUFjLEVBQUMsRUFBQyxHQUFFLDhCQUE2QixFQUFDLElBQUssOEJBQTZCLE1BQU8sOEJBQTZCLGFBQWMsaUZBQWdGLFFBQVMsZ0JBQWUsWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxPQUFPLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxFQUFDLEdBQUUsdUJBQXNCLEVBQUMsSUFBSyx1QkFBc0IsTUFBTyx1QkFBc0IsYUFBYyx3RUFBdUUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxTQUFRLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEdBQUUsS0FBTSxNQUFLLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsT0FBTSxhQUFjLEVBQUMsRUFBQyxHQUFFLGlDQUFnQyxFQUFDLElBQUssaUNBQWdDLE1BQU8saUNBQWdDLGFBQWMsbUVBQWtFLFFBQVMscUJBQW9CLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxPQUFNLGFBQWMsSUFBRyxFQUFDLEdBQUUseUJBQXdCLEVBQUMsSUFBSyx5QkFBd0IsTUFBTyx5QkFBd0IsYUFBYyxtRUFBa0UsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsS0FBSSxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxPQUFNLFFBQVMsSUFBRyxFQUFDLEVBQUMsRUFBQyxHQUFFLFdBQVksRUFBQyxRQUFTLEVBQUMsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyw0QkFBMkIsYUFBYyw2RUFBNEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsS0FBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLDZCQUE0QixFQUFDLElBQUssNkJBQTRCLE1BQU8sb0JBQW1CLGFBQWMsdUZBQXNGLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsS0FBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLDRCQUEyQixFQUFDLElBQUssNEJBQTJCLE1BQU8sbUJBQWtCLGFBQWMsNkVBQTRFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsUUFBUyxjQUFhLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLE1BQUssRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8sOEJBQTZCLGFBQWMsaUZBQWdGLFFBQVMsaUJBQWdCLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSxtQkFBa0IsRUFBQyxJQUFLLG1CQUFrQixNQUFPLG1CQUFrQixhQUFjLDJFQUEwRSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsS0FBSSxZQUFhLEdBQUUsYUFBYyxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxPQUFRLE9BQU0sR0FBRSxTQUFVLEVBQUMsa0JBQWlCLHVCQUFzQixFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyxtQkFBa0IsYUFBYyxnRkFBK0UsUUFBUyxpQkFBZ0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sU0FBUSxHQUFFLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxTQUFRLEtBQUssRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLElBQUcsRUFBQyxHQUFFLDRCQUEyQixFQUFDLElBQUssNEJBQTJCLE1BQU8sbUJBQWtCLGFBQWMsNkVBQTRFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSxtQkFBa0IsRUFBQyxJQUFLLG1CQUFrQixNQUFPLG1CQUFrQixhQUFjLG1GQUFrRixRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxPQUFRLE9BQU0sR0FBRSxTQUFVLEVBQUMsa0JBQWlCLHVCQUFzQixFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyw0QkFBMkIsYUFBYyw2RUFBNEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsTUFBSyxFQUFDLEdBQUUsa0JBQWlCLEVBQUMsSUFBSyxrQkFBaUIsTUFBTyxrQkFBaUIsYUFBYywrRUFBOEUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxTQUFRLEtBQUssRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxFQUFDLEdBQUUsb0JBQW1CLEVBQUMsSUFBSyxvQkFBbUIsTUFBTyw2QkFBNEIsYUFBYyw4RUFBNkUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyxtQkFBa0IsYUFBYywrRUFBOEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxRQUFPLEtBQUssRUFBQyxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsT0FBUSxPQUFNLEdBQUUsU0FBVSxFQUFDLGtCQUFpQix1QkFBc0IsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLDhCQUE2QixFQUFDLElBQUssOEJBQTZCLE1BQU8scUJBQW9CLGFBQWMsaUZBQWdGLFFBQVMsaUJBQWdCLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLHFCQUFvQixhQUFjLHFGQUFvRixRQUFTLGlCQUFnQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxLQUFLLEVBQUMsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxFQUFDLEVBQUMsR0FBRSxRQUFTLEVBQUMsUUFBUyxFQUFDLElBQUssRUFBQyxJQUFLLE1BQUssTUFBTyxNQUFLLGFBQWMsK0VBQThFLFFBQVMsS0FBSSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsR0FBRSwwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLDBCQUF5QixhQUFjLHFGQUFvRixRQUFTLGtCQUFpQixZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsS0FBSSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxFQUFDLEVBQUMsR0FBRSxlQUFjLEVBQUMsSUFBSyxlQUFjLE1BQU8sZUFBYyxhQUFjLDhFQUE2RSxRQUFTLFdBQVUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixPQUFNLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsRUFBQyxHQUFFLFdBQVUsRUFBQyxJQUFLLFdBQVUsTUFBTyxXQUFVLGFBQWMsdUZBQXNGLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsR0FBRSxLQUFNLEVBQUMsVUFBVyxFQUFDLE1BQU8sRUFBQyxXQUFZLEVBQUMsTUFBTyxNQUFLLEVBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLE1BQUssT0FBUSxDQUFDLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxNQUFLLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9B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QUFnQjtBQUFBLEVBQUc7QUFBQSxFQUMvQyxnQkFBZ0IsQ0FBQyxPQUFPO0FBQUUsa0JBQWM7QUFBQSxFQUFHO0FBQUEsRUFDM0MsU0FBUztBQUNYO0FBRUEsSUFBTSxNQUFNLE1BQU0sTUFBTSxnQkFBQUgsS0FBQyxPQUFJLE1BQVksR0FBSSxFQUFFLE9BQU8sYUFBVSxLQUFLLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ3JHLEtBQUssV0FBVyxJQUFJO0FBQ3BCLEtBQUssSUFBSSxXQUFXOyIsCiAgIm5hbWVzIjogWyJrZXlzIiwgIm1vZGVscyIsICJtb2RlbCIsICJqb2luIiwgInByb3ZpZGVycyIsICJjYWNoZWQiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNhY2hlRmlsZSIsICJjYWNoZWQiLCAiVFRMIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNvbmZpZyIsICJleGlzdHNTeW5jIiwgImhvbWVkaXIiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAiam9pbiIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiY29uZmlnIiwgInNjb3BlIiwgInBlbmRpbmciLCAicmVnaXN0cnkiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJzY2FuRGlyIiwgInNjb3BlIiwgImhvbWVkaXIiLCAiY29uZmlnIiwgInNoZWxscyIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgInVubGluayIsICJqb2luIiwgInNjb3BlIiwgInBhcnNlQXJncyIsICJjYWxsIiwgInJlYWRGaWxlIiwgInJlYWRGaWxlIiwgInJlc29sdmUiLCAiTUFYX0xJTkVTIiwgIm1rZGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJkaXJuYW1lIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgInJlc29sdmUiLCAic2hlbGxzIiwgInJlc29sdmUiLCAiZXhlY0ZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgIk1BWF9SRVNVTFRTIiwgInNoZWxscyIsICJ3YWtldXBzIiwgInNjb3BlIiwgImV4aXN0c1N5bmMiLCAiam9pbiIsICJtb2RlbHMiLCAicHJvdmlkZXJzIiwgImNoYXRncHQiLCAiY2F0YWxvZ0RhdGEiLCAiY29kZXhDcmVkcyIsICJjb25maWciLCAibW9kZWwiLCAiYm9vdCIsICJzaGVsbHMiLCAicmVhZEZpbGVTeW5jIiwgInJlc29sdmUiLCAidGhlbWUiLCAid2FrZXVwcyIsICJleGlzdHNTeW5jIiwgIndyaXRlRmlsZSIsICJob21lZGlyIiwgImpvaW4iLCAiY3JlYXRlU2lnbmFsIiwgIk1lbnUiLCAiU2Nyb2xsQm94IiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgImFwcGVuZEZpbGUiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJqb2luIiwgInNjb3BlIiwgInJlYWRkaXIiLCAic3RhdCIsICJqb2luIiwgInNjYW5EaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgInJlc29sdmUiLCAiZXhlY0ZpbGUiLCAiZmciLCAiVFRMIiwgInJlc29sdmUiLCAiY3JlYXRlU2lnbmFsIiwgImNyZWF0ZVNpZ25hbCIsICJ0aGVtZSIsICJmYWlsZWQiLCAidmVyc2lvbiIsICJNYXJrZG93biIsICJqc3giLCAianN4cyIsICJNYXJrZG93biIsICJjcmVhdGVTaWduYWwiLCAiU2Nyb2xsQm94IiwgInVzZUlucHV0IiwgImpzeCIsICJqc3hzIiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAidXNlSW5wdXQiLCAiU2Nyb2xsQm94IiwgInZlcnNpb24iLCAic2hlbGxzIiwgInByb3ZpZGVycyIsICJ3YWtldXBzIiwgInNjb3BlIiwgImpzeCIsICJqc3hzIiwgImJvb3QiLCAidmVyc2lvbiIsICJtb2RlbHMiLCAiY3JlYXRlU2lnbmFsIiwgIm1vZGVsIiwgImRlZmF1bHRNb2RlbCIsICJpdGVtcyIsICJ1c2FnZSIsICJqb2luIiwgIndyaXRlRmlsZSIsICJob21lZGlyIiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgImV4aXN0c1N5bmMiLCAiU2Nyb2xsQm94IiwgIk1lbnUiLCAic2NvcGUiLCAianN4IiwgInJlYWRGaWxlU3luYyIsICJjb25uZWN0T3BlbkFJIiwgInJ1bkhlYWRsZXNzIl0KfQo=
|