pkg-pr-new 0.0.57 → 0.0.59
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/index.js +19 -4
- package/environments.ts +2 -0
- package/index.ts +14 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3107,7 +3107,7 @@ import { writePackageJSON } from "pkg-types";
|
|
|
3107
3107
|
// package.json
|
|
3108
3108
|
var package_default = {
|
|
3109
3109
|
name: "pkg-pr-new",
|
|
3110
|
-
version: "0.0.
|
|
3110
|
+
version: "0.0.59",
|
|
3111
3111
|
description: "",
|
|
3112
3112
|
main: "index.js",
|
|
3113
3113
|
type: "module",
|
|
@@ -3300,7 +3300,8 @@ var main = defineCommand({
|
|
|
3300
3300
|
GITHUB_REPOSITORY,
|
|
3301
3301
|
GITHUB_RUN_ID,
|
|
3302
3302
|
GITHUB_RUN_ATTEMPT,
|
|
3303
|
-
GITHUB_ACTOR_ID
|
|
3303
|
+
GITHUB_ACTOR_ID,
|
|
3304
|
+
GITHUB_OUTPUT
|
|
3304
3305
|
} = process.env;
|
|
3305
3306
|
const [owner, repo] = GITHUB_REPOSITORY.split("/");
|
|
3306
3307
|
const metadata = {
|
|
@@ -3324,6 +3325,7 @@ var main = defineCommand({
|
|
|
3324
3325
|
process.exit(1);
|
|
3325
3326
|
}
|
|
3326
3327
|
const { sha } = await checkResponse.json();
|
|
3328
|
+
const formattedSha = isCompact ? abbreviateCommitHash(sha) : sha;
|
|
3327
3329
|
const deps = /* @__PURE__ */ new Map();
|
|
3328
3330
|
const realDeps = isPeerDepsEnabled ? /* @__PURE__ */ new Map() : null;
|
|
3329
3331
|
const printJson = typeof args.json === "boolean";
|
|
@@ -3348,7 +3350,6 @@ var main = defineCommand({
|
|
|
3348
3350
|
if (isCompact) {
|
|
3349
3351
|
await verifyCompactMode(pJson.name);
|
|
3350
3352
|
}
|
|
3351
|
-
const formattedSha = isCompact ? abbreviateCommitHash(sha) : sha;
|
|
3352
3353
|
const longDepUrl = new URL(
|
|
3353
3354
|
`/${owner}/${repo}/${pJson.name}@${formattedSha}`,
|
|
3354
3355
|
apiUrl
|
|
@@ -3612,6 +3613,20 @@ var main = defineCommand({
|
|
|
3612
3613
|
await fs.writeFile(jsonFilePath, output);
|
|
3613
3614
|
console.warn(`metadata written to ${jsonFilePath}`);
|
|
3614
3615
|
}
|
|
3616
|
+
await fs.appendFile(GITHUB_OUTPUT, `sha=${formattedSha}
|
|
3617
|
+
`, "utf8");
|
|
3618
|
+
await fs.appendFile(
|
|
3619
|
+
GITHUB_OUTPUT,
|
|
3620
|
+
`urls=${outputMetadata.packages.map((pkg) => pkg.url).join(" ")}
|
|
3621
|
+
`,
|
|
3622
|
+
"utf8"
|
|
3623
|
+
);
|
|
3624
|
+
await fs.appendFile(
|
|
3625
|
+
GITHUB_OUTPUT,
|
|
3626
|
+
`packages=${outputMetadata.packages.map((pkg) => `${pkg.name}@${pkg.url}`).join(" ")}
|
|
3627
|
+
`,
|
|
3628
|
+
"utf8"
|
|
3629
|
+
);
|
|
3615
3630
|
}
|
|
3616
3631
|
};
|
|
3617
3632
|
},
|
|
@@ -3721,4 +3736,4 @@ function parsePackageJson(contents) {
|
|
|
3721
3736
|
return null;
|
|
3722
3737
|
}
|
|
3723
3738
|
}
|
|
3724
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNzNUZkdEhELm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNCaTZObTlzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMy4xL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzIiwgIi4uL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9vaGFzaEAxLjEuNC9ub2RlX21vZHVsZXMvb2hhc2gvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC91dGlscy5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NpdHR5QDAuMS42L25vZGVfbW9kdWxlcy9jaXR0eS9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QkMSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGlmIChwcm90b3R5cGUgIT09IG51bGwgJiYgcHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgTW9kdWxlXVwiO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzUGxhaW5PYmplY3QkMShkZWZhdWx0cykpIHtcbiAgICByZXR1cm4gX2RlZnUoYmFzZU9iamVjdCwge30sIG5hbWVzcGFjZSwgbWVyZ2VyKTtcbiAgfVxuICBjb25zdCBvYmplY3QgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cyk7XG4gIGZvciAoY29uc3Qga2V5IGluIGJhc2VPYmplY3QpIHtcbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBiYXNlT2JqZWN0W2tleV07XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAobWVyZ2VyICYmIG1lcmdlcihvYmplY3QsIGtleSwgdmFsdWUsIG5hbWVzcGFjZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gWy4uLnZhbHVlLCAuLi5vYmplY3Rba2V5XV07XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0JDEodmFsdWUpICYmIGlzUGxhaW5PYmplY3QkMShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIG9wdGlvbnM7XG4gIF9sYXN0TG9nO1xuICBfbW9ja0ZuO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb25zb2xhIHdpdGggc3BlY2lmaWVkIG9wdGlvbnMgb3IgZGVmYXVsdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IFtvcHRpb25zPXt9XSAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0eXBlcyA9IG9wdGlvbnMudHlwZXMgfHwgTG9nVHlwZXM7XG4gICAgdGhpcy5vcHRpb25zID0gZGVmdShcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgZGVmYXVsdHM6IHsgLi4ub3B0aW9ucy5kZWZhdWx0cyB9LFxuICAgICAgICBsZXZlbDogX25vcm1hbGl6ZUxvZ0xldmVsKG9wdGlvbnMubGV2ZWwsIHR5cGVzKSxcbiAgICAgICAgcmVwb3J0ZXJzOiBbLi4ub3B0aW9ucy5yZXBvcnRlcnMgfHwgW11dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlczogTG9nVHlwZXMsXG4gICAgICAgIHRocm90dGxlOiAxZTMsXG4gICAgICAgIHRocm90dGxlTWluOiA1LFxuICAgICAgICBmb3JtYXRPcHRpb25zOiB7XG4gICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xvcnM6IGZhbHNlLFxuICAgICAgICAgIGNvbXBhY3Q6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHR5cGVzKSB7XG4gICAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi50eXBlc1t0eXBlXVxuICAgICAgfTtcbiAgICAgIHRoaXNbdHlwZV0gPSB0aGlzLl93cmFwTG9nRm4oZGVmYXVsdHMpO1xuICAgICAgdGhpc1t0eXBlXS5yYXcgPSB0aGlzLl93cmFwTG9nRm4oXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm1vY2tGbikge1xuICAgICAgdGhpcy5tb2NrVHlwZXMoKTtcbiAgICB9XG4gICAgdGhpcy5fbGFzdExvZyA9IHt9O1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGxvZyBsZXZlbCBvZiB0aGUgQ29uc29sYSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGN1cnJlbnQgbG9nIGxldmVsLlxuICAgKi9cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbmltdW0gbG9nIGxldmVsIHRoYXQgd2lsbCBiZSBvdXRwdXQgYnkgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwgLSBUaGUgbmV3IGxvZyBsZXZlbCB0byBzZXQuXG4gICAqL1xuICBzZXQgbGV2ZWwobGV2ZWwpIHtcbiAgICB0aGlzLm9wdGlvbnMubGV2ZWwgPSBfbm9ybWFsaXplTG9nTGV2ZWwoXG4gICAgICBsZXZlbCxcbiAgICAgIHRoaXMub3B0aW9ucy50eXBlcyxcbiAgICAgIHRoaXMub3B0aW9ucy5sZXZlbFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcHJvbXB0IHRvIHRoZSB1c2VyIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZS5cbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgYHByb21wdGAgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIHByb21wdC5cbiAgICogQHBhcmFtIHtUfSBbb3B0c10gLSBPcHRpb25hbCBvcHRpb25zIGZvciB0aGUgcHJvbXB0LiBTZWUge0BsaW5rIFByb21wdE9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7cHJvbWlzZTxUPn0gQSBwcm9taXNlIHRoYXQgaW5mZXIgd2l0aCB0aGUgcHJvbXB0IG9wdGlvbnMuIFNlZSB7QGxpbmsgUHJvbXB0T3B0aW9uc30uXG4gICAqL1xuICBwcm9tcHQobWVzc2FnZSwgb3B0cykge1xuICAgIGlmICghdGhpcy5vcHRpb25zLnByb21wdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicHJvbXB0IGlzIG5vdCBzdXBwb3J0ZWQhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByb21wdChtZXNzYWdlLCBvcHRzKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBDb25zb2xhLCBpbmhlcml0aW5nIG9wdGlvbnMgZnJvbSB0aGUgY3VycmVudCBpbnN0YW5jZSwgd2l0aCBwb3NzaWJsZSBvdmVycmlkZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IG9wdGlvbnMgLSBPcHRpb25hbCBvdmVycmlkZXMgZm9yIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICBjcmVhdGUob3B0aW9ucykge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENvbnNvbGEoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICAgIGlmICh0aGlzLl9tb2NrRm4pIHtcbiAgICAgIGluc3RhbmNlLm1vY2tUeXBlcyh0aGlzLl9tb2NrRm4pO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ29uc29sYSBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVmYXVsdCBsb2cgb2JqZWN0IHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5wdXRMb2dPYmplY3R9IGRlZmF1bHRzIC0gRGVmYXVsdCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgaW4gYW55IGxvZyBmcm9tIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgSW5wdXRMb2dPYmplY3R9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENvbnNvbGEgaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCB0YWcsIHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgaW4gZXZlcnkgbG9nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZyB0byBpbmNsdWRlIGluIGVhY2ggbG9nIG9mIHRoZSBuZXcgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtDb25zb2xhSW5zdGFuY2V9IEEgbmV3IENvbnNvbGEgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYUluc3RhbmNlfS5cbiAgICovXG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9tIHJlcG9ydGVyIHRvIHRoZSBDb25zb2xhIGluc3RhbmNlLlxuICAgKiBSZXBvcnRlcnMgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggbG9nIG1lc3NhZ2UsIGRlcGVuZGluZyBvbiB0aGVpciBpbXBsZW1lbnRhdGlvbiBhbmQgbG9nIGxldmVsLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnNvbGFSZXBvcnRlcn0gcmVwb3J0ZXIgLSBUaGUgcmVwb3J0ZXIgdG8gYWRkLiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgYWRkUmVwb3J0ZXIocmVwb3J0ZXIpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnB1c2gocmVwb3J0ZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY3VzdG9tIHJlcG9ydGVyIGZyb20gdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqIElmIG5vIHJlcG9ydGVyIGlzIHNwZWNpZmllZCwgYWxsIHJlcG9ydGVycyB3aWxsIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uc29sYVJlcG9ydGVyfSByZXBvcnRlciAtIFRoZSByZXBvcnRlciB0byByZW1vdmUuIFNlZSB7QGxpbmsgQ29uc29sYVJlcG9ydGVyfS5cbiAgICogQHJldHVybnMge0NvbnNvbGF9IFRoZSBjdXJyZW50IENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZSgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCByZXBvcnRlcnMgb2YgdGhlIENvbnNvbGEgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIHJlcG9ydGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhUmVwb3J0ZXJbXX0gcmVwb3J0ZXJzIC0gVGhlIG5ldyByZXBvcnRlcnMgdG8gc2V0LiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgc2V0UmVwb3J0ZXJzKHJlcG9ydGVycykge1xuICAgIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMgPSBBcnJheS5pc0FycmF5KHJlcG9ydGVycykgPyByZXBvcnRlcnMgOiBbcmVwb3J0ZXJzXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB3cmFwQWxsKCkge1xuICAgIHRoaXMud3JhcENvbnNvbGUoKTtcbiAgICB0aGlzLndyYXBTdGQoKTtcbiAgfVxuICByZXN0b3JlQWxsKCkge1xuICAgIHRoaXMucmVzdG9yZUNvbnNvbGUoKTtcbiAgICB0aGlzLnJlc3RvcmVTdGQoKTtcbiAgfVxuICAvKipcbiAgICogT3ZlcnJpZGVzIGNvbnNvbGUgbWV0aG9kcyB3aXRoIENvbnNvbGEgbG9nZ2luZyBtZXRob2RzIGZvciBjb25zaXN0ZW50IGxvZ2dpbmcuXG4gICAqL1xuICB3cmFwQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoIWNvbnNvbGVbXCJfX1wiICsgdHlwZV0pIHtcbiAgICAgICAgY29uc29sZVtcIl9fXCIgKyB0eXBlXSA9IGNvbnNvbGVbdHlwZV07XG4gICAgICB9XG4gICAgICBjb25zb2xlW3R5cGVdID0gdGhpc1t0eXBlXS5yYXc7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29uc29sZSBtZXRob2RzLCByZW1vdmluZyBDb25zb2xhIG92ZXJyaWRlcy5cbiAgICovXG4gIHJlc3RvcmVDb25zb2xlKCkge1xuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIGlmIChjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbdHlwZV0gPSBjb25zb2xlW1wiX19cIiArIHR5cGVdO1xuICAgICAgICBkZWxldGUgY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMgdG8gcmVkaXJlY3QgdGhlbSB0aHJvdWdoIENvbnNvbGEuXG4gICAqL1xuICB3cmFwU3RkKCkge1xuICAgIHRoaXMuX3dyYXBTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCwgXCJsb2dcIik7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyLCBcImxvZ1wiKTtcbiAgfVxuICBfd3JhcFN0cmVhbShzdHJlYW0sIHR5cGUpIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0uX193cml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICB9XG4gICAgc3RyZWFtLndyaXRlID0gKGRhdGEpID0+IHtcbiAgICAgIHRoaXNbdHlwZV0ucmF3KFN0cmluZyhkYXRhKS50cmltKCkpO1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMsIHJlbW92aW5nIHRoZSBDb25zb2xhIHJlZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVzdG9yZVN0ZCgpIHtcbiAgICB0aGlzLl9yZXN0b3JlU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRvdXQpO1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZGVycik7XG4gIH1cbiAgX3Jlc3RvcmVTdHJlYW0oc3RyZWFtKSB7XG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0ud3JpdGUgPSBzdHJlYW0uX193cml0ZTtcbiAgICAgIGRlbGV0ZSBzdHJlYW0uX193cml0ZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhdXNlcyBsb2dnaW5nLCBxdWV1ZXMgaW5jb21pbmcgbG9ncyB1bnRpbCByZXN1bWVkLlxuICAgKi9cbiAgcGF1c2VMb2dzKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIFJlc3VtZXMgbG9nZ2luZywgcHJvY2Vzc2luZyBhbnkgcXVldWVkIGxvZ3MuXG4gICAqL1xuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGxvZ2dpbmcgbWV0aG9kcyB3aXRoIG1vY2tzIGlmIGEgbW9jayBmdW5jdGlvbiBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhT3B0aW9uc1tcIm1vY2tGblwiXX0gbW9ja0ZuIC0gVGhlIGZ1bmN0aW9uIHRvIHVzZSBmb3IgbW9ja2luZyBsb2dnaW5nIG1ldGhvZHMuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnNbXCJtb2NrRm5cIl19LlxuICAgKi9cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBpbmRlbnQgKyBwYXJzZVN0YWNrKHN0YWNrKS5qb2luKGBcbiR7aW5kZW50fWApO1xuICB9XG4gIGZvcm1hdEVycm9yKGVyciwgb3B0cykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/PyBmb3JtYXRXaXRoT3B0aW9ucyhvcHRzLCBlcnIpO1xuICAgIGNvbnN0IHN0YWNrID0gZXJyLnN0YWNrID8gdGhpcy5mb3JtYXRTdGFjayhlcnIuc3RhY2ssIG9wdHMpIDogXCJcIjtcbiAgICBjb25zdCBsZXZlbCA9IG9wdHM/LmVycm9yTGV2ZWwgfHwgMDtcbiAgICBjb25zdCBjYXVzZWRQcmVmaXggPSBsZXZlbCA+IDAgPyBgJHtcIiAgXCIucmVwZWF0KGxldmVsKX1bY2F1c2VdOiBgIDogXCJcIjtcbiAgICBjb25zdCBjYXVzZWRFcnJvciA9IGVyci5jYXVzZSA/IFwiXFxuXFxuXCIgKyB0aGlzLmZvcm1hdEVycm9yKGVyci5jYXVzZSwgeyAuLi5vcHRzLCBlcnJvckxldmVsOiBsZXZlbCArIDEgfSkgOiBcIlwiO1xuICAgIHJldHVybiBjYXVzZWRQcmVmaXggKyBtZXNzYWdlICsgXCJcXG5cIiArIHN0YWNrICsgY2F1c2VkRXJyb3I7XG4gIH1cbiAgZm9ybWF0QXJncyhhcmdzLCBvcHRzKSB7XG4gICAgY29uc3QgX2FyZ3MgPSBhcmdzLm1hcCgoYXJnKSA9PiB7XG4gICAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RXJyb3IoYXJnLCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcmc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdFdpdGhPcHRpb25zKG9wdHMsIC4uLl9hcmdzKTtcbiAgfVxuICBmb3JtYXREYXRlKGRhdGUsIG9wdHMpIHtcbiAgICByZXR1cm4gb3B0cy5kYXRlID8gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiXCI7XG4gIH1cbiAgZmlsdGVyQW5kSm9pbihhcnIpIHtcbiAgICByZXR1cm4gYXJyLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZm9ybWF0QXJncyhsb2dPYmouYXJncywgb3B0cyk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcImJveFwiKSB7XG4gICAgICByZXR1cm4gXCJcXG5cIiArIFtcbiAgICAgICAgYnJhY2tldChsb2dPYmoudGFnKSxcbiAgICAgICAgbG9nT2JqLnRpdGxlICYmIGxvZ09iai50aXRsZSxcbiAgICAgICAgLi4ubWVzc2FnZS5zcGxpdChcIlxcblwiKVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbikubWFwKChsKSA9PiBcIiA+IFwiICsgbCkuam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlckFuZEpvaW4oW1xuICAgICAgYnJhY2tldChsb2dPYmoudHlwZSksXG4gICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgbWVzc2FnZVxuICAgIF0pO1xuICB9XG4gIGxvZyhsb2dPYmosIGN0eCkge1xuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmZvcm1hdExvZ09iaihsb2dPYmosIHtcbiAgICAgIGNvbHVtbnM6IGN0eC5vcHRpb25zLnN0ZG91dC5jb2x1bW5zIHx8IDAsXG4gICAgICAuLi5jdHgub3B0aW9ucy5mb3JtYXRPcHRpb25zXG4gICAgfSk7XG4gICAgcmV0dXJuIHdyaXRlU3RyZWFtKFxuICAgICAgbGluZSArIFwiXFxuXCIsXG4gICAgICBsb2dPYmoubGV2ZWwgPCAyID8gY3R4Lm9wdGlvbnMuc3RkZXJyIHx8IHByb2Nlc3Muc3RkZXJyIDogY3R4Lm9wdGlvbnMuc3Rkb3V0IHx8IHByb2Nlc3Muc3Rkb3V0XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgeyBCYXNpY1JlcG9ydGVyIGFzIEIsIHBhcnNlU3RhY2sgYXMgcCB9O1xuIiwgImltcG9ydCAqIGFzIHR0eSBmcm9tICdub2RlOnR0eSc7XG5cbmNvbnN0IHtcbiAgZW52ID0ge30sXG4gIGFyZ3YgPSBbXSxcbiAgcGxhdGZvcm0gPSBcIlwiXG59ID0gdHlwZW9mIHByb2Nlc3MgPT09IFwidW5kZWZpbmVkXCIgPyB7fSA6IHByb2Nlc3M7XG5jb25zdCBpc0Rpc2FibGVkID0gXCJOT19DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKTtcbmNvbnN0IGlzRm9yY2VkID0gXCJGT1JDRV9DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1jb2xvclwiKTtcbmNvbnN0IGlzV2luZG93cyA9IHBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5jb25zdCBpc0R1bWJUZXJtaW5hbCA9IGVudi5URVJNID09PSBcImR1bWJcIjtcbmNvbnN0IGlzQ29tcGF0aWJsZVRlcm1pbmFsID0gdHR5ICYmIHR0eS5pc2F0dHkgJiYgdHR5LmlzYXR0eSgxKSAmJiBlbnYuVEVSTSAmJiAhaXNEdW1iVGVybWluYWw7XG5jb25zdCBpc0NJID0gXCJDSVwiIGluIGVudiAmJiAoXCJHSVRIVUJfQUNUSU9OU1wiIGluIGVudiB8fCBcIkdJVExBQl9DSVwiIGluIGVudiB8fCBcIkNJUkNMRUNJXCIgaW4gZW52KTtcbmNvbnN0IGlzQ29sb3JTdXBwb3J0ZWQgPSAhaXNEaXNhYmxlZCAmJiAoaXNGb3JjZWQgfHwgaXNXaW5kb3dzICYmICFpc0R1bWJUZXJtaW5hbCB8fCBpc0NvbXBhdGlibGVUZXJtaW5hbCB8fCBpc0NJKTtcbmZ1bmN0aW9uIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaGVhZCA9IHN0cmluZy5zbGljZSgwLCBNYXRoLm1heCgwLCBpbmRleCkpICsgcmVwbGFjZSwgdGFpbCA9IHN0cmluZy5zbGljZShNYXRoLm1heCgwLCBpbmRleCArIGNsb3NlLmxlbmd0aCkpLCBuZXh0ID0gdGFpbC5pbmRleE9mKGNsb3NlKSkge1xuICByZXR1cm4gaGVhZCArIChuZXh0IDwgMCA/IHRhaWwgOiByZXBsYWNlQ2xvc2UobmV4dCwgdGFpbCwgY2xvc2UsIHJlcGxhY2UpKTtcbn1cbmZ1bmN0aW9uIGNsZWFyQmxlZWQoaW5kZXgsIHN0cmluZywgb3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG9wZW4gKyBzdHJpbmcgKyBjbG9zZSA6IG9wZW4gKyByZXBsYWNlQ2xvc2UoaW5kZXgsIHN0cmluZywgY2xvc2UsIHJlcGxhY2UpICsgY2xvc2U7XG59XG5mdW5jdGlvbiBmaWx0ZXJFbXB0eShvcGVuLCBjbG9zZSwgcmVwbGFjZSA9IG9wZW4sIGF0ID0gb3Blbi5sZW5ndGggKyAxKSB7XG4gIHJldHVybiAoc3RyaW5nKSA9PiBzdHJpbmcgfHwgIShzdHJpbmcgPT09IFwiXCIgfHwgc3RyaW5nID09PSB2b2lkIDApID8gY2xlYXJCbGVlZChcbiAgICAoXCJcIiArIHN0cmluZykuaW5kZXhPZihjbG9zZSwgYXQpLFxuICAgIHN0cmluZyxcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICAgIHJlcGxhY2VcbiAgKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBpbml0KG9wZW4sIGNsb3NlLCByZXBsYWNlKSB7XG4gIHJldHVybiBmaWx0ZXJFbXB0eShgXFx4MUJbJHtvcGVufW1gLCBgXFx4MUJbJHtjbG9zZX1tYCwgcmVwbGFjZSk7XG59XG5jb25zdCBjb2xvckRlZnMgPSB7XG4gIHJlc2V0OiBpbml0KDAsIDApLFxuICBib2xkOiBpbml0KDEsIDIyLCBcIlxceDFCWzIybVxceDFCWzFtXCIpLFxuICBkaW06IGluaXQoMiwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMm1cIiksXG4gIGl0YWxpYzogaW5pdCgzLCAyMyksXG4gIHVuZGVybGluZTogaW5pdCg0LCAyNCksXG4gIGludmVyc2U6IGluaXQoNywgMjcpLFxuICBoaWRkZW46IGluaXQoOCwgMjgpLFxuICBzdHJpa2V0aHJvdWdoOiBpbml0KDksIDI5KSxcbiAgYmxhY2s6IGluaXQoMzAsIDM5KSxcbiAgcmVkOiBpbml0KDMxLCAzOSksXG4gIGdyZWVuOiBpbml0KDMyLCAzOSksXG4gIHllbGxvdzogaW5pdCgzMywgMzkpLFxuICBibHVlOiBpbml0KDM0LCAzOSksXG4gIG1hZ2VudGE6IGluaXQoMzUsIDM5KSxcbiAgY3lhbjogaW5pdCgzNiwgMzkpLFxuICB3aGl0ZTogaW5pdCgzNywgMzkpLFxuICBncmF5OiBpbml0KDkwLCAzOSksXG4gIGJnQmxhY2s6IGluaXQoNDAsIDQ5KSxcbiAgYmdSZWQ6IGluaXQoNDEsIDQ5KSxcbiAgYmdHcmVlbjogaW5pdCg0MiwgNDkpLFxuICBiZ1llbGxvdzogaW5pdCg0MywgNDkpLFxuICBiZ0JsdWU6IGluaXQoNDQsIDQ5KSxcbiAgYmdNYWdlbnRhOiBpbml0KDQ1LCA0OSksXG4gIGJnQ3lhbjogaW5pdCg0NiwgNDkpLFxuICBiZ1doaXRlOiBpbml0KDQ3LCA0OSksXG4gIGJsYWNrQnJpZ2h0OiBpbml0KDkwLCAzOSksXG4gIHJlZEJyaWdodDogaW5pdCg5MSwgMzkpLFxuICBncmVlbkJyaWdodDogaW5pdCg5MiwgMzkpLFxuICB5ZWxsb3dCcmlnaHQ6IGluaXQoOTMsIDM5KSxcbiAgYmx1ZUJyaWdodDogaW5pdCg5NCwgMzkpLFxuICBtYWdlbnRhQnJpZ2h0OiBpbml0KDk1LCAzOSksXG4gIGN5YW5CcmlnaHQ6IGluaXQoOTYsIDM5KSxcbiAgd2hpdGVCcmlnaHQ6IGluaXQoOTcsIDM5KSxcbiAgYmdCbGFja0JyaWdodDogaW5pdCgxMDAsIDQ5KSxcbiAgYmdSZWRCcmlnaHQ6IGluaXQoMTAxLCA0OSksXG4gIGJnR3JlZW5CcmlnaHQ6IGluaXQoMTAyLCA0OSksXG4gIGJnWWVsbG93QnJpZ2h0OiBpbml0KDEwMywgNDkpLFxuICBiZ0JsdWVCcmlnaHQ6IGluaXQoMTA0LCA0OSksXG4gIGJnTWFnZW50YUJyaWdodDogaW5pdCgxMDUsIDQ5KSxcbiAgYmdDeWFuQnJpZ2h0OiBpbml0KDEwNiwgNDkpLFxuICBiZ1doaXRlQnJpZ2h0OiBpbml0KDEwNywgNDkpXG59O1xuZnVuY3Rpb24gY3JlYXRlQ29sb3JzKHVzZUNvbG9yID0gaXNDb2xvclN1cHBvcnRlZCkge1xuICByZXR1cm4gdXNlQ29sb3IgPyBjb2xvckRlZnMgOiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoY29sb3JEZWZzKS5tYXAoKGtleSkgPT4gW2tleSwgU3RyaW5nXSkpO1xufVxuY29uc3QgY29sb3JzID0gY3JlYXRlQ29sb3JzKCk7XG5mdW5jdGlvbiBnZXRDb2xvcihjb2xvciwgZmFsbGJhY2sgPSBcInJlc2V0XCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzW2ZhbGxiYWNrXTtcbn1cbmZ1bmN0aW9uIGNvbG9yaXplKGNvbG9yLCB0ZXh0KSB7XG4gIHJldHVybiBnZXRDb2xvcihjb2xvcikodGV4dCk7XG59XG5cbmNvbnN0IGFuc2lSZWdleCA9IFtcbiAgU3RyaW5nLnJhd2BbXFx1MDAxQlxcdTAwOUJdW1tcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcZF0rKD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10qKSopP1xcdTAwMDcpYCxcbiAgU3RyaW5nLnJhd2AoPzooPzpcXGR7MSw0fSg/OjtcXGR7MCw0fSkqKT9bXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKWBcbl0uam9pbihcInxcIik7XG5mdW5jdGlvbiBzdHJpcEFuc2kodGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYW5zaVJlZ2V4LCBcImdcIiksIFwiXCIpO1xufVxuZnVuY3Rpb24gY2VudGVyQWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGNvbnN0IGZyZWVMZWZ0ID0gTWF0aC5mbG9vcihmcmVlIC8gMik7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWVMZWZ0IHx8IGkgPj0gZnJlZUxlZnQgKyBzdHIubGVuZ3RoID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVMZWZ0XTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIHJpZ2h0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWUgPyBzcGFjZSA6IHN0cltpIC0gZnJlZV07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgbGV0IF9zdHIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgX3N0ciArPSBpIDwgc3RyLmxlbmd0aCA/IHN0cltpXSA6IHNwYWNlO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gYWxpZ24oYWxpZ25tZW50LCBzdHIsIGxlbiwgc3BhY2UgPSBcIiBcIikge1xuICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgIGNhc2UgXCJsZWZ0XCI6IHtcbiAgICAgIHJldHVybiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlKTtcbiAgICB9XG4gICAgY2FzZSBcInJpZ2h0XCI6IHtcbiAgICAgIHJldHVybiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJjZW50ZXJcIjoge1xuICAgICAgcmV0dXJuIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGJveFN0eWxlUHJlc2V0cyA9IHtcbiAgc29saWQ6IHtcbiAgICB0bDogXCJcXHUyNTBDXCIsXG4gICAgdHI6IFwiXFx1MjUxMFwiLFxuICAgIGJsOiBcIlxcdTI1MTRcIixcbiAgICBicjogXCJcXHUyNTE4XCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgZG91YmxlOiB7XG4gICAgdGw6IFwiXFx1MjU1NFwiLFxuICAgIHRyOiBcIlxcdTI1NTdcIixcbiAgICBibDogXCJcXHUyNTVBXCIsXG4gICAgYnI6IFwiXFx1MjU1RFwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIGRvdWJsZVNpbmdsZToge1xuICAgIHRsOiBcIlxcdTI1NTNcIixcbiAgICB0cjogXCJcXHUyNTU2XCIsXG4gICAgYmw6IFwiXFx1MjU1OVwiLFxuICAgIGJyOiBcIlxcdTI1NUNcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIHNpbmdsZVRoaWNrOiB7XG4gICAgdGw6IFwiXFx1MjUwRlwiLFxuICAgIHRyOiBcIlxcdTI1MTNcIixcbiAgICBibDogXCJcXHUyNTE3XCIsXG4gICAgYnI6IFwiXFx1MjUxQlwiLFxuICAgIGg6IFwiXFx1MjUwMVwiLFxuICAgIHY6IFwiXFx1MjUwM1wiXG4gIH0sXG4gIHNpbmdsZURvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTJcIixcbiAgICB0cjogXCJcXHUyNTU1XCIsXG4gICAgYmw6IFwiXFx1MjU1OFwiLFxuICAgIGJyOiBcIlxcdTI1NUJcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICBzaW5nbGVEb3VibGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIHJvdW5kZWQ6IHtcbiAgICB0bDogXCJcXHUyNTZEXCIsXG4gICAgdHI6IFwiXFx1MjU2RVwiLFxuICAgIGJsOiBcIlxcdTI1NzBcIixcbiAgICBicjogXCJcXHUyNTZGXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfVxufTtcbmNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAgYm9yZGVyQ29sb3I6IFwid2hpdGVcIixcbiAgYm9yZGVyU3R5bGU6IFwicm91bmRlZFwiLFxuICB2YWxpZ246IFwiY2VudGVyXCIsXG4gIHBhZGRpbmc6IDIsXG4gIG1hcmdpbkxlZnQ6IDEsXG4gIG1hcmdpblRvcDogMSxcbiAgbWFyZ2luQm90dG9tOiAxXG59O1xuZnVuY3Rpb24gYm94KHRleHQsIF9vcHRzID0ge30pIHtcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5fb3B0cyxcbiAgICBzdHlsZToge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4uX29wdHMuc3R5bGVcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGJveExpbmVzID0gW107XG4gIGNvbnN0IF9jb2xvciA9IGdldENvbG9yKG9wdHMuc3R5bGUuYm9yZGVyQ29sb3IpO1xuICBjb25zdCBib3JkZXJTdHlsZSA9IHtcbiAgICAuLi50eXBlb2Ygb3B0cy5zdHlsZS5ib3JkZXJTdHlsZSA9PT0gXCJzdHJpbmdcIiA/IGJveFN0eWxlUHJlc2V0c1tvcHRzLnN0eWxlLmJvcmRlclN0eWxlXSB8fCBib3hTdHlsZVByZXNldHMuc29saWQgOiBvcHRzLnN0eWxlLmJvcmRlclN0eWxlXG4gIH07XG4gIGlmIChfY29sb3IpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBib3JkZXJTdHlsZSkge1xuICAgICAgYm9yZGVyU3R5bGVba2V5XSA9IF9jb2xvcihcbiAgICAgICAgYm9yZGVyU3R5bGVba2V5XVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFkZGluZ09mZnNldCA9IG9wdHMuc3R5bGUucGFkZGluZyAlIDIgPT09IDAgPyBvcHRzLnN0eWxlLnBhZGRpbmcgOiBvcHRzLnN0eWxlLnBhZGRpbmcgKyAxO1xuICBjb25zdCBoZWlnaHQgPSB0ZXh0TGluZXMubGVuZ3RoICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCguLi50ZXh0TGluZXMubWFwKChsaW5lKSA9PiBsaW5lLmxlbmd0aCkpICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGhPZmZzZXQgPSB3aWR0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IGxlZnRTcGFjZSA9IG9wdHMuc3R5bGUubWFyZ2luTGVmdCA+IDAgPyBcIiBcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5MZWZ0KSA6IFwiXCI7XG4gIGlmIChvcHRzLnN0eWxlLm1hcmdpblRvcCA+IDApIHtcbiAgICBib3hMaW5lcy5wdXNoKFwiXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luVG9wKSk7XG4gIH1cbiAgaWYgKG9wdHMudGl0bGUpIHtcbiAgICBjb25zdCB0aXRsZSA9IF9jb2xvciA/IF9jb2xvcihvcHRzLnRpdGxlKSA6IG9wdHMudGl0bGU7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHt0aXRsZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgYm94TGluZXMucHVzaChcbiAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnRsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH1cbiAgY29uc3QgdmFsaWduT2Zmc2V0ID0gb3B0cy5zdHlsZS52YWxpZ24gPT09IFwiY2VudGVyXCIgPyBNYXRoLmZsb29yKChoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoKSAvIDIpIDogb3B0cy5zdHlsZS52YWxpZ24gPT09IFwidG9wXCIgPyBoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoIC0gcGFkZGluZ09mZnNldCA6IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICBpZiAoaSA8IHZhbGlnbk9mZnNldCB8fCBpID49IHZhbGlnbk9mZnNldCArIHRleHRMaW5lcy5sZW5ndGgpIHtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtcIiBcIi5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lID0gdGV4dExpbmVzW2kgLSB2YWxpZ25PZmZzZXRdO1xuICAgICAgY29uc3QgbGVmdCA9IFwiIFwiLnJlcGVhdChwYWRkaW5nT2Zmc2V0KTtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gXCIgXCIucmVwZWF0KHdpZHRoIC0gc3RyaXBBbnNpKGxpbmUpLmxlbmd0aCk7XG4gICAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS52fSR7bGVmdH0ke2xpbmV9JHtyaWdodH0ke2JvcmRlclN0eWxlLnZ9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgYm94TGluZXMucHVzaChcbiAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS5ibH0ke2JvcmRlclN0eWxlLmgucmVwZWF0KHdpZHRoT2Zmc2V0KX0ke2JvcmRlclN0eWxlLmJyfWBcbiAgKTtcbiAgaWYgKG9wdHMuc3R5bGUubWFyZ2luQm90dG9tID4gMCkge1xuICAgIGJveExpbmVzLnB1c2goXCJcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20pKTtcbiAgfVxuICByZXR1cm4gYm94TGluZXMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IHsgYWxpZ24gYXMgYSwgYm94IGFzIGIsIGNlbnRlckFsaWduIGFzIGMsIGNvbG9ycyBhcyBkLCBjb2xvcml6ZSBhcyBlLCBnZXRDb2xvciBhcyBnLCBsZWZ0QWxpZ24gYXMgbCwgcmlnaHRBbGlnbiBhcyByLCBzdHJpcEFuc2kgYXMgcyB9O1xuIiwgImltcG9ydCB7IHN0ZGluLCBzdGRvdXQgfSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IGcgZnJvbSAnbm9kZTpyZWFkbGluZSc7XG5pbXBvcnQgeyBXcml0ZVN0cmVhbSB9IGZyb20gJ25vZGU6dHR5JztcbmltcG9ydCB7IGkgYXMgaXNVbmljb2RlU3VwcG9ydGVkIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuQ0JpNk5tOXMubWpzJztcbmltcG9ydCAnLi4vY29yZS5tanMnO1xuaW1wb3J0ICcuLi9zaGFyZWQvY29uc29sYS5DczVGZHRIRC5tanMnO1xuaW1wb3J0ICdub2RlOnV0aWwnO1xuaW1wb3J0ICdub2RlOnBhdGgnO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcyAoeCkge1xuXHRyZXR1cm4geCAmJiB4Ll9fZXNNb2R1bGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsICdkZWZhdWx0JykgPyB4WydkZWZhdWx0J10gOiB4O1xufVxuXG52YXIgc3JjO1xudmFyIGhhc1JlcXVpcmVkU3JjO1xuXG5mdW5jdGlvbiByZXF1aXJlU3JjICgpIHtcblx0aWYgKGhhc1JlcXVpcmVkU3JjKSByZXR1cm4gc3JjO1xuXHRoYXNSZXF1aXJlZFNyYyA9IDE7XG5cblx0Y29uc3QgRVNDID0gJ1xceDFCJztcblx0Y29uc3QgQ1NJID0gYCR7RVNDfVtgO1xuXHRjb25zdCBiZWVwID0gJ1xcdTAwMDcnO1xuXG5cdGNvbnN0IGN1cnNvciA9IHtcblx0ICB0byh4LCB5KSB7XG5cdCAgICBpZiAoIXkpIHJldHVybiBgJHtDU0l9JHt4ICsgMX1HYDtcblx0ICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcblx0ICB9LFxuXHQgIG1vdmUoeCwgeSkge1xuXHQgICAgbGV0IHJldCA9ICcnO1xuXG5cdCAgICBpZiAoeCA8IDApIHJldCArPSBgJHtDU0l9JHsteH1EYDtcblx0ICAgIGVsc2UgaWYgKHggPiAwKSByZXQgKz0gYCR7Q1NJfSR7eH1DYDtcblxuXHQgICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG5cdCAgICBlbHNlIGlmICh5ID4gMCkgcmV0ICs9IGAke0NTSX0ke3l9QmA7XG5cblx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QWAsXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QmAsXG5cdCAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG5cdCAgYmFja3dhcmQ6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fURgLFxuXHQgIG5leHRMaW5lOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9RWAucmVwZWF0KGNvdW50KSxcblx0ICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG5cdCAgbGVmdDogYCR7Q1NJfUdgLFxuXHQgIGhpZGU6IGAke0NTSX0/MjVsYCxcblx0ICBzaG93OiBgJHtDU0l9PzI1aGAsXG5cdCAgc2F2ZTogYCR7RVNDfTdgLFxuXHQgIHJlc3RvcmU6IGAke0VTQ304YFxuXHR9O1xuXG5cdGNvbnN0IHNjcm9sbCA9IHtcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVNgLnJlcGVhdChjb3VudCksXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcblx0fTtcblxuXHRjb25zdCBlcmFzZSA9IHtcblx0ICBzY3JlZW46IGAke0NTSX0ySmAsXG5cdCAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0xSmAucmVwZWF0KGNvdW50KSxcblx0ICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9SmAucmVwZWF0KGNvdW50KSxcblx0ICBsaW5lOiBgJHtDU0l9MktgLFxuXHQgIGxpbmVFbmQ6IGAke0NTSX1LYCxcblx0ICBsaW5lU3RhcnQ6IGAke0NTSX0xS2AsXG5cdCAgbGluZXMoY291bnQpIHtcblx0ICAgIGxldCBjbGVhciA9ICcnO1xuXHQgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuXHQgICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuXHQgICAgaWYgKGNvdW50KVxuXHQgICAgICBjbGVhciArPSBjdXJzb3IubGVmdDtcblx0ICAgIHJldHVybiBjbGVhcjtcblx0ICB9XG5cdH07XG5cblx0c3JjID0geyBjdXJzb3IsIHNjcm9sbCwgZXJhc2UsIGJlZXAgfTtcblx0cmV0dXJuIHNyYztcbn1cblxudmFyIHNyY0V4cG9ydHMgPSByZXF1aXJlU3JjKCk7XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxudmFyIGhhc1JlcXVpcmVkUGljb2NvbG9ycztcblxuZnVuY3Rpb24gcmVxdWlyZVBpY29jb2xvcnMgKCkge1xuXHRpZiAoaGFzUmVxdWlyZWRQaWNvY29sb3JzKSByZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xuXHRoYXNSZXF1aXJlZFBpY29jb2xvcnMgPSAxO1xuXHRsZXQgcCA9IHByb2Nlc3MgfHwge30sIGFyZ3YgPSBwLmFyZ3YgfHwgW10sIGVudiA9IHAuZW52IHx8IHt9O1xuXHRsZXQgaXNDb2xvclN1cHBvcnRlZCA9XG5cdFx0ISghIWVudi5OT19DT0xPUiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0XHQoISFlbnYuRk9SQ0VfQ09MT1IgfHwgYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHwgcC5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8ICgocC5zdGRvdXQgfHwge30pLmlzVFRZICYmIGVudi5URVJNICE9PSBcImR1bWJcIikgfHwgISFlbnYuQ0kpO1xuXG5cdGxldCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRcdGlucHV0ID0+IHtcblx0XHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQsIGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRcdHJldHVybiB+aW5kZXggPyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlIDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdFx0fTtcblxuXHRsZXQgcmVwbGFjZUNsb3NlID0gKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSA9PiB7XG5cdFx0bGV0IHJlc3VsdCA9IFwiXCIsIGN1cnNvciA9IDA7XG5cdFx0ZG8ge1xuXHRcdFx0cmVzdWx0ICs9IHN0cmluZy5zdWJzdHJpbmcoY3Vyc29yLCBpbmRleCkgKyByZXBsYWNlO1xuXHRcdFx0Y3Vyc29yID0gaW5kZXggKyBjbG9zZS5sZW5ndGg7XG5cdFx0XHRpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBjdXJzb3IpO1xuXHRcdH0gd2hpbGUgKH5pbmRleClcblx0XHRyZXR1cm4gcmVzdWx0ICsgc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IpXG5cdH07XG5cblx0bGV0IGNyZWF0ZUNvbG9ycyA9IChlbmFibGVkID0gaXNDb2xvclN1cHBvcnRlZCkgPT4ge1xuXHRcdGxldCBmID0gZW5hYmxlZCA/IGZvcm1hdHRlciA6ICgpID0+IFN0cmluZztcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0XHRcdHJlc2V0OiBmKFwiXFx4MWJbMG1cIiwgXCJcXHgxYlswbVwiKSxcblx0XHRcdGJvbGQ6IGYoXCJcXHgxYlsxbVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzFtXCIpLFxuXHRcdFx0ZGltOiBmKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSxcblx0XHRcdGl0YWxpYzogZihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpLFxuXHRcdFx0dW5kZXJsaW5lOiBmKFwiXFx4MWJbNG1cIiwgXCJcXHgxYlsyNG1cIiksXG5cdFx0XHRpbnZlcnNlOiBmKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIiksXG5cdFx0XHRoaWRkZW46IGYoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSxcblx0XHRcdHN0cmlrZXRocm91Z2g6IGYoXCJcXHgxYls5bVwiLCBcIlxceDFiWzI5bVwiKSxcblxuXHRcdFx0YmxhY2s6IGYoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWQ6IGYoXCJcXHgxYlszMW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbjogZihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvdzogZihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWU6IGYoXCJcXHgxYlszNG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhOiBmKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbjogZihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlOiBmKFwiXFx4MWJbMzdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Z3JheTogZihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSxcblxuXHRcdFx0YmdCbGFjazogZihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkOiBmKFwiXFx4MWJbNDFtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdHcmVlbjogZihcIlxceDFiWzQybVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnWWVsbG93OiBmKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlOiBmKFwiXFx4MWJbNDRtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdNYWdlbnRhOiBmKFwiXFx4MWJbNDVtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdDeWFuOiBmKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZTogZihcIlxceDFiWzQ3bVwiLCBcIlxceDFiWzQ5bVwiKSxcblxuXHRcdFx0YmxhY2tCcmlnaHQ6IGYoXCJcXHgxYls5MG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWRCcmlnaHQ6IGYoXCJcXHgxYls5MW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbkJyaWdodDogZihcIlxceDFiWzkybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvd0JyaWdodDogZihcIlxceDFiWzkzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWVCcmlnaHQ6IGYoXCJcXHgxYls5NG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhQnJpZ2h0OiBmKFwiXFx4MWJbOTVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbkJyaWdodDogZihcIlxceDFiWzk2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlQnJpZ2h0OiBmKFwiXFx4MWJbOTdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0XHRiZ0JsYWNrQnJpZ2h0OiBmKFwiXFx4MWJbMTAwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkQnJpZ2h0OiBmKFwiXFx4MWJbMTAxbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnR3JlZW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdZZWxsb3dCcmlnaHQ6IGYoXCJcXHgxYlsxMDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlQnJpZ2h0OiBmKFwiXFx4MWJbMTA0bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnTWFnZW50YUJyaWdodDogZihcIlxceDFiWzEwNW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0XHRiZ0N5YW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZUJyaWdodDogZihcIlxceDFiWzEwN21cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0fVxuXHR9O1xuXG5cdHBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xuXHRwaWNvY29sb3JzLmV4cG9ydHMuY3JlYXRlQ29sb3JzID0gY3JlYXRlQ29sb3JzO1xuXHRyZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xufVxuXG52YXIgcGljb2NvbG9yc0V4cG9ydHMgPSAvKkBfX1BVUkVfXyovIHJlcXVpcmVQaWNvY29sb3JzKCk7XG5jb25zdCBjID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHBpY29jb2xvcnNFeHBvcnRzKTtcblxuZnVuY3Rpb24gSih7b25seUZpcnN0OmU9ITF9PXt9KXtjb25zdCBGPVtcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopPyg/OlxcXFx1MDAwN3xcXFxcdTAwMUJcXFxcdTAwNUN8XFxcXHUwMDlDKSlcIixcIig/Oig/OlxcXFxkezEsNH0oPzo7XFxcXGR7MCw0fSkqKT9bXFxcXGRBLVBSLVRaY2YtbnEtdXk9Pjx+XSkpXCJdLmpvaW4oXCJ8XCIpO3JldHVybiBuZXcgUmVnRXhwKEYsZT92b2lkIDA6XCJnXCIpfWNvbnN0IFE9SigpO2Z1bmN0aW9uIFQoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBlfVxcYGApO3JldHVybiBlLnJlcGxhY2UoUSxcIlwiKX1mdW5jdGlvbiBPKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLFwiZGVmYXVsdFwiKT9lLmRlZmF1bHQ6ZX12YXIgUD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKGUpe3ZhciB1PXt9O2UuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24odCl7dmFyIHM9dC5jaGFyQ29kZUF0KDApLGk9dC5sZW5ndGg9PTI/dC5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1pJiZpPD01NzM0MyYmKHMmPTEwMjMsaSY9MTAyMyxEPXM8PDEwfGksRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbih0KXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKHQpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRih0KXtyZXR1cm4gdC5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcz1GKHQpLGk9MCxEPTA7RDxzLmxlbmd0aDtEKyspaT1pK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBpfSx1LnNsaWNlPWZ1bmN0aW9uKHQscyxpKXt0ZXh0TGVuPXUubGVuZ3RoKHQpLHM9c3x8MCxpPWl8fDEsczwwJiYocz10ZXh0TGVuK3MpLGk8MCYmKGk9dGV4dExlbitpKTtmb3IodmFyIEQ9XCJcIixDPTAsbz1GKHQpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKEM+PXMtKG49PTI/MTowKSlpZihDK248PWkpRCs9YTtlbHNlIGJyZWFrO0MrPW47fXJldHVybiBEfTt9KShQKTt2YXIgWD1QLmV4cG9ydHM7Y29uc3QgREQ9TyhYKTt2YXIgdUQ9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307Y29uc3QgRkQ9Tyh1RCk7ZnVuY3Rpb24gcChlLHU9e30pe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSxlPVQoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZShGRCgpLFwiICBcIik7Y29uc3QgRj11LmFtYmlndW91c0lzTmFycm93PzE6MjtsZXQgdD0wO2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IGk9cy5jb2RlUG9pbnRBdCgwKTtpZihpPD0zMXx8aT49MTI3JiZpPD0xNTl8fGk+PTc2OCYmaTw9ODc5KWNvbnRpbnVlO3N3aXRjaChERC5lYXN0QXNpYW5XaWR0aChzKSl7Y2FzZVwiRlwiOmNhc2VcIldcIjp0Kz0yO2JyZWFrO2Nhc2VcIkFcIjp0Kz1GO2JyZWFrO2RlZmF1bHQ6dCs9MTt9fXJldHVybiB0fWNvbnN0IG09MTAsTD0oZT0wKT0+dT0+YFxceDFCWyR7dStlfW1gLFc9KGU9MCk9PnU9PmBcXHgxQlskezM4K2V9OzU7JHt1fW1gLE49KGU9MCk9Pih1LEYsdCk9PmBcXHgxQlskezM4K2V9OzI7JHt1fTske0Z9OyR7dH1tYCxyPXttb2RpZmllcjp7cmVzZXQ6WzAsMF0sYm9sZDpbMSwyMl0sZGltOlsyLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0sb3ZlcmxpbmU6WzUzLDU1XSxpbnZlcnNlOls3LDI3XSxoaWRkZW46WzgsMjhdLHN0cmlrZXRocm91Z2g6WzksMjldfSxjb2xvcjp7YmxhY2s6WzMwLDM5XSxyZWQ6WzMxLDM5XSxncmVlbjpbMzIsMzldLHllbGxvdzpbMzMsMzldLGJsdWU6WzM0LDM5XSxtYWdlbnRhOlszNSwzOV0sY3lhbjpbMzYsMzldLHdoaXRlOlszNywzOV0sYmxhY2tCcmlnaHQ6WzkwLDM5XSxncmF5Ols5MCwzOV0sZ3JleTpbOTAsMzldLHJlZEJyaWdodDpbOTEsMzldLGdyZWVuQnJpZ2h0Ols5MiwzOV0seWVsbG93QnJpZ2h0Ols5MywzOV0sYmx1ZUJyaWdodDpbOTQsMzldLG1hZ2VudGFCcmlnaHQ6Wzk1LDM5XSxjeWFuQnJpZ2h0Ols5NiwzOV0sd2hpdGVCcmlnaHQ6Wzk3LDM5XX0sYmdDb2xvcjp7YmdCbGFjazpbNDAsNDldLGJnUmVkOls0MSw0OV0sYmdHcmVlbjpbNDIsNDldLGJnWWVsbG93Ols0Myw0OV0sYmdCbHVlOls0NCw0OV0sYmdNYWdlbnRhOls0NSw0OV0sYmdDeWFuOls0Niw0OV0sYmdXaGl0ZTpbNDcsNDldLGJnQmxhY2tCcmlnaHQ6WzEwMCw0OV0sYmdHcmF5OlsxMDAsNDldLGJnR3JleTpbMTAwLDQ5XSxiZ1JlZEJyaWdodDpbMTAxLDQ5XSxiZ0dyZWVuQnJpZ2h0OlsxMDIsNDldLGJnWWVsbG93QnJpZ2h0OlsxMDMsNDldLGJnQmx1ZUJyaWdodDpbMTA0LDQ5XSxiZ01hZ2VudGFCcmlnaHQ6WzEwNSw0OV0sYmdDeWFuQnJpZ2h0OlsxMDYsNDldLGJnV2hpdGVCcmlnaHQ6WzEwNyw0OV19fTtPYmplY3Qua2V5cyhyLm1vZGlmaWVyKTtjb25zdCBlRD1PYmplY3Qua2V5cyhyLmNvbG9yKSx0RD1PYmplY3Qua2V5cyhyLmJnQ29sb3IpO1suLi5lRCwuLi50RF07ZnVuY3Rpb24gc0QoKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0W3UsRl1vZiBPYmplY3QuZW50cmllcyhyKSl7Zm9yKGNvbnN0W3Qsc11vZiBPYmplY3QuZW50cmllcyhGKSlyW3RdPXtvcGVuOmBcXHgxQlske3NbMF19bWAsY2xvc2U6YFxceDFCWyR7c1sxXX1tYH0sRlt0XT1yW3RdLGUuc2V0KHNbMF0sc1sxXSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsdSx7dmFsdWU6RixlbnVtZXJhYmxlOiExfSk7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocixcImNvZGVzXCIse3ZhbHVlOmUsZW51bWVyYWJsZTohMX0pLHIuY29sb3IuY2xvc2U9XCJcXHgxQlszOW1cIixyLmJnQ29sb3IuY2xvc2U9XCJcXHgxQls0OW1cIixyLmNvbG9yLmFuc2k9TCgpLHIuY29sb3IuYW5zaTI1Nj1XKCksci5jb2xvci5hbnNpMTZtPU4oKSxyLmJnQ29sb3IuYW5zaT1MKG0pLHIuYmdDb2xvci5hbnNpMjU2PVcobSksci5iZ0NvbG9yLmFuc2kxNm09TihtKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyLHtyZ2JUb0Fuc2kyNTY6e3ZhbHVlOih1LEYsdCk9PnU9PT1GJiZGPT09dD91PDg/MTY6dT4yNDg/MjMxOk1hdGgucm91bmQoKHUtOCkvMjQ3KjI0KSsyMzI6MTYrMzYqTWF0aC5yb3VuZCh1LzI1NSo1KSs2Kk1hdGgucm91bmQoRi8yNTUqNSkrTWF0aC5yb3VuZCh0LzI1NSo1KSxlbnVtZXJhYmxlOiExfSxoZXhUb1JnYjp7dmFsdWU6dT0+e2NvbnN0IEY9L1thLWZcXGRdezZ9fFthLWZcXGRdezN9L2kuZXhlYyh1LnRvU3RyaW5nKDE2KSk7aWYoIUYpcmV0dXJuIFswLDAsMF07bGV0W3RdPUY7dC5sZW5ndGg9PT0zJiYodD1bLi4udF0ubWFwKGk9PmkraSkuam9pbihcIlwiKSk7Y29uc3Qgcz1OdW1iZXIucGFyc2VJbnQodCwxNik7cmV0dXJuIFtzPj4xNiYyNTUscz4+OCYyNTUscyYyNTVdfSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2kyNTY6e3ZhbHVlOnU9PnIucmdiVG9BbnNpMjU2KC4uLnIuaGV4VG9SZ2IodSkpLGVudW1lcmFibGU6ITF9LGFuc2kyNTZUb0Fuc2k6e3ZhbHVlOnU9PntpZih1PDgpcmV0dXJuIDMwK3U7aWYodTwxNilyZXR1cm4gOTArKHUtOCk7bGV0IEYsdCxzO2lmKHU+PTIzMilGPSgodS0yMzIpKjEwKzgpLzI1NSx0PUYscz1GO2Vsc2Uge3UtPTE2O2NvbnN0IEM9dSUzNjtGPU1hdGguZmxvb3IodS8zNikvNSx0PU1hdGguZmxvb3IoQy82KS81LHM9QyU2LzU7fWNvbnN0IGk9TWF0aC5tYXgoRix0LHMpKjI7aWYoaT09PTApcmV0dXJuIDMwO2xldCBEPTMwKyhNYXRoLnJvdW5kKHMpPDwyfE1hdGgucm91bmQodCk8PDF8TWF0aC5yb3VuZChGKSk7cmV0dXJuIGk9PT0yJiYoRCs9NjApLER9LGVudW1lcmFibGU6ITF9LHJnYlRvQW5zaTp7dmFsdWU6KHUsRix0KT0+ci5hbnNpMjU2VG9BbnNpKHIucmdiVG9BbnNpMjU2KHUsRix0KSksZW51bWVyYWJsZTohMX0saGV4VG9BbnNpOnt2YWx1ZTp1PT5yLmFuc2kyNTZUb0Fuc2koci5oZXhUb0Fuc2kyNTYodSkpLGVudW1lcmFibGU6ITF9fSkscn1jb25zdCBpRD1zRCgpLHY9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLENEPTM5LHc9XCJcXHgwN1wiLEk9XCJbXCIsckQ9XCJdXCIsUj1cIm1cIix5PWAke3JEfTg7O2AsVj1lPT5gJHt2LnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0l9JHtlfSR7Un1gLHo9ZT0+YCR7di52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt5fSR7ZX0ke3d9YCxFRD1lPT5lLnNwbGl0KFwiIFwiKS5tYXAodT0+cCh1KSksXz0oZSx1LEYpPT57Y29uc3QgdD1bLi4udV07bGV0IHM9ITEsaT0hMSxEPXAoVChlW2UubGVuZ3RoLTFdKSk7Zm9yKGNvbnN0W0Msb11vZiB0LmVudHJpZXMoKSl7Y29uc3QgRT1wKG8pO2lmKEQrRTw9Rj9lW2UubGVuZ3RoLTFdKz1vOihlLnB1c2gobyksRD0wKSx2LmhhcyhvKSYmKHM9ITAsaT10LnNsaWNlKEMrMSkuam9pbihcIlwiKS5zdGFydHNXaXRoKHkpKSxzKXtpP289PT13JiYocz0hMSxpPSExKTpvPT09UiYmKHM9ITEpO2NvbnRpbnVlfUQrPUUsRD09PUYmJkM8dC5sZW5ndGgtMSYmKGUucHVzaChcIlwiKSxEPTApO30hRCYmZVtlLmxlbmd0aC0xXS5sZW5ndGg+MCYmZS5sZW5ndGg+MSYmKGVbZS5sZW5ndGgtMl0rPWUucG9wKCkpO30sbkQ9ZT0+e2NvbnN0IHU9ZS5zcGxpdChcIiBcIik7bGV0IEY9dS5sZW5ndGg7Zm9yKDtGPjAmJiEocCh1W0YtMV0pPjApOylGLS07cmV0dXJuIEY9PT11Lmxlbmd0aD9lOnUuc2xpY2UoMCxGKS5qb2luKFwiIFwiKSt1LnNsaWNlKEYpLmpvaW4oXCJcIil9LG9EPShlLHUsRj17fSk9PntpZihGLnRyaW0hPT0hMSYmZS50cmltKCk9PT1cIlwiKXJldHVybiBcIlwiO2xldCB0PVwiXCIscyxpO2NvbnN0IEQ9RUQoZSk7bGV0IEM9W1wiXCJdO2Zvcihjb25zdFtFLGFdb2YgZS5zcGxpdChcIiBcIikuZW50cmllcygpKXtGLnRyaW0hPT0hMSYmKENbQy5sZW5ndGgtMV09Q1tDLmxlbmd0aC0xXS50cmltU3RhcnQoKSk7bGV0IG49cChDW0MubGVuZ3RoLTFdKTtpZihFIT09MCYmKG4+PXUmJihGLndvcmRXcmFwPT09ITF8fEYudHJpbT09PSExKSYmKEMucHVzaChcIlwiKSxuPTApLChuPjB8fEYudHJpbT09PSExKSYmKENbQy5sZW5ndGgtMV0rPVwiIFwiLG4rKykpLEYuaGFyZCYmRFtFXT51KXtjb25zdCBCPXUtbixmPTErTWF0aC5mbG9vcigoRFtFXS1CLTEpL3UpO01hdGguZmxvb3IoKERbRV0tMSkvdSk8ZiYmQy5wdXNoKFwiXCIpLF8oQyxhLHUpO2NvbnRpbnVlfWlmKG4rRFtFXT51JiZuPjAmJkRbRV0+MCl7aWYoRi53b3JkV3JhcD09PSExJiZuPHUpe18oQyxhLHUpO2NvbnRpbnVlfUMucHVzaChcIlwiKTt9aWYobitEW0VdPnUmJkYud29yZFdyYXA9PT0hMSl7XyhDLGEsdSk7Y29udGludWV9Q1tDLmxlbmd0aC0xXSs9YTt9Ri50cmltIT09ITEmJihDPUMubWFwKEU9Pm5EKEUpKSk7Y29uc3Qgbz1bLi4uQy5qb2luKGBcbmApXTtmb3IoY29uc3RbRSxhXW9mIG8uZW50cmllcygpKXtpZih0Kz1hLHYuaGFzKGEpKXtjb25zdHtncm91cHM6Qn09bmV3IFJlZ0V4cChgKD86XFxcXCR7SX0oPzxjb2RlPlxcXFxkKyltfFxcXFwke3l9KD88dXJpPi4qKSR7d30pYCkuZXhlYyhvLnNsaWNlKEUpLmpvaW4oXCJcIikpfHx7Z3JvdXBzOnt9fTtpZihCLmNvZGUhPT12b2lkIDApe2NvbnN0IGY9TnVtYmVyLnBhcnNlRmxvYXQoQi5jb2RlKTtzPWY9PT1DRD92b2lkIDA6Zjt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKGk9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPWlELmNvZGVzLmdldChOdW1iZXIocykpO29bRSsxXT09PWBcbmA/KGkmJih0Kz16KFwiXCIpKSxzJiZuJiYodCs9VihuKSkpOmE9PT1gXG5gJiYocyYmbiYmKHQrPVYocykpLGkmJih0Kz16KGkpKSk7fXJldHVybiB0fTtmdW5jdGlvbiBHKGUsdSxGKXtyZXR1cm4gU3RyaW5nKGUpLm5vcm1hbGl6ZSgpLnJlcGxhY2UoL1xcclxcbi9nLGBcbmApLnNwbGl0KGBcbmApLm1hcCh0PT5vRCh0LHUsRikpLmpvaW4oYFxuYCl9Y29uc3QgYUQ9W1widXBcIixcImRvd25cIixcImxlZnRcIixcInJpZ2h0XCIsXCJzcGFjZVwiLFwiZW50ZXJcIixcImNhbmNlbFwiXSxBPXthY3Rpb25zOm5ldyBTZXQoYUQpLGFsaWFzZXM6bmV3IE1hcChbW1wia1wiLFwidXBcIl0sW1wialwiLFwiZG93blwiXSxbXCJoXCIsXCJsZWZ0XCJdLFtcImxcIixcInJpZ2h0XCJdLFtcIlx1MDAwM1wiLFwiY2FuY2VsXCJdLFtcImVzY2FwZVwiLFwiY2FuY2VsXCJdXSl9O2Z1bmN0aW9uIGsoZSx1KXtpZih0eXBlb2YgZT09XCJzdHJpbmdcIilyZXR1cm4gQS5hbGlhc2VzLmdldChlKT09PXU7Zm9yKGNvbnN0IEYgb2YgZSlpZihGIT09dm9pZCAwJiZrKEYsdSkpcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiBoRChlLHUpe2lmKGU9PT11KXJldHVybjtjb25zdCBGPWUuc3BsaXQoYFxuYCksdD11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBpPTA7aTxNYXRoLm1heChGLmxlbmd0aCx0Lmxlbmd0aCk7aSsrKUZbaV0hPT10W2ldJiZzLnB1c2goaSk7cmV0dXJuIHN9Z2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtLnN0YXJ0c1dpdGgoXCJ3aW5cIik7Y29uc3QgJD1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZChlLHUpe2NvbnN0IEY9ZTtGLmlzVFRZJiZGLnNldFJhd01vZGUodSk7fXZhciBBRD1PYmplY3QuZGVmaW5lUHJvcGVydHkscEQ9KGUsdSxGKT0+dSBpbiBlP0FEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixsPShlLHUsRik9PihwRChlLHR5cGVvZiB1IT1cInN5bWJvbFwiP3UrXCJcIjp1LEYpLEYpO2NsYXNzIHh7Y29uc3RydWN0b3IodSxGPSEwKXtsKHRoaXMsXCJpbnB1dFwiKSxsKHRoaXMsXCJvdXRwdXRcIiksbCh0aGlzLFwiX2Fib3J0U2lnbmFsXCIpLGwodGhpcyxcInJsXCIpLGwodGhpcyxcIm9wdHNcIiksbCh0aGlzLFwiX3JlbmRlclwiKSxsKHRoaXMsXCJfdHJhY2tcIiwhMSksbCh0aGlzLFwiX3ByZXZGcmFtZVwiLFwiXCIpLGwodGhpcyxcIl9zdWJzY3JpYmVyc1wiLG5ldyBNYXApLGwodGhpcyxcIl9jdXJzb3JcIiwwKSxsKHRoaXMsXCJzdGF0ZVwiLFwiaW5pdGlhbFwiKSxsKHRoaXMsXCJlcnJvclwiLFwiXCIpLGwodGhpcyxcInZhbHVlXCIpO2NvbnN0e2lucHV0OnQ9c3RkaW4sb3V0cHV0OnM9c3Rkb3V0LHJlbmRlcjppLHNpZ25hbDpELC4uLkN9PXU7dGhpcy5vcHRzPUMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPWkuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1GLHRoaXMuX2Fib3J0U2lnbmFsPUQsdGhpcy5pbnB1dD10LHRoaXMub3V0cHV0PXM7fXVuc3Vic2NyaWJlKCl7dGhpcy5fc3Vic2NyaWJlcnMuY2xlYXIoKTt9c2V0U3Vic2NyaWJlcih1LEYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXTt0LnB1c2goRiksdGhpcy5fc3Vic2NyaWJlcnMuc2V0KHUsdCk7fW9uKHUsRil7dGhpcy5zZXRTdWJzY3JpYmVyKHUse2NiOkZ9KTt9b25jZSh1LEYpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjpGLG9uY2U6ITB9KTt9ZW1pdCh1LC4uLkYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXSxzPVtdO2Zvcihjb25zdCBpIG9mIHQpaS5jYiguLi5GKSxpLm9uY2UmJnMucHVzaCgoKT0+dC5zcGxpY2UodC5pbmRleE9mKGkpLDEpKTtmb3IoY29uc3QgaSBvZiBzKWkoKTt9cHJvbXB0KCl7cmV0dXJuIG5ldyBQcm9taXNlKCh1LEYpPT57aWYodGhpcy5fYWJvcnRTaWduYWwpe2lmKHRoaXMuX2Fib3J0U2lnbmFsLmFib3J0ZWQpcmV0dXJuIHRoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCksdSgkKTt0aGlzLl9hYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e3RoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCk7fSx7b25jZTohMH0pO31jb25zdCB0PW5ldyBXcml0ZVN0cmVhbSgwKTt0Ll93cml0ZT0ocyxpLEQpPT57dGhpcy5fdHJhY2smJih0aGlzLnZhbHVlPXRoaXMucmw/LmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmw/LmN1cnNvcj8/MCx0aGlzLmVtaXQoXCJ2YWx1ZVwiLHRoaXMudmFsdWUpKSxEKCk7fSx0aGlzLmlucHV0LnBpcGUodCksdGhpcy5ybD1nLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6dGhpcy5pbnB1dCxvdXRwdXQ6dCx0YWJTaXplOjIscHJvbXB0OlwiXCIsZXNjYXBlQ29kZVRpbWVvdXQ6NTB9KSxnLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmlucHV0LHRoaXMucmwpLHRoaXMucmwucHJvbXB0KCksdGhpcy5vcHRzLmluaXRpYWxWYWx1ZSE9PXZvaWQgMCYmdGhpcy5fdHJhY2smJnRoaXMucmwud3JpdGUodGhpcy5vcHRzLmluaXRpYWxWYWx1ZSksdGhpcy5pbnB1dC5vbihcImtleXByZXNzXCIsdGhpcy5vbktleXByZXNzKSxkKHRoaXMuaW5wdXQsITApLHRoaXMub3V0cHV0Lm9uKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLHRoaXMucmVuZGVyKCksdGhpcy5vbmNlKFwic3VibWl0XCIsKCk9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZCh0aGlzLmlucHV0LCExKSx1KHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3Iuc2hvdyksdGhpcy5vdXRwdXQub2ZmKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLGQodGhpcy5pbnB1dCwhMSksdSgkKTt9KTt9KX1vbktleXByZXNzKHUsRil7aWYodGhpcy5zdGF0ZT09PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksRj8ubmFtZSYmKCF0aGlzLl90cmFjayYmQS5hbGlhc2VzLmhhcyhGLm5hbWUpJiZ0aGlzLmVtaXQoXCJjdXJzb3JcIixBLmFsaWFzZXMuZ2V0KEYubmFtZSkpLEEuYWN0aW9ucy5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsRi5uYW1lKSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdT09PVwiXHRcIiYmdGhpcy5vcHRzLnBsYWNlaG9sZGVyJiYodGhpcy52YWx1ZXx8KHRoaXMucmw/LndyaXRlKHRoaXMub3B0cy5wbGFjZWhvbGRlciksdGhpcy5lbWl0KFwidmFsdWVcIix0aGlzLm9wdHMucGxhY2Vob2xkZXIpKSksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCB0PXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTt0JiYodGhpcy5lcnJvcj10LHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmw/LndyaXRlKHRoaXMudmFsdWUpKTt9dGhpcy5zdGF0ZSE9PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJzdWJtaXRcIik7fWsoW3UsRj8ubmFtZSxGPy5zZXF1ZW5jZV0sXCJjYW5jZWxcIikmJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGQodGhpcy5pbnB1dCwhMSksdGhpcy5ybD8uY2xvc2UoKSx0aGlzLnJsPXZvaWQgMCx0aGlzLmVtaXQoYCR7dGhpcy5zdGF0ZX1gLHRoaXMudmFsdWUpLHRoaXMudW5zdWJzY3JpYmUoKTt9cmVzdG9yZUN1cnNvcigpe2NvbnN0IHU9Ryh0aGlzLl9wcmV2RnJhbWUscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pLnNwbGl0KGBcbmApLmxlbmd0aC0xO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoLTk5OSx1Ki0xKSk7fXJlbmRlcigpe2NvbnN0IHU9Ryh0aGlzLl9yZW5kZXIodGhpcyk/P1wiXCIscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pO2lmKHUhPT10aGlzLl9wcmV2RnJhbWUpe2lmKHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIil0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPWhEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCB0PUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHQpKSx0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmxpbmVzKDEpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCk7dGhpcy5vdXRwdXQud3JpdGUoc1t0XSksdGhpcy5fcHJldkZyYW1lPXUsdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLXQtMSkpO3JldHVybn1pZihGJiZGPy5sZW5ndGg+MSl7Y29uc3QgdD1GWzBdO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoMCx0KSksdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5lcmFzZS5kb3duKCkpO2NvbnN0IHM9dS5zcGxpdChgXG5gKS5zbGljZSh0KTt0aGlzLm91dHB1dC53cml0ZShzLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmRvd24oKSk7fXRoaXMub3V0cHV0LndyaXRlKHUpLHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksdGhpcy5fcHJldkZyYW1lPXU7fX19Y2xhc3MgZkQgZXh0ZW5kcyB4e2dldCBjdXJzb3IoKXtyZXR1cm4gdGhpcy52YWx1ZT8wOjF9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLmN1cnNvcj09PTB9Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksdGhpcy52YWx1ZT0hIXUuaW5pdGlhbFZhbHVlLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57dGhpcy52YWx1ZT10aGlzLl92YWx1ZTt9KSx0aGlzLm9uKFwiY29uZmlybVwiLEY9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5tb3ZlKDAsLTEpKSx0aGlzLnZhbHVlPUYsdGhpcy5zdGF0ZT1cInN1Ym1pdFwiLHRoaXMuY2xvc2UoKTt9KSx0aGlzLm9uKFwiY3Vyc29yXCIsKCk9Pnt0aGlzLnZhbHVlPSF0aGlzLnZhbHVlO30pO319dmFyIGJEPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxtRD0oZSx1LEYpPT51IGluIGU/YkQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpGfSk6ZVt1XT1GLFk9KGUsdSxGKT0+KG1EKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsRiksRik7bGV0IHdEPWNsYXNzIGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSxZKHRoaXMsXCJvcHRpb25zXCIpLFkodGhpcyxcImN1cnNvclwiLDApLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fTt2YXIgJEQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LFNEPShlLHUsRik9PnUgaW4gZT8kRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkZ9KTplW3VdPUYscT0oZSx1LEYpPT4oU0QoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSxGKSxGKTtjbGFzcyBqRCBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSkscSh0aGlzLFwib3B0aW9uc1wiKSxxKHRoaXMsXCJjdXJzb3JcIiwwKSx0aGlzLm9wdGlvbnM9dS5vcHRpb25zLHRoaXMuY3Vyc29yPXRoaXMub3B0aW9ucy5maW5kSW5kZXgoKHt2YWx1ZTpGfSk9PkY9PT11LmluaXRpYWxWYWx1ZSksdGhpcy5jdXJzb3I9PT0tMSYmKHRoaXMuY3Vyc29yPTApLHRoaXMuY2hhbmdlVmFsdWUoKSx0aGlzLm9uKFwiY3Vyc29yXCIsRj0+e3N3aXRjaChGKXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrfXRoaXMuY2hhbmdlVmFsdWUoKTt9KTt9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdfWNoYW5nZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl92YWx1ZS52YWx1ZTt9fXZhciBQRD1PYmplY3QuZGVmaW5lUHJvcGVydHksTEQ9KGUsdSxGKT0+dSBpbiBlP1BEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixXRD0oZSx1LEYpPT4oTEQoZSx1K1wiXCIsRiksRik7Y2xhc3MgTkQgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLFdEKHRoaXMsXCJ2YWx1ZVdpdGhDdXJzb3JcIixcIlwiKSx0aGlzLm9uKFwiZmluYWxpemVcIiwoKT0+e3RoaXMudmFsdWV8fCh0aGlzLnZhbHVlPXUuZGVmYXVsdFZhbHVlKSx0aGlzLnZhbHVlV2l0aEN1cnNvcj10aGlzLnZhbHVlO30pLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57aWYodGhpcy5jdXJzb3I+PXRoaXMudmFsdWUubGVuZ3RoKXRoaXMudmFsdWVXaXRoQ3Vyc29yPWAke3RoaXMudmFsdWV9JHtjLmludmVyc2UoYy5oaWRkZW4oXCJfXCIpKX1gO2Vsc2Uge2NvbnN0IEY9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuY3Vyc29yKSx0PXRoaXMudmFsdWUuc2xpY2UodGhpcy5jdXJzb3IpO3RoaXMudmFsdWVXaXRoQ3Vyc29yPWAke0Z9JHtjLmludmVyc2UodFswXSl9JHt0LnNsaWNlKDEpfWA7fX0pO31nZXQgY3Vyc29yKCl7cmV0dXJuIHRoaXMuX2N1cnNvcn19XG5cbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBTX1NURVBfQUNUSVZFID0gcyhcIlxcdTI3NkZcIiwgXCI+XCIpO1xuY29uc3QgU19TVEVQX0NBTkNFTCA9IHMoXCJcXHUyNUEwXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9FUlJPUiA9IHMoXCJcXHUyNUIyXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9TVUJNSVQgPSBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIik7XG5jb25zdCBTX0JBUiA9IFwiXCI7XG5jb25zdCBTX0JBUl9FTkQgPSBcIlwiO1xuY29uc3QgU19SQURJT19BQ1RJVkUgPSBzKFwiXFx1MjVDRlwiLCBcIj5cIik7XG5jb25zdCBTX1JBRElPX0lOQUNUSVZFID0gcyhcIlxcdTI1Q0JcIiwgXCIgXCIpO1xuY29uc3QgU19DSEVDS0JPWF9BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIltcXHUyMDIyXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfU0VMRUNURUQgPSBzKFwiXFx1MjVGQ1wiLCBcIlsrXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfSU5BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIlsgXVwiKTtcbmNvbnN0IHN5bWJvbCA9IChzdGF0ZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSBcImluaXRpYWxcIjpcbiAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuY3lhbihTX1NURVBfQUNUSVZFKTtcbiAgICB9XG4gICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnJlZChTX1NURVBfQ0FOQ0VMKTtcbiAgICB9XG4gICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMueWVsbG93KFNfU1RFUF9FUlJPUik7XG4gICAgfVxuICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5ncmVlbihTX1NURVBfU1VCTUlUKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCB0ZXh0ID0gKG9wdHMpID0+IHtcbiAgcmV0dXJuIG5ldyBORCh7XG4gICAgdmFsaWRhdGU6IG9wdHMudmFsaWRhdGUsXG4gICAgcGxhY2Vob2xkZXI6IG9wdHMucGxhY2Vob2xkZXIsXG4gICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gb3B0cy5wbGFjZWhvbGRlciA/IGNvbG9ycy5pbnZlcnNlKG9wdHMucGxhY2Vob2xkZXJbMF0pICsgY29sb3JzLmRpbShvcHRzLnBsYWNlaG9sZGVyLnNsaWNlKDEpKSA6IGNvbG9ycy5pbnZlcnNlKGNvbG9ycy5oaWRkZW4oXCJfXCIpKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWVXaXRoQ3Vyc29yIDogcGxhY2Vob2xkZXI7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGUudHJpbSgpfVxuJHtjb2xvcnMueWVsbG93KFxuICAgICAgICAgICAgU19CQVJcbiAgICAgICAgICApfSAke3ZhbHVlfVxuJHtjb2xvcnMueWVsbG93KFNfQkFSX0VORCl9ICR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIHRoaXMuZXJyb3JcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbShcbiAgICAgICAgICAgIHRoaXMudmFsdWUgfHwgb3B0cy5wbGFjZWhvbGRlclxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHRoaXMudmFsdWUgPz8gXCJcIilcbiAgICAgICAgICApfSR7dGhpcy52YWx1ZT8udHJpbSgpID8gXCJcXG5cIiArIGNvbG9ycy5ncmF5KFNfQkFSKSA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3ZhbHVlfVxuJHtjb2xvcnMuY3lhbihcbiAgICAgICAgICAgIFNfQkFSX0VORFxuICAgICAgICAgICl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBjb25maXJtID0gKG9wdHMpID0+IHtcbiAgY29uc3QgYWN0aXZlID0gb3B0cy5hY3RpdmUgPz8gXCJZZXNcIjtcbiAgY29uc3QgaW5hY3RpdmUgPSBvcHRzLmluYWN0aXZlID8/IFwiTm9cIjtcbiAgcmV0dXJuIG5ldyBmRCh7XG4gICAgYWN0aXZlLFxuICAgIGluYWN0aXZlLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUgPz8gdHJ1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyBhY3RpdmUgOiBpbmFjdGl2ZTtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbSh2YWx1ZSl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHZhbHVlKVxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy52YWx1ZSA/IGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7YWN0aXZlfWAgOiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oYWN0aXZlKX1gfSAke2NvbG9ycy5kaW0oXCIvXCIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oaW5hY3RpdmUpfWAgOiBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2luYWN0aXZlfWB9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBzZWxlY3QgPSAob3B0cykgPT4ge1xuICBjb25zdCBvcHQgPSAob3B0aW9uLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGxhYmVsID0gb3B0aW9uLmxhYmVsID8/IFN0cmluZyhvcHRpb24udmFsdWUpO1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhY3RpdmVcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZGltKGxhYmVsKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNhbmNlbGxlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuc3RyaWtldGhyb3VnaChjb2xvcnMuZGltKGxhYmVsKSl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19SQURJT19JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyBqRCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJzZWxlY3RlZFwiXG4gICAgICAgICAgKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJjYW5jZWxsZWRcIlxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy5vcHRpb25zLm1hcChcbiAgICAgICAgICAgIChvcHRpb24sIGkpID0+IG9wdChvcHRpb24sIGkgPT09IHRoaXMuY3Vyc29yID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIilcbiAgICAgICAgICApLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcbmNvbnN0IG11bHRpc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5jeWFuKFNfQ0hFQ0tCT1hfQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiYWN0aXZlLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX0NIRUNLQk9YX1NFTEVDVEVEKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzdWJtaXR0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19DSEVDS0JPWF9JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyB3RCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFZhbHVlcyxcbiAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCA/PyB0cnVlLFxuICAgIGN1cnNvckF0OiBvcHRzLmN1cnNvckF0LFxuICAgIHZhbGlkYXRlKHNlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcHRpb24uXG4ke2NvbG9ycy5yZXNldChcbiAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgYFByZXNzICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIHNwYWNlIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHNlbGVjdCwgJHtjb2xvcnMuZ3JheShcbiAgICAgICAgICAgICAgY29sb3JzLmJnV2hpdGUoY29sb3JzLmludmVyc2UoXCIgZW50ZXIgXCIpKVxuICAgICAgICAgICAgKX0gdG8gc3VibWl0YFxuICAgICAgICAgIClcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpKS5tYXAoKG9wdGlvbikgPT4gb3B0KG9wdGlvbiwgXCJzdWJtaXR0ZWRcIikpLmpvaW4oY29sb3JzLmRpbShcIiwgXCIpKSB8fCBjb2xvcnMuZGltKFwibm9uZVwiKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwiY2FuY2VsbGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSk7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2xhYmVsLnRyaW0oKSA/IGAke2xhYmVsfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YCA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZXJyb3JcIjoge1xuICAgICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuZXJyb3Iuc3BsaXQoXCJcXG5cIikubWFwKFxuICAgICAgICAgICAgKGxuLCBpKSA9PiBpID09PSAwID8gYCR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3cobG4pfWAgOiBgICAgJHtsbn1gXG4gICAgICAgICAgKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIHJldHVybiB0aXRsZSArIGNvbG9ycy55ZWxsb3coU19CQVIpICsgXCIgIFwiICsgdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGkgPT09IHRoaXMuY3Vyc29yO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJhY3RpdmUtc2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgYWN0aXZlID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIik7XG4gICAgICAgICAgfSkuam9pbihgXG4ke2NvbG9ycy55ZWxsb3coU19CQVIpfSAgYCkgKyBcIlxcblwiICsgZm9vdGVyICsgXCJcXG5cIjtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcblxuY29uc3Qga0NhbmNlbCA9IFN5bWJvbC5mb3IoXCJjYW5jZWxcIik7XG5hc3luYyBmdW5jdGlvbiBwcm9tcHQobWVzc2FnZSwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3ltYm9sXCIgfHwgdmFsdWUudG9TdHJpbmcoKSAhPT0gXCJTeW1ib2woY2xhY2s6Y2FuY2VsKVwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN3aXRjaCAob3B0cy5jYW5jZWwpIHtcbiAgICAgIGNhc2UgXCJyZWplY3RcIjoge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcIlByb21wdCBjYW5jZWxsZWQuXCIpO1xuICAgICAgICBlcnJvci5uYW1lID0gXCJDb25zb2xhUHJvbXB0Q2FuY2VsbGVkRXJyb3JcIjtcbiAgICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIHByb21wdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3ltYm9sXCI6IHtcbiAgICAgICAgcmV0dXJuIGtDYW5jZWw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBcImRlZmF1bHRcIjoge1xuICAgICAgICByZXR1cm4gb3B0cy5kZWZhdWx0ID8/IG9wdHMuaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGlmICghb3B0cy50eXBlIHx8IG9wdHMudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgdGV4dCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHQsXG4gICAgICBwbGFjZWhvbGRlcjogb3B0cy5wbGFjZWhvbGRlcixcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwiY29uZmlybVwiKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFxuICAgIH0pLnRoZW4oaGFuZGxlQ2FuY2VsKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvbXB0IHR5cGU6ICR7b3B0cy50eXBlfWApO1xufVxuXG5leHBvcnQgeyBrQ2FuY2VsLCBwcm9tcHQgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVDb25zb2xhIGFzIGNyZWF0ZUNvbnNvbGEkMSwgTG9nTGV2ZWxzIH0gZnJvbSAnLi4vY29yZS5tanMnO1xuaW1wb3J0IHsgQiBhcyBCYXNpY1JlcG9ydGVyLCBwIGFzIHBhcnNlU3RhY2sgfSBmcm9tICcuL2NvbnNvbGEuQ3M1RmR0SEQubWpzJztcbmltcG9ydCBwcm9jZXNzJDEgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzLCBiIGFzIGJveCwgcyBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4vY29uc29sYS5DQmk2Tm05cy5tanMnO1xuXG5jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCksaT1lPT5nbG9iYWxUaGlzLnByb2Nlc3M/LmVudnx8aW1wb3J0Lm1ldGEuZW52fHxnbG9iYWxUaGlzLkRlbm8/LmVudi50b09iamVjdCgpfHxnbG9iYWxUaGlzLl9fZW52X198fChlP3I6Z2xvYmFsVGhpcykscyQxPW5ldyBQcm94eShyLHtnZXQoZSxvKXtyZXR1cm4gaSgpW29dPz9yW29dfSxoYXMoZSxvKXtjb25zdCBFPWkoKTtyZXR1cm4gbyBpbiBFfHxvIGluIHJ9LHNldChlLG8sRSl7Y29uc3QgYj1pKCEwKTtyZXR1cm4gYltvXT1FLCEwfSxkZWxldGVQcm9wZXJ0eShlLG8pe2lmKCFvKXJldHVybiAhMTtjb25zdCBFPWkoITApO3JldHVybiBkZWxldGUgRVtvXSwhMH0sb3duS2V5cygpe2NvbnN0IGU9aSghMCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX0pLHQ9dHlwZW9mIHByb2Nlc3M8XCJ1XCImJnByb2Nlc3MuZW52JiZwcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJcIixCPVtbXCJBUFBWRVlPUlwiXSxbXCJBV1NfQU1QTElGWVwiLFwiQVdTX0FQUF9JRFwiLHtjaTohMH1dLFtcIkFaVVJFX1BJUEVMSU5FU1wiLFwiU1lTVEVNX1RFQU1GT1VOREFUSU9OQ09MTEVDVElPTlVSSVwiXSxbXCJBWlVSRV9TVEFUSUNcIixcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sW1wiQVBQQ0lSQ0xFXCIsXCJBQ19BUFBDSVJDTEVcIl0sW1wiQkFNQk9PXCIsXCJiYW1ib29fcGxhbktleVwiXSxbXCJCSVRCVUNLRVRcIixcIkJJVEJVQ0tFVF9DT01NSVRcIl0sW1wiQklUUklTRVwiLFwiQklUUklTRV9JT1wiXSxbXCJCVUREWVwiLFwiQlVERFlfV09SS1NQQUNFX0lEXCJdLFtcIkJVSUxES0lURVwiXSxbXCJDSVJDTEVcIixcIkNJUkNMRUNJXCJdLFtcIkNJUlJVU1wiLFwiQ0lSUlVTX0NJXCJdLFtcIkNMT1VERkxBUkVfUEFHRVNcIixcIkNGX1BBR0VTXCIse2NpOiEwfV0sW1wiQ09ERUJVSUxEXCIsXCJDT0RFQlVJTERfQlVJTERfQVJOXCJdLFtcIkNPREVGUkVTSFwiLFwiQ0ZfQlVJTERfSURcIl0sW1wiRFJPTkVcIl0sW1wiRFJPTkVcIixcIkRST05FX0JVSUxEX0VWRU5UXCJdLFtcIkRTQVJJXCJdLFtcIkdJVEhVQl9BQ1RJT05TXCJdLFtcIkdJVExBQlwiLFwiR0lUTEFCX0NJXCJdLFtcIkdJVExBQlwiLFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxbXCJHT0NEXCIsXCJHT19QSVBFTElORV9MQUJFTFwiXSxbXCJMQVlFUkNJXCJdLFtcIkhVRFNPTlwiLFwiSFVEU09OX1VSTFwiXSxbXCJKRU5LSU5TXCIsXCJKRU5LSU5TX1VSTFwiXSxbXCJNQUdOVU1cIl0sW1wiTkVUTElGWVwiXSxbXCJORVRMSUZZXCIsXCJORVRMSUZZX0xPQ0FMXCIse2NpOiExfV0sW1wiTkVWRVJDT0RFXCJdLFtcIlJFTkRFUlwiXSxbXCJTQUlMXCIsXCJTQUlMQ0lcIl0sW1wiU0VNQVBIT1JFXCJdLFtcIlNDUkVXRFJJVkVSXCJdLFtcIlNISVBQQUJMRVwiXSxbXCJTT0xBTk9cIixcIlRERElVTVwiXSxbXCJTVFJJREVSXCJdLFtcIlRFQU1DSVRZXCIsXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFtcIlRSQVZJU1wiXSxbXCJWRVJDRUxcIixcIk5PV19CVUlMREVSXCJdLFtcIlZFUkNFTFwiLFwiVkVSQ0VMXCIse2NpOiExfV0sW1wiVkVSQ0VMXCIsXCJWRVJDRUxfRU5WXCIse2NpOiExfV0sW1wiQVBQQ0VOVEVSXCIsXCJBUFBDRU5URVJfQlVJTERfSURcIl0sW1wiQ09ERVNBTkRCT1hcIixcIkNPREVTQU5EQk9YX1NTRVwiLHtjaTohMX1dLFtcIlNUQUNLQkxJVFpcIl0sW1wiU1RPUk1LSVRcIl0sW1wiQ0xFQVZSXCJdLFtcIlpFQUJVUlwiXSxbXCJDT0RFU1BIRVJFXCIsXCJDT0RFU1BIRVJFX0FQUF9JRFwiLHtjaTohMH1dLFtcIlJBSUxXQVlcIixcIlJBSUxXQVlfUFJPSkVDVF9JRFwiXSxbXCJSQUlMV0FZXCIsXCJSQUlMV0FZX1NFUlZJQ0VfSURcIl0sW1wiREVOTy1ERVBMT1lcIixcIkRFTk9fREVQTE9ZTUVOVF9JRFwiXSxbXCJGSVJFQkFTRV9BUFBfSE9TVElOR1wiLFwiRklSRUJBU0VfQVBQX0hPU1RJTkdcIix7Y2k6ITB9XV07ZnVuY3Rpb24gcCgpe2lmKGdsb2JhbFRoaXMucHJvY2Vzcz8uZW52KWZvcihjb25zdCBlIG9mIEIpe2NvbnN0IG89ZVsxXXx8ZVswXTtpZihnbG9iYWxUaGlzLnByb2Nlc3M/LmVudltvXSlyZXR1cm4ge25hbWU6ZVswXS50b0xvd2VyQ2FzZSgpLC4uLmVbMl19fXJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3M/LmVudj8uU0hFTEw9PT1cIi9iaW4vanNoXCImJmdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LndlYmNvbnRhaW5lcj97bmFtZTpcInN0YWNrYmxpdHpcIixjaTohMX06e25hbWU6XCJcIixjaTohMX19Y29uc3QgbD1wKCk7bC5uYW1lO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGU/ZSE9PVwiZmFsc2VcIjohMX1jb25zdCBJPWdsb2JhbFRoaXMucHJvY2Vzcz8ucGxhdGZvcm18fFwiXCIsVD1uKHMkMS5DSSl8fGwuY2khPT0hMSxSPW4oZ2xvYmFsVGhpcy5wcm9jZXNzPy5zdGRvdXQmJmdsb2JhbFRoaXMucHJvY2Vzcz8uc3Rkb3V0LmlzVFRZKSxVPW4ocyQxLkRFQlVHKSxBPXQ9PT1cInRlc3RcInx8bihzJDEuVEVTVCk7bihzJDEuTUlOSU1BTCl8fFR8fEF8fCFSO2NvbnN0IF89L153aW4vaS50ZXN0KEkpOyFuKHMkMS5OT19DT0xPUikmJihuKHMkMS5GT1JDRV9DT0xPUil8fChSfHxfKSYmcyQxLlRFUk0hPT1cImR1bWJcInx8VCk7Y29uc3QgQz0oZ2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZXx8XCJcIikucmVwbGFjZSgvXnYvLFwiXCIpfHxudWxsO051bWJlcihDPy5zcGxpdChcIi5cIilbMF0pfHxudWxsO2NvbnN0IHk9Z2xvYmFsVGhpcy5wcm9jZXNzfHxPYmplY3QuY3JlYXRlKG51bGwpLGM9e3ZlcnNpb25zOnt9fTtuZXcgUHJveHkoeSx7Z2V0KGUsbyl7aWYobz09PVwiZW52XCIpcmV0dXJuIHMkMTtpZihvIGluIGUpcmV0dXJuIGVbb107aWYobyBpbiBjKXJldHVybiBjW29dfX0pO2NvbnN0IEw9Z2xvYmFsVGhpcy5wcm9jZXNzPy5yZWxlYXNlPy5uYW1lPT09XCJub2RlXCIsYT0hIWdsb2JhbFRoaXMuQnVufHwhIWdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LmJ1bixEPSEhZ2xvYmFsVGhpcy5EZW5vLE89ISFnbG9iYWxUaGlzLmZhc3RseSxTPSEhZ2xvYmFsVGhpcy5OZXRsaWZ5LE49ISFnbG9iYWxUaGlzLkVkZ2VSdW50aW1lLFA9Z2xvYmFsVGhpcy5uYXZpZ2F0b3I/LnVzZXJBZ2VudD09PVwiQ2xvdWRmbGFyZS1Xb3JrZXJzXCIsRj1bW1MsXCJuZXRsaWZ5XCJdLFtOLFwiZWRnZS1saWdodFwiXSxbUCxcIndvcmtlcmRcIl0sW08sXCJmYXN0bHlcIl0sW0QsXCJkZW5vXCJdLFthLFwiYnVuXCJdLFtMLFwibm9kZVwiXV07ZnVuY3Rpb24gRygpe2NvbnN0IGU9Ri5maW5kKG89Pm9bMF0pO2lmKGUpcmV0dXJuIHtuYW1lOmVbMV19fWNvbnN0IHU9RygpO3U/Lm5hbWV8fFwiXCI7XG5cbmZ1bmN0aW9uIGFuc2lSZWdleCh7b25seUZpcnN0ID0gZmFsc2V9ID0ge30pIHtcblx0Ly8gVmFsaWQgc3RyaW5nIHRlcm1pbmF0b3Igc2VxdWVuY2VzIGFyZSBCRUwsIEVTQ1xcLCBhbmQgMHg5Y1xuXHRjb25zdCBTVCA9ICcoPzpcXFxcdTAwMDd8XFxcXHUwMDFCXFxcXHUwMDVDfFxcXFx1MDA5QyknO1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHRcdGBbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT8ke1NUfSlgLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKScsXG5cdF0uam9pbignfCcpO1xuXG5cdHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIG9ubHlGaXJzdCA/IHVuZGVmaW5lZCA6ICdnJyk7XG59XG5cbmNvbnN0IHJlZ2V4ID0gYW5zaVJlZ2V4KCk7XG5cbmZ1bmN0aW9uIHN0cmlwQW5zaShzdHJpbmcpIHtcblx0aWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBzdHJpbmd9XFxgYCk7XG5cdH1cblxuXHQvLyBFdmVuIHRob3VnaCB0aGUgcmVnZXggaXMgZ2xvYmFsLCB3ZSBkb24ndCBuZWVkIHRvIHJlc2V0IHRoZSBgLmxhc3RJbmRleGBcblx0Ly8gYmVjYXVzZSB1bmxpa2UgYC5leGVjKClgIGFuZCBgLnRlc3QoKWAsIGAucmVwbGFjZSgpYCBkb2VzIGl0IGF1dG9tYXRpY2FsbHlcblx0Ly8gYW5kIGRvaW5nIGl0IG1hbnVhbGx5IGhhcyBhIHBlcmZvcm1hbmNlIHBlbmFsdHkuXG5cdHJldHVybiBzdHJpbmcucmVwbGFjZShyZWdleCwgJycpO1xufVxuXG4vLyBHZW5lcmF0ZWQgY29kZS5cblxuZnVuY3Rpb24gaXNBbWJpZ3VvdXMoeCkge1xuXHRyZXR1cm4geCA9PT0gMHhBMVxuXHRcdHx8IHggPT09IDB4QTRcblx0XHR8fCB4ID09PSAweEE3XG5cdFx0fHwgeCA9PT0gMHhBOFxuXHRcdHx8IHggPT09IDB4QUFcblx0XHR8fCB4ID09PSAweEFEXG5cdFx0fHwgeCA9PT0gMHhBRVxuXHRcdHx8IHggPj0gMHhCMCAmJiB4IDw9IDB4QjRcblx0XHR8fCB4ID49IDB4QjYgJiYgeCA8PSAweEJBXG5cdFx0fHwgeCA+PSAweEJDICYmIHggPD0gMHhCRlxuXHRcdHx8IHggPT09IDB4QzZcblx0XHR8fCB4ID09PSAweEQwXG5cdFx0fHwgeCA9PT0gMHhEN1xuXHRcdHx8IHggPT09IDB4RDhcblx0XHR8fCB4ID49IDB4REUgJiYgeCA8PSAweEUxXG5cdFx0fHwgeCA9PT0gMHhFNlxuXHRcdHx8IHggPj0gMHhFOCAmJiB4IDw9IDB4RUFcblx0XHR8fCB4ID09PSAweEVDXG5cdFx0fHwgeCA9PT0gMHhFRFxuXHRcdHx8IHggPT09IDB4RjBcblx0XHR8fCB4ID09PSAweEYyXG5cdFx0fHwgeCA9PT0gMHhGM1xuXHRcdHx8IHggPj0gMHhGNyAmJiB4IDw9IDB4RkFcblx0XHR8fCB4ID09PSAweEZDXG5cdFx0fHwgeCA9PT0gMHhGRVxuXHRcdHx8IHggPT09IDB4MTAxXG5cdFx0fHwgeCA9PT0gMHgxMTFcblx0XHR8fCB4ID09PSAweDExM1xuXHRcdHx8IHggPT09IDB4MTFCXG5cdFx0fHwgeCA9PT0gMHgxMjZcblx0XHR8fCB4ID09PSAweDEyN1xuXHRcdHx8IHggPT09IDB4MTJCXG5cdFx0fHwgeCA+PSAweDEzMSAmJiB4IDw9IDB4MTMzXG5cdFx0fHwgeCA9PT0gMHgxMzhcblx0XHR8fCB4ID49IDB4MTNGICYmIHggPD0gMHgxNDJcblx0XHR8fCB4ID09PSAweDE0NFxuXHRcdHx8IHggPj0gMHgxNDggJiYgeCA8PSAweDE0QlxuXHRcdHx8IHggPT09IDB4MTREXG5cdFx0fHwgeCA9PT0gMHgxNTJcblx0XHR8fCB4ID09PSAweDE1M1xuXHRcdHx8IHggPT09IDB4MTY2XG5cdFx0fHwgeCA9PT0gMHgxNjdcblx0XHR8fCB4ID09PSAweDE2QlxuXHRcdHx8IHggPT09IDB4MUNFXG5cdFx0fHwgeCA9PT0gMHgxRDBcblx0XHR8fCB4ID09PSAweDFEMlxuXHRcdHx8IHggPT09IDB4MUQ0XG5cdFx0fHwgeCA9PT0gMHgxRDZcblx0XHR8fCB4ID09PSAweDFEOFxuXHRcdHx8IHggPT09IDB4MURBXG5cdFx0fHwgeCA9PT0gMHgxRENcblx0XHR8fCB4ID09PSAweDI1MVxuXHRcdHx8IHggPT09IDB4MjYxXG5cdFx0fHwgeCA9PT0gMHgyQzRcblx0XHR8fCB4ID09PSAweDJDN1xuXHRcdHx8IHggPj0gMHgyQzkgJiYgeCA8PSAweDJDQlxuXHRcdHx8IHggPT09IDB4MkNEXG5cdFx0fHwgeCA9PT0gMHgyRDBcblx0XHR8fCB4ID49IDB4MkQ4ICYmIHggPD0gMHgyREJcblx0XHR8fCB4ID09PSAweDJERFxuXHRcdHx8IHggPT09IDB4MkRGXG5cdFx0fHwgeCA+PSAweDMwMCAmJiB4IDw9IDB4MzZGXG5cdFx0fHwgeCA+PSAweDM5MSAmJiB4IDw9IDB4M0ExXG5cdFx0fHwgeCA+PSAweDNBMyAmJiB4IDw9IDB4M0E5XG5cdFx0fHwgeCA+PSAweDNCMSAmJiB4IDw9IDB4M0MxXG5cdFx0fHwgeCA+PSAweDNDMyAmJiB4IDw9IDB4M0M5XG5cdFx0fHwgeCA9PT0gMHg0MDFcblx0XHR8fCB4ID49IDB4NDEwICYmIHggPD0gMHg0NEZcblx0XHR8fCB4ID09PSAweDQ1MVxuXHRcdHx8IHggPT09IDB4MjAxMFxuXHRcdHx8IHggPj0gMHgyMDEzICYmIHggPD0gMHgyMDE2XG5cdFx0fHwgeCA9PT0gMHgyMDE4XG5cdFx0fHwgeCA9PT0gMHgyMDE5XG5cdFx0fHwgeCA9PT0gMHgyMDFDXG5cdFx0fHwgeCA9PT0gMHgyMDFEXG5cdFx0fHwgeCA+PSAweDIwMjAgJiYgeCA8PSAweDIwMjJcblx0XHR8fCB4ID49IDB4MjAyNCAmJiB4IDw9IDB4MjAyN1xuXHRcdHx8IHggPT09IDB4MjAzMFxuXHRcdHx8IHggPT09IDB4MjAzMlxuXHRcdHx8IHggPT09IDB4MjAzM1xuXHRcdHx8IHggPT09IDB4MjAzNVxuXHRcdHx8IHggPT09IDB4MjAzQlxuXHRcdHx8IHggPT09IDB4MjAzRVxuXHRcdHx8IHggPT09IDB4MjA3NFxuXHRcdHx8IHggPT09IDB4MjA3RlxuXHRcdHx8IHggPj0gMHgyMDgxICYmIHggPD0gMHgyMDg0XG5cdFx0fHwgeCA9PT0gMHgyMEFDXG5cdFx0fHwgeCA9PT0gMHgyMTAzXG5cdFx0fHwgeCA9PT0gMHgyMTA1XG5cdFx0fHwgeCA9PT0gMHgyMTA5XG5cdFx0fHwgeCA9PT0gMHgyMTEzXG5cdFx0fHwgeCA9PT0gMHgyMTE2XG5cdFx0fHwgeCA9PT0gMHgyMTIxXG5cdFx0fHwgeCA9PT0gMHgyMTIyXG5cdFx0fHwgeCA9PT0gMHgyMTI2XG5cdFx0fHwgeCA9PT0gMHgyMTJCXG5cdFx0fHwgeCA9PT0gMHgyMTUzXG5cdFx0fHwgeCA9PT0gMHgyMTU0XG5cdFx0fHwgeCA+PSAweDIxNUIgJiYgeCA8PSAweDIxNUVcblx0XHR8fCB4ID49IDB4MjE2MCAmJiB4IDw9IDB4MjE2QlxuXHRcdHx8IHggPj0gMHgyMTcwICYmIHggPD0gMHgyMTc5XG5cdFx0fHwgeCA9PT0gMHgyMTg5XG5cdFx0fHwgeCA+PSAweDIxOTAgJiYgeCA8PSAweDIxOTlcblx0XHR8fCB4ID09PSAweDIxQjhcblx0XHR8fCB4ID09PSAweDIxQjlcblx0XHR8fCB4ID09PSAweDIxRDJcblx0XHR8fCB4ID09PSAweDIxRDRcblx0XHR8fCB4ID09PSAweDIxRTdcblx0XHR8fCB4ID09PSAweDIyMDBcblx0XHR8fCB4ID09PSAweDIyMDJcblx0XHR8fCB4ID09PSAweDIyMDNcblx0XHR8fCB4ID09PSAweDIyMDdcblx0XHR8fCB4ID09PSAweDIyMDhcblx0XHR8fCB4ID09PSAweDIyMEJcblx0XHR8fCB4ID09PSAweDIyMEZcblx0XHR8fCB4ID09PSAweDIyMTFcblx0XHR8fCB4ID09PSAweDIyMTVcblx0XHR8fCB4ID09PSAweDIyMUFcblx0XHR8fCB4ID49IDB4MjIxRCAmJiB4IDw9IDB4MjIyMFxuXHRcdHx8IHggPT09IDB4MjIyM1xuXHRcdHx8IHggPT09IDB4MjIyNVxuXHRcdHx8IHggPj0gMHgyMjI3ICYmIHggPD0gMHgyMjJDXG5cdFx0fHwgeCA9PT0gMHgyMjJFXG5cdFx0fHwgeCA+PSAweDIyMzQgJiYgeCA8PSAweDIyMzdcblx0XHR8fCB4ID09PSAweDIyM0Ncblx0XHR8fCB4ID09PSAweDIyM0Rcblx0XHR8fCB4ID09PSAweDIyNDhcblx0XHR8fCB4ID09PSAweDIyNENcblx0XHR8fCB4ID09PSAweDIyNTJcblx0XHR8fCB4ID09PSAweDIyNjBcblx0XHR8fCB4ID09PSAweDIyNjFcblx0XHR8fCB4ID49IDB4MjI2NCAmJiB4IDw9IDB4MjI2N1xuXHRcdHx8IHggPT09IDB4MjI2QVxuXHRcdHx8IHggPT09IDB4MjI2QlxuXHRcdHx8IHggPT09IDB4MjI2RVxuXHRcdHx8IHggPT09IDB4MjI2RlxuXHRcdHx8IHggPT09IDB4MjI4MlxuXHRcdHx8IHggPT09IDB4MjI4M1xuXHRcdHx8IHggPT09IDB4MjI4NlxuXHRcdHx8IHggPT09IDB4MjI4N1xuXHRcdHx8IHggPT09IDB4MjI5NVxuXHRcdHx8IHggPT09IDB4MjI5OVxuXHRcdHx8IHggPT09IDB4MjJBNVxuXHRcdHx8IHggPT09IDB4MjJCRlxuXHRcdHx8IHggPT09IDB4MjMxMlxuXHRcdHx8IHggPj0gMHgyNDYwICYmIHggPD0gMHgyNEU5XG5cdFx0fHwgeCA+PSAweDI0RUIgJiYgeCA8PSAweDI1NEJcblx0XHR8fCB4ID49IDB4MjU1MCAmJiB4IDw9IDB4MjU3M1xuXHRcdHx8IHggPj0gMHgyNTgwICYmIHggPD0gMHgyNThGXG5cdFx0fHwgeCA+PSAweDI1OTIgJiYgeCA8PSAweDI1OTVcblx0XHR8fCB4ID09PSAweDI1QTBcblx0XHR8fCB4ID09PSAweDI1QTFcblx0XHR8fCB4ID49IDB4MjVBMyAmJiB4IDw9IDB4MjVBOVxuXHRcdHx8IHggPT09IDB4MjVCMlxuXHRcdHx8IHggPT09IDB4MjVCM1xuXHRcdHx8IHggPT09IDB4MjVCNlxuXHRcdHx8IHggPT09IDB4MjVCN1xuXHRcdHx8IHggPT09IDB4MjVCQ1xuXHRcdHx8IHggPT09IDB4MjVCRFxuXHRcdHx8IHggPT09IDB4MjVDMFxuXHRcdHx8IHggPT09IDB4MjVDMVxuXHRcdHx8IHggPj0gMHgyNUM2ICYmIHggPD0gMHgyNUM4XG5cdFx0fHwgeCA9PT0gMHgyNUNCXG5cdFx0fHwgeCA+PSAweDI1Q0UgJiYgeCA8PSAweDI1RDFcblx0XHR8fCB4ID49IDB4MjVFMiAmJiB4IDw9IDB4MjVFNVxuXHRcdHx8IHggPT09IDB4MjVFRlxuXHRcdHx8IHggPT09IDB4MjYwNVxuXHRcdHx8IHggPT09IDB4MjYwNlxuXHRcdHx8IHggPT09IDB4MjYwOVxuXHRcdHx8IHggPT09IDB4MjYwRVxuXHRcdHx8IHggPT09IDB4MjYwRlxuXHRcdHx8IHggPT09IDB4MjYxQ1xuXHRcdHx8IHggPT09IDB4MjYxRVxuXHRcdHx8IHggPT09IDB4MjY0MFxuXHRcdHx8IHggPT09IDB4MjY0MlxuXHRcdHx8IHggPT09IDB4MjY2MFxuXHRcdHx8IHggPT09IDB4MjY2MVxuXHRcdHx8IHggPj0gMHgyNjYzICYmIHggPD0gMHgyNjY1XG5cdFx0fHwgeCA+PSAweDI2NjcgJiYgeCA8PSAweDI2NkFcblx0XHR8fCB4ID09PSAweDI2NkNcblx0XHR8fCB4ID09PSAweDI2NkRcblx0XHR8fCB4ID09PSAweDI2NkZcblx0XHR8fCB4ID09PSAweDI2OUVcblx0XHR8fCB4ID09PSAweDI2OUZcblx0XHR8fCB4ID09PSAweDI2QkZcblx0XHR8fCB4ID49IDB4MjZDNiAmJiB4IDw9IDB4MjZDRFxuXHRcdHx8IHggPj0gMHgyNkNGICYmIHggPD0gMHgyNkQzXG5cdFx0fHwgeCA+PSAweDI2RDUgJiYgeCA8PSAweDI2RTFcblx0XHR8fCB4ID09PSAweDI2RTNcblx0XHR8fCB4ID09PSAweDI2RThcblx0XHR8fCB4ID09PSAweDI2RTlcblx0XHR8fCB4ID49IDB4MjZFQiAmJiB4IDw9IDB4MjZGMVxuXHRcdHx8IHggPT09IDB4MjZGNFxuXHRcdHx8IHggPj0gMHgyNkY2ICYmIHggPD0gMHgyNkY5XG5cdFx0fHwgeCA9PT0gMHgyNkZCXG5cdFx0fHwgeCA9PT0gMHgyNkZDXG5cdFx0fHwgeCA9PT0gMHgyNkZFXG5cdFx0fHwgeCA9PT0gMHgyNkZGXG5cdFx0fHwgeCA9PT0gMHgyNzNEXG5cdFx0fHwgeCA+PSAweDI3NzYgJiYgeCA8PSAweDI3N0Zcblx0XHR8fCB4ID49IDB4MkI1NiAmJiB4IDw9IDB4MkI1OVxuXHRcdHx8IHggPj0gMHgzMjQ4ICYmIHggPD0gMHgzMjRGXG5cdFx0fHwgeCA+PSAweEUwMDAgJiYgeCA8PSAweEY4RkZcblx0XHR8fCB4ID49IDB4RkUwMCAmJiB4IDw9IDB4RkUwRlxuXHRcdHx8IHggPT09IDB4RkZGRFxuXHRcdHx8IHggPj0gMHgxRjEwMCAmJiB4IDw9IDB4MUYxMEFcblx0XHR8fCB4ID49IDB4MUYxMTAgJiYgeCA8PSAweDFGMTJEXG5cdFx0fHwgeCA+PSAweDFGMTMwICYmIHggPD0gMHgxRjE2OVxuXHRcdHx8IHggPj0gMHgxRjE3MCAmJiB4IDw9IDB4MUYxOERcblx0XHR8fCB4ID09PSAweDFGMThGXG5cdFx0fHwgeCA9PT0gMHgxRjE5MFxuXHRcdHx8IHggPj0gMHgxRjE5QiAmJiB4IDw9IDB4MUYxQUNcblx0XHR8fCB4ID49IDB4RTAxMDAgJiYgeCA8PSAweEUwMUVGXG5cdFx0fHwgeCA+PSAweEYwMDAwICYmIHggPD0gMHhGRkZGRFxuXHRcdHx8IHggPj0gMHgxMDAwMDAgJiYgeCA8PSAweDEwRkZGRDtcbn1cblxuZnVuY3Rpb24gaXNGdWxsV2lkdGgoeCkge1xuXHRyZXR1cm4geCA9PT0gMHgzMDAwXG5cdFx0fHwgeCA+PSAweEZGMDEgJiYgeCA8PSAweEZGNjBcblx0XHR8fCB4ID49IDB4RkZFMCAmJiB4IDw9IDB4RkZFNjtcbn1cblxuZnVuY3Rpb24gaXNXaWRlKHgpIHtcblx0cmV0dXJuIHggPj0gMHgxMTAwICYmIHggPD0gMHgxMTVGXG5cdFx0fHwgeCA9PT0gMHgyMzFBXG5cdFx0fHwgeCA9PT0gMHgyMzFCXG5cdFx0fHwgeCA9PT0gMHgyMzI5XG5cdFx0fHwgeCA9PT0gMHgyMzJBXG5cdFx0fHwgeCA+PSAweDIzRTkgJiYgeCA8PSAweDIzRUNcblx0XHR8fCB4ID09PSAweDIzRjBcblx0XHR8fCB4ID09PSAweDIzRjNcblx0XHR8fCB4ID09PSAweDI1RkRcblx0XHR8fCB4ID09PSAweDI1RkVcblx0XHR8fCB4ID09PSAweDI2MTRcblx0XHR8fCB4ID09PSAweDI2MTVcblx0XHR8fCB4ID49IDB4MjYzMCAmJiB4IDw9IDB4MjYzN1xuXHRcdHx8IHggPj0gMHgyNjQ4ICYmIHggPD0gMHgyNjUzXG5cdFx0fHwgeCA9PT0gMHgyNjdGXG5cdFx0fHwgeCA+PSAweDI2OEEgJiYgeCA8PSAweDI2OEZcblx0XHR8fCB4ID09PSAweDI2OTNcblx0XHR8fCB4ID09PSAweDI2QTFcblx0XHR8fCB4ID09PSAweDI2QUFcblx0XHR8fCB4ID09PSAweDI2QUJcblx0XHR8fCB4ID09PSAweDI2QkRcblx0XHR8fCB4ID09PSAweDI2QkVcblx0XHR8fCB4ID09PSAweDI2QzRcblx0XHR8fCB4ID09PSAweDI2QzVcblx0XHR8fCB4ID09PSAweDI2Q0Vcblx0XHR8fCB4ID09PSAweDI2RDRcblx0XHR8fCB4ID09PSAweDI2RUFcblx0XHR8fCB4ID09PSAweDI2RjJcblx0XHR8fCB4ID09PSAweDI2RjNcblx0XHR8fCB4ID09PSAweDI2RjVcblx0XHR8fCB4ID09PSAweDI2RkFcblx0XHR8fCB4ID09PSAweDI2RkRcblx0XHR8fCB4ID09PSAweDI3MDVcblx0XHR8fCB4ID09PSAweDI3MEFcblx0XHR8fCB4ID09PSAweDI3MEJcblx0XHR8fCB4ID09PSAweDI3Mjhcblx0XHR8fCB4ID09PSAweDI3NENcblx0XHR8fCB4ID09PSAweDI3NEVcblx0XHR8fCB4ID49IDB4Mjc1MyAmJiB4IDw9IDB4Mjc1NVxuXHRcdHx8IHggPT09IDB4Mjc1N1xuXHRcdHx8IHggPj0gMHgyNzk1ICYmIHggPD0gMHgyNzk3XG5cdFx0fHwgeCA9PT0gMHgyN0IwXG5cdFx0fHwgeCA9PT0gMHgyN0JGXG5cdFx0fHwgeCA9PT0gMHgyQjFCXG5cdFx0fHwgeCA9PT0gMHgyQjFDXG5cdFx0fHwgeCA9PT0gMHgyQjUwXG5cdFx0fHwgeCA9PT0gMHgyQjU1XG5cdFx0fHwgeCA+PSAweDJFODAgJiYgeCA8PSAweDJFOTlcblx0XHR8fCB4ID49IDB4MkU5QiAmJiB4IDw9IDB4MkVGM1xuXHRcdHx8IHggPj0gMHgyRjAwICYmIHggPD0gMHgyRkQ1XG5cdFx0fHwgeCA+PSAweDJGRjAgJiYgeCA8PSAweDJGRkZcblx0XHR8fCB4ID49IDB4MzAwMSAmJiB4IDw9IDB4MzAzRVxuXHRcdHx8IHggPj0gMHgzMDQxICYmIHggPD0gMHgzMDk2XG5cdFx0fHwgeCA+PSAweDMwOTkgJiYgeCA8PSAweDMwRkZcblx0XHR8fCB4ID49IDB4MzEwNSAmJiB4IDw9IDB4MzEyRlxuXHRcdHx8IHggPj0gMHgzMTMxICYmIHggPD0gMHgzMThFXG5cdFx0fHwgeCA+PSAweDMxOTAgJiYgeCA8PSAweDMxRTVcblx0XHR8fCB4ID49IDB4MzFFRiAmJiB4IDw9IDB4MzIxRVxuXHRcdHx8IHggPj0gMHgzMjIwICYmIHggPD0gMHgzMjQ3XG5cdFx0fHwgeCA+PSAweDMyNTAgJiYgeCA8PSAweEE0OENcblx0XHR8fCB4ID49IDB4QTQ5MCAmJiB4IDw9IDB4QTRDNlxuXHRcdHx8IHggPj0gMHhBOTYwICYmIHggPD0gMHhBOTdDXG5cdFx0fHwgeCA+PSAweEFDMDAgJiYgeCA8PSAweEQ3QTNcblx0XHR8fCB4ID49IDB4RjkwMCAmJiB4IDw9IDB4RkFGRlxuXHRcdHx8IHggPj0gMHhGRTEwICYmIHggPD0gMHhGRTE5XG5cdFx0fHwgeCA+PSAweEZFMzAgJiYgeCA8PSAweEZFNTJcblx0XHR8fCB4ID49IDB4RkU1NCAmJiB4IDw9IDB4RkU2NlxuXHRcdHx8IHggPj0gMHhGRTY4ICYmIHggPD0gMHhGRTZCXG5cdFx0fHwgeCA+PSAweDE2RkUwICYmIHggPD0gMHgxNkZFNFxuXHRcdHx8IHggPT09IDB4MTZGRjBcblx0XHR8fCB4ID09PSAweDE2RkYxXG5cdFx0fHwgeCA+PSAweDE3MDAwICYmIHggPD0gMHgxODdGN1xuXHRcdHx8IHggPj0gMHgxODgwMCAmJiB4IDw9IDB4MThDRDVcblx0XHR8fCB4ID49IDB4MThDRkYgJiYgeCA8PSAweDE4RDA4XG5cdFx0fHwgeCA+PSAweDFBRkYwICYmIHggPD0gMHgxQUZGM1xuXHRcdHx8IHggPj0gMHgxQUZGNSAmJiB4IDw9IDB4MUFGRkJcblx0XHR8fCB4ID09PSAweDFBRkZEXG5cdFx0fHwgeCA9PT0gMHgxQUZGRVxuXHRcdHx8IHggPj0gMHgxQjAwMCAmJiB4IDw9IDB4MUIxMjJcblx0XHR8fCB4ID09PSAweDFCMTMyXG5cdFx0fHwgeCA+PSAweDFCMTUwICYmIHggPD0gMHgxQjE1MlxuXHRcdHx8IHggPT09IDB4MUIxNTVcblx0XHR8fCB4ID49IDB4MUIxNjQgJiYgeCA8PSAweDFCMTY3XG5cdFx0fHwgeCA+PSAweDFCMTcwICYmIHggPD0gMHgxQjJGQlxuXHRcdHx8IHggPj0gMHgxRDMwMCAmJiB4IDw9IDB4MUQzNTZcblx0XHR8fCB4ID49IDB4MUQzNjAgJiYgeCA8PSAweDFEMzc2XG5cdFx0fHwgeCA9PT0gMHgxRjAwNFxuXHRcdHx8IHggPT09IDB4MUYwQ0Zcblx0XHR8fCB4ID09PSAweDFGMThFXG5cdFx0fHwgeCA+PSAweDFGMTkxICYmIHggPD0gMHgxRjE5QVxuXHRcdHx8IHggPj0gMHgxRjIwMCAmJiB4IDw9IDB4MUYyMDJcblx0XHR8fCB4ID49IDB4MUYyMTAgJiYgeCA8PSAweDFGMjNCXG5cdFx0fHwgeCA+PSAweDFGMjQwICYmIHggPD0gMHgxRjI0OFxuXHRcdHx8IHggPT09IDB4MUYyNTBcblx0XHR8fCB4ID09PSAweDFGMjUxXG5cdFx0fHwgeCA+PSAweDFGMjYwICYmIHggPD0gMHgxRjI2NVxuXHRcdHx8IHggPj0gMHgxRjMwMCAmJiB4IDw9IDB4MUYzMjBcblx0XHR8fCB4ID49IDB4MUYzMkQgJiYgeCA8PSAweDFGMzM1XG5cdFx0fHwgeCA+PSAweDFGMzM3ICYmIHggPD0gMHgxRjM3Q1xuXHRcdHx8IHggPj0gMHgxRjM3RSAmJiB4IDw9IDB4MUYzOTNcblx0XHR8fCB4ID49IDB4MUYzQTAgJiYgeCA8PSAweDFGM0NBXG5cdFx0fHwgeCA+PSAweDFGM0NGICYmIHggPD0gMHgxRjNEM1xuXHRcdHx8IHggPj0gMHgxRjNFMCAmJiB4IDw9IDB4MUYzRjBcblx0XHR8fCB4ID09PSAweDFGM0Y0XG5cdFx0fHwgeCA+PSAweDFGM0Y4ICYmIHggPD0gMHgxRjQzRVxuXHRcdHx8IHggPT09IDB4MUY0NDBcblx0XHR8fCB4ID49IDB4MUY0NDIgJiYgeCA8PSAweDFGNEZDXG5cdFx0fHwgeCA+PSAweDFGNEZGICYmIHggPD0gMHgxRjUzRFxuXHRcdHx8IHggPj0gMHgxRjU0QiAmJiB4IDw9IDB4MUY1NEVcblx0XHR8fCB4ID49IDB4MUY1NTAgJiYgeCA8PSAweDFGNTY3XG5cdFx0fHwgeCA9PT0gMHgxRjU3QVxuXHRcdHx8IHggPT09IDB4MUY1OTVcblx0XHR8fCB4ID09PSAweDFGNTk2XG5cdFx0fHwgeCA9PT0gMHgxRjVBNFxuXHRcdHx8IHggPj0gMHgxRjVGQiAmJiB4IDw9IDB4MUY2NEZcblx0XHR8fCB4ID49IDB4MUY2ODAgJiYgeCA8PSAweDFGNkM1XG5cdFx0fHwgeCA9PT0gMHgxRjZDQ1xuXHRcdHx8IHggPj0gMHgxRjZEMCAmJiB4IDw9IDB4MUY2RDJcblx0XHR8fCB4ID49IDB4MUY2RDUgJiYgeCA8PSAweDFGNkQ3XG5cdFx0fHwgeCA+PSAweDFGNkRDICYmIHggPD0gMHgxRjZERlxuXHRcdHx8IHggPT09IDB4MUY2RUJcblx0XHR8fCB4ID09PSAweDFGNkVDXG5cdFx0fHwgeCA+PSAweDFGNkY0ICYmIHggPD0gMHgxRjZGQ1xuXHRcdHx8IHggPj0gMHgxRjdFMCAmJiB4IDw9IDB4MUY3RUJcblx0XHR8fCB4ID09PSAweDFGN0YwXG5cdFx0fHwgeCA+PSAweDFGOTBDICYmIHggPD0gMHgxRjkzQVxuXHRcdHx8IHggPj0gMHgxRjkzQyAmJiB4IDw9IDB4MUY5NDVcblx0XHR8fCB4ID49IDB4MUY5NDcgJiYgeCA8PSAweDFGOUZGXG5cdFx0fHwgeCA+PSAweDFGQTcwICYmIHggPD0gMHgxRkE3Q1xuXHRcdHx8IHggPj0gMHgxRkE4MCAmJiB4IDw9IDB4MUZBODlcblx0XHR8fCB4ID49IDB4MUZBOEYgJiYgeCA8PSAweDFGQUM2XG5cdFx0fHwgeCA+PSAweDFGQUNFICYmIHggPD0gMHgxRkFEQ1xuXHRcdHx8IHggPj0gMHgxRkFERiAmJiB4IDw9IDB4MUZBRTlcblx0XHR8fCB4ID49IDB4MUZBRjAgJiYgeCA8PSAweDFGQUY4XG5cdFx0fHwgeCA+PSAweDIwMDAwICYmIHggPD0gMHgyRkZGRFxuXHRcdHx8IHggPj0gMHgzMDAwMCAmJiB4IDw9IDB4M0ZGRkQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKGNvZGVQb2ludCkge1xuXHRpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGNvZGVQb2ludCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGNvZGUgcG9pbnQsIGdvdCBcXGAke3R5cGVvZiBjb2RlUG9pbnR9XFxgLmApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGVhc3RBc2lhbldpZHRoKGNvZGVQb2ludCwge2FtYmlndW91c0FzV2lkZSA9IGZhbHNlfSA9IHt9KSB7XG5cdHZhbGlkYXRlKGNvZGVQb2ludCk7XG5cblx0aWYgKFxuXHRcdGlzRnVsbFdpZHRoKGNvZGVQb2ludClcblx0XHR8fCBpc1dpZGUoY29kZVBvaW50KVxuXHRcdHx8IChhbWJpZ3VvdXNBc1dpZGUgJiYgaXNBbWJpZ3VvdXMoY29kZVBvaW50KSlcblx0KSB7XG5cdFx0cmV0dXJuIDI7XG5cdH1cblxuXHRyZXR1cm4gMTtcbn1cblxuY29uc3QgZW1vamlSZWdleCA9ICgpID0+IHtcblx0Ly8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppXG5cdHJldHVybiAvWyMqMC05XVxcdUZFMEY/XFx1MjBFM3xbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMUFcXHUyMzFCXFx1MjMyOFxcdTIzQ0ZcXHUyM0VELVxcdTIzRUZcXHUyM0YxXFx1MjNGMlxcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQlxcdTI1RkNcXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjIwXFx1MjYyMlxcdTI2MjNcXHUyNjI2XFx1MjYyQVxcdTI2MkVcXHUyNjJGXFx1MjYzOC1cXHUyNjNBXFx1MjY0MFxcdTI2NDJcXHUyNjQ4LVxcdTI2NTNcXHUyNjVGXFx1MjY2MFxcdTI2NjNcXHUyNjY1XFx1MjY2NlxcdTI2NjhcXHUyNjdCXFx1MjY3RVxcdTI2N0ZcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkFBXFx1MjZCMFxcdTI2QjFcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM4XFx1MjZDRlxcdTI2RDFcXHUyNkU5XFx1MjZGMC1cXHUyNkY1XFx1MjZGN1xcdTI2RjhcXHUyNkZBXFx1MjcwMlxcdTI3MDhcXHUyNzA5XFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NTdcXHUyNzYzXFx1MjdBMVxcdTI5MzRcXHUyOTM1XFx1MkIwNS1cXHUyQjA3XFx1MkIxQlxcdTJCMUNcXHUyQjU1XFx1MzAzMFxcdTMwM0RcXHUzMjk3XFx1MzI5OV1cXHVGRTBGP3xbXFx1MjYxRFxcdTI3MENcXHUyNzBEXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT98W1xcdTI3MEFcXHUyNzBCXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNjkzXFx1MjZBMVxcdTI2QUJcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzk1LVxcdTI3OTdcXHUyN0IwXFx1MjdCRlxcdTJCNTBdfFxcdTI2RDNcXHVGRTBGPyg/OlxcdTIwMERcXHVEODNEXFx1RENBNSk/fFxcdTI2RjkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdTI3NjRcXHVGRTBGPyg/OlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSkpP3xcXHVEODNDKD86W1xcdURDMDRcXHVERDcwXFx1REQ3MVxcdUREN0VcXHVERDdGXFx1REUwMlxcdURFMzdcXHVERjIxXFx1REYyNC1cXHVERjJDXFx1REYzNlxcdURGN0RcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUVcXHVERjlGXFx1REZDRFxcdURGQ0VcXHVERkQ0LVxcdURGREZcXHVERkY1XFx1REZGN11cXHVGRTBGP3xbXFx1REY4NVxcdURGQzJcXHVERkM3XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY0M1xcdURGNDUtXFx1REY0QVxcdURGNEMtXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY3XFx1RERGQS1cXHVEREZGXXxcXHVEREU5XFx1RDgzQ1tcXHVEREVBXFx1RERFQ1xcdURERUZcXHVEREYwXFx1RERGMlxcdURERjRcXHVEREZGXXxcXHVEREVBXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRFxcdURERjctXFx1RERGQV18XFx1RERFQlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XXxcXHVEREVDXFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRVxcdURERjEtXFx1RERGM1xcdURERjUtXFx1RERGQVxcdURERkNcXHVEREZFXXxcXHVEREVEXFx1RDgzQ1tcXHVEREYwXFx1RERGMlxcdURERjNcXHVEREY3XFx1RERGOVxcdURERkFdfFxcdURERUVcXHVEODNDW1xcdURERTgtXFx1RERFQVxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOV18XFx1RERFRlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV18XFx1RERGMFxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdfFxcdURERjFcXHVEODNDW1xcdURERTYtXFx1RERFOFxcdURERUVcXHVEREYwXFx1RERGNy1cXHVEREZCXFx1RERGRV18XFx1RERGMlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl18XFx1RERGM1xcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBLVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjRcXHVEREY1XFx1RERGN1xcdURERkFcXHVEREZGXXxcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RERGNVxcdUQ4M0NbXFx1RERFNlxcdURERUEtXFx1RERFRFxcdURERjAtXFx1RERGM1xcdURERjctXFx1RERGOVxcdURERkNcXHVEREZFXXxcXHVEREY2XFx1RDgzQ1xcdURERTZ8XFx1RERGN1xcdUQ4M0NbXFx1RERFQVxcdURERjRcXHVEREY4XFx1RERGQVxcdURERkNdfFxcdURERjhcXHVEODNDW1xcdURERTYtXFx1RERFQVxcdURERUMtXFx1RERGNFxcdURERjctXFx1RERGOVxcdURERkJcXHVEREZELVxcdURERkZdfFxcdURERjlcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRFxcdURERUYtXFx1RERGNFxcdURERjdcXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZGXXxcXHVEREZBXFx1RDgzQ1tcXHVEREU2XFx1RERFQ1xcdURERjJcXHVEREYzXFx1RERGOFxcdURERkVcXHVEREZGXXxcXHVEREZCXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRVxcdURERjNcXHVEREZBXXxcXHVEREZDXFx1RDgzQ1tcXHVEREVCXFx1RERGOF18XFx1RERGRFxcdUQ4M0NcXHVEREYwfFxcdURERkVcXHVEODNDW1xcdURERUFcXHVEREY5XXxcXHVEREZGXFx1RDgzQ1tcXHVEREU2XFx1RERGMlxcdURERkNdfFxcdURGNDQoPzpcXHUyMDBEXFx1RDgzRFxcdURGRUIpP3xcXHVERjRCKD86XFx1MjAwRFxcdUQ4M0RcXHVERkU5KT98XFx1REZDMyg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REZGM1xcdUZFMEY/KD86XFx1MjAwRCg/OlxcdTI2QTdcXHVGRTBGP3xcXHVEODNDXFx1REYwOCkpP3xcXHVERkY0KD86XFx1MjAwRFxcdTI2MjBcXHVGRTBGP3xcXHVEQjQwXFx1REM2N1xcdURCNDBcXHVEQzYyXFx1REI0MCg/OlxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3fFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURDNzdcXHVEQjQwXFx1REM2Q1xcdURCNDBcXHVEQzczKVxcdURCNDBcXHVEQzdGKT8pfFxcdUQ4M0QoPzpbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdXFx1RkUwRj98W1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0XFx1REVCNV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0MVxcdURFNDNcXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVEQy1cXHVERURGXFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJcXHVERkYwXXxcXHVEQzA4KD86XFx1MjAwRFxcdTJCMUIpP3xcXHVEQzE1KD86XFx1MjAwRFxcdUQ4M0VcXHVEREJBKT98XFx1REMyNig/OlxcdTIwMEQoPzpcXHUyQjFCfFxcdUQ4M0RcXHVERDI1KSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzY5KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1tcXHVEQzY4XFx1REM2OV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT98XFx1REM2OVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPykpfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNkYoPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REQ3NSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REUyRSg/OlxcdTIwMERcXHVEODNEXFx1RENBOCk/fFxcdURFMzUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQUIpP3xcXHVERTM2KD86XFx1MjAwRFxcdUQ4M0NcXHVERjJCXFx1RkUwRj8pP3xcXHVERTQyKD86XFx1MjAwRFtcXHUyMTk0XFx1MjE5NV1cXHVGRTBGPyk/fFxcdURFQjYoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMEQoPzpbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98XFx1MjdBMVxcdUZFMEY/KSk/KXxcXHVEODNFKD86W1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFGXFx1REQzMC1cXHVERDM0XFx1REQzNlxcdURENzdcXHVEREI1XFx1RERCNlxcdUREQkJcXHVEREQyXFx1REREM1xcdURERDVcXHVERUMzLVxcdURFQzVcXHVERUYwXFx1REVGMi1cXHVERUY4XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENEXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg5XFx1REU4Ri1cXHVERUMyXFx1REVDNlxcdURFQ0UtXFx1REVEQ1xcdURFREYtXFx1REVFOV18XFx1REQzQyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj98XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98XFx1RERDRSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REREMSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1REREMVxcdTIwMERcXHVEODNFXFx1REREMig/OlxcdTIwMERcXHVEODNFXFx1REREMik/fFxcdURERDIoPzpcXHUyMDBEXFx1RDgzRVxcdURERDIpPykpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkMtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmNvbnN0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigpO1xuXG5jb25zdCBkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXggPSAvXlxccHtEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50fSQvdTtcblxuZnVuY3Rpb24gc3RyaW5nV2lkdGgkMShzdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycgfHwgc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Y29uc3Qge1xuXHRcdGFtYmlndW91c0lzTmFycm93ID0gdHJ1ZSxcblx0XHRjb3VudEFuc2lFc2NhcGVDb2RlcyA9IGZhbHNlLFxuXHR9ID0gb3B0aW9ucztcblxuXHRpZiAoIWNvdW50QW5zaUVzY2FwZUNvZGVzKSB7XG5cdFx0c3RyaW5nID0gc3RyaXBBbnNpKHN0cmluZyk7XG5cdH1cblxuXHRpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0bGV0IHdpZHRoID0gMDtcblx0Y29uc3QgZWFzdEFzaWFuV2lkdGhPcHRpb25zID0ge2FtYmlndW91c0FzV2lkZTogIWFtYmlndW91c0lzTmFycm93fTtcblxuXHRmb3IgKGNvbnN0IHtzZWdtZW50OiBjaGFyYWN0ZXJ9IG9mIHNlZ21lbnRlci5zZWdtZW50KHN0cmluZykpIHtcblx0XHRjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMCk7XG5cblx0XHQvLyBJZ25vcmUgY29udHJvbCBjaGFyYWN0ZXJzXG5cdFx0aWYgKGNvZGVQb2ludCA8PSAweDFGIHx8IChjb2RlUG9pbnQgPj0gMHg3RiAmJiBjb2RlUG9pbnQgPD0gMHg5RikpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIElnbm9yZSB6ZXJvLXdpZHRoIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4MjBfMEIgJiYgY29kZVBvaW50IDw9IDB4MjBfMEYpIC8vIFplcm8td2lkdGggc3BhY2UsIG5vbi1qb2luZXIsIGpvaW5lciwgbGVmdC10by1yaWdodCBtYXJrLCByaWdodC10by1sZWZ0IG1hcmtcblx0XHRcdHx8IGNvZGVQb2ludCA9PT0gMHhGRV9GRiAvLyBaZXJvLXdpZHRoIG5vLWJyZWFrIHNwYWNlXG5cdFx0KSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSAvLyBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3Ncblx0XHRcdHx8IChjb2RlUG9pbnQgPj0gMHgxQV9CMCAmJiBjb2RlUG9pbnQgPD0gMHgxQV9GRikgLy8gQ29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGV4dGVuZGVkXG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MURfQzAgJiYgY29kZVBvaW50IDw9IDB4MURfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBzdXBwbGVtZW50XG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MjBfRDAgJiYgY29kZVBvaW50IDw9IDB4MjBfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc1xuXHRcdFx0fHwgKGNvZGVQb2ludCA+PSAweEZFXzIwICYmIGNvZGVQb2ludCA8PSAweEZFXzJGKSAvLyBDb21iaW5pbmcgaGFsZiBtYXJrc1xuXHRcdCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHN1cnJvZ2F0ZSBwYWlyc1xuXHRcdGlmIChjb2RlUG9pbnQgPj0gMHhEOF8wMCAmJiBjb2RlUG9pbnQgPD0gMHhERl9GRikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHZhcmlhdGlvbiBzZWxlY3RvcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4RkVfMDAgJiYgY29kZVBvaW50IDw9IDB4RkVfMEYpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIFRoaXMgY292ZXJzIHNvbWUgb2YgdGhlIGFib3ZlIGNhc2VzLCBidXQgd2Ugc3RpbGwga2VlcCB0aGVtIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLlxuXHRcdGlmIChkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXgudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBUT0RPOiBVc2UgYC9cXHB7UkdJX0Vtb2ppfS92YCB3aGVuIHRhcmdldGluZyBOb2RlLmpzIDIwLlxuXHRcdGlmIChlbW9qaVJlZ2V4KCkudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0d2lkdGggKz0gZWFzdEFzaWFuV2lkdGgoY29kZVBvaW50LCBlYXN0QXNpYW5XaWR0aE9wdGlvbnMpO1xuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGNvbnN0IHtlbnZ9ID0gcHJvY2VzcyQxO1xuXHRjb25zdCB7VEVSTSwgVEVSTV9QUk9HUkFNfSA9IGVudjtcblxuXHRpZiAocHJvY2VzcyQxLnBsYXRmb3JtICE9PSAnd2luMzInKSB7XG5cdFx0cmV0dXJuIFRFUk0gIT09ICdsaW51eCc7IC8vIExpbnV4IGNvbnNvbGUgKGtlcm5lbClcblx0fVxuXG5cdHJldHVybiBCb29sZWFuKGVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihlbnYuVEVSTUlOVVNfU1VCTElNRSkgLy8gVGVybWludXMgKDwwLjIuMjcpXG5cdFx0fHwgZW52LkNvbkVtdVRhc2sgPT09ICd7Y21kOjpDbWRlcn0nIC8vIENvbkVtdSBhbmQgY21kZXJcblx0XHR8fCBURVJNX1BST0dSQU0gPT09ICdUZXJtaW51cy1TdWJsaW1lJ1xuXHRcdHx8IFRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBURVJNID09PSAneHRlcm0tMjU2Y29sb3InXG5cdFx0fHwgVEVSTSA9PT0gJ2FsYWNyaXR0eSdcblx0XHR8fCBURVJNID09PSAncnh2dC11bmljb2RlJ1xuXHRcdHx8IFRFUk0gPT09ICdyeHZ0LXVuaWNvZGUtMjU2Y29sb3InXG5cdFx0fHwgZW52LlRFUk1JTkFMX0VNVUxBVE9SID09PSAnSmV0QnJhaW5zLUplZGlUZXJtJztcbn1cblxuY29uc3QgVFlQRV9DT0xPUl9NQVAgPSB7XG4gIGluZm86IFwiY3lhblwiLFxuICBmYWlsOiBcInJlZFwiLFxuICBzdWNjZXNzOiBcImdyZWVuXCIsXG4gIHJlYWR5OiBcImdyZWVuXCIsXG4gIHN0YXJ0OiBcIm1hZ2VudGFcIlxufTtcbmNvbnN0IExFVkVMX0NPTE9SX01BUCA9IHtcbiAgMDogXCJyZWRcIixcbiAgMTogXCJ5ZWxsb3dcIlxufTtcbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBUWVBFX0lDT05TID0ge1xuICBlcnJvcjogcyhcIlxcdTI3MTZcIiwgXCJcXHhEN1wiKSxcbiAgZmF0YWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHJlYWR5OiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIHdhcm46IHMoXCJcXHUyNkEwXCIsIFwiXFx1MjAzQ1wiKSxcbiAgaW5mbzogcyhcIlxcdTIxMzlcIiwgXCJpXCIpLFxuICBzdWNjZXNzOiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIGRlYnVnOiBzKFwiXFx1MjY5OVwiLCBcIkRcIiksXG4gIHRyYWNlOiBzKFwiXFx1MjE5MlwiLCBcIlxcdTIxOTJcIiksXG4gIGZhaWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHN0YXJ0OiBzKFwiXFx1MjVEMFwiLCBcIm9cIiksXG4gIGxvZzogXCJcIlxufTtcbmZ1bmN0aW9uIHN0cmluZ1dpZHRoKHN0cikge1xuICBjb25zdCBoYXNJQ1UgPSB0eXBlb2YgSW50bCA9PT0gXCJvYmplY3RcIjtcbiAgaWYgKCFoYXNJQ1UgfHwgIUludGwuU2VnbWVudGVyKSB7XG4gICAgcmV0dXJuIHN0cmlwQW5zaSQxKHN0cikubGVuZ3RoO1xuICB9XG4gIHJldHVybiBzdHJpbmdXaWR0aCQxKHN0cik7XG59XG5jbGFzcyBGYW5jeVJlcG9ydGVyIGV4dGVuZHMgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBgXG4ke2luZGVudH1gICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihgXG4ke2luZGVudH1gKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShUIHx8IEEpID8gbmV3IEZhbmN5UmVwb3J0ZXIoKSA6IG5ldyBCYXNpY1JlcG9ydGVyKClcbiAgICBdLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG4gIHJldHVybiBjb25zb2xhMjtcbn1cbmZ1bmN0aW9uIF9nZXREZWZhdWx0TG9nTGV2ZWwoKSB7XG4gIGlmIChVKSB7XG4gICAgcmV0dXJuIExvZ0xldmVscy5kZWJ1ZztcbiAgfVxuICBpZiAoQSkge1xuICAgIHJldHVybiBMb2dMZXZlbHMud2FybjtcbiAgfVxuICByZXR1cm4gTG9nTGV2ZWxzLmluZm87XG59XG5jb25zdCBjb25zb2xhID0gY3JlYXRlQ29uc29sYSgpO1xuXG5leHBvcnQgeyBjb25zb2xhIGFzIGEsIGNyZWF0ZUNvbnNvbGEgYXMgYywgaXNVbmljb2RlU3VwcG9ydGVkIGFzIGkgfTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSB1bmljb3JuL25vLXByb2Nlc3MtZXhpdCAqL1xuaW1wb3J0IGFzc2VydCBmcm9tIFwibm9kZTphc3NlcnRcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCBmc1N5bmMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gXCJvaGFzaFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21tYW5kLCBydW5NYWluIH0gZnJvbSBcImNpdHR5XCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlTWFuaWZlc3QsIHR5cGUgUGFja2FnZU1hbmlmZXN0IH0gZnJvbSBcInF1ZXJ5LXJlZ2lzdHJ5XCI7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnQgfSBmcm9tIFwiQHBrZy1wci1uZXcvdXRpbHNcIjtcbmltcG9ydCB7XG4gIGFiYnJldmlhdGVDb21taXRIYXNoLFxuICBleHRyYWN0T3duZXJBbmRSZXBvLFxuICBleHRyYWN0UmVwb3NpdG9yeSxcbn0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcInRpbnlnbG9iYnlcIjtcbmltcG9ydCBpZ25vcmUgZnJvbSBcImlnbm9yZVwiO1xuaW1wb3J0IFwiLi9lbnZpcm9ubWVudHNcIjtcbmltcG9ydCB7IGlzQmluYXJ5RmlsZSB9IGZyb20gXCJpc2JpbmFyeWZpbGVcIjtcbmltcG9ydCB7IHdyaXRlUGFja2FnZUpTT04sIHR5cGUgUGFja2FnZUpzb24gfSBmcm9tIFwicGtnLXR5cGVzXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFRlbXBsYXRlIH0gZnJvbSBcIi4vdGVtcGxhdGVcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBjb25zdCBBUElfVVJMOiBzdHJpbmc7XG59XG5cbnR5cGUgT3V0cHV0TWV0YWRhdGEgPSB7XG4gIHBhY2thZ2VzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHNoYXN1bTogc3RyaW5nO1xuICB9W107XG4gIHRlbXBsYXRlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgfVtdO1xufTtcblxuY29uc3QgYXBpVXJsID0gcHJvY2Vzcy5lbnYuQVBJX1VSTCA/PyBBUElfVVJMO1xuY29uc3QgcHVibGlzaFVybCA9IG5ldyBVUkwoXCIvcHVibGlzaFwiLCBhcGlVcmwpO1xuY29uc3QgY3JlYXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY3JlYXRlXCIsIGFwaVVybCk7XG5jb25zdCB1cGxvYWRNdWx0aXBhcnQgPSBuZXcgVVJMKFwiL211bHRpcGFydC91cGxvYWRcIiwgYXBpVXJsKTtcbmNvbnN0IGNvbXBsZXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY29tcGxldGVcIiwgYXBpVXJsKTtcblxuY29uc3QgbWFpbiA9IGRlZmluZUNvbW1hbmQoe1xuICBtZXRhOiB7XG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbmFtZTogXCJzdGFja2JsaXR6XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBDTEkgZm9yIHBrZy5wci5uZXcgKENvbnRpbnVvdXMgUmVsZWFzZXMpXCIsXG4gIH0sXG4gIHN1YkNvbW1hbmRzOiB7XG4gICAgcHVibGlzaDogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGNvbXBhY3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiY29tcGFjdCB1cmxzLiBUaGUgc2hvcnRlc3QgZm9ybSBvZiB1cmxzIGxpa2UgcGtnLnByLm5ldy90aW55YmVuY2hAYTgzMmE1NSlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBlZXJEZXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImhhbmRsZSBwZWVyRGVwZW5kZW5jaWVzIGJ5IHNldHRpbmcgdGhlIHdvcmtzcGFjZSB2ZXJzaW9uIGluc3RlYWQgb2Ygd2hhdCBoYXMgYmVlbiBzZXQgaW4gdGhlIHBlZXJEZXBzIGl0c2VsZi4gLS1wZWVyRGVwcyBub3QgYmVpbmcgdHJ1ZSB3b3VsZCBsZWF2ZSBwZWVyRGVwZW5kZW5jaWVzIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIgaXRzZWxmIChucG0sIHBucG0pXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBucG06IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwidXNlIGBwbnBtIHBhY2tgIGluc3RlYWQgb2YgYG5wbSBwYWNrIC0tanNvbmBcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlhcm46IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwidXNlIGB5YXJuIHBhY2tgIGluc3RlYWQgb2YgYG5wbSBwYWNrIC0tanNvbmBcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiZ2VuZXJhdGUgc3RhY2tibGl0eiB0ZW1wbGF0ZXMgb3V0IG9mIGRpcmVjdG9yaWVzIGluIHRoZSBjdXJyZW50IHJlcG8gd2l0aCB0aGUgbmV3IGJ1aWx0IHBhY2thZ2VzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21tZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLCAvLyBcIm9mZlwiLCBcImNyZWF0ZVwiLCBcInVwZGF0ZVwiIChkZWZhdWx0KVxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBcIm9mZlwiIGZvciBubyBjb21tZW50cyAoc2lsZW50IG1vZGUpLiBcImNyZWF0ZVwiIGZvciBjb21tZW50IG9uIGVhY2ggcHVibGlzaC4gXCJ1cGRhdGVcIiBmb3Igb25lIGNvbW1lbnQgYWNyb3NzIHRoZSBwdWxsIHJlcXVlc3Qgd2l0aCBlZGl0cyBvbiBlYWNoIHB1Ymxpc2ggKGRlZmF1bHQpYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwidXBkYXRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9ubHktdGVtcGxhdGVzXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBnZW5lcmF0ZSBvbmx5IHN0YWNrYmxpdHogdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgdHlwZTogXCJtaXhlZFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBTYXZlIG1ldGFkYXRhIHRvIGEgSlNPTiBmaWxlLiBJZiB0cnVlLCBsb2cgdGhlIG91dHB1dCBmb3IgcGlwaW5nLiBJZiBhIHN0cmluZywgc2F2ZSB0aGUgb3V0cHV0IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBwYXRoLmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWNrYWdlTWFuYWdlcjoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNwZWNpZnkgdGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2UgKG5wbSwgYnVuLCBwbnBtLCB5YXJuKVwiLFxuICAgICAgICAgICAgZW51bTogW1wibnBtXCIsIFwiYnVuXCIsIFwicG5wbVwiLCBcInlhcm5cIl0sXG4gICAgICAgICAgICBkZWZhdWx0OiBcIm5wbVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNldCB0byB0cnVlIGlmIHlvdXIgcGFja2FnZSBpcyBhIGJpbmFyeSBhcHBsaWNhdGlvbiBhbmQgeW91IHdvdWxkIGxpa2UgdG8gc2hvdyBhbiBleGVjdXRlIGNvbW1hbmQgaW5zdGVhZCBvZiBhbiBpbnN0YWxsIGNvbW1hbmQuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcnVuOiBhc3luYyAoeyBhcmdzIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRocyA9XG4gICAgICAgICAgICBhcmdzLl8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGF3YWl0IGdsb2IoYXJncy5fLCB7XG4gICAgICAgICAgICAgICAgICBleHBhbmREaXJlY3RvcmllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBvbmx5RGlyZWN0b3JpZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IFtwcm9jZXNzLmN3ZCgpXTtcblxuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IGF3YWl0IGdsb2IoYXJncy50ZW1wbGF0ZSB8fCBbXSwge1xuICAgICAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICAgICAgb25seURpcmVjdG9yaWVzOiB0cnVlLFxuICAgICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgY29uc3QgaXNDb21wYWN0ID0gISFhcmdzLmNvbXBhY3Q7XG4gICAgICAgICAgbGV0IHBhY2tNZXRob2Q6IFBhY2tNZXRob2QgPSBcIm5wbVwiO1xuXG4gICAgICAgICAgaWYgKGFyZ3MucG5wbSkge1xuICAgICAgICAgICAgcGFja01ldGhvZCA9IFwicG5wbVwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXJncy55YXJuKSB7XG4gICAgICAgICAgICBwYWNrTWV0aG9kID0gXCJ5YXJuXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNQZWVyRGVwc0VuYWJsZWQgPSAhIWFyZ3MucGVlckRlcHM7XG4gICAgICAgICAgY29uc3QgaXNPbmx5VGVtcGxhdGVzID0gISFhcmdzW1wib25seS10ZW1wbGF0ZXNcIl07XG4gICAgICAgICAgY29uc3QgaXNCaW5hcnlBcHBsaWNhdGlvbiA9ICEhYXJncy5iaW47XG4gICAgICAgICAgY29uc3QgY29tbWVudDogQ29tbWVudCA9IGFyZ3MuY29tbWVudCBhcyBDb21tZW50O1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFja2FnZU1hbmFnZXIgPSBhcmdzLnBhY2thZ2VNYW5hZ2VyIGFzXG4gICAgICAgICAgICB8IFwibnBtXCJcbiAgICAgICAgICAgIHwgXCJidW5cIlxuICAgICAgICAgICAgfCBcInBucG1cIlxuICAgICAgICAgICAgfCBcInlhcm5cIjtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFbXCJucG1cIiwgXCJidW5cIiwgXCJwbnBtXCIsIFwieWFyblwiXS5pbmNsdWRlcyhzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYFVuc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlcjogJHtzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyfS4gU3VwcG9ydGVkIG1hbmFnZXJzIGFyZSBucG0sIGJ1biwgcG5wbSwgeWFybi5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1QgJiYgcHJvY2Vzcy5lbnYuR0lUSFVCX0FDVElPTlMgIT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkNvbnRpbnVvdXMgUmVsZWFzZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIEdpdEh1YiBBY3Rpb25zLlwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBHSVRIVUJfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICBHSVRIVUJfUlVOX0FUVEVNUFQsXG4gICAgICAgICAgICBHSVRIVUJfQUNUT1JfSUQsXG4gICAgICAgICAgfSA9IHByb2Nlc3MuZW52O1xuXG4gICAgICAgICAgY29uc3QgW293bmVyLCByZXBvXSA9IEdJVEhVQl9SRVBPU0lUT1JZLnNwbGl0KFwiL1wiKTtcblxuICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgcnVuOiBOdW1iZXIoR0lUSFVCX1JVTl9JRCksXG4gICAgICAgICAgICBhdHRlbXB0OiBOdW1iZXIoR0lUSFVCX1JVTl9BVFRFTVBUKSxcbiAgICAgICAgICAgIGFjdG9yOiBOdW1iZXIoR0lUSFVCX0FDVE9SX0lEKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3Qga2V5ID0gaGFzaChtZXRhZGF0YSk7XG5cbiAgICAgICAgICBjb25zdCBjaGVja1Jlc3BvbnNlID0gYXdhaXQgZmV0Y2gobmV3IFVSTChcIi9jaGVja1wiLCBhcGlVcmwpLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBvd25lcixcbiAgICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIWNoZWNrUmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgY2hlY2tSZXNwb25zZS50ZXh0KCkpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgc2hhIH0gPSBhd2FpdCBjaGVja1Jlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICAgIGNvbnN0IGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7IC8vIHBrZy5wci5uZXcgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2VcbiAgICAgICAgICBjb25zdCByZWFsRGVwczogTWFwPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBpc1BlZXJEZXBzRW5hYmxlZFxuICAgICAgICAgICAgPyBuZXcgTWFwKClcbiAgICAgICAgICAgIDogbnVsbDsgLy8gcmVhbCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgdXNlZnVsIGZvciBwZWVyRGVwZW5kZW5jaWVzXG5cbiAgICAgICAgICBjb25zdCBwcmludEpzb24gPSB0eXBlb2YgYXJncy5qc29uID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICBjb25zdCBzYXZlSnNvbiA9IHR5cGVvZiBhcmdzLmpzb24gPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgY29uc3QganNvbkZpbGVQYXRoID0gc2F2ZUpzb24gPyBhcmdzLmpzb24gOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IG91dHB1dE1ldGFkYXRhOiBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHBhY2thZ2VzOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlczogW10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ29tcGFjdCkge1xuICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlDb21wYWN0TW9kZShwSnNvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkU2hhID0gaXNDb21wYWN0ID8gYWJicmV2aWF0ZUNvbW1pdEhhc2goc2hhKSA6IHNoYTtcbiAgICAgICAgICAgIGNvbnN0IGxvbmdEZXBVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vJHtwSnNvbi5uYW1lfUAke2Zvcm1hdHRlZFNoYX1gLFxuICAgICAgICAgICAgICBhcGlVcmwsXG4gICAgICAgICAgICApLmhyZWY7XG4gICAgICAgICAgICBkZXBzLnNldChwSnNvbi5uYW1lLCBsb25nRGVwVXJsKTtcbiAgICAgICAgICAgIHJlYWxEZXBzPy5zZXQocEpzb24ubmFtZSwgcEpzb24udmVyc2lvbiA/PyBsb25nRGVwVXJsKTtcblxuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc291cmNlID0gYXdhaXQgZmV0Y2gobG9uZ0RlcFVybCwge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2Uub2spIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGAke3BKc29uLm5hbWV9QCR7Zm9ybWF0dGVkU2hhfSB3YXMgYWxyZWFkeSBwdWJsaXNoZWQgb24gJHtsb25nRGVwVXJsfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250cm9sbGVyLmFib3J0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGpzb25VcmwgPSBpc0NvbXBhY3RcbiAgICAgICAgICAgICAgPyBuZXcgVVJMKGAvJHtwSnNvbi5uYW1lfUAke2Zvcm1hdHRlZFNoYX1gLCBhcGlVcmwpLmhyZWZcbiAgICAgICAgICAgICAgOiBsb25nRGVwVXJsO1xuXG4gICAgICAgICAgICAvLyBDb2xsZWN0IHBhY2thZ2UgbWV0YWRhdGFcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnBhY2thZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICB1cmw6IGpzb25VcmwsXG4gICAgICAgICAgICAgIHNoYXN1bTogXCJcIiwgLy8gd2lsbCBiZSBmaWxsZWQgbGF0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgdGVtcGxhdGVEaXIgb2YgdGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUodGVtcGxhdGVEaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb25Db250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IHBKc29uQ29udGVudHNcbiAgICAgICAgICAgICAgPyBwYXJzZVBhY2thZ2VKc29uKHBKc29uQ29udGVudHMpXG4gICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbiB8fCAhcEpzb25Db250ZW50cykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYHNraXBwaW5nICR7dGVtcGxhdGVEaXJ9IGJlY2F1c2UgdGhlcmUncyBubyBwYWNrYWdlLmpzb24gZmlsZWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwicHJlcGFyaW5nIHRlbXBsYXRlOlwiLCBwSnNvbi5uYW1lKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZSA9IGF3YWl0IHdyaXRlRGVwcyhcbiAgICAgICAgICAgICAgdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIHBKc29uQ29udGVudHMsXG4gICAgICAgICAgICAgIHBKc29uLFxuICAgICAgICAgICAgICBkZXBzLFxuICAgICAgICAgICAgICByZWFsRGVwcyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlnID0gaWdub3JlKCkuYWRkKFwibm9kZV9tb2R1bGVzXCIpLmFkZChcIi5naXRcIik7XG5cbiAgICAgICAgICAgIGlmIChmc1N5bmMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICBpZy5hZGQoZ2l0aWdub3JlQ29udGVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYihbXCIqKi8qXCJdLCB7XG4gICAgICAgICAgICAgIGN3ZDogdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgICBpZ25vcmU6IFtcIioqL25vZGVfbW9kdWxlc1wiLCBcIi5naXRcIl0sIC8vIGFsd2F5cyBpZ25vcmUgbm9kZV9tb2R1bGVzIGFuZCAuZ2l0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWlnLmlnbm9yZXMoZmlsZSkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbHRlcmVkRmlsZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbih0ZW1wbGF0ZURpciwgZmlsZVBhdGgpKTtcbiAgICAgICAgICAgICAgY29uc3QgaXNCaW5hcnkgPSBhd2FpdCBpc0JpbmFyeUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZS5idWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6JHtwSnNvbi5uYW1lfToke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBpc0JpbmFyeSA/IGJsb2IgOiBhd2FpdCBibG9iLnRleHQoKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHJlc3RvcmUoKTtcblxuICAgICAgICAgICAgLy8gQ29sbGVjdCB0ZW1wbGF0ZSBtZXRhZGF0YVxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vdGVtcGxhdGUvJHtwSnNvbi5uYW1lfWAsXG4gICAgICAgICAgICAgIGFwaVVybCxcbiAgICAgICAgICAgICkuaHJlZjtcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnRlbXBsYXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgdXJsOiB0ZW1wbGF0ZVVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5vRGVmYXVsdFRlbXBsYXRlID0gYXJncy50ZW1wbGF0ZSA9PT0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIW5vRGVmYXVsdFRlbXBsYXRlICYmIHRlbXBsYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBjcmVhdGVEZWZhdWx0VGVtcGxhdGUoXG4gICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhkZXBzLmVudHJpZXMoKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIE9iamVjdC5rZXlzKHByb2plY3QpKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6ZGVmYXVsdDoke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0W2ZpbGVQYXRoXSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXN0b3JlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2Ygd3JpdGVEZXBzPj5cbiAgICAgICAgICA+KCk7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbkNvbnRlbnRzID0gYXdhaXQgdHJ5UmVhZEZpbGUocEpzb25QYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBKc29uID0gcEpzb25Db250ZW50c1xuICAgICAgICAgICAgICA/IHBhcnNlUGFja2FnZUpzb24ocEpzb25Db250ZW50cylcbiAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uIHx8ICFwSnNvbkNvbnRlbnRzKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG9yZU1hcC5zZXQoXG4gICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgIGF3YWl0IHdyaXRlRGVwcyhwLCBwSnNvbkNvbnRlbnRzLCBwSnNvbiwgZGVwcywgcmVhbERlcHMpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaGFzdW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbihwSnNvblBhdGgpO1xuICAgICAgICAgICAgaWYgKCFwSnNvbikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYHNraXBwaW5nICR7cH0gYmVjYXVzZSB0aGVyZSdzIG5vIHBhY2thZ2UuanNvbiBmaWxlYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICghcEpzb24ubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBKc29uLnByaXZhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNraXBwaW5nICR7cH0gYmVjYXVzZSB0aGUgcGFja2FnZSBpcyBwcml2YXRlYCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaGFzdW0gfSA9IGF3YWl0IHJlc29sdmVUYXJiYWxsKFxuICAgICAgICAgICAgICAgIHBhY2tNZXRob2QsXG4gICAgICAgICAgICAgICAgcCxcbiAgICAgICAgICAgICAgICBwSnNvbixcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBzaGFzdW1zW3BKc29uLm5hbWVdID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IG91dHB1dFBrZyA9IG91dHB1dE1ldGFkYXRhLnBhY2thZ2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHApID0+IHAubmFtZSA9PT0gcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgKSE7XG4gICAgICAgICAgICAgIG91dHB1dFBrZy5zaGFzdW0gPSBzaGFzdW07XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgcGFja2FnZToke3BKc29uLm5hbWV9YCwgYmxvYiwgZmlsZW5hbWUpO1xuXG4gICAgICAgICAgICAgIGF3YWl0IGZzLnJtKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGF3YWl0IHJlc3RvcmVNYXAuZ2V0KHApPy4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YVBhY2thZ2VzU2l6ZSA9IFsuLi5mb3JtRGF0YS5lbnRyaWVzKCldLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBbXywgZW50cnldKSA9PiBwcmV2ICsgZ2V0Rm9ybUVudHJ5U2l6ZShlbnRyeSksXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBtdWx0aXBhcnQgdXBsb2FkaW5nXG4gICAgICAgICAgaWYgKGZvcm1EYXRhUGFja2FnZXNTaXplID4gMTAyNCAqIDEwMjQgKiA5OSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgZW50cnldIG9mIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJwYWNrYWdlOlwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBlbnRyeSBhcyBGaWxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IDEwMjQgKiAxMDI0ICogNTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS5zaXplIDw9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsQ2h1bmtzID0gTWF0aC5jZWlsKGZpbGUuc2l6ZSAvIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3JlYXRlTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2goY3JlYXRlTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcInNiLWtleVwiOiBrZXksXG4gICAgICAgICAgICAgICAgICAgIFwic2ItbmFtZVwiOiBuYW1lLnNsaWNlKFwicGFja2FnZTpcIi5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU11bHRpcGFydFJlcy5vaykge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihhd2FpdCBjcmVhdGVNdWx0aXBhcnRSZXMudGV4dCgpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGtleTogdXBsb2FkS2V5LCBpZDogdXBsb2FkSWQgfSA9XG4gICAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVNdWx0aXBhcnRSZXMuanNvbigpO1xuXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlIFIyVXBsb2FkZWRQYXJ0IHtcbiAgICAgICAgICAgICAgICAgIHBhcnROdW1iZXI6IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgIGV0YWc6IHN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRQYXJ0czogUjJVcGxvYWRlZFBhcnRbXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbENodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGkgKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihmaWxlLnNpemUsIHN0YXJ0ICsgY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gZmlsZS5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2godXBsb2FkTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogdXBsb2FkS2V5LFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiB1cGxvYWRJZCxcbiAgICAgICAgICAgICAgICAgICAgICBcInBhcnQtbnVtYmVyXCI6IGAke2kgKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGNodW5rLFxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghdXBsb2FkTXVsdGlwYXJ0UmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYEVycm9yIHVwbG9hZGluZyBwYXJ0ICR7aSArIDF9OiAke2F3YWl0IHVwbG9hZE11bHRpcGFydFJlcy50ZXh0KCl9YCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb25zdCB7IHBhcnQgfSA9IGF3YWl0IHVwbG9hZE11bHRpcGFydFJlcy5qc29uKCk7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRlZFBhcnRzLnB1c2gocGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2goY29tcGxldGVNdWx0aXBhcnQsIHtcbiAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogdXBsb2FkS2V5LFxuICAgICAgICAgICAgICAgICAgICBpZDogdXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgICAgIFwidXBsb2FkZWQtcGFydHNcIjogSlNPTi5zdHJpbmdpZnkodXBsb2FkZWRQYXJ0cyksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghY29tcGxldGVNdWx0aXBhcnRSZXMub2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFcnJvciBjb21wbGV0aW5nICR7a2V5fTogJHthd2FpdCBjb21wbGV0ZU11bHRpcGFydFJlcy50ZXh0KCl9YCxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXk6IGNvbXBsZXRpb25LZXkgfSA9XG4gICAgICAgICAgICAgICAgICBhd2FpdCBjb21wbGV0ZU11bHRpcGFydFJlcy5qc29uKCk7XG5cbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5zZXQobmFtZSwgYG9iamVjdDoke2NvbXBsZXRpb25LZXl9YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwdWJsaXNoVXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcInNiLWNvbW1lbnRcIjogY29tbWVudCxcbiAgICAgICAgICAgICAgXCJzYi1jb21wYWN0XCI6IGAke2lzQ29tcGFjdH1gLFxuICAgICAgICAgICAgICBcInNiLWtleVwiOiBrZXksXG4gICAgICAgICAgICAgIFwic2Itc2hhc3Vtc1wiOiBKU09OLnN0cmluZ2lmeShzaGFzdW1zKSxcbiAgICAgICAgICAgICAgXCJzYi1ydW4taWRcIjogR0lUSFVCX1JVTl9JRCxcbiAgICAgICAgICAgICAgXCJzYi1iaW5cIjogYCR7aXNCaW5hcnlBcHBsaWNhdGlvbn1gLFxuICAgICAgICAgICAgICBcInNiLXBhY2thZ2UtbWFuYWdlclwiOiBzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICAgICAgICBcInNiLW9ubHktdGVtcGxhdGVzXCI6IGAke2lzT25seVRlbXBsYXRlc31gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGxhdGVyUmVzID0gYXdhaXQgcmVzLmNsb25lKCkuanNvbigpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgICAgIHJlcy5zdGF0dXMsXG4gICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICBgcHVibGlzaGluZyBmYWlsZWQ6ICR7YXdhaXQgcmVzLnRleHQoKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBkZWJ1ZyA9IGxhdGVyUmVzLmRlYnVnO1xuXG4gICAgICAgICAgY29yZS5zdGFydEdyb3VwKFwiXHVEODNEXHVERDBEIEluZm9cIik7XG4gICAgICAgICAgY29yZS5ub3RpY2UoSlNPTi5zdHJpbmdpZnkoZGVidWcsIG51bGwsIDIpKTtcbiAgICAgICAgICBjb3JlLmVuZEdyb3VwKCk7XG5cbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJcXG5cIik7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiXHUyNkExXHVGRTBGIFlvdXIgbnBtIHBhY2thZ2VzIGFyZSBwdWJsaXNoZWQuXFxuXCIpO1xuXG4gICAgICAgICAgY29uc3QgcGFja2FnZUxvZ3MgPSBbLi4uZm9ybURhdGEua2V5cygpXVxuICAgICAgICAgICAgLmZpbHRlcigoaykgPT4gay5zdGFydHNXaXRoKFwicGFja2FnZTpcIikpXG4gICAgICAgICAgICAubWFwKChuYW1lLCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gbmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChsYXRlclJlcy51cmxzW2ldKTtcbiAgICAgICAgICAgICAgY29uc3QgcHVibGludFVybCA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgICAgYC9wa2cucHIubmV3JHt1cmwucGF0aG5hbWV9YCxcbiAgICAgICAgICAgICAgICBcImh0dHBzOi8vcHVibGludC5kZXZcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfTpcbi0gc2hhOiAke3NoYXN1bXNbcGFja2FnZU5hbWVdfVxuLSBwdWJsaW50OiAke3B1YmxpbnRVcmx9XG4tIG5wbTogbnBtIGkgJHt1cmx9YDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbihcIlxcblxcblwiKTtcblxuICAgICAgICAgIGNvbnNvbGUud2FybihwYWNrYWdlTG9ncyk7XG5cbiAgICAgICAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShvdXRwdXRNZXRhZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgaWYgKHByaW50SnNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2cob3V0cHV0KTsgLy8gTG9nIG91dHB1dCBmb3IgcGlwaW5nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzYXZlSnNvbikge1xuICAgICAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGpzb25GaWxlUGF0aCwgb3V0cHV0KTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgbWV0YWRhdGEgd3JpdHRlbiB0byAke2pzb25GaWxlUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICAgbGluazogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0YToge30sXG4gICAgICAgIHJ1bjogKCkgPT4ge1xuICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbn0pO1xuXG5ydW5NYWluKG1haW4pXG4gIC50aGVuKCgpID0+IHByb2Nlc3MuZXhpdCgwKSlcbiAgLmNhdGNoKCgpID0+IHByb2Nlc3MuZXhpdCgxKSk7XG5cbnR5cGUgUGFja01ldGhvZCA9IFwibnBtXCIgfCBcInBucG1cIiB8IFwieWFyblwiO1xuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVGFyYmFsbChwbTogUGFja01ldGhvZCwgcDogc3RyaW5nLCBwSnNvbjogUGFja2FnZUpzb24pIHtcbiAgbGV0IGNtZCA9IGAke3BtfSBwYWNrYDtcbiAgbGV0IGZpbGVuYW1lID0gYCR7cEpzb24ubmFtZSEucmVwbGFjZShcIi9cIiwgXCItXCIpfS0ke3BKc29uLnZlcnNpb259LnRnemA7XG4gIGlmIChwbSA9PT0gXCJ5YXJuXCIpIHtcbiAgICBjbWQgKz0gYCAtLWZpbGVuYW1lICR7ZmlsZW5hbWV9YDtcbiAgfVxuICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXpTcGF3bi5hc3luYyhjbWQsIHtcbiAgICBzdGRpbzogXCJvdmVybGFwcGVkXCIsXG4gICAgY3dkOiBwLFxuICB9KTtcbiAgY29uc3QgbGluZXMgPSBzdGRvdXQuc3BsaXQoXCJcXG5cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIGlmIChwbSAhPT0gXCJ5YXJuXCIpIHtcbiAgICBmaWxlbmFtZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLnRyaW0oKTtcbiAgfVxuXG4gIGNvbnN0IHNoYXN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpXG4gICAgLnVwZGF0ZShhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKSlcbiAgICAuZGlnZXN0KFwiaGV4XCIpO1xuXG4gIHJldHVybiB7IGZpbGVuYW1lLCBzaGFzdW0gfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVEZXBzKFxuICBwOiBzdHJpbmcsXG4gIHBKc29uQ29udGVudHM6IHN0cmluZyxcbiAgcEpzb246IFBhY2thZ2VKc29uLFxuICBkZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICByZWFsRGVwczogTWFwPHN0cmluZywgc3RyaW5nPiB8IG51bGwsXG4pIHtcbiAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuXG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24uZGVwZW5kZW5jaWVzKTtcbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5kZXZEZXBlbmRlbmNpZXMpO1xuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLm9wdGlvbmFsRGVwZW5kZW5jaWVzKTtcblxuICBpZiAocmVhbERlcHMpIHtcbiAgICBoaWphY2tEZXBzKHJlYWxEZXBzLCBwSnNvbi5wZWVyRGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIGF3YWl0IHdyaXRlUGFja2FnZUpTT04ocEpzb25QYXRoLCBwSnNvbik7XG5cbiAgcmV0dXJuICgpID0+IGZzLndyaXRlRmlsZShwSnNvblBhdGgsIHBKc29uQ29udGVudHMpO1xufVxuXG5mdW5jdGlvbiBoaWphY2tEZXBzKFxuICBuZXdEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICBvbGREZXBzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikge1xuICBpZiAoIW9sZERlcHMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBbbmV3RGVwLCB1cmxdIG9mIG5ld0RlcHMpIHtcbiAgICBpZiAobmV3RGVwIGluIG9sZERlcHMpIHtcbiAgICAgIG9sZERlcHNbbmV3RGVwXSA9IHVybDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybUVudHJ5U2l6ZShlbnRyeTogRm9ybURhdGFFbnRyeVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZW50cnkubGVuZ3RoO1xuICB9XG4gIHJldHVybiBlbnRyeS5zaXplO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlDb21wYWN0TW9kZShwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gIGxldCBtYW5pZmVzdDogUGFja2FnZU1hbmlmZXN0O1xuXG4gIHRyeSB7XG4gICAgbWFuaWZlc3QgPSBhd2FpdCBnZXRQYWNrYWdlTWFuaWZlc3QocGFja2FnZU5hbWUpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgcmVzb2x2ZSAke3BhY2thZ2VOYW1lfSBmcm9tIG5wbS4gLS1jb21wYWN0IGZsYWcgZGVwZW5kcyBvbiB0aGUgcGFja2FnZSBiZWluZyBhdmFpbGFibGUgaW4gbnBtLlxuTWFrZSBzdXJlIHRvIGhhdmUgeW91ciBwYWNrYWdlIG9uIG5wbSBmaXJzdC5gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbnN0cnVjdGlvbiA9IGBNYWtlIHN1cmUgdG8gY29uZmlndXJlIHRoZSAncmVwb3NpdG9yeScgLyAncmVwb3NpdG9yeS51cmwnIGZpZWxkIGluIGl0cyBwYWNrYWdlLmpzb24gcHJvcGVybHkuXG5TZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGkvdjEwL2NvbmZpZ3VyaW5nLW5wbS9wYWNrYWdlLWpzb24jcmVwb3NpdG9yeSBmb3IgZGV0YWlscy5gO1xuXG4gIGNvbnN0IHJlcG9zaXRvcnkgPSBleHRyYWN0UmVwb3NpdG9yeShtYW5pZmVzdCk7XG4gIGlmICghcmVwb3NpdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwa2ctcHItbmV3IGNhbm5vdCBleHRyYWN0IHRoZSByZXBvc2l0b3J5IGxpbmsgZnJvbSB0aGUgJHtwYWNrYWdlTmFtZX0gbWFuaWZlc3QuIC0tY29tcGFjdCBmbGFnIHJlcXVpcmVzIHRoZSBsaW5rIHRvIGJlIHByZXNlbnQuXG4ke2luc3RydWN0aW9ufWAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gZXh0cmFjdE93bmVyQW5kUmVwbyhyZXBvc2l0b3J5KTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwa2ctcHItbmV3IGNhbm5vdCBleHRyYWN0IHRoZSBvd25lciBhbmQgcmVwbyBuYW1lcyBmcm9tIHRoZSAke3BhY2thZ2VOYW1lfSByZXBvc2l0b3J5IGxpbms6ICR7cmVwb3NpdG9yeX0uIC0tY29tcGFjdCBmbGFnIHJlcXVpcmVzIHRoZXNlIG5hbWVzLlxuJHtpbnN0cnVjdGlvbn1gLFxuICAgICk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJ5UmVhZEZpbGUocDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLnJlYWRGaWxlKHAsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFBhY2thZ2VKc29uKHA6IHN0cmluZykge1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHApO1xuICBpZiAoY29udGVudHMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZVBhY2thZ2VKc29uKGNvbnRlbnRzKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYWNrYWdlSnNvbihjb250ZW50czogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudHMpIGFzIFBhY2thZ2VKc29uO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwgImNvbnN0IGRlZmF1bHRzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlnbm9yZVVua25vd246IGZhbHNlLFxuICByZXNwZWN0VHlwZTogZmFsc2UsXG4gIHJlc3BlY3RGdW5jdGlvbk5hbWVzOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uUHJvcGVydGllczogZmFsc2UsXG4gIHVub3JkZXJlZE9iamVjdHM6IHRydWUsXG4gIHVub3JkZXJlZEFycmF5czogZmFsc2UsXG4gIHVub3JkZXJlZFNldHM6IGZhbHNlLFxuICBleGNsdWRlS2V5czogdm9pZCAwLFxuICBleGNsdWRlVmFsdWVzOiB2b2lkIDAsXG4gIHJlcGxhY2VyOiB2b2lkIDBcbn0pO1xuZnVuY3Rpb24gb2JqZWN0SGFzaChvYmplY3QsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0cywgLi4ub3B0aW9ucyB9O1xuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSBkZWZhdWx0cztcbiAgfVxuICBjb25zdCBoYXNoZXIgPSBjcmVhdGVIYXNoZXIob3B0aW9ucyk7XG4gIGhhc2hlci5kaXNwYXRjaChvYmplY3QpO1xuICByZXR1cm4gaGFzaGVyLnRvU3RyaW5nKCk7XG59XG5jb25zdCBkZWZhdWx0UHJvdG90eXBlc0tleXMgPSBPYmplY3QuZnJlZXplKFtcbiAgXCJwcm90b3R5cGVcIixcbiAgXCJfX3Byb3RvX19cIixcbiAgXCJjb25zdHJ1Y3RvclwiXG5dKTtcbmZ1bmN0aW9uIGNyZWF0ZUhhc2hlcihvcHRpb25zKSB7XG4gIGxldCBidWZmID0gXCJcIjtcbiAgbGV0IGNvbnRleHQgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBjb25zdCB3cml0ZSA9IChzdHIpID0+IHtcbiAgICBidWZmICs9IHN0cjtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBidWZmO1xuICAgIH0sXG4gICAgZ2V0Q29udGV4dCgpIHtcbiAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH0sXG4gICAgZGlzcGF0Y2godmFsdWUpIHtcbiAgICAgIGlmIChvcHRpb25zLnJlcGxhY2VyKSB7XG4gICAgICAgIHZhbHVlID0gb3B0aW9ucy5yZXBsYWNlcih2YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlID0gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzW3R5cGVdKHZhbHVlKTtcbiAgICB9LFxuICAgIG9iamVjdChvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgJiYgdHlwZW9mIG9iamVjdC50b0pTT04gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3Qob2JqZWN0LnRvSlNPTigpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9ialN0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpO1xuICAgICAgbGV0IG9ialR5cGUgPSBcIlwiO1xuICAgICAgY29uc3Qgb2JqZWN0TGVuZ3RoID0gb2JqU3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChvYmplY3RMZW5ndGggPCAxMCkge1xuICAgICAgICBvYmpUeXBlID0gXCJ1bmtub3duOltcIiArIG9ialN0cmluZyArIFwiXVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqVHlwZSA9IG9ialN0cmluZy5zbGljZSg4LCBvYmplY3RMZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIG9ialR5cGUgPSBvYmpUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBsZXQgb2JqZWN0TnVtYmVyID0gbnVsbDtcbiAgICAgIGlmICgob2JqZWN0TnVtYmVyID0gY29udGV4dC5nZXQob2JqZWN0KSkgPT09IHZvaWQgMCkge1xuICAgICAgICBjb250ZXh0LnNldChvYmplY3QsIGNvbnRleHQuc2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcIltDSVJDVUxBUjpcIiArIG9iamVjdE51bWJlciArIFwiXVwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIEJ1ZmZlci5pc0J1ZmZlciAmJiBCdWZmZXIuaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICB3cml0ZShcImJ1ZmZlcjpcIik7XG4gICAgICAgIHJldHVybiB3cml0ZShvYmplY3QudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvYmpUeXBlICE9PSBcIm9iamVjdFwiICYmIG9ialR5cGUgIT09IFwiZnVuY3Rpb25cIiAmJiBvYmpUeXBlICE9PSBcImFzeW5jZnVuY3Rpb25cIikge1xuICAgICAgICBpZiAodGhpc1tvYmpUeXBlXSkge1xuICAgICAgICAgIHRoaXNbb2JqVHlwZV0ob2JqZWN0KTtcbiAgICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5pZ25vcmVVbmtub3duKSB7XG4gICAgICAgICAgdGhpcy51bmtvd24ob2JqZWN0LCBvYmpUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuICAgICAgICBpZiAob3B0aW9ucy51bm9yZGVyZWRPYmplY3RzKSB7XG4gICAgICAgICAga2V5cyA9IGtleXMuc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBleHRyYUtleXMgPSBbXTtcbiAgICAgICAgaWYgKG9wdGlvbnMucmVzcGVjdFR5cGUgIT09IGZhbHNlICYmICFpc05hdGl2ZUZ1bmN0aW9uKG9iamVjdCkpIHtcbiAgICAgICAgICBleHRyYUtleXMgPSBkZWZhdWx0UHJvdG90eXBlc0tleXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUtleXMpIHtcbiAgICAgICAgICBrZXlzID0ga2V5cy5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zLmV4Y2x1ZGVLZXlzKGtleSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXh0cmFLZXlzID0gZXh0cmFLZXlzLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZXhjbHVkZUtleXMoa2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZShcIm9iamVjdDpcIiArIChrZXlzLmxlbmd0aCArIGV4dHJhS2V5cy5sZW5ndGgpICsgXCI6XCIpO1xuICAgICAgICBjb25zdCBkaXNwYXRjaEZvcktleSA9IChrZXkpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKGtleSk7XG4gICAgICAgICAgd3JpdGUoXCI6XCIpO1xuICAgICAgICAgIGlmICghb3B0aW9ucy5leGNsdWRlVmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoKG9iamVjdFtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd3JpdGUoXCIsXCIpO1xuICAgICAgICB9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgZGlzcGF0Y2hGb3JLZXkoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBleHRyYUtleXMpIHtcbiAgICAgICAgICBkaXNwYXRjaEZvcktleShrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhcnJheShhcnIsIHVub3JkZXJlZCkge1xuICAgICAgdW5vcmRlcmVkID0gdW5vcmRlcmVkID09PSB2b2lkIDAgPyBvcHRpb25zLnVub3JkZXJlZEFycmF5cyAhPT0gZmFsc2UgOiB1bm9yZGVyZWQ7XG4gICAgICB3cml0ZShcImFycmF5OlwiICsgYXJyLmxlbmd0aCArIFwiOlwiKTtcbiAgICAgIGlmICghdW5vcmRlcmVkIHx8IGFyci5sZW5ndGggPD0gMSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGFycikge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHRBZGRpdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgY29uc3QgZW50cmllcyA9IGFyci5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgICAgICAgaGFzaGVyLmRpc3BhdGNoKGVudHJ5KTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgaGFzaGVyLmdldENvbnRleHQoKSkge1xuICAgICAgICAgIGNvbnRleHRBZGRpdGlvbnMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuICAgICAgY29udGV4dCA9IGNvbnRleHRBZGRpdGlvbnM7XG4gICAgICBlbnRyaWVzLnNvcnQoKTtcbiAgICAgIHJldHVybiB0aGlzLmFycmF5KGVudHJpZXMsIGZhbHNlKTtcbiAgICB9LFxuICAgIGRhdGUoZGF0ZSkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZGF0ZTpcIiArIGRhdGUudG9KU09OKCkpO1xuICAgIH0sXG4gICAgc3ltYm9sKHN5bSkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic3ltYm9sOlwiICsgc3ltLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgdW5rb3duKHZhbHVlLCB0eXBlKSB7XG4gICAgICB3cml0ZSh0eXBlKTtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgd3JpdGUoXCI6XCIpO1xuICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoXG4gICAgICAgICAgQXJyYXkuZnJvbSh2YWx1ZS5lbnRyaWVzKCkpLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgICAvKiBvcmRlcmVkICovXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBlcnJvcihlcnIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImVycm9yOlwiICsgZXJyLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgYm9vbGVhbihib29sKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJib29sOlwiICsgYm9vbCk7XG4gICAgfSxcbiAgICBzdHJpbmcoc3RyaW5nKSB7XG4gICAgICB3cml0ZShcInN0cmluZzpcIiArIHN0cmluZy5sZW5ndGggKyBcIjpcIik7XG4gICAgICB3cml0ZShzdHJpbmcpO1xuICAgIH0sXG4gICAgZnVuY3Rpb24oZm4pIHtcbiAgICAgIHdyaXRlKFwiZm46XCIpO1xuICAgICAgaWYgKGlzTmF0aXZlRnVuY3Rpb24oZm4pKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goXCJbbmF0aXZlXVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goZm4udG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5yZXNwZWN0RnVuY3Rpb25OYW1lcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChcImZ1bmN0aW9uLW5hbWU6XCIgKyBTdHJpbmcoZm4ubmFtZSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucmVzcGVjdEZ1bmN0aW9uUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm9iamVjdChmbik7XG4gICAgICB9XG4gICAgfSxcbiAgICBudW1iZXIobnVtYmVyKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJudW1iZXI6XCIgKyBudW1iZXIpO1xuICAgIH0sXG4gICAgeG1sKHhtbCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwieG1sOlwiICsgeG1sLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgbnVsbCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIk51bGxcIik7XG4gICAgfSxcbiAgICB1bmRlZmluZWQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJVbmRlZmluZWRcIik7XG4gICAgfSxcbiAgICByZWdleHAocmVnZXgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInJlZ2V4OlwiICsgcmVnZXgudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICB1aW50OGFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50OGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgdWludDhjbGFtcGVkYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQ4Y2xhbXBlZGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgaW50OGFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJpbnQ4YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50MTZhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDE2YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQxNmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJpbnQxNmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgdWludDMyYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQzMmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgaW50MzJhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiaW50MzJhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGZsb2F0MzJhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiZmxvYXQzMmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgZmxvYXQ2NGFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJmbG9hdDY0YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBhcnJheWJ1ZmZlcihhcnIpIHtcbiAgICAgIHdyaXRlKFwiYXJyYXlidWZmZXI6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IFVpbnQ4QXJyYXkoYXJyKSk7XG4gICAgfSxcbiAgICB1cmwodXJsKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ1cmw6XCIgKyB1cmwudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBtYXAobWFwKSB7XG4gICAgICB3cml0ZShcIm1hcDpcIik7XG4gICAgICBjb25zdCBhcnIgPSBbLi4ubWFwXTtcbiAgICAgIHJldHVybiB0aGlzLmFycmF5KGFyciwgb3B0aW9ucy51bm9yZGVyZWRTZXRzICE9PSBmYWxzZSk7XG4gICAgfSxcbiAgICBzZXQoc2V0KSB7XG4gICAgICB3cml0ZShcInNldDpcIik7XG4gICAgICBjb25zdCBhcnIgPSBbLi4uc2V0XTtcbiAgICAgIHJldHVybiB0aGlzLmFycmF5KGFyciwgb3B0aW9ucy51bm9yZGVyZWRTZXRzICE9PSBmYWxzZSk7XG4gICAgfSxcbiAgICBmaWxlKGZpbGUpIHtcbiAgICAgIHdyaXRlKFwiZmlsZTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChbZmlsZS5uYW1lLCBmaWxlLnNpemUsIGZpbGUudHlwZSwgZmlsZS5sYXN0TW9kZmllZF0pO1xuICAgIH0sXG4gICAgYmxvYigpIHtcbiAgICAgIGlmIChvcHRpb25zLmlnbm9yZVVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlKFwiW2Jsb2JdXCIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSGFzaGluZyBCbG9iIG9iamVjdHMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcXG5Vc2UgXCJvcHRpb25zLnJlcGxhY2VyXCIgb3IgXCJvcHRpb25zLmlnbm9yZVVua25vd25cIlxcbidcbiAgICAgICk7XG4gICAgfSxcbiAgICBkb213aW5kb3coKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJkb213aW5kb3dcIik7XG4gICAgfSxcbiAgICBiaWdpbnQobnVtYmVyKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJiaWdpbnQ6XCIgKyBudW1iZXIudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICAvKiBOb2RlLmpzIHN0YW5kYXJkIG5hdGl2ZSBvYmplY3RzICovXG4gICAgcHJvY2VzcygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInByb2Nlc3NcIik7XG4gICAgfSxcbiAgICB0aW1lcigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInRpbWVyXCIpO1xuICAgIH0sXG4gICAgcGlwZSgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInBpcGVcIik7XG4gICAgfSxcbiAgICB0Y3AoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0Y3BcIik7XG4gICAgfSxcbiAgICB1ZHAoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ1ZHBcIik7XG4gICAgfSxcbiAgICB0dHkoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0dHlcIik7XG4gICAgfSxcbiAgICBzdGF0d2F0Y2hlcigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInN0YXR3YXRjaGVyXCIpO1xuICAgIH0sXG4gICAgc2VjdXJlY29udGV4dCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInNlY3VyZWNvbnRleHRcIik7XG4gICAgfSxcbiAgICBjb25uZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiY29ubmVjdGlvblwiKTtcbiAgICB9LFxuICAgIHpsaWIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ6bGliXCIpO1xuICAgIH0sXG4gICAgY29udGV4dCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImNvbnRleHRcIik7XG4gICAgfSxcbiAgICBub2Rlc2NyaXB0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwibm9kZXNjcmlwdFwiKTtcbiAgICB9LFxuICAgIGh0dHBwYXJzZXIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJodHRwcGFyc2VyXCIpO1xuICAgIH0sXG4gICAgZGF0YXZpZXcoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJkYXRhdmlld1wiKTtcbiAgICB9LFxuICAgIHNpZ25hbCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInNpZ25hbFwiKTtcbiAgICB9LFxuICAgIGZzZXZlbnQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJmc2V2ZW50XCIpO1xuICAgIH0sXG4gICAgdGxzd3JhcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInRsc3dyYXBcIik7XG4gICAgfVxuICB9O1xufVxuY29uc3QgbmF0aXZlRnVuYyA9IFwiW25hdGl2ZSBjb2RlXSB9XCI7XG5jb25zdCBuYXRpdmVGdW5jTGVuZ3RoID0gbmF0aXZlRnVuYy5sZW5ndGg7XG5mdW5jdGlvbiBpc05hdGl2ZUZ1bmN0aW9uKGYpIHtcbiAgaWYgKHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGYpLnNsaWNlKC1uYXRpdmVGdW5jTGVuZ3RoKSA9PT0gbmF0aXZlRnVuYztcbn1cblxudmFyIF9fZGVmUHJvcCQxID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmTm9ybWFsUHJvcCQxID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcCQxKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3B1YmxpY0ZpZWxkJDEgPSAob2JqLCBrZXksIHZhbHVlKSA9PiB7XG4gIF9fZGVmTm9ybWFsUHJvcCQxKG9iaiwgdHlwZW9mIGtleSAhPT0gXCJzeW1ib2xcIiA/IGtleSArIFwiXCIgOiBrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbmNsYXNzIFdvcmRBcnJheSB7XG4gIGNvbnN0cnVjdG9yKHdvcmRzLCBzaWdCeXRlcykge1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcIndvcmRzXCIpO1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcInNpZ0J5dGVzXCIpO1xuICAgIHdvcmRzID0gdGhpcy53b3JkcyA9IHdvcmRzIHx8IFtdO1xuICAgIHRoaXMuc2lnQnl0ZXMgPSBzaWdCeXRlcyA9PT0gdm9pZCAwID8gd29yZHMubGVuZ3RoICogNCA6IHNpZ0J5dGVzO1xuICB9XG4gIHRvU3RyaW5nKGVuY29kZXIpIHtcbiAgICByZXR1cm4gKGVuY29kZXIgfHwgSGV4KS5zdHJpbmdpZnkodGhpcyk7XG4gIH1cbiAgY29uY2F0KHdvcmRBcnJheSkge1xuICAgIHRoaXMuY2xhbXAoKTtcbiAgICBpZiAodGhpcy5zaWdCeXRlcyAlIDQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpKyspIHtcbiAgICAgICAgY29uc3QgdGhhdEJ5dGUgPSB3b3JkQXJyYXkud29yZHNbaSA+Pj4gMl0gPj4+IDI0IC0gaSAlIDQgKiA4ICYgMjU1O1xuICAgICAgICB0aGlzLndvcmRzW3RoaXMuc2lnQnl0ZXMgKyBpID4+PiAyXSB8PSB0aGF0Qnl0ZSA8PCAyNCAtICh0aGlzLnNpZ0J5dGVzICsgaSkgJSA0ICogODtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkQXJyYXkuc2lnQnl0ZXM7IGogKz0gNCkge1xuICAgICAgICB0aGlzLndvcmRzW3RoaXMuc2lnQnl0ZXMgKyBqID4+PiAyXSA9IHdvcmRBcnJheS53b3Jkc1tqID4+PiAyXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zaWdCeXRlcyArPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgY2xhbXAoKSB7XG4gICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzID4+PiAyXSAmPSA0Mjk0OTY3Mjk1IDw8IDMyIC0gdGhpcy5zaWdCeXRlcyAlIDQgKiA4O1xuICAgIHRoaXMud29yZHMubGVuZ3RoID0gTWF0aC5jZWlsKHRoaXMuc2lnQnl0ZXMgLyA0KTtcbiAgfVxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheShbLi4udGhpcy53b3Jkc10pO1xuICB9XG59XG5jb25zdCBIZXggPSB7XG4gIHN0cmluZ2lmeSh3b3JkQXJyYXkpIHtcbiAgICBjb25zdCBoZXhDaGFycyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpKyspIHtcbiAgICAgIGNvbnN0IGJpdGUgPSB3b3JkQXJyYXkud29yZHNbaSA+Pj4gMl0gPj4+IDI0IC0gaSAlIDQgKiA4ICYgMjU1O1xuICAgICAgaGV4Q2hhcnMucHVzaCgoYml0ZSA+Pj4gNCkudG9TdHJpbmcoMTYpLCAoYml0ZSAmIDE1KS50b1N0cmluZygxNikpO1xuICAgIH1cbiAgICByZXR1cm4gaGV4Q2hhcnMuam9pbihcIlwiKTtcbiAgfVxufTtcbmNvbnN0IEJhc2U2NCA9IHtcbiAgc3RyaW5naWZ5KHdvcmRBcnJheSkge1xuICAgIGNvbnN0IGtleVN0ciA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcbiAgICBjb25zdCBiYXNlNjRDaGFycyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpICs9IDMpIHtcbiAgICAgIGNvbnN0IGJ5dGUxID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IGJ5dGUyID0gd29yZEFycmF5LndvcmRzW2kgKyAxID4+PiAyXSA+Pj4gMjQgLSAoaSArIDEpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCBieXRlMyA9IHdvcmRBcnJheS53b3Jkc1tpICsgMiA+Pj4gMl0gPj4+IDI0IC0gKGkgKyAyKSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgdHJpcGxldCA9IGJ5dGUxIDw8IDE2IHwgYnl0ZTIgPDwgOCB8IGJ5dGUzO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA0ICYmIGkgKiA4ICsgaiAqIDYgPCB3b3JkQXJyYXkuc2lnQnl0ZXMgKiA4OyBqKyspIHtcbiAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChrZXlTdHIuY2hhckF0KHRyaXBsZXQgPj4+IDYgKiAoMyAtIGopICYgNjMpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhc2U2NENoYXJzLmpvaW4oXCJcIik7XG4gIH1cbn07XG5jb25zdCBMYXRpbjEgPSB7XG4gIHBhcnNlKGxhdGluMVN0cikge1xuICAgIGNvbnN0IGxhdGluMVN0ckxlbmd0aCA9IGxhdGluMVN0ci5sZW5ndGg7XG4gICAgY29uc3Qgd29yZHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhdGluMVN0ckxlbmd0aDsgaSsrKSB7XG4gICAgICB3b3Jkc1tpID4+PiAyXSB8PSAobGF0aW4xU3RyLmNoYXJDb2RlQXQoaSkgJiAyNTUpIDw8IDI0IC0gaSAlIDQgKiA4O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheSh3b3JkcywgbGF0aW4xU3RyTGVuZ3RoKTtcbiAgfVxufTtcbmNvbnN0IFV0ZjggPSB7XG4gIHBhcnNlKHV0ZjhTdHIpIHtcbiAgICByZXR1cm4gTGF0aW4xLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh1dGY4U3RyKSkpO1xuICB9XG59O1xuY2xhc3MgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcIl9kYXRhXCIsIG5ldyBXb3JkQXJyYXkoKSk7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwiX25EYXRhQnl0ZXNcIiwgMCk7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwiX21pbkJ1ZmZlclNpemVcIiwgMCk7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwiYmxvY2tTaXplXCIsIDUxMiAvIDMyKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheSgpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuICB9XG4gIF9hcHBlbmQoZGF0YSkge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZGF0YSA9IFV0ZjgucGFyc2UoZGF0YSk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEuY29uY2F0KGRhdGEpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgKz0gZGF0YS5zaWdCeXRlcztcbiAgfVxuICBfZG9Qcm9jZXNzQmxvY2soX2RhdGFXb3JkcywgX29mZnNldCkge1xuICB9XG4gIF9wcm9jZXNzKGRvRmx1c2gpIHtcbiAgICBsZXQgcHJvY2Vzc2VkV29yZHM7XG4gICAgbGV0IG5CbG9ja3NSZWFkeSA9IHRoaXMuX2RhdGEuc2lnQnl0ZXMgLyAodGhpcy5ibG9ja1NpemUgKiA0KTtcbiAgICBpZiAoZG9GbHVzaCkge1xuICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5jZWlsKG5CbG9ja3NSZWFkeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGgubWF4KChuQmxvY2tzUmVhZHkgfCAwKSAtIHRoaXMuX21pbkJ1ZmZlclNpemUsIDApO1xuICAgIH1cbiAgICBjb25zdCBuV29yZHNSZWFkeSA9IG5CbG9ja3NSZWFkeSAqIHRoaXMuYmxvY2tTaXplO1xuICAgIGNvbnN0IG5CeXRlc1JlYWR5ID0gTWF0aC5taW4obldvcmRzUmVhZHkgKiA0LCB0aGlzLl9kYXRhLnNpZ0J5dGVzKTtcbiAgICBpZiAobldvcmRzUmVhZHkpIHtcbiAgICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG5Xb3Jkc1JlYWR5OyBvZmZzZXQgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICAgICAgdGhpcy5fZG9Qcm9jZXNzQmxvY2sodGhpcy5fZGF0YS53b3Jkcywgb2Zmc2V0KTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3NlZFdvcmRzID0gdGhpcy5fZGF0YS53b3Jkcy5zcGxpY2UoMCwgbldvcmRzUmVhZHkpO1xuICAgICAgdGhpcy5fZGF0YS5zaWdCeXRlcyAtPSBuQnl0ZXNSZWFkeTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkocHJvY2Vzc2VkV29yZHMsIG5CeXRlc1JlYWR5KTtcbiAgfVxufVxuY2xhc3MgSGFzaGVyIGV4dGVuZHMgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSB7XG4gIHVwZGF0ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmaW5hbGl6ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgaWYgKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3B1YmxpY0ZpZWxkID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ge1xuICBfX2RlZk5vcm1hbFByb3Aob2JqLCB0eXBlb2Yga2V5ICE9PSBcInN5bWJvbFwiID8ga2V5ICsgXCJcIiA6IGtleSwgdmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuY29uc3QgSCA9IFtcbiAgMTc3OTAzMzcwMyxcbiAgLTExNTA4MzMwMTksXG4gIDEwMTM5MDQyNDIsXG4gIC0xNTIxNDg2NTM0LFxuICAxMzU5ODkzMTE5LFxuICAtMTY5NDE0NDM3MixcbiAgNTI4NzM0NjM1LFxuICAxNTQxNDU5MjI1XG5dO1xuY29uc3QgSyA9IFtcbiAgMTExNjM1MjQwOCxcbiAgMTg5OTQ0NzQ0MSxcbiAgLTEyNDU2NDM4MjUsXG4gIC0zNzM5NTc3MjMsXG4gIDk2MTk4NzE2MyxcbiAgMTUwODk3MDk5MyxcbiAgLTE4NDEzMzE1NDgsXG4gIC0xNDI0MjA0MDc1LFxuICAtNjcwNTg2MjE2LFxuICAzMTA1OTg0MDEsXG4gIDYwNzIyNTI3OCxcbiAgMTQyNjg4MTk4NyxcbiAgMTkyNTA3ODM4OCxcbiAgLTIxMzI4ODkwOTAsXG4gIC0xNjgwMDc5MTkzLFxuICAtMTA0Njc0NDcxNixcbiAgLTQ1OTU3Njg5NSxcbiAgLTI3Mjc0MjUyMixcbiAgMjY0MzQ3MDc4LFxuICA2MDQ4MDc2MjgsXG4gIDc3MDI1NTk4MyxcbiAgMTI0OTE1MDEyMixcbiAgMTU1NTA4MTY5MixcbiAgMTk5NjA2NDk4NixcbiAgLTE3NDA3NDY0MTQsXG4gIC0xNDczMTMyOTQ3LFxuICAtMTM0MTk3MDQ4OCxcbiAgLTEwODQ2NTM2MjUsXG4gIC05NTgzOTU0MDUsXG4gIC03MTA0Mzg1ODUsXG4gIDExMzkyNjk5MyxcbiAgMzM4MjQxODk1LFxuICA2NjYzMDcyMDUsXG4gIDc3MzUyOTkxMixcbiAgMTI5NDc1NzM3MixcbiAgMTM5NjE4MjI5MSxcbiAgMTY5NTE4MzcwMCxcbiAgMTk4NjY2MTA1MSxcbiAgLTIxMTc5NDA5NDYsXG4gIC0xODM4MDExMjU5LFxuICAtMTU2NDQ4MTM3NSxcbiAgLTE0NzQ2NjQ4ODUsXG4gIC0xMDM1MjM2NDk2LFxuICAtOTQ5MjAyNTI1LFxuICAtNzc4OTAxNDc5LFxuICAtNjk0NjE0NDkyLFxuICAtMjAwMzk1Mzg3LFxuICAyNzU0MjMzNDQsXG4gIDQzMDIyNzczNCxcbiAgNTA2OTQ4NjE2LFxuICA2NTkwNjA1NTYsXG4gIDg4Mzk5Nzg3NyxcbiAgOTU4MTM5NTcxLFxuICAxMzIyODIyMjE4LFxuICAxNTM3MDAyMDYzLFxuICAxNzQ3ODczNzc5LFxuICAxOTU1NTYyMjIyLFxuICAyMDI0MTA0ODE1LFxuICAtMjA2NzIzNjg0NCxcbiAgLTE5MzMxMTQ4NzIsXG4gIC0xODY2NTMwODIyLFxuICAtMTUzODIzMzEwOSxcbiAgLTEwOTA5MzU4MTcsXG4gIC05NjU2NDE5OThcbl07XG5jb25zdCBXID0gW107XG5jbGFzcyBTSEEyNTYgZXh0ZW5kcyBIYXNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIF9fcHVibGljRmllbGQodGhpcywgXCJfaGFzaFwiLCBuZXcgV29yZEFycmF5KFsuLi5IXSkpO1xuICB9XG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBoYXNoIG9iamVjdCB0byBpbml0aWFsIHZhbHVlcy5cbiAgICovXG4gIHJlc2V0KCkge1xuICAgIHN1cGVyLnJlc2V0KCk7XG4gICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkoWy4uLkhdKTtcbiAgfVxuICBfZG9Qcm9jZXNzQmxvY2soTSwgb2Zmc2V0KSB7XG4gICAgY29uc3QgSDIgPSB0aGlzLl9oYXNoLndvcmRzO1xuICAgIGxldCBhID0gSDJbMF07XG4gICAgbGV0IGIgPSBIMlsxXTtcbiAgICBsZXQgYyA9IEgyWzJdO1xuICAgIGxldCBkID0gSDJbM107XG4gICAgbGV0IGUgPSBIMls0XTtcbiAgICBsZXQgZiA9IEgyWzVdO1xuICAgIGxldCBnID0gSDJbNl07XG4gICAgbGV0IGggPSBIMls3XTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY0OyBpKyspIHtcbiAgICAgIGlmIChpIDwgMTYpIHtcbiAgICAgICAgV1tpXSA9IE1bb2Zmc2V0ICsgaV0gfCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ2FtbWEweCA9IFdbaSAtIDE1XTtcbiAgICAgICAgY29uc3QgZ2FtbWEwID0gKGdhbW1hMHggPDwgMjUgfCBnYW1tYTB4ID4+PiA3KSBeIChnYW1tYTB4IDw8IDE0IHwgZ2FtbWEweCA+Pj4gMTgpIF4gZ2FtbWEweCA+Pj4gMztcbiAgICAgICAgY29uc3QgZ2FtbWExeCA9IFdbaSAtIDJdO1xuICAgICAgICBjb25zdCBnYW1tYTEgPSAoZ2FtbWExeCA8PCAxNSB8IGdhbW1hMXggPj4+IDE3KSBeIChnYW1tYTF4IDw8IDEzIHwgZ2FtbWExeCA+Pj4gMTkpIF4gZ2FtbWExeCA+Pj4gMTA7XG4gICAgICAgIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNoID0gZSAmIGYgXiB+ZSAmIGc7XG4gICAgICBjb25zdCBtYWogPSBhICYgYiBeIGEgJiBjIF4gYiAmIGM7XG4gICAgICBjb25zdCBzaWdtYTAgPSAoYSA8PCAzMCB8IGEgPj4+IDIpIF4gKGEgPDwgMTkgfCBhID4+PiAxMykgXiAoYSA8PCAxMCB8IGEgPj4+IDIyKTtcbiAgICAgIGNvbnN0IHNpZ21hMSA9IChlIDw8IDI2IHwgZSA+Pj4gNikgXiAoZSA8PCAyMSB8IGUgPj4+IDExKSBeIChlIDw8IDcgfCBlID4+PiAyNSk7XG4gICAgICBjb25zdCB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbaV0gKyBXW2ldO1xuICAgICAgY29uc3QgdDIgPSBzaWdtYTAgKyBtYWo7XG4gICAgICBoID0gZztcbiAgICAgIGcgPSBmO1xuICAgICAgZiA9IGU7XG4gICAgICBlID0gZCArIHQxIHwgMDtcbiAgICAgIGQgPSBjO1xuICAgICAgYyA9IGI7XG4gICAgICBiID0gYTtcbiAgICAgIGEgPSB0MSArIHQyIHwgMDtcbiAgICB9XG4gICAgSDJbMF0gPSBIMlswXSArIGEgfCAwO1xuICAgIEgyWzFdID0gSDJbMV0gKyBiIHwgMDtcbiAgICBIMlsyXSA9IEgyWzJdICsgYyB8IDA7XG4gICAgSDJbM10gPSBIMlszXSArIGQgfCAwO1xuICAgIEgyWzRdID0gSDJbNF0gKyBlIHwgMDtcbiAgICBIMls1XSA9IEgyWzVdICsgZiB8IDA7XG4gICAgSDJbNl0gPSBIMls2XSArIGcgfCAwO1xuICAgIEgyWzddID0gSDJbN10gKyBoIHwgMDtcbiAgfVxuICAvKipcbiAgICogRmluaXNoZXMgdGhlIGhhc2ggY2FsY3VsYXRpb24gYW5kIHJldHVybnMgdGhlIGhhc2ggYXMgYSBXb3JkQXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlVXBkYXRlIC0gQWRkaXRpb25hbCBtZXNzYWdlIGNvbnRlbnQgdG8gaW5jbHVkZSBpbiB0aGUgaGFzaC5cbiAgICogQHJldHVybnMge1dvcmRBcnJheX0gVGhlIGZpbmFsaXNlZCBoYXNoIGFzIGEgV29yZEFycmF5LlxuICAgKi9cbiAgZmluYWxpemUobWVzc2FnZVVwZGF0ZSkge1xuICAgIHN1cGVyLmZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpO1xuICAgIGNvbnN0IG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcbiAgICBjb25zdCBuQml0c0xlZnQgPSB0aGlzLl9kYXRhLnNpZ0J5dGVzICogODtcbiAgICB0aGlzLl9kYXRhLndvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMTI4IDw8IDI0IC0gbkJpdHNMZWZ0ICUgMzI7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1sobkJpdHNMZWZ0ICsgNjQgPj4+IDkgPDwgNCkgKyAxNF0gPSBNYXRoLmZsb29yKFxuICAgICAgbkJpdHNUb3RhbCAvIDQyOTQ5NjcyOTZcbiAgICApO1xuICAgIHRoaXMuX2RhdGEud29yZHNbKG5CaXRzTGVmdCArIDY0ID4+PiA5IDw8IDQpICsgMTVdID0gbkJpdHNUb3RhbDtcbiAgICB0aGlzLl9kYXRhLnNpZ0J5dGVzID0gdGhpcy5fZGF0YS53b3Jkcy5sZW5ndGggKiA0O1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcbiAgICByZXR1cm4gdGhpcy5faGFzaDtcbiAgfVxufVxuZnVuY3Rpb24gc2hhMjU2KG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBTSEEyNTYoKS5maW5hbGl6ZShtZXNzYWdlKS50b1N0cmluZygpO1xufVxuZnVuY3Rpb24gc2hhMjU2YmFzZTY0KG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBTSEEyNTYoKS5maW5hbGl6ZShtZXNzYWdlKS50b1N0cmluZyhCYXNlNjQpO1xufVxuXG5mdW5jdGlvbiBoYXNoKG9iamVjdCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGhhc2hlZCA9IHR5cGVvZiBvYmplY3QgPT09IFwic3RyaW5nXCIgPyBvYmplY3QgOiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucyk7XG4gIHJldHVybiBzaGEyNTZiYXNlNjQoaGFzaGVkKS5zbGljZSgwLCAxMCk7XG59XG5cbmZ1bmN0aW9uIG11cm11ckhhc2goa2V5LCBzZWVkID0gMCkge1xuICBpZiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGtleSA9IGNyZWF0ZUJ1ZmZlcihrZXkpO1xuICB9XG4gIGxldCBpID0gMDtcbiAgbGV0IGgxID0gc2VlZDtcbiAgbGV0IGsxO1xuICBsZXQgaDFiO1xuICBjb25zdCByZW1haW5kZXIgPSBrZXkubGVuZ3RoICYgMztcbiAgY29uc3QgYnl0ZXMgPSBrZXkubGVuZ3RoIC0gcmVtYWluZGVyO1xuICBjb25zdCBjMSA9IDM0MzI5MTgzNTM7XG4gIGNvbnN0IGMyID0gNDYxODQ1OTA3O1xuICB3aGlsZSAoaSA8IGJ5dGVzKSB7XG4gICAgazEgPSBrZXlbaV0gJiAyNTUgfCAoa2V5WysraV0gJiAyNTUpIDw8IDggfCAoa2V5WysraV0gJiAyNTUpIDw8IDE2IHwgKGtleVsrK2ldICYgMjU1KSA8PCAyNDtcbiAgICArK2k7XG4gICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMSArICgoKGsxID4+PiAxNikgKiBjMSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGsxID0gazEgPDwgMTUgfCBrMSA+Pj4gMTc7XG4gICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMiArICgoKGsxID4+PiAxNikgKiBjMiAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGgxIF49IGsxO1xuICAgIGgxID0gaDEgPDwgMTMgfCBoMSA+Pj4gMTk7XG4gICAgaDFiID0gKGgxICYgNjU1MzUpICogNSArICgoKGgxID4+PiAxNikgKiA1ICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgaDEgPSAoaDFiICYgNjU1MzUpICsgMjc0OTIgKyAoKChoMWIgPj4+IDE2KSArIDU4OTY0ICYgNjU1MzUpIDw8IDE2KTtcbiAgfVxuICBrMSA9IDA7XG4gIHN3aXRjaCAocmVtYWluZGVyKSB7XG4gICAgY2FzZSAzOiB7XG4gICAgICBrMSBePSAoa2V5W2kgKyAyXSAmIDI1NSkgPDwgMTY7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgazEgXj0gKGtleVtpICsgMV0gJiAyNTUpIDw8IDg7XG4gICAgfVxuICAgIGNhc2UgMToge1xuICAgICAgazEgXj0ga2V5W2ldICYgMjU1O1xuICAgICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMSArICgoKGsxID4+PiAxNikgKiBjMSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgICAgazEgPSBrMSA8PCAxNSB8IGsxID4+PiAxNztcbiAgICAgIGsxID0gKGsxICYgNjU1MzUpICogYzIgKyAoKChrMSA+Pj4gMTYpICogYzIgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICAgIGgxIF49IGsxO1xuICAgIH1cbiAgfVxuICBoMSBePSBrZXkubGVuZ3RoO1xuICBoMSBePSBoMSA+Pj4gMTY7XG4gIGgxID0gKGgxICYgNjU1MzUpICogMjI0NjgyMjUwNyArICgoKGgxID4+PiAxNikgKiAyMjQ2ODIyNTA3ICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gIGgxIF49IGgxID4+PiAxMztcbiAgaDEgPSAoaDEgJiA2NTUzNSkgKiAzMjY2NDg5OTA5ICsgKCgoaDEgPj4+IDE2KSAqIDMyNjY0ODk5MDkgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgaDEgXj0gaDEgPj4+IDE2O1xuICByZXR1cm4gaDEgPj4+IDA7XG59XG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIodmFsKSB7XG4gIHJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsKTtcbn1cblxuZnVuY3Rpb24gaXNFcXVhbChvYmplY3QxLCBvYmplY3QyLCBoYXNoT3B0aW9ucyA9IHt9KSB7XG4gIGlmIChvYmplY3QxID09PSBvYmplY3QyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG9iamVjdEhhc2gob2JqZWN0MSwgaGFzaE9wdGlvbnMpID09PSBvYmplY3RIYXNoKG9iamVjdDIsIGhhc2hPcHRpb25zKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZGlmZihvYmoxLCBvYmoyLCBvcHRzID0ge30pIHtcbiAgY29uc3QgaDEgPSBfdG9IYXNoZWRPYmplY3Qob2JqMSwgb3B0cyk7XG4gIGNvbnN0IGgyID0gX3RvSGFzaGVkT2JqZWN0KG9iajIsIG9wdHMpO1xuICByZXR1cm4gX2RpZmYoaDEsIGgyLCBvcHRzKTtcbn1cbmZ1bmN0aW9uIF9kaWZmKGgxLCBoMiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGRpZmZzID0gW107XG4gIGNvbnN0IGFsbFByb3BzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICAgIC4uLk9iamVjdC5rZXlzKGgxLnByb3BzIHx8IHt9KSxcbiAgICAuLi5PYmplY3Qua2V5cyhoMi5wcm9wcyB8fCB7fSlcbiAgXSk7XG4gIGlmIChoMS5wcm9wcyAmJiBoMi5wcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBhbGxQcm9wcykge1xuICAgICAgY29uc3QgcDEgPSBoMS5wcm9wc1twcm9wXTtcbiAgICAgIGNvbnN0IHAyID0gaDIucHJvcHNbcHJvcF07XG4gICAgICBpZiAocDEgJiYgcDIpIHtcbiAgICAgICAgZGlmZnMucHVzaCguLi5fZGlmZihoMS5wcm9wcz8uW3Byb3BdLCBoMi5wcm9wcz8uW3Byb3BdLCBvcHRzKSk7XG4gICAgICB9IGVsc2UgaWYgKHAxIHx8IHAyKSB7XG4gICAgICAgIGRpZmZzLnB1c2goXG4gICAgICAgICAgbmV3IERpZmZFbnRyeSgocDIgfHwgcDEpLmtleSwgcDEgPyBcInJlbW92ZWRcIiA6IFwiYWRkZWRcIiwgcDIsIHAxKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYWxsUHJvcHMuc2l6ZSA9PT0gMCAmJiBoMS5oYXNoICE9PSBoMi5oYXNoKSB7XG4gICAgZGlmZnMucHVzaChuZXcgRGlmZkVudHJ5KChoMiB8fCBoMSkua2V5LCBcImNoYW5nZWRcIiwgaDIsIGgxKSk7XG4gIH1cbiAgcmV0dXJuIGRpZmZzO1xufVxuZnVuY3Rpb24gX3RvSGFzaGVkT2JqZWN0KG9iaiwgb3B0cywga2V5ID0gXCJcIikge1xuICBpZiAob2JqICYmIHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIG9iamVjdEhhc2gob2JqLCBvcHRzKSk7XG4gIH1cbiAgY29uc3QgcHJvcHMgPSB7fTtcbiAgY29uc3QgaGFzaGVzID0gW107XG4gIGZvciAoY29uc3QgX2tleSBpbiBvYmopIHtcbiAgICBwcm9wc1tfa2V5XSA9IF90b0hhc2hlZE9iamVjdChcbiAgICAgIG9ialtfa2V5XSxcbiAgICAgIG9wdHMsXG4gICAgICBrZXkgPyBgJHtrZXl9LiR7X2tleX1gIDogX2tleVxuICAgICk7XG4gICAgaGFzaGVzLnB1c2gocHJvcHNbX2tleV0uaGFzaCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBEaWZmSGFzaGVkT2JqZWN0KGtleSwgb2JqLCBgeyR7aGFzaGVzLmpvaW4oXCI6XCIpfX1gLCBwcm9wcyk7XG59XG5jbGFzcyBEaWZmRW50cnkge1xuICBjb25zdHJ1Y3RvcihrZXksIHR5cGUsIG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy50b0pTT04oKTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJhZGRlZFwiOiB7XG4gICAgICAgIHJldHVybiBgQWRkZWQgICBcXGAke3RoaXMua2V5fVxcYGA7XG4gICAgICB9XG4gICAgICBjYXNlIFwicmVtb3ZlZFwiOiB7XG4gICAgICAgIHJldHVybiBgUmVtb3ZlZCBcXGAke3RoaXMua2V5fVxcYGA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiY2hhbmdlZFwiOiB7XG4gICAgICAgIHJldHVybiBgQ2hhbmdlZCBcXGAke3RoaXMua2V5fVxcYCBmcm9tIFxcYCR7dGhpcy5vbGRWYWx1ZT8udG9TdHJpbmcoKSB8fCBcIi1cIn1cXGAgdG8gXFxgJHt0aGlzLm5ld1ZhbHVlLnRvU3RyaW5nKCl9XFxgYDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNsYXNzIERpZmZIYXNoZWRPYmplY3Qge1xuICBjb25zdHJ1Y3RvcihrZXksIHZhbHVlLCBoYXNoLCBwcm9wcykge1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmhhc2ggPSBoYXNoO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgfVxuICB0b1N0cmluZygpIHtcbiAgICBpZiAodGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIGB7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgayA9IHRoaXMua2V5IHx8IFwiLlwiO1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYCR7a30oeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbihcIixcIil9fSlgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7a30oJHt0aGlzLnZhbHVlfSlgO1xuICB9XG59XG5cbmV4cG9ydCB7IGRpZmYsIGhhc2gsIGlzRXF1YWwsIG11cm11ckhhc2gsIG9iamVjdEhhc2gsIHNoYTI1Niwgc2hhMjU2YmFzZTY0IH07XG4iLCAiZXhwb3J0IHsgYSBhcyBjb25zb2xhLCBjIGFzIGNyZWF0ZUNvbnNvbGEsIGEgYXMgZGVmYXVsdCB9IGZyb20gJy4vc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzJztcbmV4cG9ydCB7IENvbnNvbGEsIExvZ0xldmVscywgTG9nVHlwZXMgfSBmcm9tICcuL2NvcmUubWpzJztcbmltcG9ydCAnLi9zaGFyZWQvY29uc29sYS5DczVGZHRIRC5tanMnO1xuaW1wb3J0ICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0ICcuL3NoYXJlZC9jb25zb2xhLkNCaTZObTlzLm1qcyc7XG5pbXBvcnQgJ25vZGU6dHR5JztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcbiIsICJleHBvcnQgeyBhIGFzIGFsaWduLCBiIGFzIGJveCwgYyBhcyBjZW50ZXJBbGlnbiwgZSBhcyBjb2xvcml6ZSwgZCBhcyBjb2xvcnMsIGcgYXMgZ2V0Q29sb3IsIGwgYXMgbGVmdEFsaWduLCByIGFzIHJpZ2h0QWxpZ24sIHMgYXMgc3RyaXBBbnNpIH0gZnJvbSAnLi9zaGFyZWQvY29uc29sYS5DQmk2Tm05cy5tanMnO1xuaW1wb3J0ICdub2RlOnR0eSc7XG4iLCAiaW1wb3J0IGNvbnNvbGEgZnJvbSAnY29uc29sYSc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICdjb25zb2xhL3V0aWxzJztcblxuZnVuY3Rpb24gdG9BcnJheSh2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgcmV0dXJuIHZhbCA9PT0gdm9pZCAwID8gW10gOiBbdmFsXTtcbn1cbmZ1bmN0aW9uIGZvcm1hdExpbmVDb2x1bW5zKGxpbmVzLCBsaW5lUHJlZml4ID0gXCJcIikge1xuICBjb25zdCBtYXhMZW5naCA9IFtdO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBmb3IgKGNvbnN0IFtpLCBlbGVtZW50XSBvZiBsaW5lLmVudHJpZXMoKSkge1xuICAgICAgbWF4TGVuZ2hbaV0gPSBNYXRoLm1heChtYXhMZW5naFtpXSB8fCAwLCBlbGVtZW50Lmxlbmd0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaW5lcy5tYXAoXG4gICAgKGwpID0+IGwubWFwKFxuICAgICAgKGMsIGkpID0+IGxpbmVQcmVmaXggKyBjW2kgPT09IDAgPyBcInBhZFN0YXJ0XCIgOiBcInBhZEVuZFwiXShtYXhMZW5naFtpXSlcbiAgICApLmpvaW4oXCIgIFwiKVxuICApLmpvaW4oXCJcXG5cIik7XG59XG5mdW5jdGlvbiByZXNvbHZlVmFsdWUoaW5wdXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gXCJmdW5jdGlvblwiID8gaW5wdXQoKSA6IGlucHV0O1xufVxuY2xhc3MgQ0xJRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIGNvZGUpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIHRoaXMubmFtZSA9IFwiQ0xJRXJyb3JcIjtcbiAgfVxufVxuXG5jb25zdCBOVU1CRVJfQ0hBUl9SRSA9IC9cXGQvO1xuY29uc3QgU1RSX1NQTElUVEVSUyA9IFtcIi1cIiwgXCJfXCIsIFwiL1wiLCBcIi5cIl07XG5mdW5jdGlvbiBpc1VwcGVyY2FzZShjaGFyID0gXCJcIikge1xuICBpZiAoTlVNQkVSX0NIQVJfUkUudGVzdChjaGFyKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIGNoYXIgIT09IGNoYXIudG9Mb3dlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHNwbGl0QnlDYXNlKHN0ciwgc2VwYXJhdG9ycykge1xuICBjb25zdCBzcGxpdHRlcnMgPSBzZXBhcmF0b3JzID8/IFNUUl9TUExJVFRFUlM7XG4gIGNvbnN0IHBhcnRzID0gW107XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gcGFydHM7XG4gIH1cbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgcHJldmlvdXNVcHBlcjtcbiAgbGV0IHByZXZpb3VzU3BsaXR0ZXI7XG4gIGZvciAoY29uc3QgY2hhciBvZiBzdHIpIHtcbiAgICBjb25zdCBpc1NwbGl0dGVyID0gc3BsaXR0ZXJzLmluY2x1ZGVzKGNoYXIpO1xuICAgIGlmIChpc1NwbGl0dGVyID09PSB0cnVlKSB7XG4gICAgICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICAgICAgYnVmZiA9IFwiXCI7XG4gICAgICBwcmV2aW91c1VwcGVyID0gdm9pZCAwO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGlzVXBwZXIgPSBpc1VwcGVyY2FzZShjaGFyKTtcbiAgICBpZiAocHJldmlvdXNTcGxpdHRlciA9PT0gZmFsc2UpIHtcbiAgICAgIGlmIChwcmV2aW91c1VwcGVyID09PSBmYWxzZSAmJiBpc1VwcGVyID09PSB0cnVlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYnVmZik7XG4gICAgICAgIGJ1ZmYgPSBjaGFyO1xuICAgICAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJldmlvdXNVcHBlciA9PT0gdHJ1ZSAmJiBpc1VwcGVyID09PSBmYWxzZSAmJiBidWZmLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgbGFzdENoYXIgPSBidWZmLmF0KC0xKTtcbiAgICAgICAgcGFydHMucHVzaChidWZmLnNsaWNlKDAsIE1hdGgubWF4KDAsIGJ1ZmYubGVuZ3RoIC0gMSkpKTtcbiAgICAgICAgYnVmZiA9IGxhc3RDaGFyICsgY2hhcjtcbiAgICAgICAgcHJldmlvdXNVcHBlciA9IGlzVXBwZXI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBidWZmICs9IGNoYXI7XG4gICAgcHJldmlvdXNVcHBlciA9IGlzVXBwZXI7XG4gICAgcHJldmlvdXNTcGxpdHRlciA9IGlzU3BsaXR0ZXI7XG4gIH1cbiAgcGFydHMucHVzaChidWZmKTtcbiAgcmV0dXJuIHBhcnRzO1xufVxuZnVuY3Rpb24gdXBwZXJGaXJzdChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGxvd2VyRmlyc3Qoc3RyKSB7XG4gIHJldHVybiBzdHIgPyBzdHJbMF0udG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBwYXNjYWxDYXNlKHN0ciwgb3B0cykge1xuICByZXR1cm4gc3RyID8gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ciA6IHNwbGl0QnlDYXNlKHN0cikpLm1hcCgocCkgPT4gdXBwZXJGaXJzdChvcHRzPy5ub3JtYWxpemUgPyBwLnRvTG93ZXJDYXNlKCkgOiBwKSkuam9pbihcIlwiKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBjYW1lbENhc2Uoc3RyLCBvcHRzKSB7XG4gIHJldHVybiBsb3dlckZpcnN0KHBhc2NhbENhc2Uoc3RyIHx8IFwiXCIsIG9wdHMpKTtcbn1cbmZ1bmN0aW9uIGtlYmFiQ2FzZShzdHIsIGpvaW5lcikge1xuICByZXR1cm4gc3RyID8gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ciA6IHNwbGl0QnlDYXNlKHN0cikpLm1hcCgocCkgPT4gcC50b0xvd2VyQ2FzZSgpKS5qb2luKGpvaW5lciA/PyBcIi1cIikgOiBcIlwiO1xufVxuXG5mdW5jdGlvbiB0b0FycihhbnkpIHtcbiAgcmV0dXJuIGFueSA9PSB2b2lkIDAgPyBbXSA6IEFycmF5LmlzQXJyYXkoYW55KSA/IGFueSA6IFthbnldO1xufVxuZnVuY3Rpb24gdG9WYWwob3V0LCBrZXksIHZhbCwgb3B0cykge1xuICBsZXQgeDtcbiAgY29uc3Qgb2xkID0gb3V0W2tleV07XG4gIGNvbnN0IG54dCA9IH5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyB2YWwgPT0gdm9pZCAwIHx8IHZhbCA9PT0gdHJ1ZSA/IFwiXCIgOiBTdHJpbmcodmFsKSA6IHR5cGVvZiB2YWwgPT09IFwiYm9vbGVhblwiID8gdmFsIDogfm9wdHMuYm9vbGVhbi5pbmRleE9mKGtleSkgPyB2YWwgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdmFsID09PSBcInRydWVcIiB8fCAob3V0Ll8ucHVzaCgoeCA9ICt2YWwsIHggKiAwID09PSAwKSA/IHggOiB2YWwpLCAhIXZhbCkgOiAoeCA9ICt2YWwsIHggKiAwID09PSAwKSA/IHggOiB2YWw7XG4gIG91dFtrZXldID0gb2xkID09IHZvaWQgMCA/IG54dCA6IEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF07XG59XG5mdW5jdGlvbiBwYXJzZVJhd0FyZ3MoYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgbGV0IGs7XG4gIGxldCBhcnI7XG4gIGxldCBhcmc7XG4gIGxldCBuYW1lO1xuICBsZXQgdmFsO1xuICBjb25zdCBvdXQgPSB7IF86IFtdIH07XG4gIGxldCBpID0gMDtcbiAgbGV0IGogPSAwO1xuICBsZXQgaWR4ID0gMDtcbiAgY29uc3QgbGVuID0gYXJncy5sZW5ndGg7XG4gIGNvbnN0IGFsaWJpID0gb3B0cy5hbGlhcyAhPT0gdm9pZCAwO1xuICBjb25zdCBzdHJpY3QgPSBvcHRzLnVua25vd24gIT09IHZvaWQgMDtcbiAgY29uc3QgZGVmYXVsdHMgPSBvcHRzLmRlZmF1bHQgIT09IHZvaWQgMDtcbiAgb3B0cy5hbGlhcyA9IG9wdHMuYWxpYXMgfHwge307XG4gIG9wdHMuc3RyaW5nID0gdG9BcnIob3B0cy5zdHJpbmcpO1xuICBvcHRzLmJvb2xlYW4gPSB0b0FycihvcHRzLmJvb2xlYW4pO1xuICBpZiAoYWxpYmkpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAob3B0cy5hbGlhc1thcnJbaV1dID0gYXJyLmNvbmNhdChrKSkuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmb3IgKGkgPSBvcHRzLmJvb2xlYW4ubGVuZ3RoOyBpLS0gPiAwOyApIHtcbiAgICBhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG4gICAgZm9yIChqID0gYXJyLmxlbmd0aDsgai0tID4gMDsgKSB7XG4gICAgICBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuICAgIH1cbiAgfVxuICBmb3IgKGkgPSBvcHRzLnN0cmluZy5sZW5ndGg7IGktLSA+IDA7ICkge1xuICAgIGFyciA9IG9wdHMuYWxpYXNbb3B0cy5zdHJpbmdbaV1dIHx8IFtdO1xuICAgIGZvciAoaiA9IGFyci5sZW5ndGg7IGotLSA+IDA7ICkge1xuICAgICAgb3B0cy5zdHJpbmcucHVzaChhcnJbal0pO1xuICAgIH1cbiAgfVxuICBpZiAoZGVmYXVsdHMpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG4gICAgICBuYW1lID0gdHlwZW9mIG9wdHMuZGVmYXVsdFtrXTtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuICAgICAgaWYgKG9wdHNbbmFtZV0gIT09IHZvaWQgMCkge1xuICAgICAgICBvcHRzW25hbWVdLnB1c2goayk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBrZXlzID0gc3RyaWN0ID8gT2JqZWN0LmtleXMob3B0cy5hbGlhcykgOiBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09PSBcIi0tXCIpIHtcbiAgICAgIG91dC5fID0gb3V0Ll8uY29uY2F0KGFyZ3Muc2xpY2UoKytpKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZm9yIChqID0gMDsgaiA8IGFyZy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGFyZy5jaGFyQ29kZUF0KGopICE9PSA0NSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIG91dC5fLnB1c2goYXJnKTtcbiAgICB9IGVsc2UgaWYgKGFyZy5zdWJzdHJpbmcoaiwgaiArIDMpID09PSBcIm5vLVwiKSB7XG4gICAgICBuYW1lID0gYXJnLnNsaWNlKE1hdGgubWF4KDAsIGogKyAzKSk7XG4gICAgICBpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcbiAgICAgIH1cbiAgICAgIG91dFtuYW1lXSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGlkeCA9IGogKyAxOyBpZHggPCBhcmcubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICBpZiAoYXJnLmNoYXJDb2RlQXQoaWR4KSA9PT0gNjEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmFtZSA9IGFyZy5zdWJzdHJpbmcoaiwgaWR4KTtcbiAgICAgIHZhbCA9IGFyZy5zbGljZShNYXRoLm1heCgwLCArK2lkeCkpIHx8IGkgKyAxID09PSBsZW4gfHwgKFwiXCIgKyBhcmdzW2kgKyAxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldO1xuICAgICAgYXJyID0gaiA9PT0gMiA/IFtuYW1lXSA6IG5hbWU7XG4gICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIG5hbWUgPSBhcnJbaWR4XTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkge1xuICAgICAgICAgIHJldHVybiBvcHRzLnVua25vd24oXCItXCIucmVwZWF0KGopICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdG9WYWwob3V0LCBuYW1lLCBpZHggKyAxIDwgYXJyLmxlbmd0aCB8fCB2YWwsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZGVmYXVsdHMpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG4gICAgICBpZiAob3V0W2tdID09PSB2b2lkIDApIHtcbiAgICAgICAgb3V0W2tdID0gb3B0cy5kZWZhdWx0W2tdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYWxpYmkpIHtcbiAgICBmb3IgKGsgaW4gb3V0KSB7XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPiAwKSB7XG4gICAgICAgIG91dFthcnIuc2hpZnQoKV0gPSBvdXRba107XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXdBcmdzLCBhcmdzRGVmKSB7XG4gIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgICBib29sZWFuOiBbXSxcbiAgICBzdHJpbmc6IFtdLFxuICAgIG1peGVkOiBbXSxcbiAgICBhbGlhczoge30sXG4gICAgZGVmYXVsdDoge31cbiAgfTtcbiAgY29uc3QgYXJncyA9IHJlc29sdmVBcmdzKGFyZ3NEZWYpO1xuICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhcmcudHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcGFyc2VPcHRpb25zLnN0cmluZy5wdXNoKGFyZy5uYW1lKTtcbiAgICB9IGVsc2UgaWYgKGFyZy50eXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcGFyc2VPcHRpb25zLmJvb2xlYW4ucHVzaChhcmcubmFtZSk7XG4gICAgfVxuICAgIGlmIChhcmcuZGVmYXVsdCAhPT0gdm9pZCAwKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuZGVmYXVsdFthcmcubmFtZV0gPSBhcmcuZGVmYXVsdDtcbiAgICB9XG4gICAgaWYgKGFyZy5hbGlhcykge1xuICAgICAgcGFyc2VPcHRpb25zLmFsaWFzW2FyZy5uYW1lXSA9IGFyZy5hbGlhcztcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VSYXdBcmdzKHJhd0FyZ3MsIHBhcnNlT3B0aW9ucyk7XG4gIGNvbnN0IFsuLi5wb3NpdGlvbmFsQXJndW1lbnRzXSA9IHBhcnNlZC5fO1xuICBjb25zdCBwYXJzZWRBcmdzUHJveHkgPSBuZXcgUHJveHkocGFyc2VkLCB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgcmV0dXJuIHRhcmdldFtwcm9wXSA/PyB0YXJnZXRbY2FtZWxDYXNlKHByb3ApXSA/PyB0YXJnZXRba2ViYWJDYXNlKHByb3ApXTtcbiAgICB9XG4gIH0pO1xuICBmb3IgKGNvbnN0IFssIGFyZ10gb2YgYXJncy5lbnRyaWVzKCkpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb25zdCBuZXh0UG9zaXRpb25hbEFyZ3VtZW50ID0gcG9zaXRpb25hbEFyZ3VtZW50cy5zaGlmdCgpO1xuICAgICAgaWYgKG5leHRQb3NpdGlvbmFsQXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgICBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID0gbmV4dFBvc2l0aW9uYWxBcmd1bWVudDtcbiAgICAgIH0gZWxzZSBpZiAoYXJnLmRlZmF1bHQgPT09IHZvaWQgMCAmJiBhcmcucmVxdWlyZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBDTElFcnJvcihcbiAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAke2FyZy5uYW1lLnRvVXBwZXJDYXNlKCl9YCxcbiAgICAgICAgICBcIkVBUkdcIlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9IGFyZy5kZWZhdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYXJnLnJlcXVpcmVkICYmIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgbmV3IENMSUVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50OiAtLSR7YXJnLm5hbWV9YCwgXCJFQVJHXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyc2VkQXJnc1Byb3h5O1xufVxuZnVuY3Rpb24gcmVzb2x2ZUFyZ3MoYXJnc0RlZikge1xuICBjb25zdCBhcmdzID0gW107XG4gIGZvciAoY29uc3QgW25hbWUsIGFyZ0RlZl0gb2YgT2JqZWN0LmVudHJpZXMoYXJnc0RlZiB8fCB7fSkpIHtcbiAgICBhcmdzLnB1c2goe1xuICAgICAgLi4uYXJnRGVmLFxuICAgICAgbmFtZSxcbiAgICAgIGFsaWFzOiB0b0FycmF5KGFyZ0RlZi5hbGlhcylcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYXJncztcbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tbWFuZChkZWYpIHtcbiAgcmV0dXJuIGRlZjtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJ1bkNvbW1hbmQoY21kLCBvcHRzKSB7XG4gIGNvbnN0IGNtZEFyZ3MgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLmFyZ3MgfHwge30pO1xuICBjb25zdCBwYXJzZWRBcmdzID0gcGFyc2VBcmdzKG9wdHMucmF3QXJncywgY21kQXJncyk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgcmF3QXJnczogb3B0cy5yYXdBcmdzLFxuICAgIGFyZ3M6IHBhcnNlZEFyZ3MsXG4gICAgZGF0YTogb3B0cy5kYXRhLFxuICAgIGNtZFxuICB9O1xuICBpZiAodHlwZW9mIGNtZC5zZXR1cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYXdhaXQgY21kLnNldHVwKGNvbnRleHQpO1xuICB9XG4gIGxldCByZXN1bHQ7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgICBpZiAoc3ViQ29tbWFuZHMgJiYgT2JqZWN0LmtleXMoc3ViQ29tbWFuZHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHN1YkNvbW1hbmRBcmdJbmRleCA9IG9wdHMucmF3QXJncy5maW5kSW5kZXgoXG4gICAgICAgIChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIilcbiAgICAgICk7XG4gICAgICBjb25zdCBzdWJDb21tYW5kTmFtZSA9IG9wdHMucmF3QXJnc1tzdWJDb21tYW5kQXJnSW5kZXhdO1xuICAgICAgaWYgKHN1YkNvbW1hbmROYW1lKSB7XG4gICAgICAgIGlmICghc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFxuICAgICAgICAgICAgYFVua25vd24gY29tbWFuZCBcXGAke3N1YkNvbW1hbmROYW1lfVxcYGAsXG4gICAgICAgICAgICBcIkVfVU5LTk9XTl9DT01NQU5EXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YkNvbW1hbmQgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKTtcbiAgICAgICAgaWYgKHN1YkNvbW1hbmQpIHtcbiAgICAgICAgICBhd2FpdCBydW5Db21tYW5kKHN1YkNvbW1hbmQsIHtcbiAgICAgICAgICAgIHJhd0FyZ3M6IG9wdHMucmF3QXJncy5zbGljZShzdWJDb21tYW5kQXJnSW5kZXggKyAxKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjbWQucnVuKSB7XG4gICAgICAgIHRocm93IG5ldyBDTElFcnJvcihgTm8gY29tbWFuZCBzcGVjaWZpZWQuYCwgXCJFX05PX0NPTU1BTkRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY21kLnJ1biA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjbWQucnVuKGNvbnRleHQpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAodHlwZW9mIGNtZC5jbGVhbnVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGF3YWl0IGNtZC5jbGVhbnVwKGNvbnRleHQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyByZXN1bHQgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVTdWJDb21tYW5kKGNtZCwgcmF3QXJncywgcGFyZW50KSB7XG4gIGNvbnN0IHN1YkNvbW1hbmRzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5zdWJDb21tYW5kcyk7XG4gIGlmIChzdWJDb21tYW5kcyAmJiBPYmplY3Qua2V5cyhzdWJDb21tYW5kcykubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHN1YkNvbW1hbmRBcmdJbmRleCA9IHJhd0FyZ3MuZmluZEluZGV4KChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIikpO1xuICAgIGNvbnN0IHN1YkNvbW1hbmROYW1lID0gcmF3QXJnc1tzdWJDb21tYW5kQXJnSW5kZXhdO1xuICAgIGNvbnN0IHN1YkNvbW1hbmQgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKTtcbiAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVTdWJDb21tYW5kKFxuICAgICAgICBzdWJDb21tYW5kLFxuICAgICAgICByYXdBcmdzLnNsaWNlKHN1YkNvbW1hbmRBcmdJbmRleCArIDEpLFxuICAgICAgICBjbWRcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbY21kLCBwYXJlbnRdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93VXNhZ2UoY21kLCBwYXJlbnQpIHtcbiAgdHJ5IHtcbiAgICBjb25zb2xhLmxvZyhhd2FpdCByZW5kZXJVc2FnZShjbWQsIHBhcmVudCkgKyBcIlxcblwiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xhLmVycm9yKGVycm9yKTtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyVXNhZ2UoY21kLCBwYXJlbnQpIHtcbiAgY29uc3QgY21kTWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQubWV0YSB8fCB7fSk7XG4gIGNvbnN0IGNtZEFyZ3MgPSByZXNvbHZlQXJncyhhd2FpdCByZXNvbHZlVmFsdWUoY21kLmFyZ3MgfHwge30pKTtcbiAgY29uc3QgcGFyZW50TWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShwYXJlbnQ/Lm1ldGEgfHwge30pO1xuICBjb25zdCBjb21tYW5kTmFtZSA9IGAke3BhcmVudE1ldGEubmFtZSA/IGAke3BhcmVudE1ldGEubmFtZX0gYCA6IFwiXCJ9YCArIChjbWRNZXRhLm5hbWUgfHwgcHJvY2Vzcy5hcmd2WzFdKTtcbiAgY29uc3QgYXJnTGluZXMgPSBbXTtcbiAgY29uc3QgcG9zTGluZXMgPSBbXTtcbiAgY29uc3QgY29tbWFuZHNMaW5lcyA9IFtdO1xuICBjb25zdCB1c2FnZUxpbmUgPSBbXTtcbiAgZm9yIChjb25zdCBhcmcgb2YgY21kQXJncykge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBhcmcubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGFyZy5yZXF1aXJlZCAhPT0gZmFsc2UgJiYgYXJnLmRlZmF1bHQgPT09IHZvaWQgMDtcbiAgICAgIGNvbnN0IGRlZmF1bHRIaW50ID0gYXJnLmRlZmF1bHQgPyBgPVwiJHthcmcuZGVmYXVsdH1cImAgOiBcIlwiO1xuICAgICAgcG9zTGluZXMucHVzaChbXG4gICAgICAgIFwiYFwiICsgbmFtZSArIGRlZmF1bHRIaW50ICsgXCJgXCIsXG4gICAgICAgIGFyZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICBhcmcudmFsdWVIaW50ID8gYDwke2FyZy52YWx1ZUhpbnR9PmAgOiBcIlwiXG4gICAgICBdKTtcbiAgICAgIHVzYWdlTGluZS5wdXNoKGlzUmVxdWlyZWQgPyBgPCR7bmFtZX0+YCA6IGBbJHtuYW1lfV1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGFyZy5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiBhcmcuZGVmYXVsdCA9PT0gdm9pZCAwO1xuICAgICAgY29uc3QgYXJnU3RyID0gKGFyZy50eXBlID09PSBcImJvb2xlYW5cIiAmJiBhcmcuZGVmYXVsdCA9PT0gdHJ1ZSA/IFtcbiAgICAgICAgLi4uKGFyZy5hbGlhcyB8fCBbXSkubWFwKChhKSA9PiBgLS1uby0ke2F9YCksXG4gICAgICAgIGAtLW5vLSR7YXJnLm5hbWV9YFxuICAgICAgXS5qb2luKFwiLCBcIikgOiBbLi4uKGFyZy5hbGlhcyB8fCBbXSkubWFwKChhKSA9PiBgLSR7YX1gKSwgYC0tJHthcmcubmFtZX1gXS5qb2luKFxuICAgICAgICBcIiwgXCJcbiAgICAgICkpICsgKGFyZy50eXBlID09PSBcInN0cmluZ1wiICYmIChhcmcudmFsdWVIaW50IHx8IGFyZy5kZWZhdWx0KSA/IGA9JHthcmcudmFsdWVIaW50ID8gYDwke2FyZy52YWx1ZUhpbnR9PmAgOiBgXCIke2FyZy5kZWZhdWx0IHx8IFwiXCJ9XCJgfWAgOiBcIlwiKTtcbiAgICAgIGFyZ0xpbmVzLnB1c2goW1xuICAgICAgICBcImBcIiArIGFyZ1N0ciArIChpc1JlcXVpcmVkID8gXCIgKHJlcXVpcmVkKVwiIDogXCJcIikgKyBcImBcIixcbiAgICAgICAgYXJnLmRlc2NyaXB0aW9uIHx8IFwiXCJcbiAgICAgIF0pO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgdXNhZ2VMaW5lLnB1c2goYXJnU3RyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNtZC5zdWJDb21tYW5kcykge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lcyA9IFtdO1xuICAgIGNvbnN0IHN1YkNvbW1hbmRzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5zdWJDb21tYW5kcyk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgc3ViXSBvZiBPYmplY3QuZW50cmllcyhzdWJDb21tYW5kcykpIHtcbiAgICAgIGNvbnN0IHN1YkNtZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWIpO1xuICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDbWQ/Lm1ldGEpO1xuICAgICAgY29tbWFuZHNMaW5lcy5wdXNoKFtgXFxgJHtuYW1lfVxcYGAsIG1ldGE/LmRlc2NyaXB0aW9uIHx8IFwiXCJdKTtcbiAgICAgIGNvbW1hbmROYW1lcy5wdXNoKG5hbWUpO1xuICAgIH1cbiAgICB1c2FnZUxpbmUucHVzaChjb21tYW5kTmFtZXMuam9pbihcInxcIikpO1xuICB9XG4gIGNvbnN0IHVzYWdlTGluZXMgPSBbXTtcbiAgY29uc3QgdmVyc2lvbiA9IGNtZE1ldGEudmVyc2lvbiB8fCBwYXJlbnRNZXRhLnZlcnNpb247XG4gIHVzYWdlTGluZXMucHVzaChcbiAgICBjb2xvcnMuZ3JheShcbiAgICAgIGAke2NtZE1ldGEuZGVzY3JpcHRpb259ICgke2NvbW1hbmROYW1lICsgKHZlcnNpb24gPyBgIHYke3ZlcnNpb259YCA6IFwiXCIpfSlgXG4gICAgKSxcbiAgICBcIlwiXG4gICk7XG4gIGNvbnN0IGhhc09wdGlvbnMgPSBhcmdMaW5lcy5sZW5ndGggPiAwIHx8IHBvc0xpbmVzLmxlbmd0aCA+IDA7XG4gIHVzYWdlTGluZXMucHVzaChcbiAgICBgJHtjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiVVNBR0VcIikpfSBcXGAke2NvbW1hbmROYW1lfSR7aGFzT3B0aW9ucyA/IFwiIFtPUFRJT05TXVwiIDogXCJcIn0gJHt1c2FnZUxpbmUuam9pbihcIiBcIil9XFxgYCxcbiAgICBcIlwiXG4gICk7XG4gIGlmIChwb3NMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJBUkdVTUVOVFNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMocG9zTGluZXMsIFwiICBcIikpO1xuICAgIHVzYWdlTGluZXMucHVzaChcIlwiKTtcbiAgfVxuICBpZiAoYXJnTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiT1BUSU9OU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhhcmdMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFwiXCIpO1xuICB9XG4gIGlmIChjb21tYW5kc0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIkNPTU1BTkRTXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKGNvbW1hbmRzTGluZXMsIFwiICBcIikpO1xuICAgIHVzYWdlTGluZXMucHVzaChcbiAgICAgIFwiXCIsXG4gICAgICBgVXNlIFxcYCR7Y29tbWFuZE5hbWV9IDxjb21tYW5kPiAtLWhlbHBcXGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLmBcbiAgICApO1xuICB9XG4gIHJldHVybiB1c2FnZUxpbmVzLmZpbHRlcigobCkgPT4gdHlwZW9mIGwgPT09IFwic3RyaW5nXCIpLmpvaW4oXCJcXG5cIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bk1haW4oY21kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgcmF3QXJncyA9IG9wdHMucmF3QXJncyB8fCBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gIGNvbnN0IHNob3dVc2FnZSQxID0gb3B0cy5zaG93VXNhZ2UgfHwgc2hvd1VzYWdlO1xuICB0cnkge1xuICAgIGlmIChyYXdBcmdzLmluY2x1ZGVzKFwiLS1oZWxwXCIpIHx8IHJhd0FyZ3MuaW5jbHVkZXMoXCItaFwiKSkge1xuICAgICAgYXdhaXQgc2hvd1VzYWdlJDEoLi4uYXdhaXQgcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSBlbHNlIGlmIChyYXdBcmdzLmxlbmd0aCA9PT0gMSAmJiByYXdBcmdzWzBdID09PSBcIi0tdmVyc2lvblwiKSB7XG4gICAgICBjb25zdCBtZXRhID0gdHlwZW9mIGNtZC5tZXRhID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBjbWQubWV0YSgpIDogYXdhaXQgY21kLm1ldGE7XG4gICAgICBpZiAoIW1ldGE/LnZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFwiTm8gdmVyc2lvbiBzcGVjaWZpZWRcIiwgXCJFX05PX1ZFUlNJT05cIik7XG4gICAgICB9XG4gICAgICBjb25zb2xhLmxvZyhtZXRhLnZlcnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBydW5Db21tYW5kKGNtZCwgeyByYXdBcmdzIH0pO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBpc0NMSUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBDTElFcnJvcjtcbiAgICBpZiAoIWlzQ0xJRXJyb3IpIHtcbiAgICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IsIFwiXFxuXCIpO1xuICAgIH1cbiAgICBpZiAoaXNDTElFcnJvcikge1xuICAgICAgYXdhaXQgc2hvd1VzYWdlJDEoLi4uYXdhaXQgcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzKSk7XG4gICAgfVxuICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVNYWluKGNtZCkge1xuICByZXR1cm4gKG9wdHMgPSB7fSkgPT4gcnVuTWFpbihjbWQsIG9wdHMpO1xufVxuXG5leHBvcnQgeyBjcmVhdGVNYWluLCBkZWZpbmVDb21tYW5kLCBwYXJzZUFyZ3MsIHJlbmRlclVzYWdlLCBydW5Db21tYW5kLCBydW5NYWluLCBzaG93VXNhZ2UgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC9eKD86Z2l0XFwrKT9odHRwcz86XFwvXFwvZ2l0aHViXFwuY29tXFwvKFteL10rKVxcLyhbXi9dKylcXC5naXQkLztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPd25lckFuZFJlcG8oXG4gIHJlcG9zaXRvcnlVcmw6IHN0cmluZyxcbik6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSByZXBvc2l0b3J5VXJsLm1hdGNoKGdpdGh1YlVybFJlZ2V4KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gW21hdGNoWzFdLCBtYXRjaFsyXV07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0OiBQYWNrYWdlTWFuaWZlc3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYW5pZmVzdC5yZXBvc2l0b3J5ID09PSBcInN0cmluZ1wiXG4gICAgPyBtYW5pZmVzdC5yZXBvc2l0b3J5XG4gICAgOiBtYW5pZmVzdC5yZXBvc2l0b3J5Py51cmw7XG59XG5cbmNvbnN0IGNvbW1pdExlbmd0aCA9IDc7XG5cbi8qXG4gKiBcIjA5ZWZkMDU1MzM3NGZmN2QzZTYyYjc5Mzc4ZTMxODRmNWViNTc1NzFcIiA9PiBcIjA5ZWZkMDVcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJicmV2aWF0ZUNvbW1pdEhhc2goZnVsbEhhc2g6IHN0cmluZykge1xuICByZXR1cm4gZnVsbEhhc2guc3Vic3RyaW5nKDAsIGNvbW1pdExlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bGxSZXF1ZXN0KHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiAhTnVtYmVyLmlzTmFOKE51bWJlcihyZWYpKTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tbWVudCA9IFwib2ZmXCIgfCBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIjtcbmV4cG9ydCB0eXBlIFBhY2thZ2VNYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiO1xuXG5jb25zdCB3aGl0ZWxpc3QgPVxuICBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zdGFja2JsaXR6LWxhYnMvcGtnLnByLm5ldy9tYWluLy53aGl0ZWxpc3RcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzV2hpdGVsaXN0ZWQob3duZXI6IHN0cmluZywgcmVwbzogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbWJpbmF0aW9uID0gYCR7b3duZXJ9LyR7cmVwb31gO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3aGl0ZWxpc3QpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG5cbiAgICByZXR1cm4gY29udGVudC5pbmNsdWRlcyhjb21iaW5hdGlvbik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgIntcbiAgXCJuYW1lXCI6IFwicGtnLXByLW5ld1wiLFxuICBcInZlcnNpb25cIjogXCIwLjAuNTdcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxuICBcIm1haW5cIjogXCJpbmRleC5qc1wiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJiaW5cIjoge1xuICAgIFwicGtnLXByLW5ld1wiOiBcImJpbi9jbGkuanNcIlxuICB9LFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrYmxpdHotbGFicy9wa2cucHIubmV3XCIsXG4gICAgXCJkaXJlY3RvcnlcIjogXCJwYWNrYWdlcy9jbGlcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImJ1aWxkOnB1Ymxpc2hcIjogXCJBUElfVVJMPWh0dHBzOi8vcGtnLnByLm5ldy8gdHN1cFwiXG4gIH0sXG4gIFwia2V5d29yZHNcIjogW10sXG4gIFwiYXV0aG9yXCI6IFwiXCIsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAYWN0aW9ucy9jb3JlXCI6IFwiXjEuMTEuMVwiLFxuICAgIFwiQGpzZGV2dG9vbHMvZXotc3Bhd25cIjogXCJeMy4wLjRcIixcbiAgICBcIkBvY3Rva2l0L2FjdGlvblwiOiBcIl42LjEuMFwiLFxuICAgIFwiaWdub3JlXCI6IFwiXjUuMy4xXCIsXG4gICAgXCJpc2JpbmFyeWZpbGVcIjogXCJeNS4wLjJcIixcbiAgICBcInBrZy10eXBlc1wiOiBcIl4xLjEuMVwiLFxuICAgIFwicXVlcnktcmVnaXN0cnlcIjogXCJeMy4wLjFcIixcbiAgICBcInRpbnlnbG9iYnlcIjogXCJeMC4yLjlcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAcGtnLXByLW5ldy91dGlsc1wiOiBcIndvcmtzcGFjZTpeXCIsXG4gICAgXCJjaXR0eVwiOiBcIl4wLjEuNlwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiXG4gIH1cbn1cbiIsICJleHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdFRlbXBsYXRlID0gKFxuICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pID0+ICh7XG4gIFwiaW5kZXguanNcIjogXCJcIixcbiAgXCJSRUFETUUubWRcIjogYFxuIyBEZWZhdWx0IFRlbXBsYXRlXG5cblRoaXMgaXMgYSB0ZW1wbGF0ZSB0aGF0IGxldmVyYWdlcyB0aGUgZXhwZXJpbWVudGFsIHRlbXBsYXRlcyBmZWF0dXJlIGluIHRoZSBcXGBwa2cucHIubmV3XFxgIHRvb2wuXG5cbiMjIE92ZXJ2aWV3XG5cblRlbXBsYXRlcyBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3JlYXRpbmcgbGl2ZSwgaW50ZXJhY3RpdmUgZXhhbXBsZXMgb2YgeW91ciBwYWNrYWdlcywgd2hpY2ggY2FuIGJlIHZlcnkgYmVuZWZpY2lhbCBmb3IgYm90aCBkZXZlbG9wbWVudCBhbmQgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy5cblxuQXMgYSB1c2VyLCB5b3UgY2FuIGNoZWNrIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhbmQgc2VlIHRoZSBuZXcgZ2VuZXJhdGVkIHBhY2thZ2VzISBZb3UgY2FuIGp1c3QgY29weSB0aG9zZSBhbmQgcHV0IHRoZW0gaW4geW91ciBwYWNrYWdlLmpzb24gb3IgaW5zdGFsbCB0aGVtIHdpdGggeW91ciBmYXZvcml0ZSBwYWNrYWdlIG1hbmFnZXIuXG5cbiR7T2JqZWN0LnZhbHVlcyhkZXBlbmRlbmNpZXMpXG4gIC5tYXAoXG4gICAgKHVybCkgPT4gYFxuXFxgXFxgXFxgc2hcbm5wbSBpICR7dXJsfVxuXFxgXFxgXFxgXG5gLFxuICApXG4gIC5qb2luKFwiXCIpfVxuXG4jIyBVc2FnZVxuXG5UbyB1c2UgdGhpcyBmZWF0dXJlIGFzIGEgbWFpbnRhaW5lciwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuXG5cXGBcXGBcXGBzaFxubnB4IHBrZy1wci1uZXcgcHVibGlzaCAnLi9wYWNrYWdlcy9BJyAtLXRlbXBsYXRlICcuL2V4YW1wbGVzLyonXG5cXGBcXGBcXGBcblxuIyMgQmVuZWZpdHNcblxuLSBJbnRlcmFjdGl2ZSBEZW1vczogQXV0b21hdGljYWxseSBjcmVhdGUgbGl2ZSBkZW1vcyB0aGF0IHVzZXJzIGNhbiBpbnRlcmFjdCB3aXRoIGRpcmVjdGx5IGluIHRoZWlyIGJyb3dzZXIuXG4tIEVuaGFuY2VkIFRlc3Rpbmc6IFF1aWNrbHkgc3BpbiB1cCBlbnZpcm9ubWVudHMgdG8gdGVzdCB5b3VyIHBhY2thZ2UgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy5cbi0gSW1wcm92ZWQgU2hhcmluZzogRWFzaWx5IHNoYXJlIHdvcmtpbmcgZXhhbXBsZXMgb2YgeW91ciBwYWNrYWdlIHdpdGggY29sbGFib3JhdG9ycyBvciB1c2VycyB3aXRob3V0IG5lZWRpbmcgdGhlbSB0byBzZXQgdXAgdGhlaXIgZW52aXJvbm1lbnQuXG5gLFxuICBcInBhY2thZ2UuanNvblwiOiBKU09OLnN0cmluZ2lmeShcbiAgICB7XG4gICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgIHZlcnNpb246IFwiMS4wLjBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImdlbmVyYXRlZCBieSBwa2cucHIubmV3XCIsXG4gICAgICBtYWluOiBcImluZGV4LmpzXCIsXG4gICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICBrZXl3b3JkczogW10sXG4gICAgICBhdXRob3I6IFwicGtnLnByLm5ld1wiLFxuICAgICAgbGljZW5zZTogXCJJU0NcIixcbiAgICB9LFxuICAgIG51bGwsXG4gICAgMixcbiAgKSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFxRUEsU0FBUyxnQkFBZ0IsT0FBTztBQUM5QixNQUFJLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sWUFBWSxPQUFPLGVBQWUsS0FBSztBQUM3QyxNQUFJLGNBQWMsUUFBUSxjQUFjLE9BQU8sYUFBYSxPQUFPLGVBQWUsU0FBUyxNQUFNLE1BQU07QUFDckcsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE9BQU8sWUFBWSxPQUFPO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxPQUFPLGVBQWUsT0FBTztBQUMvQixXQUFPLE9BQU8sVUFBVSxTQUFTLEtBQUssS0FBSyxNQUFNO0FBQUEsRUFDbkQ7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLE1BQU0sWUFBWUEsV0FBVSxZQUFZLEtBQUssUUFBUTtBQUM1RCxNQUFJLENBQUMsZ0JBQWdCQSxTQUFRLEdBQUc7QUFDOUIsV0FBTyxNQUFNLFlBQVksQ0FBQyxHQUFHLFdBQVcsTUFBTTtBQUFBLEVBQ2hEO0FBQ0EsUUFB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LEtBQUVELEdBQUUsV0FBVyxDQUFDLEdBQUVULEtBQUVTLEdBQUUsVUFBUSxJQUFFQSxHQUFFLFdBQVcsQ0FBQyxJQUFFLEdBQUVJLEtBQUVIO0FBQUUsZUFBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT1YsTUFBR0EsTUFBRyxVQUFRVSxNQUFHLE1BQUtWLE1BQUcsTUFBS2EsS0FBRUgsTUFBRyxLQUFHVixJQUFFYSxNQUFHLFFBQU9BLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxRQUFNLE1BQUlBLE1BQUcsUUFBTSxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsUUFBTSxNQUFJLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFNBQU8sTUFBSSxNQUFJQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsUUFBTSxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdB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QUFJLFFBQVEsS0FBRyxDQUFDLE1BQU1ELEVBQUMsSUFBSUQsRUFBQyxJQUFJRSxFQUFDO0FBQXhILElBQTRILElBQUUsRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxVQUFTLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLEdBQUUsRUFBRSxHQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsR0FBRSxlQUFjLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLEtBQUksQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsYUFBWSxDQUFDLElBQUcsRUFBRSxHQUFFLGNBQWEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxZQUFXLENBQUMsSUFBRyxFQUFFLEdBQUUsZUFBYyxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsVUFBUyxDQUFDLElBQUcsRUFBRSxHQUFFLFFBQU8sQ0FBQyxJ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R0FBRyxZQUFXLEtBQUssVUFBVSxHQUFFLEVBQUUsS0FBSyxPQUFNLElBQUUsR0FBRSxLQUFLLE9BQU8sR0FBRyxVQUFTLEtBQUssTUFBTSxHQUFFLEtBQUssT0FBTyxHQUFFLEtBQUssS0FBSyxVQUFTLE1BQUk7QUFBQyxpQkFBSyxPQUFPLE1BQU0sV0FBVyxPQUFPLElBQUksR0FBRSxLQUFLLE9BQU8sSUFBSSxVQUFTLEtBQUssTUFBTSxHQUFFLEVBQUUsS0FBSyxPQUFNLEtBQUUsR0FBRUQsR0FBRSxLQUFLLEtBQUs7QUFBQSxVQUFFLENBQUMsR0FBRSxLQUFLLEtBQUssVUFBUyxNQUFJO0FBQUMsaUJBQUssT0FBTyxNQUFNLFdBQVcsT0FBTyxJQUFJLEdBQUUsS0FBSyxPQUFPLElBQUksVUFBUyxLQUFLLE1BQU0sR0FBRSxFQUFFLEtBQUssT0FBTSxLQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFBLFVBQUUsQ0FBQztBQUFBLFFBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxNQUFDLFdBQVdBLElBQUVELElBQUU7QUFBQyxZQUFHLEtBQUssVUFBUSxZQUFVLEtBQUssUUFBTSxXQUFVQSxJQUFHLFNBQU8sQ0FBQyxLQUFLLFVBQVEsRUFBRSxRQUFRLElBQUlBLEdBQUUsSUFBSSxLQUFHLEtBQUssS0FBSyxVQUFTLEVBQUUsUUFBUSxJQUFJQSxHQUFFLElBQUksQ0FBQyxHQUFFLEVBQUUsUUFBUSxJQUFJQSxHQUFFLElBQUksS0FBRyxLQUFLLEtBQUssVUFBU0EsR0FBRSxJQUFJLElBQUdDLE9BQUlBLEdBQUUsWUFBWSxNQUFJLE9BQUtBLEdBQUUsWUFBWSxNQUFJLFFBQU0sS0FBSyxLQUFLLFdBQVVBLEdBQUUsWUFBWSxNQUFJLEdBQUcsR0FBRUEsT0FBSSxPQUFLLEtBQUssS0FBSyxnQkFBYyxLQUFLLFVBQVEsS0FBSyxJQUFJLE1BQU0sS0FBSyxLQUFLLFdBQVcsR0FBRSxLQUFLLEtBQUssU0FBUSxLQUFLLEtBQUssV0FBVyxLQUFJQSxNQUFHLEtBQUssS0FBSyxPQUFNQSxHQUFFLFlBQVksQ0FBQyxH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USxLQUFLLFFBQU0sQ0FBQyxHQUFHQSxHQUFFLGlCQUFlLENBQUMsQ0FBQyxHQUFFLEtBQUssU0FBTyxLQUFLLElBQUksS0FBSyxRQUFRLFVBQVUsQ0FBQyxFQUFDLE9BQU1ELEdBQUMsTUFBSUEsT0FBSUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEtBQUssR0FBRyxPQUFNLENBQUFELE9BQUc7QUFBQyxVQUFBQSxPQUFJLE9BQUssS0FBSyxVQUFVO0FBQUEsUUFBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLFVBQVMsQ0FBQUEsT0FBRztBQUFDLGtCQUFPQSxJQUFFO0FBQUEsWUFBQyxLQUFJO0FBQUEsWUFBTyxLQUFJO0FBQUssbUJBQUssU0FBTyxLQUFLLFdBQVMsSUFBRSxLQUFLLFFBQVEsU0FBTyxJQUFFLEtBQUssU0FBTztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQUEsWUFBTyxLQUFJO0FBQVEsbUJBQUssU0FBTyxLQUFLLFdBQVMsS0FBSyxRQUFRLFNBQU8sSUFBRSxJQUFFLEtBQUssU0FBTztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQVEsbUJBQUssWUFBWTtBQUFFO0FBQUEsVUFBSztBQUFBLFFBQUMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLElBQUksU0FBUTtBQUFDLGVBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSxFQUFFO0FBQUEsTUFBSztBQUFBLE1BQUMsWUFBVztBQUFDLGNBQU1DLEtBQUUsS0FBSyxNQUFNLFdBQVMsS0FBSyxRQUFRO0FBQU8sYUFBSyxRQUFNQSxLQUFFLENBQUMsSUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFBRCxPQUFHQSxHQUFFLEtBQUs7QUFBQSxNQUFFO0FBQUEsTUFBQyxjQUFhO0FBQUMsY0FBTUMsS0FBRSxLQUFLLE1BQU0sU0FBUyxLQUFLLE1BQU07QUFBRSxhQUFLLFFBQU1BLEtBQUUsS0FBSyxNQUFNLE9BQU8sQ0FBQUQsT0FBR0EsT0FBSSxLQUFLLE1BQU0sSUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFNLEtBQUssTUFBTTtBQUFBLE1BQUU7QUFBQSxJQUFDO0FB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T0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLFFBQ05BLE1BQUssUUFBU0EsTUFBSyxRQUNuQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFNBQ05BLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxPQUFNLFNBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssV0FDckJBLE1BQUssV0FBWUEsTUFBSztBQUMzQjtBQUVBLFNBQVMsWUFBWUEsSUFBRztBQUN2QixTQUFPQSxPQUFNLFNBQ1RBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLO0FBQ3pCO0FBRUEsU0FBUyxPQUFPQSxJQUFHO0FBQ2xCLFNBQU9BLE1BQUssUUFBVUEsTUFBSyxRQUN2QkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE9BQU0sU0FDTkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVdBLE1BQUssU0FDckJBLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUss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U0FBTyxNQUFNO0FBQ2Y7QUFFQSxlQUFlLGtCQUFrQixhQUFxQjtBQUNwRCxNQUFJO0FBRUosTUFBSTtBQUNGLGVBQVcsTUFBTSxtQkFBbUIsV0FBVztBQUFBLEVBQ2pELFFBQVE7QUFDTixVQUFNLElBQUk7QUFBQSxNQUNSLDZCQUE2QixXQUFXO0FBQUE7QUFBQSxJQUUxQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLGNBQWM7QUFBQTtBQUdwQixRQUFNLGFBQWEsa0JBQWtCLFFBQVE7QUFDN0MsTUFBSSxDQUFDLFlBQVk7QUFDZixVQUFNLElBQUk7QUFBQSxNQUNSLDBEQUEwRCxXQUFXO0FBQUEsRUFDekUsV0FBVztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxRQUFRLG9CQUFvQixVQUFVO0FBQzVDLE1BQUksQ0FBQyxPQUFPO0FBQ1YsVUFBTSxJQUFJO0FBQUEsTUFDUiwrREFBK0QsV0FBVyxxQkFBcUIsVUFBVTtBQUFBLEVBQzdHLFdBQVc7QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxZQUFZQSxJQUFXO0FBQ3BDLE1BQUk7QUFDRixXQUFPLE1BQU0sR0FBRyxTQUFTQSxJQUFHLE1BQU07QUFBQSxFQUNwQyxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLGVBQWUsZ0JBQWdCQSxJQUFXO0FBQ3hDLFFBQU0sV0FBVyxNQUFNLFlBQVlBLEVBQUM7QUFDcEMsTUFBSSxhQUFhLE1BQU07QUFDckIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJO0FBQ0YsV0FBTyxpQkFBaUIsUUFBUTtBQUFBLEVBQ2xDLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FBUyxpQkFBaUIsVUFBa0I7QUFDMUMsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLFFBQVE7QUFBQSxFQUM1QixRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFsiZGVmYXVsdHMiLCAicCIsICJjIiwgImkiLCAibCIsICJ4IiwgInRleHQiLCAiaSIsICJ4IiwgInkiLCAiaSIsICJwIiwgImFyZ3YiLCAiZW52IiwgImlzQ29sb3JTdXBwb3J0ZWQiLCAicmVwbGFjZUNsb3NlIiwgImNyZWF0ZUNvbG9ycyIsICJGIiwgInUiLCAidCIsICJzIiwgIlciLCAiQyIsICJEIiwgImEiLCAibiIsICJCIiwgImMiLCAicCIsICJHIiwgImFuc2lSZWdleCIsICJzdHJpcEFuc2kiLCAieCIsICJlbnYiLCAiXyIsICJtIiwgImdldENvbG9yIiwgImNyZWF0ZUNvbnNvbGEiLCAiVCIsICJBIiwgInIiLCAibCIsICJJIiwgIlIiLCAieSIsICJjIiwgIkwiLCAiTyIsICJOIiwgIlAiLCAidW5pY29kZSIsICJzIiwgInJlZ2V4IiwgImkiLCAiX19kZWZQcm9wIiwgImEiLCAiYyIsICJkIiwgImciLCAiaSIsICJsIiwgImMiLCAicCIsICJ4IiwgImsiLCAiZGVmYXVsdHMiLCAiYSIsICJwIiwgIl8iLCAiaSIsICJrIiwgInN0ZG91dCJdCn0K
|
|
3739
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNzNUZkdEhELm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNCaTZObTlzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMy4xL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzIiwgIi4uL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9vaGFzaEAxLjEuNC9ub2RlX21vZHVsZXMvb2hhc2gvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC91dGlscy5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NpdHR5QDAuMS42L25vZGVfbW9kdWxlcy9jaXR0eS9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QkMSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGlmIChwcm90b3R5cGUgIT09IG51bGwgJiYgcHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgTW9kdWxlXVwiO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzUGxhaW5PYmplY3QkMShkZWZhdWx0cykpIHtcbiAgICByZXR1cm4gX2RlZnUoYmFzZU9iamVjdCwge30sIG5hbWVzcGFjZSwgbWVyZ2VyKTtcbiAgfVxuICBjb25zdCBvYmplY3QgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cyk7XG4gIGZvciAoY29uc3Qga2V5IGluIGJhc2VPYmplY3QpIHtcbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBiYXNlT2JqZWN0W2tleV07XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAobWVyZ2VyICYmIG1lcmdlcihvYmplY3QsIGtleSwgdmFsdWUsIG5hbWVzcGFjZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gWy4uLnZhbHVlLCAuLi5vYmplY3Rba2V5XV07XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0JDEodmFsdWUpICYmIGlzUGxhaW5PYmplY3QkMShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIG9wdGlvbnM7XG4gIF9sYXN0TG9nO1xuICBfbW9ja0ZuO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb25zb2xhIHdpdGggc3BlY2lmaWVkIG9wdGlvbnMgb3IgZGVmYXVsdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IFtvcHRpb25zPXt9XSAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0eXBlcyA9IG9wdGlvbnMudHlwZXMgfHwgTG9nVHlwZXM7XG4gICAgdGhpcy5vcHRpb25zID0gZGVmdShcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgZGVmYXVsdHM6IHsgLi4ub3B0aW9ucy5kZWZhdWx0cyB9LFxuICAgICAgICBsZXZlbDogX25vcm1hbGl6ZUxvZ0xldmVsKG9wdGlvbnMubGV2ZWwsIHR5cGVzKSxcbiAgICAgICAgcmVwb3J0ZXJzOiBbLi4ub3B0aW9ucy5yZXBvcnRlcnMgfHwgW11dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlczogTG9nVHlwZXMsXG4gICAgICAgIHRocm90dGxlOiAxZTMsXG4gICAgICAgIHRocm90dGxlTWluOiA1LFxuICAgICAgICBmb3JtYXRPcHRpb25zOiB7XG4gICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xvcnM6IGZhbHNlLFxuICAgICAgICAgIGNvbXBhY3Q6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHR5cGVzKSB7XG4gICAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi50eXBlc1t0eXBlXVxuICAgICAgfTtcbiAgICAgIHRoaXNbdHlwZV0gPSB0aGlzLl93cmFwTG9nRm4oZGVmYXVsdHMpO1xuICAgICAgdGhpc1t0eXBlXS5yYXcgPSB0aGlzLl93cmFwTG9nRm4oXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm1vY2tGbikge1xuICAgICAgdGhpcy5tb2NrVHlwZXMoKTtcbiAgICB9XG4gICAgdGhpcy5fbGFzdExvZyA9IHt9O1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGxvZyBsZXZlbCBvZiB0aGUgQ29uc29sYSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGN1cnJlbnQgbG9nIGxldmVsLlxuICAgKi9cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbmltdW0gbG9nIGxldmVsIHRoYXQgd2lsbCBiZSBvdXRwdXQgYnkgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwgLSBUaGUgbmV3IGxvZyBsZXZlbCB0byBzZXQuXG4gICAqL1xuICBzZXQgbGV2ZWwobGV2ZWwpIHtcbiAgICB0aGlzLm9wdGlvbnMubGV2ZWwgPSBfbm9ybWFsaXplTG9nTGV2ZWwoXG4gICAgICBsZXZlbCxcbiAgICAgIHRoaXMub3B0aW9ucy50eXBlcyxcbiAgICAgIHRoaXMub3B0aW9ucy5sZXZlbFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcHJvbXB0IHRvIHRoZSB1c2VyIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZS5cbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgYHByb21wdGAgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIHByb21wdC5cbiAgICogQHBhcmFtIHtUfSBbb3B0c10gLSBPcHRpb25hbCBvcHRpb25zIGZvciB0aGUgcHJvbXB0LiBTZWUge0BsaW5rIFByb21wdE9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7cHJvbWlzZTxUPn0gQSBwcm9taXNlIHRoYXQgaW5mZXIgd2l0aCB0aGUgcHJvbXB0IG9wdGlvbnMuIFNlZSB7QGxpbmsgUHJvbXB0T3B0aW9uc30uXG4gICAqL1xuICBwcm9tcHQobWVzc2FnZSwgb3B0cykge1xuICAgIGlmICghdGhpcy5vcHRpb25zLnByb21wdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicHJvbXB0IGlzIG5vdCBzdXBwb3J0ZWQhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByb21wdChtZXNzYWdlLCBvcHRzKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBDb25zb2xhLCBpbmhlcml0aW5nIG9wdGlvbnMgZnJvbSB0aGUgY3VycmVudCBpbnN0YW5jZSwgd2l0aCBwb3NzaWJsZSBvdmVycmlkZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IG9wdGlvbnMgLSBPcHRpb25hbCBvdmVycmlkZXMgZm9yIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICBjcmVhdGUob3B0aW9ucykge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENvbnNvbGEoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICAgIGlmICh0aGlzLl9tb2NrRm4pIHtcbiAgICAgIGluc3RhbmNlLm1vY2tUeXBlcyh0aGlzLl9tb2NrRm4pO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ29uc29sYSBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVmYXVsdCBsb2cgb2JqZWN0IHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5wdXRMb2dPYmplY3R9IGRlZmF1bHRzIC0gRGVmYXVsdCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgaW4gYW55IGxvZyBmcm9tIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgSW5wdXRMb2dPYmplY3R9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENvbnNvbGEgaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCB0YWcsIHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgaW4gZXZlcnkgbG9nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZyB0byBpbmNsdWRlIGluIGVhY2ggbG9nIG9mIHRoZSBuZXcgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtDb25zb2xhSW5zdGFuY2V9IEEgbmV3IENvbnNvbGEgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYUluc3RhbmNlfS5cbiAgICovXG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9tIHJlcG9ydGVyIHRvIHRoZSBDb25zb2xhIGluc3RhbmNlLlxuICAgKiBSZXBvcnRlcnMgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggbG9nIG1lc3NhZ2UsIGRlcGVuZGluZyBvbiB0aGVpciBpbXBsZW1lbnRhdGlvbiBhbmQgbG9nIGxldmVsLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnNvbGFSZXBvcnRlcn0gcmVwb3J0ZXIgLSBUaGUgcmVwb3J0ZXIgdG8gYWRkLiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgYWRkUmVwb3J0ZXIocmVwb3J0ZXIpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnB1c2gocmVwb3J0ZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY3VzdG9tIHJlcG9ydGVyIGZyb20gdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqIElmIG5vIHJlcG9ydGVyIGlzIHNwZWNpZmllZCwgYWxsIHJlcG9ydGVycyB3aWxsIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uc29sYVJlcG9ydGVyfSByZXBvcnRlciAtIFRoZSByZXBvcnRlciB0byByZW1vdmUuIFNlZSB7QGxpbmsgQ29uc29sYVJlcG9ydGVyfS5cbiAgICogQHJldHVybnMge0NvbnNvbGF9IFRoZSBjdXJyZW50IENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZSgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCByZXBvcnRlcnMgb2YgdGhlIENvbnNvbGEgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIHJlcG9ydGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhUmVwb3J0ZXJbXX0gcmVwb3J0ZXJzIC0gVGhlIG5ldyByZXBvcnRlcnMgdG8gc2V0LiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgc2V0UmVwb3J0ZXJzKHJlcG9ydGVycykge1xuICAgIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMgPSBBcnJheS5pc0FycmF5KHJlcG9ydGVycykgPyByZXBvcnRlcnMgOiBbcmVwb3J0ZXJzXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB3cmFwQWxsKCkge1xuICAgIHRoaXMud3JhcENvbnNvbGUoKTtcbiAgICB0aGlzLndyYXBTdGQoKTtcbiAgfVxuICByZXN0b3JlQWxsKCkge1xuICAgIHRoaXMucmVzdG9yZUNvbnNvbGUoKTtcbiAgICB0aGlzLnJlc3RvcmVTdGQoKTtcbiAgfVxuICAvKipcbiAgICogT3ZlcnJpZGVzIGNvbnNvbGUgbWV0aG9kcyB3aXRoIENvbnNvbGEgbG9nZ2luZyBtZXRob2RzIGZvciBjb25zaXN0ZW50IGxvZ2dpbmcuXG4gICAqL1xuICB3cmFwQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoIWNvbnNvbGVbXCJfX1wiICsgdHlwZV0pIHtcbiAgICAgICAgY29uc29sZVtcIl9fXCIgKyB0eXBlXSA9IGNvbnNvbGVbdHlwZV07XG4gICAgICB9XG4gICAgICBjb25zb2xlW3R5cGVdID0gdGhpc1t0eXBlXS5yYXc7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29uc29sZSBtZXRob2RzLCByZW1vdmluZyBDb25zb2xhIG92ZXJyaWRlcy5cbiAgICovXG4gIHJlc3RvcmVDb25zb2xlKCkge1xuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIGlmIChjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbdHlwZV0gPSBjb25zb2xlW1wiX19cIiArIHR5cGVdO1xuICAgICAgICBkZWxldGUgY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMgdG8gcmVkaXJlY3QgdGhlbSB0aHJvdWdoIENvbnNvbGEuXG4gICAqL1xuICB3cmFwU3RkKCkge1xuICAgIHRoaXMuX3dyYXBTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCwgXCJsb2dcIik7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyLCBcImxvZ1wiKTtcbiAgfVxuICBfd3JhcFN0cmVhbShzdHJlYW0sIHR5cGUpIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0uX193cml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICB9XG4gICAgc3RyZWFtLndyaXRlID0gKGRhdGEpID0+IHtcbiAgICAgIHRoaXNbdHlwZV0ucmF3KFN0cmluZyhkYXRhKS50cmltKCkpO1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMsIHJlbW92aW5nIHRoZSBDb25zb2xhIHJlZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVzdG9yZVN0ZCgpIHtcbiAgICB0aGlzLl9yZXN0b3JlU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRvdXQpO1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZGVycik7XG4gIH1cbiAgX3Jlc3RvcmVTdHJlYW0oc3RyZWFtKSB7XG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0ud3JpdGUgPSBzdHJlYW0uX193cml0ZTtcbiAgICAgIGRlbGV0ZSBzdHJlYW0uX193cml0ZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhdXNlcyBsb2dnaW5nLCBxdWV1ZXMgaW5jb21pbmcgbG9ncyB1bnRpbCByZXN1bWVkLlxuICAgKi9cbiAgcGF1c2VMb2dzKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIFJlc3VtZXMgbG9nZ2luZywgcHJvY2Vzc2luZyBhbnkgcXVldWVkIGxvZ3MuXG4gICAqL1xuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGxvZ2dpbmcgbWV0aG9kcyB3aXRoIG1vY2tzIGlmIGEgbW9jayBmdW5jdGlvbiBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhT3B0aW9uc1tcIm1vY2tGblwiXX0gbW9ja0ZuIC0gVGhlIGZ1bmN0aW9uIHRvIHVzZSBmb3IgbW9ja2luZyBsb2dnaW5nIG1ldGhvZHMuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnNbXCJtb2NrRm5cIl19LlxuICAgKi9cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBpbmRlbnQgKyBwYXJzZVN0YWNrKHN0YWNrKS5qb2luKGBcbiR7aW5kZW50fWApO1xuICB9XG4gIGZvcm1hdEVycm9yKGVyciwgb3B0cykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/PyBmb3JtYXRXaXRoT3B0aW9ucyhvcHRzLCBlcnIpO1xuICAgIGNvbnN0IHN0YWNrID0gZXJyLnN0YWNrID8gdGhpcy5mb3JtYXRTdGFjayhlcnIuc3RhY2ssIG9wdHMpIDogXCJcIjtcbiAgICBjb25zdCBsZXZlbCA9IG9wdHM/LmVycm9yTGV2ZWwgfHwgMDtcbiAgICBjb25zdCBjYXVzZWRQcmVmaXggPSBsZXZlbCA+IDAgPyBgJHtcIiAgXCIucmVwZWF0KGxldmVsKX1bY2F1c2VdOiBgIDogXCJcIjtcbiAgICBjb25zdCBjYXVzZWRFcnJvciA9IGVyci5jYXVzZSA/IFwiXFxuXFxuXCIgKyB0aGlzLmZvcm1hdEVycm9yKGVyci5jYXVzZSwgeyAuLi5vcHRzLCBlcnJvckxldmVsOiBsZXZlbCArIDEgfSkgOiBcIlwiO1xuICAgIHJldHVybiBjYXVzZWRQcmVmaXggKyBtZXNzYWdlICsgXCJcXG5cIiArIHN0YWNrICsgY2F1c2VkRXJyb3I7XG4gIH1cbiAgZm9ybWF0QXJncyhhcmdzLCBvcHRzKSB7XG4gICAgY29uc3QgX2FyZ3MgPSBhcmdzLm1hcCgoYXJnKSA9PiB7XG4gICAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RXJyb3IoYXJnLCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcmc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdFdpdGhPcHRpb25zKG9wdHMsIC4uLl9hcmdzKTtcbiAgfVxuICBmb3JtYXREYXRlKGRhdGUsIG9wdHMpIHtcbiAgICByZXR1cm4gb3B0cy5kYXRlID8gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiXCI7XG4gIH1cbiAgZmlsdGVyQW5kSm9pbihhcnIpIHtcbiAgICByZXR1cm4gYXJyLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZm9ybWF0QXJncyhsb2dPYmouYXJncywgb3B0cyk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcImJveFwiKSB7XG4gICAgICByZXR1cm4gXCJcXG5cIiArIFtcbiAgICAgICAgYnJhY2tldChsb2dPYmoudGFnKSxcbiAgICAgICAgbG9nT2JqLnRpdGxlICYmIGxvZ09iai50aXRsZSxcbiAgICAgICAgLi4ubWVzc2FnZS5zcGxpdChcIlxcblwiKVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbikubWFwKChsKSA9PiBcIiA+IFwiICsgbCkuam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlckFuZEpvaW4oW1xuICAgICAgYnJhY2tldChsb2dPYmoudHlwZSksXG4gICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgbWVzc2FnZVxuICAgIF0pO1xuICB9XG4gIGxvZyhsb2dPYmosIGN0eCkge1xuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmZvcm1hdExvZ09iaihsb2dPYmosIHtcbiAgICAgIGNvbHVtbnM6IGN0eC5vcHRpb25zLnN0ZG91dC5jb2x1bW5zIHx8IDAsXG4gICAgICAuLi5jdHgub3B0aW9ucy5mb3JtYXRPcHRpb25zXG4gICAgfSk7XG4gICAgcmV0dXJuIHdyaXRlU3RyZWFtKFxuICAgICAgbGluZSArIFwiXFxuXCIsXG4gICAgICBsb2dPYmoubGV2ZWwgPCAyID8gY3R4Lm9wdGlvbnMuc3RkZXJyIHx8IHByb2Nlc3Muc3RkZXJyIDogY3R4Lm9wdGlvbnMuc3Rkb3V0IHx8IHByb2Nlc3Muc3Rkb3V0XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgeyBCYXNpY1JlcG9ydGVyIGFzIEIsIHBhcnNlU3RhY2sgYXMgcCB9O1xuIiwgImltcG9ydCAqIGFzIHR0eSBmcm9tICdub2RlOnR0eSc7XG5cbmNvbnN0IHtcbiAgZW52ID0ge30sXG4gIGFyZ3YgPSBbXSxcbiAgcGxhdGZvcm0gPSBcIlwiXG59ID0gdHlwZW9mIHByb2Nlc3MgPT09IFwidW5kZWZpbmVkXCIgPyB7fSA6IHByb2Nlc3M7XG5jb25zdCBpc0Rpc2FibGVkID0gXCJOT19DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKTtcbmNvbnN0IGlzRm9yY2VkID0gXCJGT1JDRV9DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1jb2xvclwiKTtcbmNvbnN0IGlzV2luZG93cyA9IHBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5jb25zdCBpc0R1bWJUZXJtaW5hbCA9IGVudi5URVJNID09PSBcImR1bWJcIjtcbmNvbnN0IGlzQ29tcGF0aWJsZVRlcm1pbmFsID0gdHR5ICYmIHR0eS5pc2F0dHkgJiYgdHR5LmlzYXR0eSgxKSAmJiBlbnYuVEVSTSAmJiAhaXNEdW1iVGVybWluYWw7XG5jb25zdCBpc0NJID0gXCJDSVwiIGluIGVudiAmJiAoXCJHSVRIVUJfQUNUSU9OU1wiIGluIGVudiB8fCBcIkdJVExBQl9DSVwiIGluIGVudiB8fCBcIkNJUkNMRUNJXCIgaW4gZW52KTtcbmNvbnN0IGlzQ29sb3JTdXBwb3J0ZWQgPSAhaXNEaXNhYmxlZCAmJiAoaXNGb3JjZWQgfHwgaXNXaW5kb3dzICYmICFpc0R1bWJUZXJtaW5hbCB8fCBpc0NvbXBhdGlibGVUZXJtaW5hbCB8fCBpc0NJKTtcbmZ1bmN0aW9uIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaGVhZCA9IHN0cmluZy5zbGljZSgwLCBNYXRoLm1heCgwLCBpbmRleCkpICsgcmVwbGFjZSwgdGFpbCA9IHN0cmluZy5zbGljZShNYXRoLm1heCgwLCBpbmRleCArIGNsb3NlLmxlbmd0aCkpLCBuZXh0ID0gdGFpbC5pbmRleE9mKGNsb3NlKSkge1xuICByZXR1cm4gaGVhZCArIChuZXh0IDwgMCA/IHRhaWwgOiByZXBsYWNlQ2xvc2UobmV4dCwgdGFpbCwgY2xvc2UsIHJlcGxhY2UpKTtcbn1cbmZ1bmN0aW9uIGNsZWFyQmxlZWQoaW5kZXgsIHN0cmluZywgb3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG9wZW4gKyBzdHJpbmcgKyBjbG9zZSA6IG9wZW4gKyByZXBsYWNlQ2xvc2UoaW5kZXgsIHN0cmluZywgY2xvc2UsIHJlcGxhY2UpICsgY2xvc2U7XG59XG5mdW5jdGlvbiBmaWx0ZXJFbXB0eShvcGVuLCBjbG9zZSwgcmVwbGFjZSA9IG9wZW4sIGF0ID0gb3Blbi5sZW5ndGggKyAxKSB7XG4gIHJldHVybiAoc3RyaW5nKSA9PiBzdHJpbmcgfHwgIShzdHJpbmcgPT09IFwiXCIgfHwgc3RyaW5nID09PSB2b2lkIDApID8gY2xlYXJCbGVlZChcbiAgICAoXCJcIiArIHN0cmluZykuaW5kZXhPZihjbG9zZSwgYXQpLFxuICAgIHN0cmluZyxcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICAgIHJlcGxhY2VcbiAgKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBpbml0KG9wZW4sIGNsb3NlLCByZXBsYWNlKSB7XG4gIHJldHVybiBmaWx0ZXJFbXB0eShgXFx4MUJbJHtvcGVufW1gLCBgXFx4MUJbJHtjbG9zZX1tYCwgcmVwbGFjZSk7XG59XG5jb25zdCBjb2xvckRlZnMgPSB7XG4gIHJlc2V0OiBpbml0KDAsIDApLFxuICBib2xkOiBpbml0KDEsIDIyLCBcIlxceDFCWzIybVxceDFCWzFtXCIpLFxuICBkaW06IGluaXQoMiwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMm1cIiksXG4gIGl0YWxpYzogaW5pdCgzLCAyMyksXG4gIHVuZGVybGluZTogaW5pdCg0LCAyNCksXG4gIGludmVyc2U6IGluaXQoNywgMjcpLFxuICBoaWRkZW46IGluaXQoOCwgMjgpLFxuICBzdHJpa2V0aHJvdWdoOiBpbml0KDksIDI5KSxcbiAgYmxhY2s6IGluaXQoMzAsIDM5KSxcbiAgcmVkOiBpbml0KDMxLCAzOSksXG4gIGdyZWVuOiBpbml0KDMyLCAzOSksXG4gIHllbGxvdzogaW5pdCgzMywgMzkpLFxuICBibHVlOiBpbml0KDM0LCAzOSksXG4gIG1hZ2VudGE6IGluaXQoMzUsIDM5KSxcbiAgY3lhbjogaW5pdCgzNiwgMzkpLFxuICB3aGl0ZTogaW5pdCgzNywgMzkpLFxuICBncmF5OiBpbml0KDkwLCAzOSksXG4gIGJnQmxhY2s6IGluaXQoNDAsIDQ5KSxcbiAgYmdSZWQ6IGluaXQoNDEsIDQ5KSxcbiAgYmdHcmVlbjogaW5pdCg0MiwgNDkpLFxuICBiZ1llbGxvdzogaW5pdCg0MywgNDkpLFxuICBiZ0JsdWU6IGluaXQoNDQsIDQ5KSxcbiAgYmdNYWdlbnRhOiBpbml0KDQ1LCA0OSksXG4gIGJnQ3lhbjogaW5pdCg0NiwgNDkpLFxuICBiZ1doaXRlOiBpbml0KDQ3LCA0OSksXG4gIGJsYWNrQnJpZ2h0OiBpbml0KDkwLCAzOSksXG4gIHJlZEJyaWdodDogaW5pdCg5MSwgMzkpLFxuICBncmVlbkJyaWdodDogaW5pdCg5MiwgMzkpLFxuICB5ZWxsb3dCcmlnaHQ6IGluaXQoOTMsIDM5KSxcbiAgYmx1ZUJyaWdodDogaW5pdCg5NCwgMzkpLFxuICBtYWdlbnRhQnJpZ2h0OiBpbml0KDk1LCAzOSksXG4gIGN5YW5CcmlnaHQ6IGluaXQoOTYsIDM5KSxcbiAgd2hpdGVCcmlnaHQ6IGluaXQoOTcsIDM5KSxcbiAgYmdCbGFja0JyaWdodDogaW5pdCgxMDAsIDQ5KSxcbiAgYmdSZWRCcmlnaHQ6IGluaXQoMTAxLCA0OSksXG4gIGJnR3JlZW5CcmlnaHQ6IGluaXQoMTAyLCA0OSksXG4gIGJnWWVsbG93QnJpZ2h0OiBpbml0KDEwMywgNDkpLFxuICBiZ0JsdWVCcmlnaHQ6IGluaXQoMTA0LCA0OSksXG4gIGJnTWFnZW50YUJyaWdodDogaW5pdCgxMDUsIDQ5KSxcbiAgYmdDeWFuQnJpZ2h0OiBpbml0KDEwNiwgNDkpLFxuICBiZ1doaXRlQnJpZ2h0OiBpbml0KDEwNywgNDkpXG59O1xuZnVuY3Rpb24gY3JlYXRlQ29sb3JzKHVzZUNvbG9yID0gaXNDb2xvclN1cHBvcnRlZCkge1xuICByZXR1cm4gdXNlQ29sb3IgPyBjb2xvckRlZnMgOiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoY29sb3JEZWZzKS5tYXAoKGtleSkgPT4gW2tleSwgU3RyaW5nXSkpO1xufVxuY29uc3QgY29sb3JzID0gY3JlYXRlQ29sb3JzKCk7XG5mdW5jdGlvbiBnZXRDb2xvcihjb2xvciwgZmFsbGJhY2sgPSBcInJlc2V0XCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzW2ZhbGxiYWNrXTtcbn1cbmZ1bmN0aW9uIGNvbG9yaXplKGNvbG9yLCB0ZXh0KSB7XG4gIHJldHVybiBnZXRDb2xvcihjb2xvcikodGV4dCk7XG59XG5cbmNvbnN0IGFuc2lSZWdleCA9IFtcbiAgU3RyaW5nLnJhd2BbXFx1MDAxQlxcdTAwOUJdW1tcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcZF0rKD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10qKSopP1xcdTAwMDcpYCxcbiAgU3RyaW5nLnJhd2AoPzooPzpcXGR7MSw0fSg/OjtcXGR7MCw0fSkqKT9bXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKWBcbl0uam9pbihcInxcIik7XG5mdW5jdGlvbiBzdHJpcEFuc2kodGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYW5zaVJlZ2V4LCBcImdcIiksIFwiXCIpO1xufVxuZnVuY3Rpb24gY2VudGVyQWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGNvbnN0IGZyZWVMZWZ0ID0gTWF0aC5mbG9vcihmcmVlIC8gMik7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWVMZWZ0IHx8IGkgPj0gZnJlZUxlZnQgKyBzdHIubGVuZ3RoID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVMZWZ0XTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIHJpZ2h0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWUgPyBzcGFjZSA6IHN0cltpIC0gZnJlZV07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgbGV0IF9zdHIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgX3N0ciArPSBpIDwgc3RyLmxlbmd0aCA/IHN0cltpXSA6IHNwYWNlO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gYWxpZ24oYWxpZ25tZW50LCBzdHIsIGxlbiwgc3BhY2UgPSBcIiBcIikge1xuICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgIGNhc2UgXCJsZWZ0XCI6IHtcbiAgICAgIHJldHVybiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlKTtcbiAgICB9XG4gICAgY2FzZSBcInJpZ2h0XCI6IHtcbiAgICAgIHJldHVybiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJjZW50ZXJcIjoge1xuICAgICAgcmV0dXJuIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGJveFN0eWxlUHJlc2V0cyA9IHtcbiAgc29saWQ6IHtcbiAgICB0bDogXCJcXHUyNTBDXCIsXG4gICAgdHI6IFwiXFx1MjUxMFwiLFxuICAgIGJsOiBcIlxcdTI1MTRcIixcbiAgICBicjogXCJcXHUyNTE4XCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgZG91YmxlOiB7XG4gICAgdGw6IFwiXFx1MjU1NFwiLFxuICAgIHRyOiBcIlxcdTI1NTdcIixcbiAgICBibDogXCJcXHUyNTVBXCIsXG4gICAgYnI6IFwiXFx1MjU1RFwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIGRvdWJsZVNpbmdsZToge1xuICAgIHRsOiBcIlxcdTI1NTNcIixcbiAgICB0cjogXCJcXHUyNTU2XCIsXG4gICAgYmw6IFwiXFx1MjU1OVwiLFxuICAgIGJyOiBcIlxcdTI1NUNcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIHNpbmdsZVRoaWNrOiB7XG4gICAgdGw6IFwiXFx1MjUwRlwiLFxuICAgIHRyOiBcIlxcdTI1MTNcIixcbiAgICBibDogXCJcXHUyNTE3XCIsXG4gICAgYnI6IFwiXFx1MjUxQlwiLFxuICAgIGg6IFwiXFx1MjUwMVwiLFxuICAgIHY6IFwiXFx1MjUwM1wiXG4gIH0sXG4gIHNpbmdsZURvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTJcIixcbiAgICB0cjogXCJcXHUyNTU1XCIsXG4gICAgYmw6IFwiXFx1MjU1OFwiLFxuICAgIGJyOiBcIlxcdTI1NUJcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICBzaW5nbGVEb3VibGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIHJvdW5kZWQ6IHtcbiAgICB0bDogXCJcXHUyNTZEXCIsXG4gICAgdHI6IFwiXFx1MjU2RVwiLFxuICAgIGJsOiBcIlxcdTI1NzBcIixcbiAgICBicjogXCJcXHUyNTZGXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfVxufTtcbmNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAgYm9yZGVyQ29sb3I6IFwid2hpdGVcIixcbiAgYm9yZGVyU3R5bGU6IFwicm91bmRlZFwiLFxuICB2YWxpZ246IFwiY2VudGVyXCIsXG4gIHBhZGRpbmc6IDIsXG4gIG1hcmdpbkxlZnQ6IDEsXG4gIG1hcmdpblRvcDogMSxcbiAgbWFyZ2luQm90dG9tOiAxXG59O1xuZnVuY3Rpb24gYm94KHRleHQsIF9vcHRzID0ge30pIHtcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5fb3B0cyxcbiAgICBzdHlsZToge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4uX29wdHMuc3R5bGVcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGJveExpbmVzID0gW107XG4gIGNvbnN0IF9jb2xvciA9IGdldENvbG9yKG9wdHMuc3R5bGUuYm9yZGVyQ29sb3IpO1xuICBjb25zdCBib3JkZXJTdHlsZSA9IHtcbiAgICAuLi50eXBlb2Ygb3B0cy5zdHlsZS5ib3JkZXJTdHlsZSA9PT0gXCJzdHJpbmdcIiA/IGJveFN0eWxlUHJlc2V0c1tvcHRzLnN0eWxlLmJvcmRlclN0eWxlXSB8fCBib3hTdHlsZVByZXNldHMuc29saWQgOiBvcHRzLnN0eWxlLmJvcmRlclN0eWxlXG4gIH07XG4gIGlmIChfY29sb3IpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBib3JkZXJTdHlsZSkge1xuICAgICAgYm9yZGVyU3R5bGVba2V5XSA9IF9jb2xvcihcbiAgICAgICAgYm9yZGVyU3R5bGVba2V5XVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFkZGluZ09mZnNldCA9IG9wdHMuc3R5bGUucGFkZGluZyAlIDIgPT09IDAgPyBvcHRzLnN0eWxlLnBhZGRpbmcgOiBvcHRzLnN0eWxlLnBhZGRpbmcgKyAxO1xuICBjb25zdCBoZWlnaHQgPSB0ZXh0TGluZXMubGVuZ3RoICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCguLi50ZXh0TGluZXMubWFwKChsaW5lKSA9PiBsaW5lLmxlbmd0aCkpICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGhPZmZzZXQgPSB3aWR0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IGxlZnRTcGFjZSA9IG9wdHMuc3R5bGUubWFyZ2luTGVmdCA+IDAgPyBcIiBcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5MZWZ0KSA6IFwiXCI7XG4gIGlmIChvcHRzLnN0eWxlLm1hcmdpblRvcCA+IDApIHtcbiAgICBib3hMaW5lcy5wdXNoKFwiXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luVG9wKSk7XG4gIH1cbiAgaWYgKG9wdHMudGl0bGUpIHtcbiAgICBjb25zdCB0aXRsZSA9IF9jb2xvciA/IF9jb2xvcihvcHRzLnRpdGxlKSA6IG9wdHMudGl0bGU7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHt0aXRsZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgYm94TGluZXMucHVzaChcbiAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnRsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH1cbiAgY29uc3QgdmFsaWduT2Zmc2V0ID0gb3B0cy5zdHlsZS52YWxpZ24gPT09IFwiY2VudGVyXCIgPyBNYXRoLmZsb29yKChoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoKSAvIDIpIDogb3B0cy5zdHlsZS52YWxpZ24gPT09IFwidG9wXCIgPyBoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoIC0gcGFkZGluZ09mZnNldCA6IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICBpZiAoaSA8IHZhbGlnbk9mZnNldCB8fCBpID49IHZhbGlnbk9mZnNldCArIHRleHRMaW5lcy5sZW5ndGgpIHtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtcIiBcIi5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lID0gdGV4dExpbmVzW2kgLSB2YWxpZ25PZmZzZXRdO1xuICAgICAgY29uc3QgbGVmdCA9IFwiIFwiLnJlcGVhdChwYWRkaW5nT2Zmc2V0KTtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gXCIgXCIucmVwZWF0KHdpZHRoIC0gc3RyaXBBbnNpKGxpbmUpLmxlbmd0aCk7XG4gICAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS52fSR7bGVmdH0ke2xpbmV9JHtyaWdodH0ke2JvcmRlclN0eWxlLnZ9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgYm94TGluZXMucHVzaChcbiAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS5ibH0ke2JvcmRlclN0eWxlLmgucmVwZWF0KHdpZHRoT2Zmc2V0KX0ke2JvcmRlclN0eWxlLmJyfWBcbiAgKTtcbiAgaWYgKG9wdHMuc3R5bGUubWFyZ2luQm90dG9tID4gMCkge1xuICAgIGJveExpbmVzLnB1c2goXCJcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20pKTtcbiAgfVxuICByZXR1cm4gYm94TGluZXMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IHsgYWxpZ24gYXMgYSwgYm94IGFzIGIsIGNlbnRlckFsaWduIGFzIGMsIGNvbG9ycyBhcyBkLCBjb2xvcml6ZSBhcyBlLCBnZXRDb2xvciBhcyBnLCBsZWZ0QWxpZ24gYXMgbCwgcmlnaHRBbGlnbiBhcyByLCBzdHJpcEFuc2kgYXMgcyB9O1xuIiwgImltcG9ydCB7IHN0ZGluLCBzdGRvdXQgfSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IGcgZnJvbSAnbm9kZTpyZWFkbGluZSc7XG5pbXBvcnQgeyBXcml0ZVN0cmVhbSB9IGZyb20gJ25vZGU6dHR5JztcbmltcG9ydCB7IGkgYXMgaXNVbmljb2RlU3VwcG9ydGVkIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuQ0JpNk5tOXMubWpzJztcbmltcG9ydCAnLi4vY29yZS5tanMnO1xuaW1wb3J0ICcuLi9zaGFyZWQvY29uc29sYS5DczVGZHRIRC5tanMnO1xuaW1wb3J0ICdub2RlOnV0aWwnO1xuaW1wb3J0ICdub2RlOnBhdGgnO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcyAoeCkge1xuXHRyZXR1cm4geCAmJiB4Ll9fZXNNb2R1bGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsICdkZWZhdWx0JykgPyB4WydkZWZhdWx0J10gOiB4O1xufVxuXG52YXIgc3JjO1xudmFyIGhhc1JlcXVpcmVkU3JjO1xuXG5mdW5jdGlvbiByZXF1aXJlU3JjICgpIHtcblx0aWYgKGhhc1JlcXVpcmVkU3JjKSByZXR1cm4gc3JjO1xuXHRoYXNSZXF1aXJlZFNyYyA9IDE7XG5cblx0Y29uc3QgRVNDID0gJ1xceDFCJztcblx0Y29uc3QgQ1NJID0gYCR7RVNDfVtgO1xuXHRjb25zdCBiZWVwID0gJ1xcdTAwMDcnO1xuXG5cdGNvbnN0IGN1cnNvciA9IHtcblx0ICB0byh4LCB5KSB7XG5cdCAgICBpZiAoIXkpIHJldHVybiBgJHtDU0l9JHt4ICsgMX1HYDtcblx0ICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcblx0ICB9LFxuXHQgIG1vdmUoeCwgeSkge1xuXHQgICAgbGV0IHJldCA9ICcnO1xuXG5cdCAgICBpZiAoeCA8IDApIHJldCArPSBgJHtDU0l9JHsteH1EYDtcblx0ICAgIGVsc2UgaWYgKHggPiAwKSByZXQgKz0gYCR7Q1NJfSR7eH1DYDtcblxuXHQgICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG5cdCAgICBlbHNlIGlmICh5ID4gMCkgcmV0ICs9IGAke0NTSX0ke3l9QmA7XG5cblx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QWAsXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QmAsXG5cdCAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG5cdCAgYmFja3dhcmQ6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fURgLFxuXHQgIG5leHRMaW5lOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9RWAucmVwZWF0KGNvdW50KSxcblx0ICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG5cdCAgbGVmdDogYCR7Q1NJfUdgLFxuXHQgIGhpZGU6IGAke0NTSX0/MjVsYCxcblx0ICBzaG93OiBgJHtDU0l9PzI1aGAsXG5cdCAgc2F2ZTogYCR7RVNDfTdgLFxuXHQgIHJlc3RvcmU6IGAke0VTQ304YFxuXHR9O1xuXG5cdGNvbnN0IHNjcm9sbCA9IHtcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVNgLnJlcGVhdChjb3VudCksXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcblx0fTtcblxuXHRjb25zdCBlcmFzZSA9IHtcblx0ICBzY3JlZW46IGAke0NTSX0ySmAsXG5cdCAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0xSmAucmVwZWF0KGNvdW50KSxcblx0ICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9SmAucmVwZWF0KGNvdW50KSxcblx0ICBsaW5lOiBgJHtDU0l9MktgLFxuXHQgIGxpbmVFbmQ6IGAke0NTSX1LYCxcblx0ICBsaW5lU3RhcnQ6IGAke0NTSX0xS2AsXG5cdCAgbGluZXMoY291bnQpIHtcblx0ICAgIGxldCBjbGVhciA9ICcnO1xuXHQgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuXHQgICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuXHQgICAgaWYgKGNvdW50KVxuXHQgICAgICBjbGVhciArPSBjdXJzb3IubGVmdDtcblx0ICAgIHJldHVybiBjbGVhcjtcblx0ICB9XG5cdH07XG5cblx0c3JjID0geyBjdXJzb3IsIHNjcm9sbCwgZXJhc2UsIGJlZXAgfTtcblx0cmV0dXJuIHNyYztcbn1cblxudmFyIHNyY0V4cG9ydHMgPSByZXF1aXJlU3JjKCk7XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxudmFyIGhhc1JlcXVpcmVkUGljb2NvbG9ycztcblxuZnVuY3Rpb24gcmVxdWlyZVBpY29jb2xvcnMgKCkge1xuXHRpZiAoaGFzUmVxdWlyZWRQaWNvY29sb3JzKSByZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xuXHRoYXNSZXF1aXJlZFBpY29jb2xvcnMgPSAxO1xuXHRsZXQgcCA9IHByb2Nlc3MgfHwge30sIGFyZ3YgPSBwLmFyZ3YgfHwgW10sIGVudiA9IHAuZW52IHx8IHt9O1xuXHRsZXQgaXNDb2xvclN1cHBvcnRlZCA9XG5cdFx0ISghIWVudi5OT19DT0xPUiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0XHQoISFlbnYuRk9SQ0VfQ09MT1IgfHwgYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHwgcC5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8ICgocC5zdGRvdXQgfHwge30pLmlzVFRZICYmIGVudi5URVJNICE9PSBcImR1bWJcIikgfHwgISFlbnYuQ0kpO1xuXG5cdGxldCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRcdGlucHV0ID0+IHtcblx0XHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQsIGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRcdHJldHVybiB+aW5kZXggPyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlIDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdFx0fTtcblxuXHRsZXQgcmVwbGFjZUNsb3NlID0gKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSA9PiB7XG5cdFx0bGV0IHJlc3VsdCA9IFwiXCIsIGN1cnNvciA9IDA7XG5cdFx0ZG8ge1xuXHRcdFx0cmVzdWx0ICs9IHN0cmluZy5zdWJzdHJpbmcoY3Vyc29yLCBpbmRleCkgKyByZXBsYWNlO1xuXHRcdFx0Y3Vyc29yID0gaW5kZXggKyBjbG9zZS5sZW5ndGg7XG5cdFx0XHRpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBjdXJzb3IpO1xuXHRcdH0gd2hpbGUgKH5pbmRleClcblx0XHRyZXR1cm4gcmVzdWx0ICsgc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IpXG5cdH07XG5cblx0bGV0IGNyZWF0ZUNvbG9ycyA9IChlbmFibGVkID0gaXNDb2xvclN1cHBvcnRlZCkgPT4ge1xuXHRcdGxldCBmID0gZW5hYmxlZCA/IGZvcm1hdHRlciA6ICgpID0+IFN0cmluZztcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0XHRcdHJlc2V0OiBmKFwiXFx4MWJbMG1cIiwgXCJcXHgxYlswbVwiKSxcblx0XHRcdGJvbGQ6IGYoXCJcXHgxYlsxbVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzFtXCIpLFxuXHRcdFx0ZGltOiBmKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSxcblx0XHRcdGl0YWxpYzogZihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpLFxuXHRcdFx0dW5kZXJsaW5lOiBmKFwiXFx4MWJbNG1cIiwgXCJcXHgxYlsyNG1cIiksXG5cdFx0XHRpbnZlcnNlOiBmKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIiksXG5cdFx0XHRoaWRkZW46IGYoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSxcblx0XHRcdHN0cmlrZXRocm91Z2g6IGYoXCJcXHgxYls5bVwiLCBcIlxceDFiWzI5bVwiKSxcblxuXHRcdFx0YmxhY2s6IGYoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWQ6IGYoXCJcXHgxYlszMW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbjogZihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvdzogZihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWU6IGYoXCJcXHgxYlszNG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhOiBmKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbjogZihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlOiBmKFwiXFx4MWJbMzdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Z3JheTogZihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSxcblxuXHRcdFx0YmdCbGFjazogZihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkOiBmKFwiXFx4MWJbNDFtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdHcmVlbjogZihcIlxceDFiWzQybVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnWWVsbG93OiBmKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlOiBmKFwiXFx4MWJbNDRtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdNYWdlbnRhOiBmKFwiXFx4MWJbNDVtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdDeWFuOiBmKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZTogZihcIlxceDFiWzQ3bVwiLCBcIlxceDFiWzQ5bVwiKSxcblxuXHRcdFx0YmxhY2tCcmlnaHQ6IGYoXCJcXHgxYls5MG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWRCcmlnaHQ6IGYoXCJcXHgxYls5MW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbkJyaWdodDogZihcIlxceDFiWzkybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvd0JyaWdodDogZihcIlxceDFiWzkzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWVCcmlnaHQ6IGYoXCJcXHgxYls5NG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhQnJpZ2h0OiBmKFwiXFx4MWJbOTVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbkJyaWdodDogZihcIlxceDFiWzk2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlQnJpZ2h0OiBmKFwiXFx4MWJbOTdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0XHRiZ0JsYWNrQnJpZ2h0OiBmKFwiXFx4MWJbMTAwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkQnJpZ2h0OiBmKFwiXFx4MWJbMTAxbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnR3JlZW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdZZWxsb3dCcmlnaHQ6IGYoXCJcXHgxYlsxMDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlQnJpZ2h0OiBmKFwiXFx4MWJbMTA0bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnTWFnZW50YUJyaWdodDogZihcIlxceDFiWzEwNW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0XHRiZ0N5YW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZUJyaWdodDogZihcIlxceDFiWzEwN21cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0fVxuXHR9O1xuXG5cdHBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xuXHRwaWNvY29sb3JzLmV4cG9ydHMuY3JlYXRlQ29sb3JzID0gY3JlYXRlQ29sb3JzO1xuXHRyZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xufVxuXG52YXIgcGljb2NvbG9yc0V4cG9ydHMgPSAvKkBfX1BVUkVfXyovIHJlcXVpcmVQaWNvY29sb3JzKCk7XG5jb25zdCBjID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHBpY29jb2xvcnNFeHBvcnRzKTtcblxuZnVuY3Rpb24gSih7b25seUZpcnN0OmU9ITF9PXt9KXtjb25zdCBGPVtcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopPyg/OlxcXFx1MDAwN3xcXFxcdTAwMUJcXFxcdTAwNUN8XFxcXHUwMDlDKSlcIixcIig/Oig/OlxcXFxkezEsNH0oPzo7XFxcXGR7MCw0fSkqKT9bXFxcXGRBLVBSLVRaY2YtbnEtdXk9Pjx+XSkpXCJdLmpvaW4oXCJ8XCIpO3JldHVybiBuZXcgUmVnRXhwKEYsZT92b2lkIDA6XCJnXCIpfWNvbnN0IFE9SigpO2Z1bmN0aW9uIFQoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBlfVxcYGApO3JldHVybiBlLnJlcGxhY2UoUSxcIlwiKX1mdW5jdGlvbiBPKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLFwiZGVmYXVsdFwiKT9lLmRlZmF1bHQ6ZX12YXIgUD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKGUpe3ZhciB1PXt9O2UuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24odCl7dmFyIHM9dC5jaGFyQ29kZUF0KDApLGk9dC5sZW5ndGg9PTI/dC5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1pJiZpPD01NzM0MyYmKHMmPTEwMjMsaSY9MTAyMyxEPXM8PDEwfGksRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbih0KXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKHQpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRih0KXtyZXR1cm4gdC5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcz1GKHQpLGk9MCxEPTA7RDxzLmxlbmd0aDtEKyspaT1pK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBpfSx1LnNsaWNlPWZ1bmN0aW9uKHQscyxpKXt0ZXh0TGVuPXUubGVuZ3RoKHQpLHM9c3x8MCxpPWl8fDEsczwwJiYocz10ZXh0TGVuK3MpLGk8MCYmKGk9dGV4dExlbitpKTtmb3IodmFyIEQ9XCJcIixDPTAsbz1GKHQpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKEM+PXMtKG49PTI/MTowKSlpZihDK248PWkpRCs9YTtlbHNlIGJyZWFrO0MrPW47fXJldHVybiBEfTt9KShQKTt2YXIgWD1QLmV4cG9ydHM7Y29uc3QgREQ9TyhYKTt2YXIgdUQ9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307Y29uc3QgRkQ9Tyh1RCk7ZnVuY3Rpb24gcChlLHU9e30pe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSxlPVQoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZShGRCgpLFwiICBcIik7Y29uc3QgRj11LmFtYmlndW91c0lzTmFycm93PzE6MjtsZXQgdD0wO2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IGk9cy5jb2RlUG9pbnRBdCgwKTtpZihpPD0zMXx8aT49MTI3JiZpPD0xNTl8fGk+PTc2OCYmaTw9ODc5KWNvbnRpbnVlO3N3aXRjaChERC5lYXN0QXNpYW5XaWR0aChzKSl7Y2FzZVwiRlwiOmNhc2VcIldcIjp0Kz0yO2JyZWFrO2Nhc2VcIkFcIjp0Kz1GO2JyZWFrO2RlZmF1bHQ6dCs9MTt9fXJldHVybiB0fWNvbnN0IG09MTAsTD0oZT0wKT0+dT0+YFxceDFCWyR7dStlfW1gLFc9KGU9MCk9PnU9PmBcXHgxQlskezM4K2V9OzU7JHt1fW1gLE49KGU9MCk9Pih1LEYsdCk9PmBcXHgxQlskezM4K2V9OzI7JHt1fTske0Z9OyR7dH1tYCxyPXttb2RpZmllcjp7cmVzZXQ6WzAsMF0sYm9sZDpbMSwyMl0sZGltOlsyLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0sb3ZlcmxpbmU6WzUzLDU1XSxpbnZlcnNlOls3LDI3XSxoaWRkZW46WzgsMjhdLHN0cmlrZXRocm91Z2g6WzksMjldfSxjb2xvcjp7YmxhY2s6WzMwLDM5XSxyZWQ6WzMxLDM5XSxncmVlbjpbMzIsMzldLHllbGxvdzpbMzMsMzldLGJsdWU6WzM0LDM5XSxtYWdlbnRhOlszNSwzOV0sY3lhbjpbMzYsMzldLHdoaXRlOlszNywzOV0sYmxhY2tCcmlnaHQ6WzkwLDM5XSxncmF5Ols5MCwzOV0sZ3JleTpbOTAsMzldLHJlZEJyaWdodDpbOTEsMzldLGdyZWVuQnJpZ2h0Ols5MiwzOV0seWVsbG93QnJpZ2h0Ols5MywzOV0sYmx1ZUJyaWdodDpbOTQsMzldLG1hZ2VudGFCcmlnaHQ6Wzk1LDM5XSxjeWFuQnJpZ2h0Ols5NiwzOV0sd2hpdGVCcmlnaHQ6Wzk3LDM5XX0sYmdDb2xvcjp7YmdCbGFjazpbNDAsNDldLGJnUmVkOls0MSw0OV0sYmdHcmVlbjpbNDIsNDldLGJnWWVsbG93Ols0Myw0OV0sYmdCbHVlOls0NCw0OV0sYmdNYWdlbnRhOls0NSw0OV0sYmdDeWFuOls0Niw0OV0sYmdXaGl0ZTpbNDcsNDldLGJnQmxhY2tCcmlnaHQ6WzEwMCw0OV0sYmdHcmF5OlsxMDAsNDldLGJnR3JleTpbMTAwLDQ5XSxiZ1JlZEJyaWdodDpbMTAxLDQ5XSxiZ0dyZWVuQnJpZ2h0OlsxMDIsNDldLGJnWWVsbG93QnJpZ2h0OlsxMDMsNDldLGJnQmx1ZUJyaWdodDpbMTA0LDQ5XSxiZ01hZ2VudGFCcmlnaHQ6WzEwNSw0OV0sYmdDeWFuQnJpZ2h0OlsxMDYsNDldLGJnV2hpdGVCcmlnaHQ6WzEwNyw0OV19fTtPYmplY3Qua2V5cyhyLm1vZGlmaWVyKTtjb25zdCBlRD1PYmplY3Qua2V5cyhyLmNvbG9yKSx0RD1PYmplY3Qua2V5cyhyLmJnQ29sb3IpO1suLi5lRCwuLi50RF07ZnVuY3Rpb24gc0QoKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0W3UsRl1vZiBPYmplY3QuZW50cmllcyhyKSl7Zm9yKGNvbnN0W3Qsc11vZiBPYmplY3QuZW50cmllcyhGKSlyW3RdPXtvcGVuOmBcXHgxQlske3NbMF19bWAsY2xvc2U6YFxceDFCWyR7c1sxXX1tYH0sRlt0XT1yW3RdLGUuc2V0KHNbMF0sc1sxXSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsdSx7dmFsdWU6RixlbnVtZXJhYmxlOiExfSk7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocixcImNvZGVzXCIse3ZhbHVlOmUsZW51bWVyYWJsZTohMX0pLHIuY29sb3IuY2xvc2U9XCJcXHgxQlszOW1cIixyLmJnQ29sb3IuY2xvc2U9XCJcXHgxQls0OW1cIixyLmNvbG9yLmFuc2k9TCgpLHIuY29sb3IuYW5zaTI1Nj1XKCksci5jb2xvci5hbnNpMTZtPU4oKSxyLmJnQ29sb3IuYW5zaT1MKG0pLHIuYmdDb2xvci5hbnNpMjU2PVcobSksci5iZ0NvbG9yLmFuc2kxNm09TihtKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyLHtyZ2JUb0Fuc2kyNTY6e3ZhbHVlOih1LEYsdCk9PnU9PT1GJiZGPT09dD91PDg/MTY6dT4yNDg/MjMxOk1hdGgucm91bmQoKHUtOCkvMjQ3KjI0KSsyMzI6MTYrMzYqTWF0aC5yb3VuZCh1LzI1NSo1KSs2Kk1hdGgucm91bmQoRi8yNTUqNSkrTWF0aC5yb3VuZCh0LzI1NSo1KSxlbnVtZXJhYmxlOiExfSxoZXhUb1JnYjp7dmFsdWU6dT0+e2NvbnN0IEY9L1thLWZcXGRdezZ9fFthLWZcXGRdezN9L2kuZXhlYyh1LnRvU3RyaW5nKDE2KSk7aWYoIUYpcmV0dXJuIFswLDAsMF07bGV0W3RdPUY7dC5sZW5ndGg9PT0zJiYodD1bLi4udF0ubWFwKGk9PmkraSkuam9pbihcIlwiKSk7Y29uc3Qgcz1OdW1iZXIucGFyc2VJbnQodCwxNik7cmV0dXJuIFtzPj4xNiYyNTUscz4+OCYyNTUscyYyNTVdfSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2kyNTY6e3ZhbHVlOnU9PnIucmdiVG9BbnNpMjU2KC4uLnIuaGV4VG9SZ2IodSkpLGVudW1lcmFibGU6ITF9LGFuc2kyNTZUb0Fuc2k6e3ZhbHVlOnU9PntpZih1PDgpcmV0dXJuIDMwK3U7aWYodTwxNilyZXR1cm4gOTArKHUtOCk7bGV0IEYsdCxzO2lmKHU+PTIzMilGPSgodS0yMzIpKjEwKzgpLzI1NSx0PUYscz1GO2Vsc2Uge3UtPTE2O2NvbnN0IEM9dSUzNjtGPU1hdGguZmxvb3IodS8zNikvNSx0PU1hdGguZmxvb3IoQy82KS81LHM9QyU2LzU7fWNvbnN0IGk9TWF0aC5tYXgoRix0LHMpKjI7aWYoaT09PTApcmV0dXJuIDMwO2xldCBEPTMwKyhNYXRoLnJvdW5kKHMpPDwyfE1hdGgucm91bmQodCk8PDF8TWF0aC5yb3VuZChGKSk7cmV0dXJuIGk9PT0yJiYoRCs9NjApLER9LGVudW1lcmFibGU6ITF9LHJnYlRvQW5zaTp7dmFsdWU6KHUsRix0KT0+ci5hbnNpMjU2VG9BbnNpKHIucmdiVG9BbnNpMjU2KHUsRix0KSksZW51bWVyYWJsZTohMX0saGV4VG9BbnNpOnt2YWx1ZTp1PT5yLmFuc2kyNTZUb0Fuc2koci5oZXhUb0Fuc2kyNTYodSkpLGVudW1lcmFibGU6ITF9fSkscn1jb25zdCBpRD1zRCgpLHY9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLENEPTM5LHc9XCJcXHgwN1wiLEk9XCJbXCIsckQ9XCJdXCIsUj1cIm1cIix5PWAke3JEfTg7O2AsVj1lPT5gJHt2LnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0l9JHtlfSR7Un1gLHo9ZT0+YCR7di52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt5fSR7ZX0ke3d9YCxFRD1lPT5lLnNwbGl0KFwiIFwiKS5tYXAodT0+cCh1KSksXz0oZSx1LEYpPT57Y29uc3QgdD1bLi4udV07bGV0IHM9ITEsaT0hMSxEPXAoVChlW2UubGVuZ3RoLTFdKSk7Zm9yKGNvbnN0W0Msb11vZiB0LmVudHJpZXMoKSl7Y29uc3QgRT1wKG8pO2lmKEQrRTw9Rj9lW2UubGVuZ3RoLTFdKz1vOihlLnB1c2gobyksRD0wKSx2LmhhcyhvKSYmKHM9ITAsaT10LnNsaWNlKEMrMSkuam9pbihcIlwiKS5zdGFydHNXaXRoKHkpKSxzKXtpP289PT13JiYocz0hMSxpPSExKTpvPT09UiYmKHM9ITEpO2NvbnRpbnVlfUQrPUUsRD09PUYmJkM8dC5sZW5ndGgtMSYmKGUucHVzaChcIlwiKSxEPTApO30hRCYmZVtlLmxlbmd0aC0xXS5sZW5ndGg+MCYmZS5sZW5ndGg+MSYmKGVbZS5sZW5ndGgtMl0rPWUucG9wKCkpO30sbkQ9ZT0+e2NvbnN0IHU9ZS5zcGxpdChcIiBcIik7bGV0IEY9dS5sZW5ndGg7Zm9yKDtGPjAmJiEocCh1W0YtMV0pPjApOylGLS07cmV0dXJuIEY9PT11Lmxlbmd0aD9lOnUuc2xpY2UoMCxGKS5qb2luKFwiIFwiKSt1LnNsaWNlKEYpLmpvaW4oXCJcIil9LG9EPShlLHUsRj17fSk9PntpZihGLnRyaW0hPT0hMSYmZS50cmltKCk9PT1cIlwiKXJldHVybiBcIlwiO2xldCB0PVwiXCIscyxpO2NvbnN0IEQ9RUQoZSk7bGV0IEM9W1wiXCJdO2Zvcihjb25zdFtFLGFdb2YgZS5zcGxpdChcIiBcIikuZW50cmllcygpKXtGLnRyaW0hPT0hMSYmKENbQy5sZW5ndGgtMV09Q1tDLmxlbmd0aC0xXS50cmltU3RhcnQoKSk7bGV0IG49cChDW0MubGVuZ3RoLTFdKTtpZihFIT09MCYmKG4+PXUmJihGLndvcmRXcmFwPT09ITF8fEYudHJpbT09PSExKSYmKEMucHVzaChcIlwiKSxuPTApLChuPjB8fEYudHJpbT09PSExKSYmKENbQy5sZW5ndGgtMV0rPVwiIFwiLG4rKykpLEYuaGFyZCYmRFtFXT51KXtjb25zdCBCPXUtbixmPTErTWF0aC5mbG9vcigoRFtFXS1CLTEpL3UpO01hdGguZmxvb3IoKERbRV0tMSkvdSk8ZiYmQy5wdXNoKFwiXCIpLF8oQyxhLHUpO2NvbnRpbnVlfWlmKG4rRFtFXT51JiZuPjAmJkRbRV0+MCl7aWYoRi53b3JkV3JhcD09PSExJiZuPHUpe18oQyxhLHUpO2NvbnRpbnVlfUMucHVzaChcIlwiKTt9aWYobitEW0VdPnUmJkYud29yZFdyYXA9PT0hMSl7XyhDLGEsdSk7Y29udGludWV9Q1tDLmxlbmd0aC0xXSs9YTt9Ri50cmltIT09ITEmJihDPUMubWFwKEU9Pm5EKEUpKSk7Y29uc3Qgbz1bLi4uQy5qb2luKGBcbmApXTtmb3IoY29uc3RbRSxhXW9mIG8uZW50cmllcygpKXtpZih0Kz1hLHYuaGFzKGEpKXtjb25zdHtncm91cHM6Qn09bmV3IFJlZ0V4cChgKD86XFxcXCR7SX0oPzxjb2RlPlxcXFxkKyltfFxcXFwke3l9KD88dXJpPi4qKSR7d30pYCkuZXhlYyhvLnNsaWNlKEUpLmpvaW4oXCJcIikpfHx7Z3JvdXBzOnt9fTtpZihCLmNvZGUhPT12b2lkIDApe2NvbnN0IGY9TnVtYmVyLnBhcnNlRmxvYXQoQi5jb2RlKTtzPWY9PT1DRD92b2lkIDA6Zjt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKGk9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPWlELmNvZGVzLmdldChOdW1iZXIocykpO29bRSsxXT09PWBcbmA/KGkmJih0Kz16KFwiXCIpKSxzJiZuJiYodCs9VihuKSkpOmE9PT1gXG5gJiYocyYmbiYmKHQrPVYocykpLGkmJih0Kz16KGkpKSk7fXJldHVybiB0fTtmdW5jdGlvbiBHKGUsdSxGKXtyZXR1cm4gU3RyaW5nKGUpLm5vcm1hbGl6ZSgpLnJlcGxhY2UoL1xcclxcbi9nLGBcbmApLnNwbGl0KGBcbmApLm1hcCh0PT5vRCh0LHUsRikpLmpvaW4oYFxuYCl9Y29uc3QgYUQ9W1widXBcIixcImRvd25cIixcImxlZnRcIixcInJpZ2h0XCIsXCJzcGFjZVwiLFwiZW50ZXJcIixcImNhbmNlbFwiXSxBPXthY3Rpb25zOm5ldyBTZXQoYUQpLGFsaWFzZXM6bmV3IE1hcChbW1wia1wiLFwidXBcIl0sW1wialwiLFwiZG93blwiXSxbXCJoXCIsXCJsZWZ0XCJdLFtcImxcIixcInJpZ2h0XCJdLFtcIlx1MDAwM1wiLFwiY2FuY2VsXCJdLFtcImVzY2FwZVwiLFwiY2FuY2VsXCJdXSl9O2Z1bmN0aW9uIGsoZSx1KXtpZih0eXBlb2YgZT09XCJzdHJpbmdcIilyZXR1cm4gQS5hbGlhc2VzLmdldChlKT09PXU7Zm9yKGNvbnN0IEYgb2YgZSlpZihGIT09dm9pZCAwJiZrKEYsdSkpcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiBoRChlLHUpe2lmKGU9PT11KXJldHVybjtjb25zdCBGPWUuc3BsaXQoYFxuYCksdD11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBpPTA7aTxNYXRoLm1heChGLmxlbmd0aCx0Lmxlbmd0aCk7aSsrKUZbaV0hPT10W2ldJiZzLnB1c2goaSk7cmV0dXJuIHN9Z2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtLnN0YXJ0c1dpdGgoXCJ3aW5cIik7Y29uc3QgJD1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZChlLHUpe2NvbnN0IEY9ZTtGLmlzVFRZJiZGLnNldFJhd01vZGUodSk7fXZhciBBRD1PYmplY3QuZGVmaW5lUHJvcGVydHkscEQ9KGUsdSxGKT0+dSBpbiBlP0FEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixsPShlLHUsRik9PihwRChlLHR5cGVvZiB1IT1cInN5bWJvbFwiP3UrXCJcIjp1LEYpLEYpO2NsYXNzIHh7Y29uc3RydWN0b3IodSxGPSEwKXtsKHRoaXMsXCJpbnB1dFwiKSxsKHRoaXMsXCJvdXRwdXRcIiksbCh0aGlzLFwiX2Fib3J0U2lnbmFsXCIpLGwodGhpcyxcInJsXCIpLGwodGhpcyxcIm9wdHNcIiksbCh0aGlzLFwiX3JlbmRlclwiKSxsKHRoaXMsXCJfdHJhY2tcIiwhMSksbCh0aGlzLFwiX3ByZXZGcmFtZVwiLFwiXCIpLGwodGhpcyxcIl9zdWJzY3JpYmVyc1wiLG5ldyBNYXApLGwodGhpcyxcIl9jdXJzb3JcIiwwKSxsKHRoaXMsXCJzdGF0ZVwiLFwiaW5pdGlhbFwiKSxsKHRoaXMsXCJlcnJvclwiLFwiXCIpLGwodGhpcyxcInZhbHVlXCIpO2NvbnN0e2lucHV0OnQ9c3RkaW4sb3V0cHV0OnM9c3Rkb3V0LHJlbmRlcjppLHNpZ25hbDpELC4uLkN9PXU7dGhpcy5vcHRzPUMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPWkuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1GLHRoaXMuX2Fib3J0U2lnbmFsPUQsdGhpcy5pbnB1dD10LHRoaXMub3V0cHV0PXM7fXVuc3Vic2NyaWJlKCl7dGhpcy5fc3Vic2NyaWJlcnMuY2xlYXIoKTt9c2V0U3Vic2NyaWJlcih1LEYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXTt0LnB1c2goRiksdGhpcy5fc3Vic2NyaWJlcnMuc2V0KHUsdCk7fW9uKHUsRil7dGhpcy5zZXRTdWJzY3JpYmVyKHUse2NiOkZ9KTt9b25jZSh1LEYpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjpGLG9uY2U6ITB9KTt9ZW1pdCh1LC4uLkYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXSxzPVtdO2Zvcihjb25zdCBpIG9mIHQpaS5jYiguLi5GKSxpLm9uY2UmJnMucHVzaCgoKT0+dC5zcGxpY2UodC5pbmRleE9mKGkpLDEpKTtmb3IoY29uc3QgaSBvZiBzKWkoKTt9cHJvbXB0KCl7cmV0dXJuIG5ldyBQcm9taXNlKCh1LEYpPT57aWYodGhpcy5fYWJvcnRTaWduYWwpe2lmKHRoaXMuX2Fib3J0U2lnbmFsLmFib3J0ZWQpcmV0dXJuIHRoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCksdSgkKTt0aGlzLl9hYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e3RoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCk7fSx7b25jZTohMH0pO31jb25zdCB0PW5ldyBXcml0ZVN0cmVhbSgwKTt0Ll93cml0ZT0ocyxpLEQpPT57dGhpcy5fdHJhY2smJih0aGlzLnZhbHVlPXRoaXMucmw/LmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmw/LmN1cnNvcj8/MCx0aGlzLmVtaXQoXCJ2YWx1ZVwiLHRoaXMudmFsdWUpKSxEKCk7fSx0aGlzLmlucHV0LnBpcGUodCksdGhpcy5ybD1nLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6dGhpcy5pbnB1dCxvdXRwdXQ6dCx0YWJTaXplOjIscHJvbXB0OlwiXCIsZXNjYXBlQ29kZVRpbWVvdXQ6NTB9KSxnLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmlucHV0LHRoaXMucmwpLHRoaXMucmwucHJvbXB0KCksdGhpcy5vcHRzLmluaXRpYWxWYWx1ZSE9PXZvaWQgMCYmdGhpcy5fdHJhY2smJnRoaXMucmwud3JpdGUodGhpcy5vcHRzLmluaXRpYWxWYWx1ZSksdGhpcy5pbnB1dC5vbihcImtleXByZXNzXCIsdGhpcy5vbktleXByZXNzKSxkKHRoaXMuaW5wdXQsITApLHRoaXMub3V0cHV0Lm9uKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLHRoaXMucmVuZGVyKCksdGhpcy5vbmNlKFwic3VibWl0XCIsKCk9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZCh0aGlzLmlucHV0LCExKSx1KHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3Iuc2hvdyksdGhpcy5vdXRwdXQub2ZmKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLGQodGhpcy5pbnB1dCwhMSksdSgkKTt9KTt9KX1vbktleXByZXNzKHUsRil7aWYodGhpcy5zdGF0ZT09PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksRj8ubmFtZSYmKCF0aGlzLl90cmFjayYmQS5hbGlhc2VzLmhhcyhGLm5hbWUpJiZ0aGlzLmVtaXQoXCJjdXJzb3JcIixBLmFsaWFzZXMuZ2V0KEYubmFtZSkpLEEuYWN0aW9ucy5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsRi5uYW1lKSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdT09PVwiXHRcIiYmdGhpcy5vcHRzLnBsYWNlaG9sZGVyJiYodGhpcy52YWx1ZXx8KHRoaXMucmw/LndyaXRlKHRoaXMub3B0cy5wbGFjZWhvbGRlciksdGhpcy5lbWl0KFwidmFsdWVcIix0aGlzLm9wdHMucGxhY2Vob2xkZXIpKSksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCB0PXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTt0JiYodGhpcy5lcnJvcj10LHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmw/LndyaXRlKHRoaXMudmFsdWUpKTt9dGhpcy5zdGF0ZSE9PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJzdWJtaXRcIik7fWsoW3UsRj8ubmFtZSxGPy5zZXF1ZW5jZV0sXCJjYW5jZWxcIikmJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGQodGhpcy5pbnB1dCwhMSksdGhpcy5ybD8uY2xvc2UoKSx0aGlzLnJsPXZvaWQgMCx0aGlzLmVtaXQoYCR7dGhpcy5zdGF0ZX1gLHRoaXMudmFsdWUpLHRoaXMudW5zdWJzY3JpYmUoKTt9cmVzdG9yZUN1cnNvcigpe2NvbnN0IHU9Ryh0aGlzLl9wcmV2RnJhbWUscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pLnNwbGl0KGBcbmApLmxlbmd0aC0xO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoLTk5OSx1Ki0xKSk7fXJlbmRlcigpe2NvbnN0IHU9Ryh0aGlzLl9yZW5kZXIodGhpcyk/P1wiXCIscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pO2lmKHUhPT10aGlzLl9wcmV2RnJhbWUpe2lmKHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIil0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPWhEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCB0PUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHQpKSx0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmxpbmVzKDEpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCk7dGhpcy5vdXRwdXQud3JpdGUoc1t0XSksdGhpcy5fcHJldkZyYW1lPXUsdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLXQtMSkpO3JldHVybn1pZihGJiZGPy5sZW5ndGg+MSl7Y29uc3QgdD1GWzBdO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoMCx0KSksdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5lcmFzZS5kb3duKCkpO2NvbnN0IHM9dS5zcGxpdChgXG5gKS5zbGljZSh0KTt0aGlzLm91dHB1dC53cml0ZShzLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmRvd24oKSk7fXRoaXMub3V0cHV0LndyaXRlKHUpLHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksdGhpcy5fcHJldkZyYW1lPXU7fX19Y2xhc3MgZkQgZXh0ZW5kcyB4e2dldCBjdXJzb3IoKXtyZXR1cm4gdGhpcy52YWx1ZT8wOjF9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLmN1cnNvcj09PTB9Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksdGhpcy52YWx1ZT0hIXUuaW5pdGlhbFZhbHVlLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57dGhpcy52YWx1ZT10aGlzLl92YWx1ZTt9KSx0aGlzLm9uKFwiY29uZmlybVwiLEY9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5tb3ZlKDAsLTEpKSx0aGlzLnZhbHVlPUYsdGhpcy5zdGF0ZT1cInN1Ym1pdFwiLHRoaXMuY2xvc2UoKTt9KSx0aGlzLm9uKFwiY3Vyc29yXCIsKCk9Pnt0aGlzLnZhbHVlPSF0aGlzLnZhbHVlO30pO319dmFyIGJEPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxtRD0oZSx1LEYpPT51IGluIGU/YkQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpGfSk6ZVt1XT1GLFk9KGUsdSxGKT0+KG1EKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsRiksRik7bGV0IHdEPWNsYXNzIGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSxZKHRoaXMsXCJvcHRpb25zXCIpLFkodGhpcyxcImN1cnNvclwiLDApLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fTt2YXIgJEQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LFNEPShlLHUsRik9PnUgaW4gZT8kRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkZ9KTplW3VdPUYscT0oZSx1LEYpPT4oU0QoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSxGKSxGKTtjbGFzcyBqRCBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSkscSh0aGlzLFwib3B0aW9uc1wiKSxxKHRoaXMsXCJjdXJzb3JcIiwwKSx0aGlzLm9wdGlvbnM9dS5vcHRpb25zLHRoaXMuY3Vyc29yPXRoaXMub3B0aW9ucy5maW5kSW5kZXgoKHt2YWx1ZTpGfSk9PkY9PT11LmluaXRpYWxWYWx1ZSksdGhpcy5jdXJzb3I9PT0tMSYmKHRoaXMuY3Vyc29yPTApLHRoaXMuY2hhbmdlVmFsdWUoKSx0aGlzLm9uKFwiY3Vyc29yXCIsRj0+e3N3aXRjaChGKXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrfXRoaXMuY2hhbmdlVmFsdWUoKTt9KTt9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdfWNoYW5nZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl92YWx1ZS52YWx1ZTt9fXZhciBQRD1PYmplY3QuZGVmaW5lUHJvcGVydHksTEQ9KGUsdSxGKT0+dSBpbiBlP1BEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixXRD0oZSx1LEYpPT4oTEQoZSx1K1wiXCIsRiksRik7Y2xhc3MgTkQgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLFdEKHRoaXMsXCJ2YWx1ZVdpdGhDdXJzb3JcIixcIlwiKSx0aGlzLm9uKFwiZmluYWxpemVcIiwoKT0+e3RoaXMudmFsdWV8fCh0aGlzLnZhbHVlPXUuZGVmYXVsdFZhbHVlKSx0aGlzLnZhbHVlV2l0aEN1cnNvcj10aGlzLnZhbHVlO30pLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57aWYodGhpcy5jdXJzb3I+PXRoaXMudmFsdWUubGVuZ3RoKXRoaXMudmFsdWVXaXRoQ3Vyc29yPWAke3RoaXMudmFsdWV9JHtjLmludmVyc2UoYy5oaWRkZW4oXCJfXCIpKX1gO2Vsc2Uge2NvbnN0IEY9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuY3Vyc29yKSx0PXRoaXMudmFsdWUuc2xpY2UodGhpcy5jdXJzb3IpO3RoaXMudmFsdWVXaXRoQ3Vyc29yPWAke0Z9JHtjLmludmVyc2UodFswXSl9JHt0LnNsaWNlKDEpfWA7fX0pO31nZXQgY3Vyc29yKCl7cmV0dXJuIHRoaXMuX2N1cnNvcn19XG5cbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBTX1NURVBfQUNUSVZFID0gcyhcIlxcdTI3NkZcIiwgXCI+XCIpO1xuY29uc3QgU19TVEVQX0NBTkNFTCA9IHMoXCJcXHUyNUEwXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9FUlJPUiA9IHMoXCJcXHUyNUIyXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9TVUJNSVQgPSBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIik7XG5jb25zdCBTX0JBUiA9IFwiXCI7XG5jb25zdCBTX0JBUl9FTkQgPSBcIlwiO1xuY29uc3QgU19SQURJT19BQ1RJVkUgPSBzKFwiXFx1MjVDRlwiLCBcIj5cIik7XG5jb25zdCBTX1JBRElPX0lOQUNUSVZFID0gcyhcIlxcdTI1Q0JcIiwgXCIgXCIpO1xuY29uc3QgU19DSEVDS0JPWF9BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIltcXHUyMDIyXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfU0VMRUNURUQgPSBzKFwiXFx1MjVGQ1wiLCBcIlsrXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfSU5BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIlsgXVwiKTtcbmNvbnN0IHN5bWJvbCA9IChzdGF0ZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSBcImluaXRpYWxcIjpcbiAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuY3lhbihTX1NURVBfQUNUSVZFKTtcbiAgICB9XG4gICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnJlZChTX1NURVBfQ0FOQ0VMKTtcbiAgICB9XG4gICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMueWVsbG93KFNfU1RFUF9FUlJPUik7XG4gICAgfVxuICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5ncmVlbihTX1NURVBfU1VCTUlUKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCB0ZXh0ID0gKG9wdHMpID0+IHtcbiAgcmV0dXJuIG5ldyBORCh7XG4gICAgdmFsaWRhdGU6IG9wdHMudmFsaWRhdGUsXG4gICAgcGxhY2Vob2xkZXI6IG9wdHMucGxhY2Vob2xkZXIsXG4gICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gb3B0cy5wbGFjZWhvbGRlciA/IGNvbG9ycy5pbnZlcnNlKG9wdHMucGxhY2Vob2xkZXJbMF0pICsgY29sb3JzLmRpbShvcHRzLnBsYWNlaG9sZGVyLnNsaWNlKDEpKSA6IGNvbG9ycy5pbnZlcnNlKGNvbG9ycy5oaWRkZW4oXCJfXCIpKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWVXaXRoQ3Vyc29yIDogcGxhY2Vob2xkZXI7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGUudHJpbSgpfVxuJHtjb2xvcnMueWVsbG93KFxuICAgICAgICAgICAgU19CQVJcbiAgICAgICAgICApfSAke3ZhbHVlfVxuJHtjb2xvcnMueWVsbG93KFNfQkFSX0VORCl9ICR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIHRoaXMuZXJyb3JcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbShcbiAgICAgICAgICAgIHRoaXMudmFsdWUgfHwgb3B0cy5wbGFjZWhvbGRlclxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHRoaXMudmFsdWUgPz8gXCJcIilcbiAgICAgICAgICApfSR7dGhpcy52YWx1ZT8udHJpbSgpID8gXCJcXG5cIiArIGNvbG9ycy5ncmF5KFNfQkFSKSA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3ZhbHVlfVxuJHtjb2xvcnMuY3lhbihcbiAgICAgICAgICAgIFNfQkFSX0VORFxuICAgICAgICAgICl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBjb25maXJtID0gKG9wdHMpID0+IHtcbiAgY29uc3QgYWN0aXZlID0gb3B0cy5hY3RpdmUgPz8gXCJZZXNcIjtcbiAgY29uc3QgaW5hY3RpdmUgPSBvcHRzLmluYWN0aXZlID8/IFwiTm9cIjtcbiAgcmV0dXJuIG5ldyBmRCh7XG4gICAgYWN0aXZlLFxuICAgIGluYWN0aXZlLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUgPz8gdHJ1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyBhY3RpdmUgOiBpbmFjdGl2ZTtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbSh2YWx1ZSl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHZhbHVlKVxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy52YWx1ZSA/IGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7YWN0aXZlfWAgOiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oYWN0aXZlKX1gfSAke2NvbG9ycy5kaW0oXCIvXCIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oaW5hY3RpdmUpfWAgOiBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2luYWN0aXZlfWB9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBzZWxlY3QgPSAob3B0cykgPT4ge1xuICBjb25zdCBvcHQgPSAob3B0aW9uLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGxhYmVsID0gb3B0aW9uLmxhYmVsID8/IFN0cmluZyhvcHRpb24udmFsdWUpO1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhY3RpdmVcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZGltKGxhYmVsKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNhbmNlbGxlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuc3RyaWtldGhyb3VnaChjb2xvcnMuZGltKGxhYmVsKSl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19SQURJT19JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyBqRCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJzZWxlY3RlZFwiXG4gICAgICAgICAgKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJjYW5jZWxsZWRcIlxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy5vcHRpb25zLm1hcChcbiAgICAgICAgICAgIChvcHRpb24sIGkpID0+IG9wdChvcHRpb24sIGkgPT09IHRoaXMuY3Vyc29yID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIilcbiAgICAgICAgICApLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcbmNvbnN0IG11bHRpc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5jeWFuKFNfQ0hFQ0tCT1hfQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiYWN0aXZlLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX0NIRUNLQk9YX1NFTEVDVEVEKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzdWJtaXR0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19DSEVDS0JPWF9JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyB3RCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFZhbHVlcyxcbiAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCA/PyB0cnVlLFxuICAgIGN1cnNvckF0OiBvcHRzLmN1cnNvckF0LFxuICAgIHZhbGlkYXRlKHNlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcHRpb24uXG4ke2NvbG9ycy5yZXNldChcbiAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgYFByZXNzICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIHNwYWNlIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHNlbGVjdCwgJHtjb2xvcnMuZ3JheShcbiAgICAgICAgICAgICAgY29sb3JzLmJnV2hpdGUoY29sb3JzLmludmVyc2UoXCIgZW50ZXIgXCIpKVxuICAgICAgICAgICAgKX0gdG8gc3VibWl0YFxuICAgICAgICAgIClcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpKS5tYXAoKG9wdGlvbikgPT4gb3B0KG9wdGlvbiwgXCJzdWJtaXR0ZWRcIikpLmpvaW4oY29sb3JzLmRpbShcIiwgXCIpKSB8fCBjb2xvcnMuZGltKFwibm9uZVwiKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwiY2FuY2VsbGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSk7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2xhYmVsLnRyaW0oKSA/IGAke2xhYmVsfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YCA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZXJyb3JcIjoge1xuICAgICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuZXJyb3Iuc3BsaXQoXCJcXG5cIikubWFwKFxuICAgICAgICAgICAgKGxuLCBpKSA9PiBpID09PSAwID8gYCR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3cobG4pfWAgOiBgICAgJHtsbn1gXG4gICAgICAgICAgKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIHJldHVybiB0aXRsZSArIGNvbG9ycy55ZWxsb3coU19CQVIpICsgXCIgIFwiICsgdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGkgPT09IHRoaXMuY3Vyc29yO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJhY3RpdmUtc2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgYWN0aXZlID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIik7XG4gICAgICAgICAgfSkuam9pbihgXG4ke2NvbG9ycy55ZWxsb3coU19CQVIpfSAgYCkgKyBcIlxcblwiICsgZm9vdGVyICsgXCJcXG5cIjtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcblxuY29uc3Qga0NhbmNlbCA9IFN5bWJvbC5mb3IoXCJjYW5jZWxcIik7XG5hc3luYyBmdW5jdGlvbiBwcm9tcHQobWVzc2FnZSwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3ltYm9sXCIgfHwgdmFsdWUudG9TdHJpbmcoKSAhPT0gXCJTeW1ib2woY2xhY2s6Y2FuY2VsKVwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN3aXRjaCAob3B0cy5jYW5jZWwpIHtcbiAgICAgIGNhc2UgXCJyZWplY3RcIjoge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcIlByb21wdCBjYW5jZWxsZWQuXCIpO1xuICAgICAgICBlcnJvci5uYW1lID0gXCJDb25zb2xhUHJvbXB0Q2FuY2VsbGVkRXJyb3JcIjtcbiAgICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIHByb21wdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3ltYm9sXCI6IHtcbiAgICAgICAgcmV0dXJuIGtDYW5jZWw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBcImRlZmF1bHRcIjoge1xuICAgICAgICByZXR1cm4gb3B0cy5kZWZhdWx0ID8/IG9wdHMuaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGlmICghb3B0cy50eXBlIHx8IG9wdHMudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgdGV4dCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHQsXG4gICAgICBwbGFjZWhvbGRlcjogb3B0cy5wbGFjZWhvbGRlcixcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwiY29uZmlybVwiKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFxuICAgIH0pLnRoZW4oaGFuZGxlQ2FuY2VsKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvbXB0IHR5cGU6ICR7b3B0cy50eXBlfWApO1xufVxuXG5leHBvcnQgeyBrQ2FuY2VsLCBwcm9tcHQgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVDb25zb2xhIGFzIGNyZWF0ZUNvbnNvbGEkMSwgTG9nTGV2ZWxzIH0gZnJvbSAnLi4vY29yZS5tanMnO1xuaW1wb3J0IHsgQiBhcyBCYXNpY1JlcG9ydGVyLCBwIGFzIHBhcnNlU3RhY2sgfSBmcm9tICcuL2NvbnNvbGEuQ3M1RmR0SEQubWpzJztcbmltcG9ydCBwcm9jZXNzJDEgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzLCBiIGFzIGJveCwgcyBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4vY29uc29sYS5DQmk2Tm05cy5tanMnO1xuXG5jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCksaT1lPT5nbG9iYWxUaGlzLnByb2Nlc3M/LmVudnx8aW1wb3J0Lm1ldGEuZW52fHxnbG9iYWxUaGlzLkRlbm8/LmVudi50b09iamVjdCgpfHxnbG9iYWxUaGlzLl9fZW52X198fChlP3I6Z2xvYmFsVGhpcykscyQxPW5ldyBQcm94eShyLHtnZXQoZSxvKXtyZXR1cm4gaSgpW29dPz9yW29dfSxoYXMoZSxvKXtjb25zdCBFPWkoKTtyZXR1cm4gbyBpbiBFfHxvIGluIHJ9LHNldChlLG8sRSl7Y29uc3QgYj1pKCEwKTtyZXR1cm4gYltvXT1FLCEwfSxkZWxldGVQcm9wZXJ0eShlLG8pe2lmKCFvKXJldHVybiAhMTtjb25zdCBFPWkoITApO3JldHVybiBkZWxldGUgRVtvXSwhMH0sb3duS2V5cygpe2NvbnN0IGU9aSghMCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX0pLHQ9dHlwZW9mIHByb2Nlc3M8XCJ1XCImJnByb2Nlc3MuZW52JiZwcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJcIixCPVtbXCJBUFBWRVlPUlwiXSxbXCJBV1NfQU1QTElGWVwiLFwiQVdTX0FQUF9JRFwiLHtjaTohMH1dLFtcIkFaVVJFX1BJUEVMSU5FU1wiLFwiU1lTVEVNX1RFQU1GT1VOREFUSU9OQ09MTEVDVElPTlVSSVwiXSxbXCJBWlVSRV9TVEFUSUNcIixcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sW1wiQVBQQ0lSQ0xFXCIsXCJBQ19BUFBDSVJDTEVcIl0sW1wiQkFNQk9PXCIsXCJiYW1ib29fcGxhbktleVwiXSxbXCJCSVRCVUNLRVRcIixcIkJJVEJVQ0tFVF9DT01NSVRcIl0sW1wiQklUUklTRVwiLFwiQklUUklTRV9JT1wiXSxbXCJCVUREWVwiLFwiQlVERFlfV09SS1NQQUNFX0lEXCJdLFtcIkJVSUxES0lURVwiXSxbXCJDSVJDTEVcIixcIkNJUkNMRUNJXCJdLFtcIkNJUlJVU1wiLFwiQ0lSUlVTX0NJXCJdLFtcIkNMT1VERkxBUkVfUEFHRVNcIixcIkNGX1BBR0VTXCIse2NpOiEwfV0sW1wiQ09ERUJVSUxEXCIsXCJDT0RFQlVJTERfQlVJTERfQVJOXCJdLFtcIkNPREVGUkVTSFwiLFwiQ0ZfQlVJTERfSURcIl0sW1wiRFJPTkVcIl0sW1wiRFJPTkVcIixcIkRST05FX0JVSUxEX0VWRU5UXCJdLFtcIkRTQVJJXCJdLFtcIkdJVEhVQl9BQ1RJT05TXCJdLFtcIkdJVExBQlwiLFwiR0lUTEFCX0NJXCJdLFtcIkdJVExBQlwiLFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxbXCJHT0NEXCIsXCJHT19QSVBFTElORV9MQUJFTFwiXSxbXCJMQVlFUkNJXCJdLFtcIkhVRFNPTlwiLFwiSFVEU09OX1VSTFwiXSxbXCJKRU5LSU5TXCIsXCJKRU5LSU5TX1VSTFwiXSxbXCJNQUdOVU1cIl0sW1wiTkVUTElGWVwiXSxbXCJORVRMSUZZXCIsXCJORVRMSUZZX0xPQ0FMXCIse2NpOiExfV0sW1wiTkVWRVJDT0RFXCJdLFtcIlJFTkRFUlwiXSxbXCJTQUlMXCIsXCJTQUlMQ0lcIl0sW1wiU0VNQVBIT1JFXCJdLFtcIlNDUkVXRFJJVkVSXCJdLFtcIlNISVBQQUJMRVwiXSxbXCJTT0xBTk9cIixcIlRERElVTVwiXSxbXCJTVFJJREVSXCJdLFtcIlRFQU1DSVRZXCIsXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFtcIlRSQVZJU1wiXSxbXCJWRVJDRUxcIixcIk5PV19CVUlMREVSXCJdLFtcIlZFUkNFTFwiLFwiVkVSQ0VMXCIse2NpOiExfV0sW1wiVkVSQ0VMXCIsXCJWRVJDRUxfRU5WXCIse2NpOiExfV0sW1wiQVBQQ0VOVEVSXCIsXCJBUFBDRU5URVJfQlVJTERfSURcIl0sW1wiQ09ERVNBTkRCT1hcIixcIkNPREVTQU5EQk9YX1NTRVwiLHtjaTohMX1dLFtcIlNUQUNLQkxJVFpcIl0sW1wiU1RPUk1LSVRcIl0sW1wiQ0xFQVZSXCJdLFtcIlpFQUJVUlwiXSxbXCJDT0RFU1BIRVJFXCIsXCJDT0RFU1BIRVJFX0FQUF9JRFwiLHtjaTohMH1dLFtcIlJBSUxXQVlcIixcIlJBSUxXQVlfUFJPSkVDVF9JRFwiXSxbXCJSQUlMV0FZXCIsXCJSQUlMV0FZX1NFUlZJQ0VfSURcIl0sW1wiREVOTy1ERVBMT1lcIixcIkRFTk9fREVQTE9ZTUVOVF9JRFwiXSxbXCJGSVJFQkFTRV9BUFBfSE9TVElOR1wiLFwiRklSRUJBU0VfQVBQX0hPU1RJTkdcIix7Y2k6ITB9XV07ZnVuY3Rpb24gcCgpe2lmKGdsb2JhbFRoaXMucHJvY2Vzcz8uZW52KWZvcihjb25zdCBlIG9mIEIpe2NvbnN0IG89ZVsxXXx8ZVswXTtpZihnbG9iYWxUaGlzLnByb2Nlc3M/LmVudltvXSlyZXR1cm4ge25hbWU6ZVswXS50b0xvd2VyQ2FzZSgpLC4uLmVbMl19fXJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3M/LmVudj8uU0hFTEw9PT1cIi9iaW4vanNoXCImJmdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LndlYmNvbnRhaW5lcj97bmFtZTpcInN0YWNrYmxpdHpcIixjaTohMX06e25hbWU6XCJcIixjaTohMX19Y29uc3QgbD1wKCk7bC5uYW1lO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGU/ZSE9PVwiZmFsc2VcIjohMX1jb25zdCBJPWdsb2JhbFRoaXMucHJvY2Vzcz8ucGxhdGZvcm18fFwiXCIsVD1uKHMkMS5DSSl8fGwuY2khPT0hMSxSPW4oZ2xvYmFsVGhpcy5wcm9jZXNzPy5zdGRvdXQmJmdsb2JhbFRoaXMucHJvY2Vzcz8uc3Rkb3V0LmlzVFRZKSxVPW4ocyQxLkRFQlVHKSxBPXQ9PT1cInRlc3RcInx8bihzJDEuVEVTVCk7bihzJDEuTUlOSU1BTCl8fFR8fEF8fCFSO2NvbnN0IF89L153aW4vaS50ZXN0KEkpOyFuKHMkMS5OT19DT0xPUikmJihuKHMkMS5GT1JDRV9DT0xPUil8fChSfHxfKSYmcyQxLlRFUk0hPT1cImR1bWJcInx8VCk7Y29uc3QgQz0oZ2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZXx8XCJcIikucmVwbGFjZSgvXnYvLFwiXCIpfHxudWxsO051bWJlcihDPy5zcGxpdChcIi5cIilbMF0pfHxudWxsO2NvbnN0IHk9Z2xvYmFsVGhpcy5wcm9jZXNzfHxPYmplY3QuY3JlYXRlKG51bGwpLGM9e3ZlcnNpb25zOnt9fTtuZXcgUHJveHkoeSx7Z2V0KGUsbyl7aWYobz09PVwiZW52XCIpcmV0dXJuIHMkMTtpZihvIGluIGUpcmV0dXJuIGVbb107aWYobyBpbiBjKXJldHVybiBjW29dfX0pO2NvbnN0IEw9Z2xvYmFsVGhpcy5wcm9jZXNzPy5yZWxlYXNlPy5uYW1lPT09XCJub2RlXCIsYT0hIWdsb2JhbFRoaXMuQnVufHwhIWdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LmJ1bixEPSEhZ2xvYmFsVGhpcy5EZW5vLE89ISFnbG9iYWxUaGlzLmZhc3RseSxTPSEhZ2xvYmFsVGhpcy5OZXRsaWZ5LE49ISFnbG9iYWxUaGlzLkVkZ2VSdW50aW1lLFA9Z2xvYmFsVGhpcy5uYXZpZ2F0b3I/LnVzZXJBZ2VudD09PVwiQ2xvdWRmbGFyZS1Xb3JrZXJzXCIsRj1bW1MsXCJuZXRsaWZ5XCJdLFtOLFwiZWRnZS1saWdodFwiXSxbUCxcIndvcmtlcmRcIl0sW08sXCJmYXN0bHlcIl0sW0QsXCJkZW5vXCJdLFthLFwiYnVuXCJdLFtMLFwibm9kZVwiXV07ZnVuY3Rpb24gRygpe2NvbnN0IGU9Ri5maW5kKG89Pm9bMF0pO2lmKGUpcmV0dXJuIHtuYW1lOmVbMV19fWNvbnN0IHU9RygpO3U/Lm5hbWV8fFwiXCI7XG5cbmZ1bmN0aW9uIGFuc2lSZWdleCh7b25seUZpcnN0ID0gZmFsc2V9ID0ge30pIHtcblx0Ly8gVmFsaWQgc3RyaW5nIHRlcm1pbmF0b3Igc2VxdWVuY2VzIGFyZSBCRUwsIEVTQ1xcLCBhbmQgMHg5Y1xuXHRjb25zdCBTVCA9ICcoPzpcXFxcdTAwMDd8XFxcXHUwMDFCXFxcXHUwMDVDfFxcXFx1MDA5QyknO1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHRcdGBbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT8ke1NUfSlgLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKScsXG5cdF0uam9pbignfCcpO1xuXG5cdHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIG9ubHlGaXJzdCA/IHVuZGVmaW5lZCA6ICdnJyk7XG59XG5cbmNvbnN0IHJlZ2V4ID0gYW5zaVJlZ2V4KCk7XG5cbmZ1bmN0aW9uIHN0cmlwQW5zaShzdHJpbmcpIHtcblx0aWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBzdHJpbmd9XFxgYCk7XG5cdH1cblxuXHQvLyBFdmVuIHRob3VnaCB0aGUgcmVnZXggaXMgZ2xvYmFsLCB3ZSBkb24ndCBuZWVkIHRvIHJlc2V0IHRoZSBgLmxhc3RJbmRleGBcblx0Ly8gYmVjYXVzZSB1bmxpa2UgYC5leGVjKClgIGFuZCBgLnRlc3QoKWAsIGAucmVwbGFjZSgpYCBkb2VzIGl0IGF1dG9tYXRpY2FsbHlcblx0Ly8gYW5kIGRvaW5nIGl0IG1hbnVhbGx5IGhhcyBhIHBlcmZvcm1hbmNlIHBlbmFsdHkuXG5cdHJldHVybiBzdHJpbmcucmVwbGFjZShyZWdleCwgJycpO1xufVxuXG4vLyBHZW5lcmF0ZWQgY29kZS5cblxuZnVuY3Rpb24gaXNBbWJpZ3VvdXMoeCkge1xuXHRyZXR1cm4geCA9PT0gMHhBMVxuXHRcdHx8IHggPT09IDB4QTRcblx0XHR8fCB4ID09PSAweEE3XG5cdFx0fHwgeCA9PT0gMHhBOFxuXHRcdHx8IHggPT09IDB4QUFcblx0XHR8fCB4ID09PSAweEFEXG5cdFx0fHwgeCA9PT0gMHhBRVxuXHRcdHx8IHggPj0gMHhCMCAmJiB4IDw9IDB4QjRcblx0XHR8fCB4ID49IDB4QjYgJiYgeCA8PSAweEJBXG5cdFx0fHwgeCA+PSAweEJDICYmIHggPD0gMHhCRlxuXHRcdHx8IHggPT09IDB4QzZcblx0XHR8fCB4ID09PSAweEQwXG5cdFx0fHwgeCA9PT0gMHhEN1xuXHRcdHx8IHggPT09IDB4RDhcblx0XHR8fCB4ID49IDB4REUgJiYgeCA8PSAweEUxXG5cdFx0fHwgeCA9PT0gMHhFNlxuXHRcdHx8IHggPj0gMHhFOCAmJiB4IDw9IDB4RUFcblx0XHR8fCB4ID09PSAweEVDXG5cdFx0fHwgeCA9PT0gMHhFRFxuXHRcdHx8IHggPT09IDB4RjBcblx0XHR8fCB4ID09PSAweEYyXG5cdFx0fHwgeCA9PT0gMHhGM1xuXHRcdHx8IHggPj0gMHhGNyAmJiB4IDw9IDB4RkFcblx0XHR8fCB4ID09PSAweEZDXG5cdFx0fHwgeCA9PT0gMHhGRVxuXHRcdHx8IHggPT09IDB4MTAxXG5cdFx0fHwgeCA9PT0gMHgxMTFcblx0XHR8fCB4ID09PSAweDExM1xuXHRcdHx8IHggPT09IDB4MTFCXG5cdFx0fHwgeCA9PT0gMHgxMjZcblx0XHR8fCB4ID09PSAweDEyN1xuXHRcdHx8IHggPT09IDB4MTJCXG5cdFx0fHwgeCA+PSAweDEzMSAmJiB4IDw9IDB4MTMzXG5cdFx0fHwgeCA9PT0gMHgxMzhcblx0XHR8fCB4ID49IDB4MTNGICYmIHggPD0gMHgxNDJcblx0XHR8fCB4ID09PSAweDE0NFxuXHRcdHx8IHggPj0gMHgxNDggJiYgeCA8PSAweDE0QlxuXHRcdHx8IHggPT09IDB4MTREXG5cdFx0fHwgeCA9PT0gMHgxNTJcblx0XHR8fCB4ID09PSAweDE1M1xuXHRcdHx8IHggPT09IDB4MTY2XG5cdFx0fHwgeCA9PT0gMHgxNjdcblx0XHR8fCB4ID09PSAweDE2QlxuXHRcdHx8IHggPT09IDB4MUNFXG5cdFx0fHwgeCA9PT0gMHgxRDBcblx0XHR8fCB4ID09PSAweDFEMlxuXHRcdHx8IHggPT09IDB4MUQ0XG5cdFx0fHwgeCA9PT0gMHgxRDZcblx0XHR8fCB4ID09PSAweDFEOFxuXHRcdHx8IHggPT09IDB4MURBXG5cdFx0fHwgeCA9PT0gMHgxRENcblx0XHR8fCB4ID09PSAweDI1MVxuXHRcdHx8IHggPT09IDB4MjYxXG5cdFx0fHwgeCA9PT0gMHgyQzRcblx0XHR8fCB4ID09PSAweDJDN1xuXHRcdHx8IHggPj0gMHgyQzkgJiYgeCA8PSAweDJDQlxuXHRcdHx8IHggPT09IDB4MkNEXG5cdFx0fHwgeCA9PT0gMHgyRDBcblx0XHR8fCB4ID49IDB4MkQ4ICYmIHggPD0gMHgyREJcblx0XHR8fCB4ID09PSAweDJERFxuXHRcdHx8IHggPT09IDB4MkRGXG5cdFx0fHwgeCA+PSAweDMwMCAmJiB4IDw9IDB4MzZGXG5cdFx0fHwgeCA+PSAweDM5MSAmJiB4IDw9IDB4M0ExXG5cdFx0fHwgeCA+PSAweDNBMyAmJiB4IDw9IDB4M0E5XG5cdFx0fHwgeCA+PSAweDNCMSAmJiB4IDw9IDB4M0MxXG5cdFx0fHwgeCA+PSAweDNDMyAmJiB4IDw9IDB4M0M5XG5cdFx0fHwgeCA9PT0gMHg0MDFcblx0XHR8fCB4ID49IDB4NDEwICYmIHggPD0gMHg0NEZcblx0XHR8fCB4ID09PSAweDQ1MVxuXHRcdHx8IHggPT09IDB4MjAxMFxuXHRcdHx8IHggPj0gMHgyMDEzICYmIHggPD0gMHgyMDE2XG5cdFx0fHwgeCA9PT0gMHgyMDE4XG5cdFx0fHwgeCA9PT0gMHgyMDE5XG5cdFx0fHwgeCA9PT0gMHgyMDFDXG5cdFx0fHwgeCA9PT0gMHgyMDFEXG5cdFx0fHwgeCA+PSAweDIwMjAgJiYgeCA8PSAweDIwMjJcblx0XHR8fCB4ID49IDB4MjAyNCAmJiB4IDw9IDB4MjAyN1xuXHRcdHx8IHggPT09IDB4MjAzMFxuXHRcdHx8IHggPT09IDB4MjAzMlxuXHRcdHx8IHggPT09IDB4MjAzM1xuXHRcdHx8IHggPT09IDB4MjAzNVxuXHRcdHx8IHggPT09IDB4MjAzQlxuXHRcdHx8IHggPT09IDB4MjAzRVxuXHRcdHx8IHggPT09IDB4MjA3NFxuXHRcdHx8IHggPT09IDB4MjA3RlxuXHRcdHx8IHggPj0gMHgyMDgxICYmIHggPD0gMHgyMDg0XG5cdFx0fHwgeCA9PT0gMHgyMEFDXG5cdFx0fHwgeCA9PT0gMHgyMTAzXG5cdFx0fHwgeCA9PT0gMHgyMTA1XG5cdFx0fHwgeCA9PT0gMHgyMTA5XG5cdFx0fHwgeCA9PT0gMHgyMTEzXG5cdFx0fHwgeCA9PT0gMHgyMTE2XG5cdFx0fHwgeCA9PT0gMHgyMTIxXG5cdFx0fHwgeCA9PT0gMHgyMTIyXG5cdFx0fHwgeCA9PT0gMHgyMTI2XG5cdFx0fHwgeCA9PT0gMHgyMTJCXG5cdFx0fHwgeCA9PT0gMHgyMTUzXG5cdFx0fHwgeCA9PT0gMHgyMTU0XG5cdFx0fHwgeCA+PSAweDIxNUIgJiYgeCA8PSAweDIxNUVcblx0XHR8fCB4ID49IDB4MjE2MCAmJiB4IDw9IDB4MjE2QlxuXHRcdHx8IHggPj0gMHgyMTcwICYmIHggPD0gMHgyMTc5XG5cdFx0fHwgeCA9PT0gMHgyMTg5XG5cdFx0fHwgeCA+PSAweDIxOTAgJiYgeCA8PSAweDIxOTlcblx0XHR8fCB4ID09PSAweDIxQjhcblx0XHR8fCB4ID09PSAweDIxQjlcblx0XHR8fCB4ID09PSAweDIxRDJcblx0XHR8fCB4ID09PSAweDIxRDRcblx0XHR8fCB4ID09PSAweDIxRTdcblx0XHR8fCB4ID09PSAweDIyMDBcblx0XHR8fCB4ID09PSAweDIyMDJcblx0XHR8fCB4ID09PSAweDIyMDNcblx0XHR8fCB4ID09PSAweDIyMDdcblx0XHR8fCB4ID09PSAweDIyMDhcblx0XHR8fCB4ID09PSAweDIyMEJcblx0XHR8fCB4ID09PSAweDIyMEZcblx0XHR8fCB4ID09PSAweDIyMTFcblx0XHR8fCB4ID09PSAweDIyMTVcblx0XHR8fCB4ID09PSAweDIyMUFcblx0XHR8fCB4ID49IDB4MjIxRCAmJiB4IDw9IDB4MjIyMFxuXHRcdHx8IHggPT09IDB4MjIyM1xuXHRcdHx8IHggPT09IDB4MjIyNVxuXHRcdHx8IHggPj0gMHgyMjI3ICYmIHggPD0gMHgyMjJDXG5cdFx0fHwgeCA9PT0gMHgyMjJFXG5cdFx0fHwgeCA+PSAweDIyMzQgJiYgeCA8PSAweDIyMzdcblx0XHR8fCB4ID09PSAweDIyM0Ncblx0XHR8fCB4ID09PSAweDIyM0Rcblx0XHR8fCB4ID09PSAweDIyNDhcblx0XHR8fCB4ID09PSAweDIyNENcblx0XHR8fCB4ID09PSAweDIyNTJcblx0XHR8fCB4ID09PSAweDIyNjBcblx0XHR8fCB4ID09PSAweDIyNjFcblx0XHR8fCB4ID49IDB4MjI2NCAmJiB4IDw9IDB4MjI2N1xuXHRcdHx8IHggPT09IDB4MjI2QVxuXHRcdHx8IHggPT09IDB4MjI2QlxuXHRcdHx8IHggPT09IDB4MjI2RVxuXHRcdHx8IHggPT09IDB4MjI2RlxuXHRcdHx8IHggPT09IDB4MjI4MlxuXHRcdHx8IHggPT09IDB4MjI4M1xuXHRcdHx8IHggPT09IDB4MjI4NlxuXHRcdHx8IHggPT09IDB4MjI4N1xuXHRcdHx8IHggPT09IDB4MjI5NVxuXHRcdHx8IHggPT09IDB4MjI5OVxuXHRcdHx8IHggPT09IDB4MjJBNVxuXHRcdHx8IHggPT09IDB4MjJCRlxuXHRcdHx8IHggPT09IDB4MjMxMlxuXHRcdHx8IHggPj0gMHgyNDYwICYmIHggPD0gMHgyNEU5XG5cdFx0fHwgeCA+PSAweDI0RUIgJiYgeCA8PSAweDI1NEJcblx0XHR8fCB4ID49IDB4MjU1MCAmJiB4IDw9IDB4MjU3M1xuXHRcdHx8IHggPj0gMHgyNTgwICYmIHggPD0gMHgyNThGXG5cdFx0fHwgeCA+PSAweDI1OTIgJiYgeCA8PSAweDI1OTVcblx0XHR8fCB4ID09PSAweDI1QTBcblx0XHR8fCB4ID09PSAweDI1QTFcblx0XHR8fCB4ID49IDB4MjVBMyAmJiB4IDw9IDB4MjVBOVxuXHRcdHx8IHggPT09IDB4MjVCMlxuXHRcdHx8IHggPT09IDB4MjVCM1xuXHRcdHx8IHggPT09IDB4MjVCNlxuXHRcdHx8IHggPT09IDB4MjVCN1xuXHRcdHx8IHggPT09IDB4MjVCQ1xuXHRcdHx8IHggPT09IDB4MjVCRFxuXHRcdHx8IHggPT09IDB4MjVDMFxuXHRcdHx8IHggPT09IDB4MjVDMVxuXHRcdHx8IHggPj0gMHgyNUM2ICYmIHggPD0gMHgyNUM4XG5cdFx0fHwgeCA9PT0gMHgyNUNCXG5cdFx0fHwgeCA+PSAweDI1Q0UgJiYgeCA8PSAweDI1RDFcblx0XHR8fCB4ID49IDB4MjVFMiAmJiB4IDw9IDB4MjVFNVxuXHRcdHx8IHggPT09IDB4MjVFRlxuXHRcdHx8IHggPT09IDB4MjYwNVxuXHRcdHx8IHggPT09IDB4MjYwNlxuXHRcdHx8IHggPT09IDB4MjYwOVxuXHRcdHx8IHggPT09IDB4MjYwRVxuXHRcdHx8IHggPT09IDB4MjYwRlxuXHRcdHx8IHggPT09IDB4MjYxQ1xuXHRcdHx8IHggPT09IDB4MjYxRVxuXHRcdHx8IHggPT09IDB4MjY0MFxuXHRcdHx8IHggPT09IDB4MjY0MlxuXHRcdHx8IHggPT09IDB4MjY2MFxuXHRcdHx8IHggPT09IDB4MjY2MVxuXHRcdHx8IHggPj0gMHgyNjYzICYmIHggPD0gMHgyNjY1XG5cdFx0fHwgeCA+PSAweDI2NjcgJiYgeCA8PSAweDI2NkFcblx0XHR8fCB4ID09PSAweDI2NkNcblx0XHR8fCB4ID09PSAweDI2NkRcblx0XHR8fCB4ID09PSAweDI2NkZcblx0XHR8fCB4ID09PSAweDI2OUVcblx0XHR8fCB4ID09PSAweDI2OUZcblx0XHR8fCB4ID09PSAweDI2QkZcblx0XHR8fCB4ID49IDB4MjZDNiAmJiB4IDw9IDB4MjZDRFxuXHRcdHx8IHggPj0gMHgyNkNGICYmIHggPD0gMHgyNkQzXG5cdFx0fHwgeCA+PSAweDI2RDUgJiYgeCA8PSAweDI2RTFcblx0XHR8fCB4ID09PSAweDI2RTNcblx0XHR8fCB4ID09PSAweDI2RThcblx0XHR8fCB4ID09PSAweDI2RTlcblx0XHR8fCB4ID49IDB4MjZFQiAmJiB4IDw9IDB4MjZGMVxuXHRcdHx8IHggPT09IDB4MjZGNFxuXHRcdHx8IHggPj0gMHgyNkY2ICYmIHggPD0gMHgyNkY5XG5cdFx0fHwgeCA9PT0gMHgyNkZCXG5cdFx0fHwgeCA9PT0gMHgyNkZDXG5cdFx0fHwgeCA9PT0gMHgyNkZFXG5cdFx0fHwgeCA9PT0gMHgyNkZGXG5cdFx0fHwgeCA9PT0gMHgyNzNEXG5cdFx0fHwgeCA+PSAweDI3NzYgJiYgeCA8PSAweDI3N0Zcblx0XHR8fCB4ID49IDB4MkI1NiAmJiB4IDw9IDB4MkI1OVxuXHRcdHx8IHggPj0gMHgzMjQ4ICYmIHggPD0gMHgzMjRGXG5cdFx0fHwgeCA+PSAweEUwMDAgJiYgeCA8PSAweEY4RkZcblx0XHR8fCB4ID49IDB4RkUwMCAmJiB4IDw9IDB4RkUwRlxuXHRcdHx8IHggPT09IDB4RkZGRFxuXHRcdHx8IHggPj0gMHgxRjEwMCAmJiB4IDw9IDB4MUYxMEFcblx0XHR8fCB4ID49IDB4MUYxMTAgJiYgeCA8PSAweDFGMTJEXG5cdFx0fHwgeCA+PSAweDFGMTMwICYmIHggPD0gMHgxRjE2OVxuXHRcdHx8IHggPj0gMHgxRjE3MCAmJiB4IDw9IDB4MUYxOERcblx0XHR8fCB4ID09PSAweDFGMThGXG5cdFx0fHwgeCA9PT0gMHgxRjE5MFxuXHRcdHx8IHggPj0gMHgxRjE5QiAmJiB4IDw9IDB4MUYxQUNcblx0XHR8fCB4ID49IDB4RTAxMDAgJiYgeCA8PSAweEUwMUVGXG5cdFx0fHwgeCA+PSAweEYwMDAwICYmIHggPD0gMHhGRkZGRFxuXHRcdHx8IHggPj0gMHgxMDAwMDAgJiYgeCA8PSAweDEwRkZGRDtcbn1cblxuZnVuY3Rpb24gaXNGdWxsV2lkdGgoeCkge1xuXHRyZXR1cm4geCA9PT0gMHgzMDAwXG5cdFx0fHwgeCA+PSAweEZGMDEgJiYgeCA8PSAweEZGNjBcblx0XHR8fCB4ID49IDB4RkZFMCAmJiB4IDw9IDB4RkZFNjtcbn1cblxuZnVuY3Rpb24gaXNXaWRlKHgpIHtcblx0cmV0dXJuIHggPj0gMHgxMTAwICYmIHggPD0gMHgxMTVGXG5cdFx0fHwgeCA9PT0gMHgyMzFBXG5cdFx0fHwgeCA9PT0gMHgyMzFCXG5cdFx0fHwgeCA9PT0gMHgyMzI5XG5cdFx0fHwgeCA9PT0gMHgyMzJBXG5cdFx0fHwgeCA+PSAweDIzRTkgJiYgeCA8PSAweDIzRUNcblx0XHR8fCB4ID09PSAweDIzRjBcblx0XHR8fCB4ID09PSAweDIzRjNcblx0XHR8fCB4ID09PSAweDI1RkRcblx0XHR8fCB4ID09PSAweDI1RkVcblx0XHR8fCB4ID09PSAweDI2MTRcblx0XHR8fCB4ID09PSAweDI2MTVcblx0XHR8fCB4ID49IDB4MjYzMCAmJiB4IDw9IDB4MjYzN1xuXHRcdHx8IHggPj0gMHgyNjQ4ICYmIHggPD0gMHgyNjUzXG5cdFx0fHwgeCA9PT0gMHgyNjdGXG5cdFx0fHwgeCA+PSAweDI2OEEgJiYgeCA8PSAweDI2OEZcblx0XHR8fCB4ID09PSAweDI2OTNcblx0XHR8fCB4ID09PSAweDI2QTFcblx0XHR8fCB4ID09PSAweDI2QUFcblx0XHR8fCB4ID09PSAweDI2QUJcblx0XHR8fCB4ID09PSAweDI2QkRcblx0XHR8fCB4ID09PSAweDI2QkVcblx0XHR8fCB4ID09PSAweDI2QzRcblx0XHR8fCB4ID09PSAweDI2QzVcblx0XHR8fCB4ID09PSAweDI2Q0Vcblx0XHR8fCB4ID09PSAweDI2RDRcblx0XHR8fCB4ID09PSAweDI2RUFcblx0XHR8fCB4ID09PSAweDI2RjJcblx0XHR8fCB4ID09PSAweDI2RjNcblx0XHR8fCB4ID09PSAweDI2RjVcblx0XHR8fCB4ID09PSAweDI2RkFcblx0XHR8fCB4ID09PSAweDI2RkRcblx0XHR8fCB4ID09PSAweDI3MDVcblx0XHR8fCB4ID09PSAweDI3MEFcblx0XHR8fCB4ID09PSAweDI3MEJcblx0XHR8fCB4ID09PSAweDI3Mjhcblx0XHR8fCB4ID09PSAweDI3NENcblx0XHR8fCB4ID09PSAweDI3NEVcblx0XHR8fCB4ID49IDB4Mjc1MyAmJiB4IDw9IDB4Mjc1NVxuXHRcdHx8IHggPT09IDB4Mjc1N1xuXHRcdHx8IHggPj0gMHgyNzk1ICYmIHggPD0gMHgyNzk3XG5cdFx0fHwgeCA9PT0gMHgyN0IwXG5cdFx0fHwgeCA9PT0gMHgyN0JGXG5cdFx0fHwgeCA9PT0gMHgyQjFCXG5cdFx0fHwgeCA9PT0gMHgyQjFDXG5cdFx0fHwgeCA9PT0gMHgyQjUwXG5cdFx0fHwgeCA9PT0gMHgyQjU1XG5cdFx0fHwgeCA+PSAweDJFODAgJiYgeCA8PSAweDJFOTlcblx0XHR8fCB4ID49IDB4MkU5QiAmJiB4IDw9IDB4MkVGM1xuXHRcdHx8IHggPj0gMHgyRjAwICYmIHggPD0gMHgyRkQ1XG5cdFx0fHwgeCA+PSAweDJGRjAgJiYgeCA8PSAweDJGRkZcblx0XHR8fCB4ID49IDB4MzAwMSAmJiB4IDw9IDB4MzAzRVxuXHRcdHx8IHggPj0gMHgzMDQxICYmIHggPD0gMHgzMDk2XG5cdFx0fHwgeCA+PSAweDMwOTkgJiYgeCA8PSAweDMwRkZcblx0XHR8fCB4ID49IDB4MzEwNSAmJiB4IDw9IDB4MzEyRlxuXHRcdHx8IHggPj0gMHgzMTMxICYmIHggPD0gMHgzMThFXG5cdFx0fHwgeCA+PSAweDMxOTAgJiYgeCA8PSAweDMxRTVcblx0XHR8fCB4ID49IDB4MzFFRiAmJiB4IDw9IDB4MzIxRVxuXHRcdHx8IHggPj0gMHgzMjIwICYmIHggPD0gMHgzMjQ3XG5cdFx0fHwgeCA+PSAweDMyNTAgJiYgeCA8PSAweEE0OENcblx0XHR8fCB4ID49IDB4QTQ5MCAmJiB4IDw9IDB4QTRDNlxuXHRcdHx8IHggPj0gMHhBOTYwICYmIHggPD0gMHhBOTdDXG5cdFx0fHwgeCA+PSAweEFDMDAgJiYgeCA8PSAweEQ3QTNcblx0XHR8fCB4ID49IDB4RjkwMCAmJiB4IDw9IDB4RkFGRlxuXHRcdHx8IHggPj0gMHhGRTEwICYmIHggPD0gMHhGRTE5XG5cdFx0fHwgeCA+PSAweEZFMzAgJiYgeCA8PSAweEZFNTJcblx0XHR8fCB4ID49IDB4RkU1NCAmJiB4IDw9IDB4RkU2NlxuXHRcdHx8IHggPj0gMHhGRTY4ICYmIHggPD0gMHhGRTZCXG5cdFx0fHwgeCA+PSAweDE2RkUwICYmIHggPD0gMHgxNkZFNFxuXHRcdHx8IHggPT09IDB4MTZGRjBcblx0XHR8fCB4ID09PSAweDE2RkYxXG5cdFx0fHwgeCA+PSAweDE3MDAwICYmIHggPD0gMHgxODdGN1xuXHRcdHx8IHggPj0gMHgxODgwMCAmJiB4IDw9IDB4MThDRDVcblx0XHR8fCB4ID49IDB4MThDRkYgJiYgeCA8PSAweDE4RDA4XG5cdFx0fHwgeCA+PSAweDFBRkYwICYmIHggPD0gMHgxQUZGM1xuXHRcdHx8IHggPj0gMHgxQUZGNSAmJiB4IDw9IDB4MUFGRkJcblx0XHR8fCB4ID09PSAweDFBRkZEXG5cdFx0fHwgeCA9PT0gMHgxQUZGRVxuXHRcdHx8IHggPj0gMHgxQjAwMCAmJiB4IDw9IDB4MUIxMjJcblx0XHR8fCB4ID09PSAweDFCMTMyXG5cdFx0fHwgeCA+PSAweDFCMTUwICYmIHggPD0gMHgxQjE1MlxuXHRcdHx8IHggPT09IDB4MUIxNTVcblx0XHR8fCB4ID49IDB4MUIxNjQgJiYgeCA8PSAweDFCMTY3XG5cdFx0fHwgeCA+PSAweDFCMTcwICYmIHggPD0gMHgxQjJGQlxuXHRcdHx8IHggPj0gMHgxRDMwMCAmJiB4IDw9IDB4MUQzNTZcblx0XHR8fCB4ID49IDB4MUQzNjAgJiYgeCA8PSAweDFEMzc2XG5cdFx0fHwgeCA9PT0gMHgxRjAwNFxuXHRcdHx8IHggPT09IDB4MUYwQ0Zcblx0XHR8fCB4ID09PSAweDFGMThFXG5cdFx0fHwgeCA+PSAweDFGMTkxICYmIHggPD0gMHgxRjE5QVxuXHRcdHx8IHggPj0gMHgxRjIwMCAmJiB4IDw9IDB4MUYyMDJcblx0XHR8fCB4ID49IDB4MUYyMTAgJiYgeCA8PSAweDFGMjNCXG5cdFx0fHwgeCA+PSAweDFGMjQwICYmIHggPD0gMHgxRjI0OFxuXHRcdHx8IHggPT09IDB4MUYyNTBcblx0XHR8fCB4ID09PSAweDFGMjUxXG5cdFx0fHwgeCA+PSAweDFGMjYwICYmIHggPD0gMHgxRjI2NVxuXHRcdHx8IHggPj0gMHgxRjMwMCAmJiB4IDw9IDB4MUYzMjBcblx0XHR8fCB4ID49IDB4MUYzMkQgJiYgeCA8PSAweDFGMzM1XG5cdFx0fHwgeCA+PSAweDFGMzM3ICYmIHggPD0gMHgxRjM3Q1xuXHRcdHx8IHggPj0gMHgxRjM3RSAmJiB4IDw9IDB4MUYzOTNcblx0XHR8fCB4ID49IDB4MUYzQTAgJiYgeCA8PSAweDFGM0NBXG5cdFx0fHwgeCA+PSAweDFGM0NGICYmIHggPD0gMHgxRjNEM1xuXHRcdHx8IHggPj0gMHgxRjNFMCAmJiB4IDw9IDB4MUYzRjBcblx0XHR8fCB4ID09PSAweDFGM0Y0XG5cdFx0fHwgeCA+PSAweDFGM0Y4ICYmIHggPD0gMHgxRjQzRVxuXHRcdHx8IHggPT09IDB4MUY0NDBcblx0XHR8fCB4ID49IDB4MUY0NDIgJiYgeCA8PSAweDFGNEZDXG5cdFx0fHwgeCA+PSAweDFGNEZGICYmIHggPD0gMHgxRjUzRFxuXHRcdHx8IHggPj0gMHgxRjU0QiAmJiB4IDw9IDB4MUY1NEVcblx0XHR8fCB4ID49IDB4MUY1NTAgJiYgeCA8PSAweDFGNTY3XG5cdFx0fHwgeCA9PT0gMHgxRjU3QVxuXHRcdHx8IHggPT09IDB4MUY1OTVcblx0XHR8fCB4ID09PSAweDFGNTk2XG5cdFx0fHwgeCA9PT0gMHgxRjVBNFxuXHRcdHx8IHggPj0gMHgxRjVGQiAmJiB4IDw9IDB4MUY2NEZcblx0XHR8fCB4ID49IDB4MUY2ODAgJiYgeCA8PSAweDFGNkM1XG5cdFx0fHwgeCA9PT0gMHgxRjZDQ1xuXHRcdHx8IHggPj0gMHgxRjZEMCAmJiB4IDw9IDB4MUY2RDJcblx0XHR8fCB4ID49IDB4MUY2RDUgJiYgeCA8PSAweDFGNkQ3XG5cdFx0fHwgeCA+PSAweDFGNkRDICYmIHggPD0gMHgxRjZERlxuXHRcdHx8IHggPT09IDB4MUY2RUJcblx0XHR8fCB4ID09PSAweDFGNkVDXG5cdFx0fHwgeCA+PSAweDFGNkY0ICYmIHggPD0gMHgxRjZGQ1xuXHRcdHx8IHggPj0gMHgxRjdFMCAmJiB4IDw9IDB4MUY3RUJcblx0XHR8fCB4ID09PSAweDFGN0YwXG5cdFx0fHwgeCA+PSAweDFGOTBDICYmIHggPD0gMHgxRjkzQVxuXHRcdHx8IHggPj0gMHgxRjkzQyAmJiB4IDw9IDB4MUY5NDVcblx0XHR8fCB4ID49IDB4MUY5NDcgJiYgeCA8PSAweDFGOUZGXG5cdFx0fHwgeCA+PSAweDFGQTcwICYmIHggPD0gMHgxRkE3Q1xuXHRcdHx8IHggPj0gMHgxRkE4MCAmJiB4IDw9IDB4MUZBODlcblx0XHR8fCB4ID49IDB4MUZBOEYgJiYgeCA8PSAweDFGQUM2XG5cdFx0fHwgeCA+PSAweDFGQUNFICYmIHggPD0gMHgxRkFEQ1xuXHRcdHx8IHggPj0gMHgxRkFERiAmJiB4IDw9IDB4MUZBRTlcblx0XHR8fCB4ID49IDB4MUZBRjAgJiYgeCA8PSAweDFGQUY4XG5cdFx0fHwgeCA+PSAweDIwMDAwICYmIHggPD0gMHgyRkZGRFxuXHRcdHx8IHggPj0gMHgzMDAwMCAmJiB4IDw9IDB4M0ZGRkQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKGNvZGVQb2ludCkge1xuXHRpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGNvZGVQb2ludCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGNvZGUgcG9pbnQsIGdvdCBcXGAke3R5cGVvZiBjb2RlUG9pbnR9XFxgLmApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGVhc3RBc2lhbldpZHRoKGNvZGVQb2ludCwge2FtYmlndW91c0FzV2lkZSA9IGZhbHNlfSA9IHt9KSB7XG5cdHZhbGlkYXRlKGNvZGVQb2ludCk7XG5cblx0aWYgKFxuXHRcdGlzRnVsbFdpZHRoKGNvZGVQb2ludClcblx0XHR8fCBpc1dpZGUoY29kZVBvaW50KVxuXHRcdHx8IChhbWJpZ3VvdXNBc1dpZGUgJiYgaXNBbWJpZ3VvdXMoY29kZVBvaW50KSlcblx0KSB7XG5cdFx0cmV0dXJuIDI7XG5cdH1cblxuXHRyZXR1cm4gMTtcbn1cblxuY29uc3QgZW1vamlSZWdleCA9ICgpID0+IHtcblx0Ly8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppXG5cdHJldHVybiAvWyMqMC05XVxcdUZFMEY/XFx1MjBFM3xbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMUFcXHUyMzFCXFx1MjMyOFxcdTIzQ0ZcXHUyM0VELVxcdTIzRUZcXHUyM0YxXFx1MjNGMlxcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQlxcdTI1RkNcXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjIwXFx1MjYyMlxcdTI2MjNcXHUyNjI2XFx1MjYyQVxcdTI2MkVcXHUyNjJGXFx1MjYzOC1cXHUyNjNBXFx1MjY0MFxcdTI2NDJcXHUyNjQ4LVxcdTI2NTNcXHUyNjVGXFx1MjY2MFxcdTI2NjNcXHUyNjY1XFx1MjY2NlxcdTI2NjhcXHUyNjdCXFx1MjY3RVxcdTI2N0ZcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkFBXFx1MjZCMFxcdTI2QjFcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM4XFx1MjZDRlxcdTI2RDFcXHUyNkU5XFx1MjZGMC1cXHUyNkY1XFx1MjZGN1xcdTI2RjhcXHUyNkZBXFx1MjcwMlxcdTI3MDhcXHUyNzA5XFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NTdcXHUyNzYzXFx1MjdBMVxcdTI5MzRcXHUyOTM1XFx1MkIwNS1cXHUyQjA3XFx1MkIxQlxcdTJCMUNcXHUyQjU1XFx1MzAzMFxcdTMwM0RcXHUzMjk3XFx1MzI5OV1cXHVGRTBGP3xbXFx1MjYxRFxcdTI3MENcXHUyNzBEXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT98W1xcdTI3MEFcXHUyNzBCXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNjkzXFx1MjZBMVxcdTI2QUJcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzk1LVxcdTI3OTdcXHUyN0IwXFx1MjdCRlxcdTJCNTBdfFxcdTI2RDNcXHVGRTBGPyg/OlxcdTIwMERcXHVEODNEXFx1RENBNSk/fFxcdTI2RjkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdTI3NjRcXHVGRTBGPyg/OlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSkpP3xcXHVEODNDKD86W1xcdURDMDRcXHVERDcwXFx1REQ3MVxcdUREN0VcXHVERDdGXFx1REUwMlxcdURFMzdcXHVERjIxXFx1REYyNC1cXHVERjJDXFx1REYzNlxcdURGN0RcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUVcXHVERjlGXFx1REZDRFxcdURGQ0VcXHVERkQ0LVxcdURGREZcXHVERkY1XFx1REZGN11cXHVGRTBGP3xbXFx1REY4NVxcdURGQzJcXHVERkM3XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY0M1xcdURGNDUtXFx1REY0QVxcdURGNEMtXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY3XFx1RERGQS1cXHVEREZGXXxcXHVEREU5XFx1RDgzQ1tcXHVEREVBXFx1RERFQ1xcdURERUZcXHVEREYwXFx1RERGMlxcdURERjRcXHVEREZGXXxcXHVEREVBXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRFxcdURERjctXFx1RERGQV18XFx1RERFQlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XXxcXHVEREVDXFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRVxcdURERjEtXFx1RERGM1xcdURERjUtXFx1RERGQVxcdURERkNcXHVEREZFXXxcXHVEREVEXFx1RDgzQ1tcXHVEREYwXFx1RERGMlxcdURERjNcXHVEREY3XFx1RERGOVxcdURERkFdfFxcdURERUVcXHVEODNDW1xcdURERTgtXFx1RERFQVxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOV18XFx1RERFRlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV18XFx1RERGMFxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdfFxcdURERjFcXHVEODNDW1xcdURERTYtXFx1RERFOFxcdURERUVcXHVEREYwXFx1RERGNy1cXHVEREZCXFx1RERGRV18XFx1RERGMlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl18XFx1RERGM1xcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBLVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjRcXHVEREY1XFx1RERGN1xcdURERkFcXHVEREZGXXxcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RERGNVxcdUQ4M0NbXFx1RERFNlxcdURERUEtXFx1RERFRFxcdURERjAtXFx1RERGM1xcdURERjctXFx1RERGOVxcdURERkNcXHVEREZFXXxcXHVEREY2XFx1RDgzQ1xcdURERTZ8XFx1RERGN1xcdUQ4M0NbXFx1RERFQVxcdURERjRcXHVEREY4XFx1RERGQVxcdURERkNdfFxcdURERjhcXHVEODNDW1xcdURERTYtXFx1RERFQVxcdURERUMtXFx1RERGNFxcdURERjctXFx1RERGOVxcdURERkJcXHVEREZELVxcdURERkZdfFxcdURERjlcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRFxcdURERUYtXFx1RERGNFxcdURERjdcXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZGXXxcXHVEREZBXFx1RDgzQ1tcXHVEREU2XFx1RERFQ1xcdURERjJcXHVEREYzXFx1RERGOFxcdURERkVcXHVEREZGXXxcXHVEREZCXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRVxcdURERjNcXHVEREZBXXxcXHVEREZDXFx1RDgzQ1tcXHVEREVCXFx1RERGOF18XFx1RERGRFxcdUQ4M0NcXHVEREYwfFxcdURERkVcXHVEODNDW1xcdURERUFcXHVEREY5XXxcXHVEREZGXFx1RDgzQ1tcXHVEREU2XFx1RERGMlxcdURERkNdfFxcdURGNDQoPzpcXHUyMDBEXFx1RDgzRFxcdURGRUIpP3xcXHVERjRCKD86XFx1MjAwRFxcdUQ4M0RcXHVERkU5KT98XFx1REZDMyg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REZGM1xcdUZFMEY/KD86XFx1MjAwRCg/OlxcdTI2QTdcXHVGRTBGP3xcXHVEODNDXFx1REYwOCkpP3xcXHVERkY0KD86XFx1MjAwRFxcdTI2MjBcXHVGRTBGP3xcXHVEQjQwXFx1REM2N1xcdURCNDBcXHVEQzYyXFx1REI0MCg/OlxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3fFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURDNzdcXHVEQjQwXFx1REM2Q1xcdURCNDBcXHVEQzczKVxcdURCNDBcXHVEQzdGKT8pfFxcdUQ4M0QoPzpbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdXFx1RkUwRj98W1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0XFx1REVCNV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0MVxcdURFNDNcXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVEQy1cXHVERURGXFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJcXHVERkYwXXxcXHVEQzA4KD86XFx1MjAwRFxcdTJCMUIpP3xcXHVEQzE1KD86XFx1MjAwRFxcdUQ4M0VcXHVEREJBKT98XFx1REMyNig/OlxcdTIwMEQoPzpcXHUyQjFCfFxcdUQ4M0RcXHVERDI1KSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzY5KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1tcXHVEQzY4XFx1REM2OV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT98XFx1REM2OVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPykpfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNkYoPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REQ3NSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REUyRSg/OlxcdTIwMERcXHVEODNEXFx1RENBOCk/fFxcdURFMzUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQUIpP3xcXHVERTM2KD86XFx1MjAwRFxcdUQ4M0NcXHVERjJCXFx1RkUwRj8pP3xcXHVERTQyKD86XFx1MjAwRFtcXHUyMTk0XFx1MjE5NV1cXHVGRTBGPyk/fFxcdURFQjYoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMEQoPzpbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98XFx1MjdBMVxcdUZFMEY/KSk/KXxcXHVEODNFKD86W1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFGXFx1REQzMC1cXHVERDM0XFx1REQzNlxcdURENzdcXHVEREI1XFx1RERCNlxcdUREQkJcXHVEREQyXFx1REREM1xcdURERDVcXHVERUMzLVxcdURFQzVcXHVERUYwXFx1REVGMi1cXHVERUY4XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENEXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg5XFx1REU4Ri1cXHVERUMyXFx1REVDNlxcdURFQ0UtXFx1REVEQ1xcdURFREYtXFx1REVFOV18XFx1REQzQyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj98XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98XFx1RERDRSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REREMSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1REREMVxcdTIwMERcXHVEODNFXFx1REREMig/OlxcdTIwMERcXHVEODNFXFx1REREMik/fFxcdURERDIoPzpcXHUyMDBEXFx1RDgzRVxcdURERDIpPykpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkMtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmNvbnN0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigpO1xuXG5jb25zdCBkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXggPSAvXlxccHtEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50fSQvdTtcblxuZnVuY3Rpb24gc3RyaW5nV2lkdGgkMShzdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycgfHwgc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Y29uc3Qge1xuXHRcdGFtYmlndW91c0lzTmFycm93ID0gdHJ1ZSxcblx0XHRjb3VudEFuc2lFc2NhcGVDb2RlcyA9IGZhbHNlLFxuXHR9ID0gb3B0aW9ucztcblxuXHRpZiAoIWNvdW50QW5zaUVzY2FwZUNvZGVzKSB7XG5cdFx0c3RyaW5nID0gc3RyaXBBbnNpKHN0cmluZyk7XG5cdH1cblxuXHRpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0bGV0IHdpZHRoID0gMDtcblx0Y29uc3QgZWFzdEFzaWFuV2lkdGhPcHRpb25zID0ge2FtYmlndW91c0FzV2lkZTogIWFtYmlndW91c0lzTmFycm93fTtcblxuXHRmb3IgKGNvbnN0IHtzZWdtZW50OiBjaGFyYWN0ZXJ9IG9mIHNlZ21lbnRlci5zZWdtZW50KHN0cmluZykpIHtcblx0XHRjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMCk7XG5cblx0XHQvLyBJZ25vcmUgY29udHJvbCBjaGFyYWN0ZXJzXG5cdFx0aWYgKGNvZGVQb2ludCA8PSAweDFGIHx8IChjb2RlUG9pbnQgPj0gMHg3RiAmJiBjb2RlUG9pbnQgPD0gMHg5RikpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIElnbm9yZSB6ZXJvLXdpZHRoIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4MjBfMEIgJiYgY29kZVBvaW50IDw9IDB4MjBfMEYpIC8vIFplcm8td2lkdGggc3BhY2UsIG5vbi1qb2luZXIsIGpvaW5lciwgbGVmdC10by1yaWdodCBtYXJrLCByaWdodC10by1sZWZ0IG1hcmtcblx0XHRcdHx8IGNvZGVQb2ludCA9PT0gMHhGRV9GRiAvLyBaZXJvLXdpZHRoIG5vLWJyZWFrIHNwYWNlXG5cdFx0KSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSAvLyBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3Ncblx0XHRcdHx8IChjb2RlUG9pbnQgPj0gMHgxQV9CMCAmJiBjb2RlUG9pbnQgPD0gMHgxQV9GRikgLy8gQ29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGV4dGVuZGVkXG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MURfQzAgJiYgY29kZVBvaW50IDw9IDB4MURfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBzdXBwbGVtZW50XG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MjBfRDAgJiYgY29kZVBvaW50IDw9IDB4MjBfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc1xuXHRcdFx0fHwgKGNvZGVQb2ludCA+PSAweEZFXzIwICYmIGNvZGVQb2ludCA8PSAweEZFXzJGKSAvLyBDb21iaW5pbmcgaGFsZiBtYXJrc1xuXHRcdCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHN1cnJvZ2F0ZSBwYWlyc1xuXHRcdGlmIChjb2RlUG9pbnQgPj0gMHhEOF8wMCAmJiBjb2RlUG9pbnQgPD0gMHhERl9GRikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHZhcmlhdGlvbiBzZWxlY3RvcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4RkVfMDAgJiYgY29kZVBvaW50IDw9IDB4RkVfMEYpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIFRoaXMgY292ZXJzIHNvbWUgb2YgdGhlIGFib3ZlIGNhc2VzLCBidXQgd2Ugc3RpbGwga2VlcCB0aGVtIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLlxuXHRcdGlmIChkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXgudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBUT0RPOiBVc2UgYC9cXHB7UkdJX0Vtb2ppfS92YCB3aGVuIHRhcmdldGluZyBOb2RlLmpzIDIwLlxuXHRcdGlmIChlbW9qaVJlZ2V4KCkudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0d2lkdGggKz0gZWFzdEFzaWFuV2lkdGgoY29kZVBvaW50LCBlYXN0QXNpYW5XaWR0aE9wdGlvbnMpO1xuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGNvbnN0IHtlbnZ9ID0gcHJvY2VzcyQxO1xuXHRjb25zdCB7VEVSTSwgVEVSTV9QUk9HUkFNfSA9IGVudjtcblxuXHRpZiAocHJvY2VzcyQxLnBsYXRmb3JtICE9PSAnd2luMzInKSB7XG5cdFx0cmV0dXJuIFRFUk0gIT09ICdsaW51eCc7IC8vIExpbnV4IGNvbnNvbGUgKGtlcm5lbClcblx0fVxuXG5cdHJldHVybiBCb29sZWFuKGVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihlbnYuVEVSTUlOVVNfU1VCTElNRSkgLy8gVGVybWludXMgKDwwLjIuMjcpXG5cdFx0fHwgZW52LkNvbkVtdVRhc2sgPT09ICd7Y21kOjpDbWRlcn0nIC8vIENvbkVtdSBhbmQgY21kZXJcblx0XHR8fCBURVJNX1BST0dSQU0gPT09ICdUZXJtaW51cy1TdWJsaW1lJ1xuXHRcdHx8IFRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBURVJNID09PSAneHRlcm0tMjU2Y29sb3InXG5cdFx0fHwgVEVSTSA9PT0gJ2FsYWNyaXR0eSdcblx0XHR8fCBURVJNID09PSAncnh2dC11bmljb2RlJ1xuXHRcdHx8IFRFUk0gPT09ICdyeHZ0LXVuaWNvZGUtMjU2Y29sb3InXG5cdFx0fHwgZW52LlRFUk1JTkFMX0VNVUxBVE9SID09PSAnSmV0QnJhaW5zLUplZGlUZXJtJztcbn1cblxuY29uc3QgVFlQRV9DT0xPUl9NQVAgPSB7XG4gIGluZm86IFwiY3lhblwiLFxuICBmYWlsOiBcInJlZFwiLFxuICBzdWNjZXNzOiBcImdyZWVuXCIsXG4gIHJlYWR5OiBcImdyZWVuXCIsXG4gIHN0YXJ0OiBcIm1hZ2VudGFcIlxufTtcbmNvbnN0IExFVkVMX0NPTE9SX01BUCA9IHtcbiAgMDogXCJyZWRcIixcbiAgMTogXCJ5ZWxsb3dcIlxufTtcbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBUWVBFX0lDT05TID0ge1xuICBlcnJvcjogcyhcIlxcdTI3MTZcIiwgXCJcXHhEN1wiKSxcbiAgZmF0YWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHJlYWR5OiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIHdhcm46IHMoXCJcXHUyNkEwXCIsIFwiXFx1MjAzQ1wiKSxcbiAgaW5mbzogcyhcIlxcdTIxMzlcIiwgXCJpXCIpLFxuICBzdWNjZXNzOiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIGRlYnVnOiBzKFwiXFx1MjY5OVwiLCBcIkRcIiksXG4gIHRyYWNlOiBzKFwiXFx1MjE5MlwiLCBcIlxcdTIxOTJcIiksXG4gIGZhaWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHN0YXJ0OiBzKFwiXFx1MjVEMFwiLCBcIm9cIiksXG4gIGxvZzogXCJcIlxufTtcbmZ1bmN0aW9uIHN0cmluZ1dpZHRoKHN0cikge1xuICBjb25zdCBoYXNJQ1UgPSB0eXBlb2YgSW50bCA9PT0gXCJvYmplY3RcIjtcbiAgaWYgKCFoYXNJQ1UgfHwgIUludGwuU2VnbWVudGVyKSB7XG4gICAgcmV0dXJuIHN0cmlwQW5zaSQxKHN0cikubGVuZ3RoO1xuICB9XG4gIHJldHVybiBzdHJpbmdXaWR0aCQxKHN0cik7XG59XG5jbGFzcyBGYW5jeVJlcG9ydGVyIGV4dGVuZHMgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBgXG4ke2luZGVudH1gICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihgXG4ke2luZGVudH1gKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShUIHx8IEEpID8gbmV3IEZhbmN5UmVwb3J0ZXIoKSA6IG5ldyBCYXNpY1JlcG9ydGVyKClcbiAgICBdLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG4gIHJldHVybiBjb25zb2xhMjtcbn1cbmZ1bmN0aW9uIF9nZXREZWZhdWx0TG9nTGV2ZWwoKSB7XG4gIGlmIChVKSB7XG4gICAgcmV0dXJuIExvZ0xldmVscy5kZWJ1ZztcbiAgfVxuICBpZiAoQSkge1xuICAgIHJldHVybiBMb2dMZXZlbHMud2FybjtcbiAgfVxuICByZXR1cm4gTG9nTGV2ZWxzLmluZm87XG59XG5jb25zdCBjb25zb2xhID0gY3JlYXRlQ29uc29sYSgpO1xuXG5leHBvcnQgeyBjb25zb2xhIGFzIGEsIGNyZWF0ZUNvbnNvbGEgYXMgYywgaXNVbmljb2RlU3VwcG9ydGVkIGFzIGkgfTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSB1bmljb3JuL25vLXByb2Nlc3MtZXhpdCAqL1xuaW1wb3J0IGFzc2VydCBmcm9tIFwibm9kZTphc3NlcnRcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCBmc1N5bmMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gXCJvaGFzaFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21tYW5kLCBydW5NYWluIH0gZnJvbSBcImNpdHR5XCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlTWFuaWZlc3QsIHR5cGUgUGFja2FnZU1hbmlmZXN0IH0gZnJvbSBcInF1ZXJ5LXJlZ2lzdHJ5XCI7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnQgfSBmcm9tIFwiQHBrZy1wci1uZXcvdXRpbHNcIjtcbmltcG9ydCB7XG4gIGFiYnJldmlhdGVDb21taXRIYXNoLFxuICBleHRyYWN0T3duZXJBbmRSZXBvLFxuICBleHRyYWN0UmVwb3NpdG9yeSxcbn0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcInRpbnlnbG9iYnlcIjtcbmltcG9ydCBpZ25vcmUgZnJvbSBcImlnbm9yZVwiO1xuaW1wb3J0IFwiLi9lbnZpcm9ubWVudHNcIjtcbmltcG9ydCB7IGlzQmluYXJ5RmlsZSB9IGZyb20gXCJpc2JpbmFyeWZpbGVcIjtcbmltcG9ydCB7IHdyaXRlUGFja2FnZUpTT04sIHR5cGUgUGFja2FnZUpzb24gfSBmcm9tIFwicGtnLXR5cGVzXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFRlbXBsYXRlIH0gZnJvbSBcIi4vdGVtcGxhdGVcIjtcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIkBhY3Rpb25zL2NvcmVcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBjb25zdCBBUElfVVJMOiBzdHJpbmc7XG59XG5cbnR5cGUgT3V0cHV0TWV0YWRhdGEgPSB7XG4gIHBhY2thZ2VzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHNoYXN1bTogc3RyaW5nO1xuICB9W107XG4gIHRlbXBsYXRlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgfVtdO1xufTtcblxuY29uc3QgYXBpVXJsID0gcHJvY2Vzcy5lbnYuQVBJX1VSTCA/PyBBUElfVVJMO1xuY29uc3QgcHVibGlzaFVybCA9IG5ldyBVUkwoXCIvcHVibGlzaFwiLCBhcGlVcmwpO1xuY29uc3QgY3JlYXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY3JlYXRlXCIsIGFwaVVybCk7XG5jb25zdCB1cGxvYWRNdWx0aXBhcnQgPSBuZXcgVVJMKFwiL211bHRpcGFydC91cGxvYWRcIiwgYXBpVXJsKTtcbmNvbnN0IGNvbXBsZXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY29tcGxldGVcIiwgYXBpVXJsKTtcblxuY29uc3QgbWFpbiA9IGRlZmluZUNvbW1hbmQoe1xuICBtZXRhOiB7XG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbmFtZTogXCJzdGFja2JsaXR6XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBDTEkgZm9yIHBrZy5wci5uZXcgKENvbnRpbnVvdXMgUmVsZWFzZXMpXCIsXG4gIH0sXG4gIHN1YkNvbW1hbmRzOiB7XG4gICAgcHVibGlzaDogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGNvbXBhY3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiY29tcGFjdCB1cmxzLiBUaGUgc2hvcnRlc3QgZm9ybSBvZiB1cmxzIGxpa2UgcGtnLnByLm5ldy90aW55YmVuY2hAYTgzMmE1NSlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBlZXJEZXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImhhbmRsZSBwZWVyRGVwZW5kZW5jaWVzIGJ5IHNldHRpbmcgdGhlIHdvcmtzcGFjZSB2ZXJzaW9uIGluc3RlYWQgb2Ygd2hhdCBoYXMgYmVlbiBzZXQgaW4gdGhlIHBlZXJEZXBzIGl0c2VsZi4gLS1wZWVyRGVwcyBub3QgYmVpbmcgdHJ1ZSB3b3VsZCBsZWF2ZSBwZWVyRGVwZW5kZW5jaWVzIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIgaXRzZWxmIChucG0sIHBucG0pXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBucG06IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwidXNlIGBwbnBtIHBhY2tgIGluc3RlYWQgb2YgYG5wbSBwYWNrIC0tanNvbmBcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlhcm46IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwidXNlIGB5YXJuIHBhY2tgIGluc3RlYWQgb2YgYG5wbSBwYWNrIC0tanNvbmBcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiZ2VuZXJhdGUgc3RhY2tibGl0eiB0ZW1wbGF0ZXMgb3V0IG9mIGRpcmVjdG9yaWVzIGluIHRoZSBjdXJyZW50IHJlcG8gd2l0aCB0aGUgbmV3IGJ1aWx0IHBhY2thZ2VzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21tZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLCAvLyBcIm9mZlwiLCBcImNyZWF0ZVwiLCBcInVwZGF0ZVwiIChkZWZhdWx0KVxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBcIm9mZlwiIGZvciBubyBjb21tZW50cyAoc2lsZW50IG1vZGUpLiBcImNyZWF0ZVwiIGZvciBjb21tZW50IG9uIGVhY2ggcHVibGlzaC4gXCJ1cGRhdGVcIiBmb3Igb25lIGNvbW1lbnQgYWNyb3NzIHRoZSBwdWxsIHJlcXVlc3Qgd2l0aCBlZGl0cyBvbiBlYWNoIHB1Ymxpc2ggKGRlZmF1bHQpYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwidXBkYXRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9ubHktdGVtcGxhdGVzXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBnZW5lcmF0ZSBvbmx5IHN0YWNrYmxpdHogdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgdHlwZTogXCJtaXhlZFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBTYXZlIG1ldGFkYXRhIHRvIGEgSlNPTiBmaWxlLiBJZiB0cnVlLCBsb2cgdGhlIG91dHB1dCBmb3IgcGlwaW5nLiBJZiBhIHN0cmluZywgc2F2ZSB0aGUgb3V0cHV0IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBwYXRoLmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWNrYWdlTWFuYWdlcjoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNwZWNpZnkgdGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2UgKG5wbSwgYnVuLCBwbnBtLCB5YXJuKVwiLFxuICAgICAgICAgICAgZW51bTogW1wibnBtXCIsIFwiYnVuXCIsIFwicG5wbVwiLCBcInlhcm5cIl0sXG4gICAgICAgICAgICBkZWZhdWx0OiBcIm5wbVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNldCB0byB0cnVlIGlmIHlvdXIgcGFja2FnZSBpcyBhIGJpbmFyeSBhcHBsaWNhdGlvbiBhbmQgeW91IHdvdWxkIGxpa2UgdG8gc2hvdyBhbiBleGVjdXRlIGNvbW1hbmQgaW5zdGVhZCBvZiBhbiBpbnN0YWxsIGNvbW1hbmQuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcnVuOiBhc3luYyAoeyBhcmdzIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRocyA9XG4gICAgICAgICAgICBhcmdzLl8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGF3YWl0IGdsb2IoYXJncy5fLCB7XG4gICAgICAgICAgICAgICAgICBleHBhbmREaXJlY3RvcmllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBvbmx5RGlyZWN0b3JpZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IFtwcm9jZXNzLmN3ZCgpXTtcblxuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IGF3YWl0IGdsb2IoYXJncy50ZW1wbGF0ZSB8fCBbXSwge1xuICAgICAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICAgICAgb25seURpcmVjdG9yaWVzOiB0cnVlLFxuICAgICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgY29uc3QgaXNDb21wYWN0ID0gISFhcmdzLmNvbXBhY3Q7XG4gICAgICAgICAgbGV0IHBhY2tNZXRob2Q6IFBhY2tNZXRob2QgPSBcIm5wbVwiO1xuXG4gICAgICAgICAgaWYgKGFyZ3MucG5wbSkge1xuICAgICAgICAgICAgcGFja01ldGhvZCA9IFwicG5wbVwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXJncy55YXJuKSB7XG4gICAgICAgICAgICBwYWNrTWV0aG9kID0gXCJ5YXJuXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNQZWVyRGVwc0VuYWJsZWQgPSAhIWFyZ3MucGVlckRlcHM7XG4gICAgICAgICAgY29uc3QgaXNPbmx5VGVtcGxhdGVzID0gISFhcmdzW1wib25seS10ZW1wbGF0ZXNcIl07XG4gICAgICAgICAgY29uc3QgaXNCaW5hcnlBcHBsaWNhdGlvbiA9ICEhYXJncy5iaW47XG4gICAgICAgICAgY29uc3QgY29tbWVudDogQ29tbWVudCA9IGFyZ3MuY29tbWVudCBhcyBDb21tZW50O1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFja2FnZU1hbmFnZXIgPSBhcmdzLnBhY2thZ2VNYW5hZ2VyIGFzXG4gICAgICAgICAgICB8IFwibnBtXCJcbiAgICAgICAgICAgIHwgXCJidW5cIlxuICAgICAgICAgICAgfCBcInBucG1cIlxuICAgICAgICAgICAgfCBcInlhcm5cIjtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFbXCJucG1cIiwgXCJidW5cIiwgXCJwbnBtXCIsIFwieWFyblwiXS5pbmNsdWRlcyhzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYFVuc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlcjogJHtzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyfS4gU3VwcG9ydGVkIG1hbmFnZXJzIGFyZSBucG0sIGJ1biwgcG5wbSwgeWFybi5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1QgJiYgcHJvY2Vzcy5lbnYuR0lUSFVCX0FDVElPTlMgIT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkNvbnRpbnVvdXMgUmVsZWFzZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIEdpdEh1YiBBY3Rpb25zLlwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBHSVRIVUJfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICBHSVRIVUJfUlVOX0FUVEVNUFQsXG4gICAgICAgICAgICBHSVRIVUJfQUNUT1JfSUQsXG4gICAgICAgICAgICBHSVRIVUJfT1VUUFVULFxuICAgICAgICAgIH0gPSBwcm9jZXNzLmVudjtcblxuICAgICAgICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSBHSVRIVUJfUkVQT1NJVE9SWS5zcGxpdChcIi9cIik7XG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgIHJ1bjogTnVtYmVyKEdJVEhVQl9SVU5fSUQpLFxuICAgICAgICAgICAgYXR0ZW1wdDogTnVtYmVyKEdJVEhVQl9SVU5fQVRURU1QVCksXG4gICAgICAgICAgICBhY3RvcjogTnVtYmVyKEdJVEhVQl9BQ1RPUl9JRCksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGtleSA9IGhhc2gobWV0YWRhdGEpO1xuXG4gICAgICAgICAgY29uc3QgY2hlY2tSZXNwb25zZSA9IGF3YWl0IGZldGNoKG5ldyBVUkwoXCIvY2hlY2tcIiwgYXBpVXJsKSwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKCFjaGVja1Jlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGF3YWl0IGNoZWNrUmVzcG9uc2UudGV4dCgpKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IHNoYSB9ID0gYXdhaXQgY2hlY2tSZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVkU2hhID0gaXNDb21wYWN0ID8gYWJicmV2aWF0ZUNvbW1pdEhhc2goc2hhKSA6IHNoYTtcblxuICAgICAgICAgIGNvbnN0IGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7IC8vIHBrZy5wci5uZXcgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2VcbiAgICAgICAgICBjb25zdCByZWFsRGVwczogTWFwPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBpc1BlZXJEZXBzRW5hYmxlZFxuICAgICAgICAgICAgPyBuZXcgTWFwKClcbiAgICAgICAgICAgIDogbnVsbDsgLy8gcmVhbCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgdXNlZnVsIGZvciBwZWVyRGVwZW5kZW5jaWVzXG5cbiAgICAgICAgICBjb25zdCBwcmludEpzb24gPSB0eXBlb2YgYXJncy5qc29uID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICBjb25zdCBzYXZlSnNvbiA9IHR5cGVvZiBhcmdzLmpzb24gPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgY29uc3QganNvbkZpbGVQYXRoID0gc2F2ZUpzb24gPyBhcmdzLmpzb24gOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IG91dHB1dE1ldGFkYXRhOiBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHBhY2thZ2VzOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlczogW10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ29tcGFjdCkge1xuICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlDb21wYWN0TW9kZShwSnNvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxvbmdEZXBVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vJHtwSnNvbi5uYW1lfUAke2Zvcm1hdHRlZFNoYX1gLFxuICAgICAgICAgICAgICBhcGlVcmwsXG4gICAgICAgICAgICApLmhyZWY7XG4gICAgICAgICAgICBkZXBzLnNldChwSnNvbi5uYW1lLCBsb25nRGVwVXJsKTtcbiAgICAgICAgICAgIHJlYWxEZXBzPy5zZXQocEpzb24ubmFtZSwgcEpzb24udmVyc2lvbiA/PyBsb25nRGVwVXJsKTtcblxuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc291cmNlID0gYXdhaXQgZmV0Y2gobG9uZ0RlcFVybCwge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2Uub2spIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGAke3BKc29uLm5hbWV9QCR7Zm9ybWF0dGVkU2hhfSB3YXMgYWxyZWFkeSBwdWJsaXNoZWQgb24gJHtsb25nRGVwVXJsfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250cm9sbGVyLmFib3J0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGpzb25VcmwgPSBpc0NvbXBhY3RcbiAgICAgICAgICAgICAgPyBuZXcgVVJMKGAvJHtwSnNvbi5uYW1lfUAke2Zvcm1hdHRlZFNoYX1gLCBhcGlVcmwpLmhyZWZcbiAgICAgICAgICAgICAgOiBsb25nRGVwVXJsO1xuXG4gICAgICAgICAgICAvLyBDb2xsZWN0IHBhY2thZ2UgbWV0YWRhdGFcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnBhY2thZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICB1cmw6IGpzb25VcmwsXG4gICAgICAgICAgICAgIHNoYXN1bTogXCJcIiwgLy8gd2lsbCBiZSBmaWxsZWQgbGF0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgdGVtcGxhdGVEaXIgb2YgdGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUodGVtcGxhdGVEaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb25Db250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IHBKc29uQ29udGVudHNcbiAgICAgICAgICAgICAgPyBwYXJzZVBhY2thZ2VKc29uKHBKc29uQ29udGVudHMpXG4gICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbiB8fCAhcEpzb25Db250ZW50cykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYHNraXBwaW5nICR7dGVtcGxhdGVEaXJ9IGJlY2F1c2UgdGhlcmUncyBubyBwYWNrYWdlLmpzb24gZmlsZWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwicHJlcGFyaW5nIHRlbXBsYXRlOlwiLCBwSnNvbi5uYW1lKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZSA9IGF3YWl0IHdyaXRlRGVwcyhcbiAgICAgICAgICAgICAgdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIHBKc29uQ29udGVudHMsXG4gICAgICAgICAgICAgIHBKc29uLFxuICAgICAgICAgICAgICBkZXBzLFxuICAgICAgICAgICAgICByZWFsRGVwcyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlnID0gaWdub3JlKCkuYWRkKFwibm9kZV9tb2R1bGVzXCIpLmFkZChcIi5naXRcIik7XG5cbiAgICAgICAgICAgIGlmIChmc1N5bmMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICBpZy5hZGQoZ2l0aWdub3JlQ29udGVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYihbXCIqKi8qXCJdLCB7XG4gICAgICAgICAgICAgIGN3ZDogdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgICBpZ25vcmU6IFtcIioqL25vZGVfbW9kdWxlc1wiLCBcIi5naXRcIl0sIC8vIGFsd2F5cyBpZ25vcmUgbm9kZV9tb2R1bGVzIGFuZCAuZ2l0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWlnLmlnbm9yZXMoZmlsZSkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbHRlcmVkRmlsZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbih0ZW1wbGF0ZURpciwgZmlsZVBhdGgpKTtcbiAgICAgICAgICAgICAgY29uc3QgaXNCaW5hcnkgPSBhd2FpdCBpc0JpbmFyeUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZS5idWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6JHtwSnNvbi5uYW1lfToke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBpc0JpbmFyeSA/IGJsb2IgOiBhd2FpdCBibG9iLnRleHQoKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHJlc3RvcmUoKTtcblxuICAgICAgICAgICAgLy8gQ29sbGVjdCB0ZW1wbGF0ZSBtZXRhZGF0YVxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vdGVtcGxhdGUvJHtwSnNvbi5uYW1lfWAsXG4gICAgICAgICAgICAgIGFwaVVybCxcbiAgICAgICAgICAgICkuaHJlZjtcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnRlbXBsYXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgdXJsOiB0ZW1wbGF0ZVVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5vRGVmYXVsdFRlbXBsYXRlID0gYXJncy50ZW1wbGF0ZSA9PT0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIW5vRGVmYXVsdFRlbXBsYXRlICYmIHRlbXBsYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBjcmVhdGVEZWZhdWx0VGVtcGxhdGUoXG4gICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhkZXBzLmVudHJpZXMoKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIE9iamVjdC5rZXlzKHByb2plY3QpKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6ZGVmYXVsdDoke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0W2ZpbGVQYXRoXSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXN0b3JlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2Ygd3JpdGVEZXBzPj5cbiAgICAgICAgICA+KCk7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbkNvbnRlbnRzID0gYXdhaXQgdHJ5UmVhZEZpbGUocEpzb25QYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBKc29uID0gcEpzb25Db250ZW50c1xuICAgICAgICAgICAgICA/IHBhcnNlUGFja2FnZUpzb24ocEpzb25Db250ZW50cylcbiAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uIHx8ICFwSnNvbkNvbnRlbnRzKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG9yZU1hcC5zZXQoXG4gICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgIGF3YWl0IHdyaXRlRGVwcyhwLCBwSnNvbkNvbnRlbnRzLCBwSnNvbiwgZGVwcywgcmVhbERlcHMpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaGFzdW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbihwSnNvblBhdGgpO1xuICAgICAgICAgICAgaWYgKCFwSnNvbikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYHNraXBwaW5nICR7cH0gYmVjYXVzZSB0aGVyZSdzIG5vIHBhY2thZ2UuanNvbiBmaWxlYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICghcEpzb24ubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBKc29uLnByaXZhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNraXBwaW5nICR7cH0gYmVjYXVzZSB0aGUgcGFja2FnZSBpcyBwcml2YXRlYCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaGFzdW0gfSA9IGF3YWl0IHJlc29sdmVUYXJiYWxsKFxuICAgICAgICAgICAgICAgIHBhY2tNZXRob2QsXG4gICAgICAgICAgICAgICAgcCxcbiAgICAgICAgICAgICAgICBwSnNvbixcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBzaGFzdW1zW3BKc29uLm5hbWVdID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IG91dHB1dFBrZyA9IG91dHB1dE1ldGFkYXRhLnBhY2thZ2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHApID0+IHAubmFtZSA9PT0gcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgKSE7XG4gICAgICAgICAgICAgIG91dHB1dFBrZy5zaGFzdW0gPSBzaGFzdW07XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgcGFja2FnZToke3BKc29uLm5hbWV9YCwgYmxvYiwgZmlsZW5hbWUpO1xuXG4gICAgICAgICAgICAgIGF3YWl0IGZzLnJtKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGF3YWl0IHJlc3RvcmVNYXAuZ2V0KHApPy4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YVBhY2thZ2VzU2l6ZSA9IFsuLi5mb3JtRGF0YS5lbnRyaWVzKCldLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBbXywgZW50cnldKSA9PiBwcmV2ICsgZ2V0Rm9ybUVudHJ5U2l6ZShlbnRyeSksXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBtdWx0aXBhcnQgdXBsb2FkaW5nXG4gICAgICAgICAgaWYgKGZvcm1EYXRhUGFja2FnZXNTaXplID4gMTAyNCAqIDEwMjQgKiA5OSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgZW50cnldIG9mIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJwYWNrYWdlOlwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBlbnRyeSBhcyBGaWxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IDEwMjQgKiAxMDI0ICogNTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS5zaXplIDw9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsQ2h1bmtzID0gTWF0aC5jZWlsKGZpbGUuc2l6ZSAvIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3JlYXRlTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2goY3JlYXRlTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcInNiLWtleVwiOiBrZXksXG4gICAgICAgICAgICAgICAgICAgIFwic2ItbmFtZVwiOiBuYW1lLnNsaWNlKFwicGFja2FnZTpcIi5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU11bHRpcGFydFJlcy5vaykge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihhd2FpdCBjcmVhdGVNdWx0aXBhcnRSZXMudGV4dCgpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGtleTogdXBsb2FkS2V5LCBpZDogdXBsb2FkSWQgfSA9XG4gICAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVNdWx0aXBhcnRSZXMuanNvbigpO1xuXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlIFIyVXBsb2FkZWRQYXJ0IHtcbiAgICAgICAgICAgICAgICAgIHBhcnROdW1iZXI6IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgIGV0YWc6IHN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRQYXJ0czogUjJVcGxvYWRlZFBhcnRbXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbENodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGkgKiBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihmaWxlLnNpemUsIHN0YXJ0ICsgY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gZmlsZS5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2godXBsb2FkTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgIGtleTogdXBsb2FkS2V5LFxuICAgICAgICAgICAgICAgICAgICAgIGlkOiB1cGxvYWRJZCxcbiAgICAgICAgICAgICAgICAgICAgICBcInBhcnQtbnVtYmVyXCI6IGAke2kgKyAxfWAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGNodW5rLFxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghdXBsb2FkTXVsdGlwYXJ0UmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYEVycm9yIHVwbG9hZGluZyBwYXJ0ICR7aSArIDF9OiAke2F3YWl0IHVwbG9hZE11bHRpcGFydFJlcy50ZXh0KCl9YCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb25zdCB7IHBhcnQgfSA9IGF3YWl0IHVwbG9hZE11bHRpcGFydFJlcy5qc29uKCk7XG4gICAgICAgICAgICAgICAgICB1cGxvYWRlZFBhcnRzLnB1c2gocGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlTXVsdGlwYXJ0UmVzID0gYXdhaXQgZmV0Y2goY29tcGxldGVNdWx0aXBhcnQsIHtcbiAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogdXBsb2FkS2V5LFxuICAgICAgICAgICAgICAgICAgICBpZDogdXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgICAgIFwidXBsb2FkZWQtcGFydHNcIjogSlNPTi5zdHJpbmdpZnkodXBsb2FkZWRQYXJ0cyksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghY29tcGxldGVNdWx0aXBhcnRSZXMub2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFcnJvciBjb21wbGV0aW5nICR7a2V5fTogJHthd2FpdCBjb21wbGV0ZU11bHRpcGFydFJlcy50ZXh0KCl9YCxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXk6IGNvbXBsZXRpb25LZXkgfSA9XG4gICAgICAgICAgICAgICAgICBhd2FpdCBjb21wbGV0ZU11bHRpcGFydFJlcy5qc29uKCk7XG5cbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5zZXQobmFtZSwgYG9iamVjdDoke2NvbXBsZXRpb25LZXl9YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwdWJsaXNoVXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcInNiLWNvbW1lbnRcIjogY29tbWVudCxcbiAgICAgICAgICAgICAgXCJzYi1jb21wYWN0XCI6IGAke2lzQ29tcGFjdH1gLFxuICAgICAgICAgICAgICBcInNiLWtleVwiOiBrZXksXG4gICAgICAgICAgICAgIFwic2Itc2hhc3Vtc1wiOiBKU09OLnN0cmluZ2lmeShzaGFzdW1zKSxcbiAgICAgICAgICAgICAgXCJzYi1ydW4taWRcIjogR0lUSFVCX1JVTl9JRCxcbiAgICAgICAgICAgICAgXCJzYi1iaW5cIjogYCR7aXNCaW5hcnlBcHBsaWNhdGlvbn1gLFxuICAgICAgICAgICAgICBcInNiLXBhY2thZ2UtbWFuYWdlclwiOiBzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICAgICAgICBcInNiLW9ubHktdGVtcGxhdGVzXCI6IGAke2lzT25seVRlbXBsYXRlc31gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGxhdGVyUmVzID0gYXdhaXQgcmVzLmNsb25lKCkuanNvbigpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgICAgIHJlcy5zdGF0dXMsXG4gICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICBgcHVibGlzaGluZyBmYWlsZWQ6ICR7YXdhaXQgcmVzLnRleHQoKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBkZWJ1ZyA9IGxhdGVyUmVzLmRlYnVnO1xuXG4gICAgICAgICAgY29yZS5zdGFydEdyb3VwKFwiXHVEODNEXHVERDBEIEluZm9cIik7XG4gICAgICAgICAgY29yZS5ub3RpY2UoSlNPTi5zdHJpbmdpZnkoZGVidWcsIG51bGwsIDIpKTtcbiAgICAgICAgICBjb3JlLmVuZEdyb3VwKCk7XG5cbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJcXG5cIik7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiXHUyNkExXHVGRTBGIFlvdXIgbnBtIHBhY2thZ2VzIGFyZSBwdWJsaXNoZWQuXFxuXCIpO1xuXG4gICAgICAgICAgY29uc3QgcGFja2FnZUxvZ3MgPSBbLi4uZm9ybURhdGEua2V5cygpXVxuICAgICAgICAgICAgLmZpbHRlcigoaykgPT4gay5zdGFydHNXaXRoKFwicGFja2FnZTpcIikpXG4gICAgICAgICAgICAubWFwKChuYW1lLCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gbmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChsYXRlclJlcy51cmxzW2ldKTtcbiAgICAgICAgICAgICAgY29uc3QgcHVibGludFVybCA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgICAgYC9wa2cucHIubmV3JHt1cmwucGF0aG5hbWV9YCxcbiAgICAgICAgICAgICAgICBcImh0dHBzOi8vcHVibGludC5kZXZcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfTpcbi0gc2hhOiAke3NoYXN1bXNbcGFja2FnZU5hbWVdfVxuLSBwdWJsaW50OiAke3B1YmxpbnRVcmx9XG4tIG5wbTogbnBtIGkgJHt1cmx9YDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbihcIlxcblxcblwiKTtcblxuICAgICAgICAgIGNvbnNvbGUud2FybihwYWNrYWdlTG9ncyk7XG5cbiAgICAgICAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShvdXRwdXRNZXRhZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgaWYgKHByaW50SnNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2cob3V0cHV0KTsgLy8gTG9nIG91dHB1dCBmb3IgcGlwaW5nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzYXZlSnNvbikge1xuICAgICAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGpzb25GaWxlUGF0aCwgb3V0cHV0KTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgbWV0YWRhdGEgd3JpdHRlbiB0byAke2pzb25GaWxlUGF0aH1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhd2FpdCBmcy5hcHBlbmRGaWxlKEdJVEhVQl9PVVRQVVQsIGBzaGE9JHtmb3JtYXR0ZWRTaGF9XFxuYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgIGF3YWl0IGZzLmFwcGVuZEZpbGUoXG4gICAgICAgICAgICBHSVRIVUJfT1VUUFVULFxuICAgICAgICAgICAgYHVybHM9JHtvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5tYXAoKHBrZykgPT4gcGtnLnVybCkuam9pbihcIiBcIil9XFxuYCxcbiAgICAgICAgICAgIFwidXRmOFwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgZnMuYXBwZW5kRmlsZShcbiAgICAgICAgICAgIEdJVEhVQl9PVVRQVVQsXG4gICAgICAgICAgICBgcGFja2FnZXM9JHtvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5tYXAoKHBrZykgPT4gYCR7cGtnLm5hbWV9QCR7cGtnLnVybH1gKS5qb2luKFwiIFwiKX1cXG5gLFxuICAgICAgICAgICAgXCJ1dGY4XCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaW5rOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRhOiB7fSxcbiAgICAgICAgcnVuOiAoKSA9PiB7XG4gICAgICAgICAgLy8gbm9vcFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxufSk7XG5cbnJ1bk1haW4obWFpbilcbiAgLnRoZW4oKCkgPT4gcHJvY2Vzcy5leGl0KDApKVxuICAuY2F0Y2goKCkgPT4gcHJvY2Vzcy5leGl0KDEpKTtcblxudHlwZSBQYWNrTWV0aG9kID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVUYXJiYWxsKHBtOiBQYWNrTWV0aG9kLCBwOiBzdHJpbmcsIHBKc29uOiBQYWNrYWdlSnNvbikge1xuICBsZXQgY21kID0gYCR7cG19IHBhY2tgO1xuICBsZXQgZmlsZW5hbWUgPSBgJHtwSnNvbi5uYW1lIS5yZXBsYWNlKFwiL1wiLCBcIi1cIil9LSR7cEpzb24udmVyc2lvbn0udGd6YDtcbiAgaWYgKHBtID09PSBcInlhcm5cIikge1xuICAgIGNtZCArPSBgIC0tZmlsZW5hbWUgJHtmaWxlbmFtZX1gO1xuICB9XG4gIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBlelNwYXduLmFzeW5jKGNtZCwge1xuICAgIHN0ZGlvOiBcIm92ZXJsYXBwZWRcIixcbiAgICBjd2Q6IHAsXG4gIH0pO1xuICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdChcIlxcblwiKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgaWYgKHBtICE9PSBcInlhcm5cIikge1xuICAgIGZpbGVuYW1lID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0udHJpbSgpO1xuICB9XG5cbiAgY29uc3Qgc2hhc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIilcbiAgICAudXBkYXRlKGF3YWl0IGZzLnJlYWRGaWxlKHBhdGgucmVzb2x2ZShwLCBmaWxlbmFtZSkpKVxuICAgIC5kaWdlc3QoXCJoZXhcIik7XG5cbiAgcmV0dXJuIHsgZmlsZW5hbWUsIHNoYXN1bSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZURlcHMoXG4gIHA6IHN0cmluZyxcbiAgcEpzb25Db250ZW50czogc3RyaW5nLFxuICBwSnNvbjogUGFja2FnZUpzb24sXG4gIGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIHJlYWxEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbikge1xuICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG5cbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5kZXBlbmRlbmNpZXMpO1xuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRldkRlcGVuZGVuY2llcyk7XG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24ub3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuXG4gIGlmIChyZWFsRGVwcykge1xuICAgIGhpamFja0RlcHMocmVhbERlcHMsIHBKc29uLnBlZXJEZXBlbmRlbmNpZXMpO1xuICB9XG5cbiAgYXdhaXQgd3JpdGVQYWNrYWdlSlNPTihwSnNvblBhdGgsIHBKc29uKTtcblxuICByZXR1cm4gKCkgPT4gZnMud3JpdGVGaWxlKHBKc29uUGF0aCwgcEpzb25Db250ZW50cyk7XG59XG5cbmZ1bmN0aW9uIGhpamFja0RlcHMoXG4gIG5ld0RlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIG9sZERlcHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSB7XG4gIGlmICghb2xkRGVwcykge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IFtuZXdEZXAsIHVybF0gb2YgbmV3RGVwcykge1xuICAgIGlmIChuZXdEZXAgaW4gb2xkRGVwcykge1xuICAgICAgb2xkRGVwc1tuZXdEZXBdID0gdXJsO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRGb3JtRW50cnlTaXplKGVudHJ5OiBGb3JtRGF0YUVudHJ5VmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBlbnRyeS5sZW5ndGg7XG4gIH1cbiAgcmV0dXJuIGVudHJ5LnNpemU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeUNvbXBhY3RNb2RlKHBhY2thZ2VOYW1lOiBzdHJpbmcpIHtcbiAgbGV0IG1hbmlmZXN0OiBQYWNrYWdlTWFuaWZlc3Q7XG5cbiAgdHJ5IHtcbiAgICBtYW5pZmVzdCA9IGF3YWl0IGdldFBhY2thZ2VNYW5pZmVzdChwYWNrYWdlTmFtZSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwa2ctcHItbmV3IGNhbm5vdCByZXNvbHZlICR7cGFja2FnZU5hbWV9IGZyb20gbnBtLiAtLWNvbXBhY3QgZmxhZyBkZXBlbmRzIG9uIHRoZSBwYWNrYWdlIGJlaW5nIGF2YWlsYWJsZSBpbiBucG0uXG5NYWtlIHN1cmUgdG8gaGF2ZSB5b3VyIHBhY2thZ2Ugb24gbnBtIGZpcnN0LmAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluc3RydWN0aW9uID0gYE1ha2Ugc3VyZSB0byBjb25maWd1cmUgdGhlICdyZXBvc2l0b3J5JyAvICdyZXBvc2l0b3J5LnVybCcgZmllbGQgaW4gaXRzIHBhY2thZ2UuanNvbiBwcm9wZXJseS5cblNlZSBodHRwczovL2RvY3MubnBtanMuY29tL2NsaS92MTAvY29uZmlndXJpbmctbnBtL3BhY2thZ2UtanNvbiNyZXBvc2l0b3J5IGZvciBkZXRhaWxzLmA7XG5cbiAgY29uc3QgcmVwb3NpdG9yeSA9IGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0KTtcbiAgaWYgKCFyZXBvc2l0b3J5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IGV4dHJhY3QgdGhlIHJlcG9zaXRvcnkgbGluayBmcm9tIHRoZSAke3BhY2thZ2VOYW1lfSBtYW5pZmVzdC4gLS1jb21wYWN0IGZsYWcgcmVxdWlyZXMgdGhlIGxpbmsgdG8gYmUgcHJlc2VudC5cbiR7aW5zdHJ1Y3Rpb259YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBleHRyYWN0T3duZXJBbmRSZXBvKHJlcG9zaXRvcnkpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IGV4dHJhY3QgdGhlIG93bmVyIGFuZCByZXBvIG5hbWVzIGZyb20gdGhlICR7cGFja2FnZU5hbWV9IHJlcG9zaXRvcnkgbGluazogJHtyZXBvc2l0b3J5fS4gLS1jb21wYWN0IGZsYWcgcmVxdWlyZXMgdGhlc2UgbmFtZXMuXG4ke2luc3RydWN0aW9ufWAsXG4gICAgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB0cnlSZWFkRmlsZShwOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnMucmVhZEZpbGUocCwgXCJ1dGY4XCIpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUGFja2FnZUpzb24ocDogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbnRlbnRzID0gYXdhaXQgdHJ5UmVhZEZpbGUocCk7XG4gIGlmIChjb250ZW50cyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlUGFja2FnZUpzb24oY29udGVudHMpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVBhY2thZ2VKc29uKGNvbnRlbnRzOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50cykgYXMgUGFja2FnZUpzb247XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCAiY29uc3QgZGVmYXVsdHMgPSBPYmplY3QuZnJlZXplKHtcbiAgaWdub3JlVW5rbm93bjogZmFsc2UsXG4gIHJlc3BlY3RUeXBlOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uTmFtZXM6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzOiBmYWxzZSxcbiAgdW5vcmRlcmVkT2JqZWN0czogdHJ1ZSxcbiAgdW5vcmRlcmVkQXJyYXlzOiBmYWxzZSxcbiAgdW5vcmRlcmVkU2V0czogZmFsc2UsXG4gIGV4Y2x1ZGVLZXlzOiB2b2lkIDAsXG4gIGV4Y2x1ZGVWYWx1ZXM6IHZvaWQgMCxcbiAgcmVwbGFjZXI6IHZvaWQgMFxufSk7XG5mdW5jdGlvbiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IGRlZmF1bHRzO1xuICB9XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgaGFzaGVyLmRpc3BhdGNoKG9iamVjdCk7XG4gIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbn1cbmNvbnN0IGRlZmF1bHRQcm90b3R5cGVzS2V5cyA9IE9iamVjdC5mcmVlemUoW1xuICBcInByb3RvdHlwZVwiLFxuICBcIl9fcHJvdG9fX1wiLFxuICBcImNvbnN0cnVjdG9yXCJcbl0pO1xuZnVuY3Rpb24gY3JlYXRlSGFzaGVyKG9wdGlvbnMpIHtcbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgY29udGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdyaXRlID0gKHN0cikgPT4ge1xuICAgIGJ1ZmYgKz0gc3RyO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfSxcbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBkaXNwYXRjaCh2YWx1ZSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVwbGFjZXIpIHtcbiAgICAgICAgdmFsdWUgPSBvcHRpb25zLnJlcGxhY2VyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXNbdHlwZV0odmFsdWUpO1xuICAgIH0sXG4gICAgb2JqZWN0KG9iamVjdCkge1xuICAgICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iamVjdChvYmplY3QudG9KU09OKCkpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JqU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCk7XG4gICAgICBsZXQgb2JqVHlwZSA9IFwiXCI7XG4gICAgICBjb25zdCBvYmplY3RMZW5ndGggPSBvYmpTdHJpbmcubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdExlbmd0aCA8IDEwKSB7XG4gICAgICAgIG9ialR5cGUgPSBcInVua25vd246W1wiICsgb2JqU3RyaW5nICsgXCJdXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpUeXBlID0gb2JqU3RyaW5nLnNsaWNlKDgsIG9iamVjdExlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgb2JqVHlwZSA9IG9ialR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBvYmplY3ROdW1iZXIgPSBudWxsO1xuICAgICAgaWYgKChvYmplY3ROdW1iZXIgPSBjb250ZXh0LmdldChvYmplY3QpKSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnRleHQuc2V0KG9iamVjdCwgY29udGV4dC5zaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwiW0NJUkNVTEFSOlwiICsgb2JqZWN0TnVtYmVyICsgXCJdXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgQnVmZmVyLmlzQnVmZmVyICYmIEJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIHdyaXRlKFwiYnVmZmVyOlwiKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlKG9iamVjdC50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgICAgfVxuICAgICAgaWYgKG9ialR5cGUgIT09IFwib2JqZWN0XCIgJiYgb2JqVHlwZSAhPT0gXCJmdW5jdGlvblwiICYmIG9ialR5cGUgIT09IFwiYXN5bmNmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmICh0aGlzW29ialR5cGVdKSB7XG4gICAgICAgICAgdGhpc1tvYmpUeXBlXShvYmplY3QpO1xuICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmlnbm9yZVVua25vd24pIHtcbiAgICAgICAgICB0aGlzLnVua293bihvYmplY3QsIG9ialR5cGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgICAgIGlmIChvcHRpb25zLnVub3JkZXJlZE9iamVjdHMpIHtcbiAgICAgICAgICBrZXlzID0ga2V5cy5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGV4dHJhS2V5cyA9IFtdO1xuICAgICAgICBpZiAob3B0aW9ucy5yZXNwZWN0VHlwZSAhPT0gZmFsc2UgJiYgIWlzTmF0aXZlRnVuY3Rpb24ob2JqZWN0KSkge1xuICAgICAgICAgIGV4dHJhS2V5cyA9IGRlZmF1bHRQcm90b3R5cGVzS2V5cztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5leGNsdWRlS2V5cykge1xuICAgICAgICAgIGtleXMgPSBrZXlzLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZXhjbHVkZUtleXMoa2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBleHRyYUtleXMgPSBleHRyYUtleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9ucy5leGNsdWRlS2V5cyhrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlKFwib2JqZWN0OlwiICsgKGtleXMubGVuZ3RoICsgZXh0cmFLZXlzLmxlbmd0aCkgKyBcIjpcIik7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoRm9yS2V5ID0gKGtleSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goa2V5KTtcbiAgICAgICAgICB3cml0ZShcIjpcIik7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmV4Y2x1ZGVWYWx1ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gob2JqZWN0W2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZShcIixcIik7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICBkaXNwYXRjaEZvcktleShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgIGRpc3BhdGNoRm9yS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFycmF5KGFyciwgdW5vcmRlcmVkKSB7XG4gICAgICB1bm9yZGVyZWQgPSB1bm9yZGVyZWQgPT09IHZvaWQgMCA/IG9wdGlvbnMudW5vcmRlcmVkQXJyYXlzICE9PSBmYWxzZSA6IHVub3JkZXJlZDtcbiAgICAgIHdyaXRlKFwiYXJyYXk6XCIgKyBhcnIubGVuZ3RoICsgXCI6XCIpO1xuICAgICAgaWYgKCF1bm9yZGVyZWQgfHwgYXJyLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXJyKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dEFkZGl0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBjb25zdCBlbnRyaWVzID0gYXJyLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgaGFzaGVyID0gY3JlYXRlSGFzaGVyKG9wdGlvbnMpO1xuICAgICAgICBoYXNoZXIuZGlzcGF0Y2goZW50cnkpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoYXNoZXIuZ2V0Q29udGV4dCgpKSB7XG4gICAgICAgICAgY29udGV4dEFkZGl0aW9ucy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2hlci50b1N0cmluZygpO1xuICAgICAgfSk7XG4gICAgICBjb250ZXh0ID0gY29udGV4dEFkZGl0aW9ucztcbiAgICAgIGVudHJpZXMuc29ydCgpO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoZW50cmllcywgZmFsc2UpO1xuICAgIH0sXG4gICAgZGF0ZShkYXRlKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJkYXRlOlwiICsgZGF0ZS50b0pTT04oKSk7XG4gICAgfSxcbiAgICBzeW1ib2woc3ltKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzeW1ib2w6XCIgKyBzeW0udG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICB1bmtvd24odmFsdWUsIHR5cGUpIHtcbiAgICAgIHdyaXRlKHR5cGUpO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3cml0ZShcIjpcIik7XG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheShcbiAgICAgICAgICBBcnJheS5mcm9tKHZhbHVlLmVudHJpZXMoKSksXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICAgIC8qIG9yZGVyZWQgKi9cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yKGVycikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZXJyb3I6XCIgKyBlcnIudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBib29sZWFuKGJvb2wpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJvb2w6XCIgKyBib29sKTtcbiAgICB9LFxuICAgIHN0cmluZyhzdHJpbmcpIHtcbiAgICAgIHdyaXRlKFwic3RyaW5nOlwiICsgc3RyaW5nLmxlbmd0aCArIFwiOlwiKTtcbiAgICAgIHdyaXRlKHN0cmluZyk7XG4gICAgfSxcbiAgICBmdW5jdGlvbihmbikge1xuICAgICAgd3JpdGUoXCJmbjpcIik7XG4gICAgICBpZiAoaXNOYXRpdmVGdW5jdGlvbihmbikpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChcIltuYXRpdmVdXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChmbi50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RGdW5jdGlvbk5hbWVzICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiZnVuY3Rpb24tbmFtZTpcIiArIFN0cmluZyhmbi5uYW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5yZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMub2JqZWN0KGZuKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG51bWJlcihudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIm51bWJlcjpcIiArIG51bWJlcik7XG4gICAgfSxcbiAgICB4bWwoeG1sKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ4bWw6XCIgKyB4bWwudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBudWxsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiTnVsbFwiKTtcbiAgICB9LFxuICAgIHVuZGVmaW5lZCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIlVuZGVmaW5lZFwiKTtcbiAgICB9LFxuICAgIHJlZ2V4cChyZWdleCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicmVnZXg6XCIgKyByZWdleC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHVpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQ4YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50OGNsYW1wZWRhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDhjbGFtcGVkYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDhhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQxNmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50MTZhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDE2YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDE2YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50MzJhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJpbnQzMmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgZmxvYXQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJmbG9hdDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBmbG9hdDY0YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImZsb2F0NjRhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGFycmF5YnVmZmVyKGFycikge1xuICAgICAgd3JpdGUoXCJhcnJheWJ1ZmZlcjpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShhcnIpKTtcbiAgICB9LFxuICAgIHVybCh1cmwpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVybDpcIiArIHVybC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIG1hcChtYXApIHtcbiAgICAgIHdyaXRlKFwibWFwOlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5tYXBdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIHNldChzZXQpIHtcbiAgICAgIHdyaXRlKFwic2V0OlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5zZXRdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIGZpbGUoZmlsZSkge1xuICAgICAgd3JpdGUoXCJmaWxlOlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtmaWxlLm5hbWUsIGZpbGUuc2l6ZSwgZmlsZS50eXBlLCBmaWxlLmxhc3RNb2RmaWVkXSk7XG4gICAgfSxcbiAgICBibG9iKCkge1xuICAgICAgaWYgKG9wdGlvbnMuaWdub3JlVW5rbm93bikge1xuICAgICAgICByZXR1cm4gd3JpdGUoXCJbYmxvYl1cIik7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdIYXNoaW5nIEJsb2Igb2JqZWN0cyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZFxcblVzZSBcIm9wdGlvbnMucmVwbGFjZXJcIiBvciBcIm9wdGlvbnMuaWdub3JlVW5rbm93blwiXFxuJ1xuICAgICAgKTtcbiAgICB9LFxuICAgIGRvbXdpbmRvdygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRvbXdpbmRvd1wiKTtcbiAgICB9LFxuICAgIGJpZ2ludChudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJpZ2ludDpcIiArIG51bWJlci50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIC8qIE5vZGUuanMgc3RhbmRhcmQgbmF0aXZlIG9iamVjdHMgKi9cbiAgICBwcm9jZXNzKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicHJvY2Vzc1wiKTtcbiAgICB9LFxuICAgIHRpbWVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGltZXJcIik7XG4gICAgfSxcbiAgICBwaXBlKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicGlwZVwiKTtcbiAgICB9LFxuICAgIHRjcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInRjcFwiKTtcbiAgICB9LFxuICAgIHVkcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVkcFwiKTtcbiAgICB9LFxuICAgIHR0eSgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInR0eVwiKTtcbiAgICB9LFxuICAgIHN0YXR3YXRjaGVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic3RhdHdhdGNoZXJcIik7XG4gICAgfSxcbiAgICBzZWN1cmVjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2VjdXJlY29udGV4dFwiKTtcbiAgICB9LFxuICAgIGNvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJjb25uZWN0aW9uXCIpO1xuICAgIH0sXG4gICAgemxpYigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInpsaWJcIik7XG4gICAgfSxcbiAgICBjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiY29udGV4dFwiKTtcbiAgICB9LFxuICAgIG5vZGVzY3JpcHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJub2Rlc2NyaXB0XCIpO1xuICAgIH0sXG4gICAgaHR0cHBhcnNlcigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImh0dHBwYXJzZXJcIik7XG4gICAgfSxcbiAgICBkYXRhdmlldygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRhdGF2aWV3XCIpO1xuICAgIH0sXG4gICAgc2lnbmFsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2lnbmFsXCIpO1xuICAgIH0sXG4gICAgZnNldmVudCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImZzZXZlbnRcIik7XG4gICAgfSxcbiAgICB0bHN3cmFwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGxzd3JhcFwiKTtcbiAgICB9XG4gIH07XG59XG5jb25zdCBuYXRpdmVGdW5jID0gXCJbbmF0aXZlIGNvZGVdIH1cIjtcbmNvbnN0IG5hdGl2ZUZ1bmNMZW5ndGggPSBuYXRpdmVGdW5jLmxlbmd0aDtcbmZ1bmN0aW9uIGlzTmF0aXZlRnVuY3Rpb24oZikge1xuICBpZiAodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZikuc2xpY2UoLW5hdGl2ZUZ1bmNMZW5ndGgpID09PSBuYXRpdmVGdW5jO1xufVxuXG52YXIgX19kZWZQcm9wJDEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZOb3JtYWxQcm9wJDEgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wJDEob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fcHVibGljRmllbGQkMSA9IChvYmosIGtleSwgdmFsdWUpID0+IHtcbiAgX19kZWZOb3JtYWxQcm9wJDEob2JqLCB0eXBlb2Yga2V5ICE9PSBcInN5bWJvbFwiID8ga2V5ICsgXCJcIiA6IGtleSwgdmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuY2xhc3MgV29yZEFycmF5IHtcbiAgY29uc3RydWN0b3Iod29yZHMsIHNpZ0J5dGVzKSB7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwid29yZHNcIik7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwic2lnQnl0ZXNcIik7XG4gICAgd29yZHMgPSB0aGlzLndvcmRzID0gd29yZHMgfHwgW107XG4gICAgdGhpcy5zaWdCeXRlcyA9IHNpZ0J5dGVzID09PSB2b2lkIDAgPyB3b3Jkcy5sZW5ndGggKiA0IDogc2lnQnl0ZXM7XG4gIH1cbiAgdG9TdHJpbmcoZW5jb2Rlcikge1xuICAgIHJldHVybiAoZW5jb2RlciB8fCBIZXgpLnN0cmluZ2lmeSh0aGlzKTtcbiAgfVxuICBjb25jYXQod29yZEFycmF5KSB7XG4gICAgdGhpcy5jbGFtcCgpO1xuICAgIGlmICh0aGlzLnNpZ0J5dGVzICUgNCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3b3JkQXJyYXkuc2lnQnl0ZXM7IGkrKykge1xuICAgICAgICBjb25zdCB0aGF0Qnl0ZSA9IHdvcmRBcnJheS53b3Jkc1tpID4+PiAyXSA+Pj4gMjQgLSBpICUgNCAqIDggJiAyNTU7XG4gICAgICAgIHRoaXMud29yZHNbdGhpcy5zaWdCeXRlcyArIGkgPj4+IDJdIHw9IHRoYXRCeXRlIDw8IDI0IC0gKHRoaXMuc2lnQnl0ZXMgKyBpKSAlIDQgKiA4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRBcnJheS5zaWdCeXRlczsgaiArPSA0KSB7XG4gICAgICAgIHRoaXMud29yZHNbdGhpcy5zaWdCeXRlcyArIGogPj4+IDJdID0gd29yZEFycmF5LndvcmRzW2ogPj4+IDJdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNpZ0J5dGVzICs9IHdvcmRBcnJheS5zaWdCeXRlcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBjbGFtcCgpIHtcbiAgICB0aGlzLndvcmRzW3RoaXMuc2lnQnl0ZXMgPj4+IDJdICY9IDQyOTQ5NjcyOTUgPDwgMzIgLSB0aGlzLnNpZ0J5dGVzICUgNCAqIDg7XG4gICAgdGhpcy53b3Jkcy5sZW5ndGggPSBNYXRoLmNlaWwodGhpcy5zaWdCeXRlcyAvIDQpO1xuICB9XG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgV29yZEFycmF5KFsuLi50aGlzLndvcmRzXSk7XG4gIH1cbn1cbmNvbnN0IEhleCA9IHtcbiAgc3RyaW5naWZ5KHdvcmRBcnJheSkge1xuICAgIGNvbnN0IGhleENoYXJzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3b3JkQXJyYXkuc2lnQnl0ZXM7IGkrKykge1xuICAgICAgY29uc3QgYml0ZSA9IHdvcmRBcnJheS53b3Jkc1tpID4+PiAyXSA+Pj4gMjQgLSBpICUgNCAqIDggJiAyNTU7XG4gICAgICBoZXhDaGFycy5wdXNoKChiaXRlID4+PiA0KS50b1N0cmluZygxNiksIChiaXRlICYgMTUpLnRvU3RyaW5nKDE2KSk7XG4gICAgfVxuICAgIHJldHVybiBoZXhDaGFycy5qb2luKFwiXCIpO1xuICB9XG59O1xuY29uc3QgQmFzZTY0ID0ge1xuICBzdHJpbmdpZnkod29yZEFycmF5KSB7XG4gICAgY29uc3Qga2V5U3RyID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiO1xuICAgIGNvbnN0IGJhc2U2NENoYXJzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3b3JkQXJyYXkuc2lnQnl0ZXM7IGkgKz0gMykge1xuICAgICAgY29uc3QgYnl0ZTEgPSB3b3JkQXJyYXkud29yZHNbaSA+Pj4gMl0gPj4+IDI0IC0gaSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgYnl0ZTIgPSB3b3JkQXJyYXkud29yZHNbaSArIDEgPj4+IDJdID4+PiAyNCAtIChpICsgMSkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IGJ5dGUzID0gd29yZEFycmF5LndvcmRzW2kgKyAyID4+PiAyXSA+Pj4gMjQgLSAoaSArIDIpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCB0cmlwbGV0ID0gYnl0ZTEgPDwgMTYgfCBieXRlMiA8PCA4IHwgYnl0ZTM7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDQgJiYgaSAqIDggKyBqICogNiA8IHdvcmRBcnJheS5zaWdCeXRlcyAqIDg7IGorKykge1xuICAgICAgICBiYXNlNjRDaGFycy5wdXNoKGtleVN0ci5jaGFyQXQodHJpcGxldCA+Pj4gNiAqICgzIC0gaikgJiA2MykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmFzZTY0Q2hhcnMuam9pbihcIlwiKTtcbiAgfVxufTtcbmNvbnN0IExhdGluMSA9IHtcbiAgcGFyc2UobGF0aW4xU3RyKSB7XG4gICAgY29uc3QgbGF0aW4xU3RyTGVuZ3RoID0gbGF0aW4xU3RyLmxlbmd0aDtcbiAgICBjb25zdCB3b3JkcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGF0aW4xU3RyTGVuZ3RoOyBpKyspIHtcbiAgICAgIHdvcmRzW2kgPj4+IDJdIHw9IChsYXRpbjFTdHIuY2hhckNvZGVBdChpKSAmIDI1NSkgPDwgMjQgLSBpICUgNCAqIDg7XG4gICAgfVxuICAgIHJldHVybiBuZXcgV29yZEFycmF5KHdvcmRzLCBsYXRpbjFTdHJMZW5ndGgpO1xuICB9XG59O1xuY29uc3QgVXRmOCA9IHtcbiAgcGFyc2UodXRmOFN0cikge1xuICAgIHJldHVybiBMYXRpbjEucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHV0ZjhTdHIpKSk7XG4gIH1cbn07XG5jbGFzcyBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgX19wdWJsaWNGaWVsZCQxKHRoaXMsIFwiX2RhdGFcIiwgbmV3IFdvcmRBcnJheSgpKTtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJfbkRhdGFCeXRlc1wiLCAwKTtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJfbWluQnVmZmVyU2l6ZVwiLCAwKTtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJibG9ja1NpemVcIiwgNTEyIC8gMzIpO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIHRoaXMuX2RhdGEgPSBuZXcgV29yZEFycmF5KCk7XG4gICAgdGhpcy5fbkRhdGFCeXRlcyA9IDA7XG4gIH1cbiAgX2FwcGVuZChkYXRhKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBkYXRhID0gVXRmOC5wYXJzZShkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YS5jb25jYXQoZGF0YSk7XG4gICAgdGhpcy5fbkRhdGFCeXRlcyArPSBkYXRhLnNpZ0J5dGVzO1xuICB9XG4gIF9kb1Byb2Nlc3NCbG9jayhfZGF0YVdvcmRzLCBfb2Zmc2V0KSB7XG4gIH1cbiAgX3Byb2Nlc3MoZG9GbHVzaCkge1xuICAgIGxldCBwcm9jZXNzZWRXb3JkcztcbiAgICBsZXQgbkJsb2Nrc1JlYWR5ID0gdGhpcy5fZGF0YS5zaWdCeXRlcyAvICh0aGlzLmJsb2NrU2l6ZSAqIDQpO1xuICAgIGlmIChkb0ZsdXNoKSB7XG4gICAgICBuQmxvY2tzUmVhZHkgPSBNYXRoLmNlaWwobkJsb2Nrc1JlYWR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5tYXgoKG5CbG9ja3NSZWFkeSB8IDApIC0gdGhpcy5fbWluQnVmZmVyU2l6ZSwgMCk7XG4gICAgfVxuICAgIGNvbnN0IG5Xb3Jkc1JlYWR5ID0gbkJsb2Nrc1JlYWR5ICogdGhpcy5ibG9ja1NpemU7XG4gICAgY29uc3QgbkJ5dGVzUmVhZHkgPSBNYXRoLm1pbihuV29yZHNSZWFkeSAqIDQsIHRoaXMuX2RhdGEuc2lnQnl0ZXMpO1xuICAgIGlmIChuV29yZHNSZWFkeSkge1xuICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbldvcmRzUmVhZHk7IG9mZnNldCArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgICAgICB0aGlzLl9kb1Byb2Nlc3NCbG9jayh0aGlzLl9kYXRhLndvcmRzLCBvZmZzZXQpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzc2VkV29yZHMgPSB0aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLCBuV29yZHNSZWFkeSk7XG4gICAgICB0aGlzLl9kYXRhLnNpZ0J5dGVzIC09IG5CeXRlc1JlYWR5O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheShwcm9jZXNzZWRXb3JkcywgbkJ5dGVzUmVhZHkpO1xuICB9XG59XG5jbGFzcyBIYXNoZXIgZXh0ZW5kcyBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtIHtcbiAgdXBkYXRlKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICB0aGlzLl9hcHBlbmQobWVzc2FnZVVwZGF0ZSk7XG4gICAgdGhpcy5fcHJvY2VzcygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICBpZiAobWVzc2FnZVVwZGF0ZSkge1xuICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fcHVibGljRmllbGQgPSAob2JqLCBrZXksIHZhbHVlKSA9PiB7XG4gIF9fZGVmTm9ybWFsUHJvcChvYmosIHR5cGVvZiBrZXkgIT09IFwic3ltYm9sXCIgPyBrZXkgKyBcIlwiIDoga2V5LCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5jb25zdCBIID0gW1xuICAxNzc5MDMzNzAzLFxuICAtMTE1MDgzMzAxOSxcbiAgMTAxMzkwNDI0MixcbiAgLTE1MjE0ODY1MzQsXG4gIDEzNTk4OTMxMTksXG4gIC0xNjk0MTQ0MzcyLFxuICA1Mjg3MzQ2MzUsXG4gIDE1NDE0NTkyMjVcbl07XG5jb25zdCBLID0gW1xuICAxMTE2MzUyNDA4LFxuICAxODk5NDQ3NDQxLFxuICAtMTI0NTY0MzgyNSxcbiAgLTM3Mzk1NzcyMyxcbiAgOTYxOTg3MTYzLFxuICAxNTA4OTcwOTkzLFxuICAtMTg0MTMzMTU0OCxcbiAgLTE0MjQyMDQwNzUsXG4gIC02NzA1ODYyMTYsXG4gIDMxMDU5ODQwMSxcbiAgNjA3MjI1Mjc4LFxuICAxNDI2ODgxOTg3LFxuICAxOTI1MDc4Mzg4LFxuICAtMjEzMjg4OTA5MCxcbiAgLTE2ODAwNzkxOTMsXG4gIC0xMDQ2NzQ0NzE2LFxuICAtNDU5NTc2ODk1LFxuICAtMjcyNzQyNTIyLFxuICAyNjQzNDcwNzgsXG4gIDYwNDgwNzYyOCxcbiAgNzcwMjU1OTgzLFxuICAxMjQ5MTUwMTIyLFxuICAxNTU1MDgxNjkyLFxuICAxOTk2MDY0OTg2LFxuICAtMTc0MDc0NjQxNCxcbiAgLTE0NzMxMzI5NDcsXG4gIC0xMzQxOTcwNDg4LFxuICAtMTA4NDY1MzYyNSxcbiAgLTk1ODM5NTQwNSxcbiAgLTcxMDQzODU4NSxcbiAgMTEzOTI2OTkzLFxuICAzMzgyNDE4OTUsXG4gIDY2NjMwNzIwNSxcbiAgNzczNTI5OTEyLFxuICAxMjk0NzU3MzcyLFxuICAxMzk2MTgyMjkxLFxuICAxNjk1MTgzNzAwLFxuICAxOTg2NjYxMDUxLFxuICAtMjExNzk0MDk0NixcbiAgLTE4MzgwMTEyNTksXG4gIC0xNTY0NDgxMzc1LFxuICAtMTQ3NDY2NDg4NSxcbiAgLTEwMzUyMzY0OTYsXG4gIC05NDkyMDI1MjUsXG4gIC03Nzg5MDE0NzksXG4gIC02OTQ2MTQ0OTIsXG4gIC0yMDAzOTUzODcsXG4gIDI3NTQyMzM0NCxcbiAgNDMwMjI3NzM0LFxuICA1MDY5NDg2MTYsXG4gIDY1OTA2MDU1NixcbiAgODgzOTk3ODc3LFxuICA5NTgxMzk1NzEsXG4gIDEzMjI4MjIyMTgsXG4gIDE1MzcwMDIwNjMsXG4gIDE3NDc4NzM3NzksXG4gIDE5NTU1NjIyMjIsXG4gIDIwMjQxMDQ4MTUsXG4gIC0yMDY3MjM2ODQ0LFxuICAtMTkzMzExNDg3MixcbiAgLTE4NjY1MzA4MjIsXG4gIC0xNTM4MjMzMTA5LFxuICAtMTA5MDkzNTgxNyxcbiAgLTk2NTY0MTk5OFxuXTtcbmNvbnN0IFcgPSBbXTtcbmNsYXNzIFNIQTI1NiBleHRlbmRzIEhhc2hlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgX19wdWJsaWNGaWVsZCh0aGlzLCBcIl9oYXNoXCIsIG5ldyBXb3JkQXJyYXkoWy4uLkhdKSk7XG4gIH1cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGhhc2ggb2JqZWN0IHRvIGluaXRpYWwgdmFsdWVzLlxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgc3VwZXIucmVzZXQoKTtcbiAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheShbLi4uSF0pO1xuICB9XG4gIF9kb1Byb2Nlc3NCbG9jayhNLCBvZmZzZXQpIHtcbiAgICBjb25zdCBIMiA9IHRoaXMuX2hhc2gud29yZHM7XG4gICAgbGV0IGEgPSBIMlswXTtcbiAgICBsZXQgYiA9IEgyWzFdO1xuICAgIGxldCBjID0gSDJbMl07XG4gICAgbGV0IGQgPSBIMlszXTtcbiAgICBsZXQgZSA9IEgyWzRdO1xuICAgIGxldCBmID0gSDJbNV07XG4gICAgbGV0IGcgPSBIMls2XTtcbiAgICBsZXQgaCA9IEgyWzddO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxNikge1xuICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnYW1tYTB4ID0gV1tpIC0gMTVdO1xuICAgICAgICBjb25zdCBnYW1tYTAgPSAoZ2FtbWEweCA8PCAyNSB8IGdhbW1hMHggPj4+IDcpIF4gKGdhbW1hMHggPDwgMTQgfCBnYW1tYTB4ID4+PiAxOCkgXiBnYW1tYTB4ID4+PiAzO1xuICAgICAgICBjb25zdCBnYW1tYTF4ID0gV1tpIC0gMl07XG4gICAgICAgIGNvbnN0IGdhbW1hMSA9IChnYW1tYTF4IDw8IDE1IHwgZ2FtbWExeCA+Pj4gMTcpIF4gKGdhbW1hMXggPDwgMTMgfCBnYW1tYTF4ID4+PiAxOSkgXiBnYW1tYTF4ID4+PiAxMDtcbiAgICAgICAgV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdO1xuICAgICAgfVxuICAgICAgY29uc3QgY2ggPSBlICYgZiBeIH5lICYgZztcbiAgICAgIGNvbnN0IG1haiA9IGEgJiBiIF4gYSAmIGMgXiBiICYgYztcbiAgICAgIGNvbnN0IHNpZ21hMCA9IChhIDw8IDMwIHwgYSA+Pj4gMikgXiAoYSA8PCAxOSB8IGEgPj4+IDEzKSBeIChhIDw8IDEwIHwgYSA+Pj4gMjIpO1xuICAgICAgY29uc3Qgc2lnbWExID0gKGUgPDwgMjYgfCBlID4+PiA2KSBeIChlIDw8IDIxIHwgZSA+Pj4gMTEpIF4gKGUgPDwgNyB8IGUgPj4+IDI1KTtcbiAgICAgIGNvbnN0IHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV07XG4gICAgICBjb25zdCB0MiA9IHNpZ21hMCArIG1hajtcbiAgICAgIGggPSBnO1xuICAgICAgZyA9IGY7XG4gICAgICBmID0gZTtcbiAgICAgIGUgPSBkICsgdDEgfCAwO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gYjtcbiAgICAgIGIgPSBhO1xuICAgICAgYSA9IHQxICsgdDIgfCAwO1xuICAgIH1cbiAgICBIMlswXSA9IEgyWzBdICsgYSB8IDA7XG4gICAgSDJbMV0gPSBIMlsxXSArIGIgfCAwO1xuICAgIEgyWzJdID0gSDJbMl0gKyBjIHwgMDtcbiAgICBIMlszXSA9IEgyWzNdICsgZCB8IDA7XG4gICAgSDJbNF0gPSBIMls0XSArIGUgfCAwO1xuICAgIEgyWzVdID0gSDJbNV0gKyBmIHwgMDtcbiAgICBIMls2XSA9IEgyWzZdICsgZyB8IDA7XG4gICAgSDJbN10gPSBIMls3XSArIGggfCAwO1xuICB9XG4gIC8qKlxuICAgKiBGaW5pc2hlcyB0aGUgaGFzaCBjYWxjdWxhdGlvbiBhbmQgcmV0dXJucyB0aGUgaGFzaCBhcyBhIFdvcmRBcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgLSBBZGRpdGlvbmFsIG1lc3NhZ2UgY29udGVudCB0byBpbmNsdWRlIGluIHRoZSBoYXNoLlxuICAgKiBAcmV0dXJucyB7V29yZEFycmF5fSBUaGUgZmluYWxpc2VkIGhhc2ggYXMgYSBXb3JkQXJyYXkuXG4gICAqL1xuICBmaW5hbGl6ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgc3VwZXIuZmluYWxpemUobWVzc2FnZVVwZGF0ZSk7XG4gICAgY29uc3QgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuICAgIGNvbnN0IG5CaXRzTGVmdCA9IHRoaXMuX2RhdGEuc2lnQnl0ZXMgKiA4O1xuICAgIHRoaXMuX2RhdGEud29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAxMjggPDwgMjQgLSBuQml0c0xlZnQgJSAzMjtcbiAgICB0aGlzLl9kYXRhLndvcmRzWyhuQml0c0xlZnQgKyA2NCA+Pj4gOSA8PCA0KSArIDE0XSA9IE1hdGguZmxvb3IoXG4gICAgICBuQml0c1RvdGFsIC8gNDI5NDk2NzI5NlxuICAgICk7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1sobkJpdHNMZWZ0ICsgNjQgPj4+IDkgPDwgNCkgKyAxNV0gPSBuQml0c1RvdGFsO1xuICAgIHRoaXMuX2RhdGEuc2lnQnl0ZXMgPSB0aGlzLl9kYXRhLndvcmRzLmxlbmd0aCAqIDQ7XG4gICAgdGhpcy5fcHJvY2VzcygpO1xuICAgIHJldHVybiB0aGlzLl9oYXNoO1xuICB9XG59XG5mdW5jdGlvbiBzaGEyNTYobWVzc2FnZSkge1xuICByZXR1cm4gbmV3IFNIQTI1NigpLmZpbmFsaXplKG1lc3NhZ2UpLnRvU3RyaW5nKCk7XG59XG5mdW5jdGlvbiBzaGEyNTZiYXNlNjQobWVzc2FnZSkge1xuICByZXR1cm4gbmV3IFNIQTI1NigpLmZpbmFsaXplKG1lc3NhZ2UpLnRvU3RyaW5nKEJhc2U2NCk7XG59XG5cbmZ1bmN0aW9uIGhhc2gob2JqZWN0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgaGFzaGVkID0gdHlwZW9mIG9iamVjdCA9PT0gXCJzdHJpbmdcIiA/IG9iamVjdCA6IG9iamVjdEhhc2gob2JqZWN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHNoYTI1NmJhc2U2NChoYXNoZWQpLnNsaWNlKDAsIDEwKTtcbn1cblxuZnVuY3Rpb24gbXVybXVySGFzaChrZXksIHNlZWQgPSAwKSB7XG4gIGlmICh0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiKSB7XG4gICAga2V5ID0gY3JlYXRlQnVmZmVyKGtleSk7XG4gIH1cbiAgbGV0IGkgPSAwO1xuICBsZXQgaDEgPSBzZWVkO1xuICBsZXQgazE7XG4gIGxldCBoMWI7XG4gIGNvbnN0IHJlbWFpbmRlciA9IGtleS5sZW5ndGggJiAzO1xuICBjb25zdCBieXRlcyA9IGtleS5sZW5ndGggLSByZW1haW5kZXI7XG4gIGNvbnN0IGMxID0gMzQzMjkxODM1MztcbiAgY29uc3QgYzIgPSA0NjE4NDU5MDc7XG4gIHdoaWxlIChpIDwgYnl0ZXMpIHtcbiAgICBrMSA9IGtleVtpXSAmIDI1NSB8IChrZXlbKytpXSAmIDI1NSkgPDwgOCB8IChrZXlbKytpXSAmIDI1NSkgPDwgMTYgfCAoa2V5WysraV0gJiAyNTUpIDw8IDI0O1xuICAgICsraTtcbiAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMxICsgKCgoazEgPj4+IDE2KSAqIGMxICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgazEgPSBrMSA8PCAxNSB8IGsxID4+PiAxNztcbiAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMyICsgKCgoazEgPj4+IDE2KSAqIGMyICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgaDEgXj0gazE7XG4gICAgaDEgPSBoMSA8PCAxMyB8IGgxID4+PiAxOTtcbiAgICBoMWIgPSAoaDEgJiA2NTUzNSkgKiA1ICsgKCgoaDEgPj4+IDE2KSAqIDUgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBoMSA9IChoMWIgJiA2NTUzNSkgKyAyNzQ5MiArICgoKGgxYiA+Pj4gMTYpICsgNTg5NjQgJiA2NTUzNSkgPDwgMTYpO1xuICB9XG4gIGsxID0gMDtcbiAgc3dpdGNoIChyZW1haW5kZXIpIHtcbiAgICBjYXNlIDM6IHtcbiAgICAgIGsxIF49IChrZXlbaSArIDJdICYgMjU1KSA8PCAxNjtcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICBrMSBePSAoa2V5W2kgKyAxXSAmIDI1NSkgPDwgODtcbiAgICB9XG4gICAgY2FzZSAxOiB7XG4gICAgICBrMSBePSBrZXlbaV0gJiAyNTU7XG4gICAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMxICsgKCgoazEgPj4+IDE2KSAqIGMxICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMiArICgoKGsxID4+PiAxNikgKiBjMiAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgICAgaDEgXj0gazE7XG4gICAgfVxuICB9XG4gIGgxIF49IGtleS5sZW5ndGg7XG4gIGgxIF49IGgxID4+PiAxNjtcbiAgaDEgPSAoaDEgJiA2NTUzNSkgKiAyMjQ2ODIyNTA3ICsgKCgoaDEgPj4+IDE2KSAqIDIyNDY4MjI1MDcgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgaDEgXj0gaDEgPj4+IDEzO1xuICBoMSA9IChoMSAmIDY1NTM1KSAqIDMyNjY0ODk5MDkgKyAoKChoMSA+Pj4gMTYpICogMzI2NjQ4OTkwOSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICBoMSBePSBoMSA+Pj4gMTY7XG4gIHJldHVybiBoMSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2YWwpO1xufVxuXG5mdW5jdGlvbiBpc0VxdWFsKG9iamVjdDEsIG9iamVjdDIsIGhhc2hPcHRpb25zID0ge30pIHtcbiAgaWYgKG9iamVjdDEgPT09IG9iamVjdDIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAob2JqZWN0SGFzaChvYmplY3QxLCBoYXNoT3B0aW9ucykgPT09IG9iamVjdEhhc2gob2JqZWN0MiwgaGFzaE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkaWZmKG9iajEsIG9iajIsIG9wdHMgPSB7fSkge1xuICBjb25zdCBoMSA9IF90b0hhc2hlZE9iamVjdChvYmoxLCBvcHRzKTtcbiAgY29uc3QgaDIgPSBfdG9IYXNoZWRPYmplY3Qob2JqMiwgb3B0cyk7XG4gIHJldHVybiBfZGlmZihoMSwgaDIsIG9wdHMpO1xufVxuZnVuY3Rpb24gX2RpZmYoaDEsIGgyLCBvcHRzID0ge30pIHtcbiAgY29uc3QgZGlmZnMgPSBbXTtcbiAgY29uc3QgYWxsUHJvcHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gICAgLi4uT2JqZWN0LmtleXMoaDEucHJvcHMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKGgyLnByb3BzIHx8IHt9KVxuICBdKTtcbiAgaWYgKGgxLnByb3BzICYmIGgyLnByb3BzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGFsbFByb3BzKSB7XG4gICAgICBjb25zdCBwMSA9IGgxLnByb3BzW3Byb3BdO1xuICAgICAgY29uc3QgcDIgPSBoMi5wcm9wc1twcm9wXTtcbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBkaWZmcy5wdXNoKC4uLl9kaWZmKGgxLnByb3BzPy5bcHJvcF0sIGgyLnByb3BzPy5bcHJvcF0sIG9wdHMpKTtcbiAgICAgIH0gZWxzZSBpZiAocDEgfHwgcDIpIHtcbiAgICAgICAgZGlmZnMucHVzaChcbiAgICAgICAgICBuZXcgRGlmZkVudHJ5KChwMiB8fCBwMSkua2V5LCBwMSA/IFwicmVtb3ZlZFwiIDogXCJhZGRlZFwiLCBwMiwgcDEpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGxQcm9wcy5zaXplID09PSAwICYmIGgxLmhhc2ggIT09IGgyLmhhc2gpIHtcbiAgICBkaWZmcy5wdXNoKG5ldyBEaWZmRW50cnkoKGgyIHx8IGgxKS5rZXksIFwiY2hhbmdlZFwiLCBoMiwgaDEpKTtcbiAgfVxuICByZXR1cm4gZGlmZnM7XG59XG5mdW5jdGlvbiBfdG9IYXNoZWRPYmplY3Qob2JqLCBvcHRzLCBrZXkgPSBcIlwiKSB7XG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChrZXksIG9iaiwgb2JqZWN0SGFzaChvYmosIG9wdHMpKTtcbiAgfVxuICBjb25zdCBwcm9wcyA9IHt9O1xuICBjb25zdCBoYXNoZXMgPSBbXTtcbiAgZm9yIChjb25zdCBfa2V5IGluIG9iaikge1xuICAgIHByb3BzW19rZXldID0gX3RvSGFzaGVkT2JqZWN0KFxuICAgICAgb2JqW19rZXldLFxuICAgICAgb3B0cyxcbiAgICAgIGtleSA/IGAke2tleX0uJHtfa2V5fWAgOiBfa2V5XG4gICAgKTtcbiAgICBoYXNoZXMucHVzaChwcm9wc1tfa2V5XS5oYXNoKTtcbiAgfVxuICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIGB7JHtoYXNoZXMuam9pbihcIjpcIil9fWAsIHByb3BzKTtcbn1cbmNsYXNzIERpZmZFbnRyeSB7XG4gIGNvbnN0cnVjdG9yKGtleSwgdHlwZSwgbmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNPTigpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBBZGRlZCAgIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZW1vdmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjaGFuZ2VkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBDaGFuZ2VkIFxcYCR7dGhpcy5rZXl9XFxgIGZyb20gXFxgJHt0aGlzLm9sZFZhbHVlPy50b1N0cmluZygpIHx8IFwiLVwifVxcYCB0byBcXGAke3RoaXMubmV3VmFsdWUudG9TdHJpbmcoKX1cXGBgO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgRGlmZkhhc2hlZE9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGhhc2gsIHByb3BzKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBrID0gdGhpcy5rZXkgfHwgXCIuXCI7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgJHtrfSh7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19KWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtrfSgke3RoaXMudmFsdWV9KWA7XG4gIH1cbn1cblxuZXhwb3J0IHsgZGlmZiwgaGFzaCwgaXNFcXVhbCwgbXVybXVySGFzaCwgb2JqZWN0SGFzaCwgc2hhMjU2LCBzaGEyNTZiYXNlNjQgfTtcbiIsICJleHBvcnQgeyBhIGFzIGNvbnNvbGEsIGMgYXMgY3JlYXRlQ29uc29sYSwgYSBhcyBkZWZhdWx0IH0gZnJvbSAnLi9zaGFyZWQvY29uc29sYS5ENEpLM1JDSy5tanMnO1xuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcyB9IGZyb20gJy4vY29yZS5tanMnO1xuaW1wb3J0ICcuL3NoYXJlZC9jb25zb2xhLkNzNUZkdEhELm1qcyc7XG5pbXBvcnQgJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgJy4vc2hhcmVkL2NvbnNvbGEuQ0JpNk5tOXMubWpzJztcbmltcG9ydCAnbm9kZTp0dHknO1xuaW1wb3J0ICdub2RlOnV0aWwnO1xuaW1wb3J0ICdub2RlOnBhdGgnO1xuIiwgImV4cG9ydCB7IGEgYXMgYWxpZ24sIGIgYXMgYm94LCBjIGFzIGNlbnRlckFsaWduLCBlIGFzIGNvbG9yaXplLCBkIGFzIGNvbG9ycywgZyBhcyBnZXRDb2xvciwgbCBhcyBsZWZ0QWxpZ24sIHIgYXMgcmlnaHRBbGlnbiwgcyBhcyBzdHJpcEFuc2kgfSBmcm9tICcuL3NoYXJlZC9jb25zb2xhLkNCaTZObTlzLm1qcyc7XG5pbXBvcnQgJ25vZGU6dHR5JztcbiIsICJpbXBvcnQgY29uc29sYSBmcm9tICdjb25zb2xhJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ2NvbnNvbGEvdXRpbHMnO1xuXG5mdW5jdGlvbiB0b0FycmF5KHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuICByZXR1cm4gdmFsID09PSB2b2lkIDAgPyBbXSA6IFt2YWxdO1xufVxuZnVuY3Rpb24gZm9ybWF0TGluZUNvbHVtbnMobGluZXMsIGxpbmVQcmVmaXggPSBcIlwiKSB7XG4gIGNvbnN0IG1heExlbmdoID0gW107XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGZvciAoY29uc3QgW2ksIGVsZW1lbnRdIG9mIGxpbmUuZW50cmllcygpKSB7XG4gICAgICBtYXhMZW5naFtpXSA9IE1hdGgubWF4KG1heExlbmdoW2ldIHx8IDAsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLm1hcChcbiAgICAobCkgPT4gbC5tYXAoXG4gICAgICAoYywgaSkgPT4gbGluZVByZWZpeCArIGNbaSA9PT0gMCA/IFwicGFkU3RhcnRcIiA6IFwicGFkRW5kXCJdKG1heExlbmdoW2ldKVxuICAgICkuam9pbihcIiAgXCIpXG4gICkuam9pbihcIlxcblwiKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZShpbnB1dCkge1xuICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCIgPyBpbnB1dCgpIDogaW5wdXQ7XG59XG5jbGFzcyBDTElFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgY29kZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5uYW1lID0gXCJDTElFcnJvclwiO1xuICB9XG59XG5cbmNvbnN0IE5VTUJFUl9DSEFSX1JFID0gL1xcZC87XG5jb25zdCBTVFJfU1BMSVRURVJTID0gW1wiLVwiLCBcIl9cIiwgXCIvXCIsIFwiLlwiXTtcbmZ1bmN0aW9uIGlzVXBwZXJjYXNlKGNoYXIgPSBcIlwiKSB7XG4gIGlmIChOVU1CRVJfQ0hBUl9SRS50ZXN0KGNoYXIpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICByZXR1cm4gY2hhciAhPT0gY2hhci50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gc3BsaXRCeUNhc2Uoc3RyLCBzZXBhcmF0b3JzKSB7XG4gIGNvbnN0IHNwbGl0dGVycyA9IHNlcGFyYXRvcnMgPz8gU1RSX1NQTElUVEVSUztcbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKCFzdHIgfHwgdHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuICBsZXQgYnVmZiA9IFwiXCI7XG4gIGxldCBwcmV2aW91c1VwcGVyO1xuICBsZXQgcHJldmlvdXNTcGxpdHRlcjtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHN0cikge1xuICAgIGNvbnN0IGlzU3BsaXR0ZXIgPSBzcGxpdHRlcnMuaW5jbHVkZXMoY2hhcik7XG4gICAgaWYgKGlzU3BsaXR0ZXIgPT09IHRydWUpIHtcbiAgICAgIHBhcnRzLnB1c2goYnVmZik7XG4gICAgICBidWZmID0gXCJcIjtcbiAgICAgIHByZXZpb3VzVXBwZXIgPSB2b2lkIDA7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNVcHBlciA9IGlzVXBwZXJjYXNlKGNoYXIpO1xuICAgIGlmIChwcmV2aW91c1NwbGl0dGVyID09PSBmYWxzZSkge1xuICAgICAgaWYgKHByZXZpb3VzVXBwZXIgPT09IGZhbHNlICYmIGlzVXBwZXIgPT09IHRydWUpIHtcbiAgICAgICAgcGFydHMucHVzaChidWZmKTtcbiAgICAgICAgYnVmZiA9IGNoYXI7XG4gICAgICAgIHByZXZpb3VzVXBwZXIgPSBpc1VwcGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2aW91c1VwcGVyID09PSB0cnVlICYmIGlzVXBwZXIgPT09IGZhbHNlICYmIGJ1ZmYubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGJ1ZmYuYXQoLTEpO1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1ZmYuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYnVmZi5sZW5ndGggLSAxKSkpO1xuICAgICAgICBidWZmID0gbGFzdENoYXIgKyBjaGFyO1xuICAgICAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGJ1ZmYgKz0gY2hhcjtcbiAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICBwcmV2aW91c1NwbGl0dGVyID0gaXNTcGxpdHRlcjtcbiAgfVxuICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICByZXR1cm4gcGFydHM7XG59XG5mdW5jdGlvbiB1cHBlckZpcnN0KHN0cikge1xuICByZXR1cm4gc3RyID8gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkgOiBcIlwiO1xufVxuZnVuY3Rpb24gbG93ZXJGaXJzdChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIHBhc2NhbENhc2Uoc3RyLCBvcHRzKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiB1cHBlckZpcnN0KG9wdHM/Lm5vcm1hbGl6ZSA/IHAudG9Mb3dlckNhc2UoKSA6IHApKS5qb2luKFwiXCIpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGNhbWVsQ2FzZShzdHIsIG9wdHMpIHtcbiAgcmV0dXJuIGxvd2VyRmlyc3QocGFzY2FsQ2FzZShzdHIgfHwgXCJcIiwgb3B0cykpO1xufVxuZnVuY3Rpb24ga2ViYWJDYXNlKHN0ciwgam9pbmVyKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiBwLnRvTG93ZXJDYXNlKCkpLmpvaW4oam9pbmVyID8/IFwiLVwiKSA6IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRvQXJyKGFueSkge1xuICByZXR1cm4gYW55ID09IHZvaWQgMCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5mdW5jdGlvbiB0b1ZhbChvdXQsIGtleSwgdmFsLCBvcHRzKSB7XG4gIGxldCB4O1xuICBjb25zdCBvbGQgPSBvdXRba2V5XTtcbiAgY29uc3Qgbnh0ID0gfm9wdHMuc3RyaW5nLmluZGV4T2Yoa2V5KSA/IHZhbCA9PSB2b2lkIDAgfHwgdmFsID09PSB0cnVlID8gXCJcIiA6IFN0cmluZyh2YWwpIDogdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCIgPyB2YWwgOiB+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/IHZhbCA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB2YWwgPT09IFwidHJ1ZVwiIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbCksICEhdmFsKSA6ICh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbDtcbiAgb3V0W2tleV0gPSBvbGQgPT0gdm9pZCAwID8gbnh0IDogQXJyYXkuaXNBcnJheShvbGQpID8gb2xkLmNvbmNhdChueHQpIDogW29sZCwgbnh0XTtcbn1cbmZ1bmN0aW9uIHBhcnNlUmF3QXJncyhhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICBsZXQgaztcbiAgbGV0IGFycjtcbiAgbGV0IGFyZztcbiAgbGV0IG5hbWU7XG4gIGxldCB2YWw7XG4gIGNvbnN0IG91dCA9IHsgXzogW10gfTtcbiAgbGV0IGkgPSAwO1xuICBsZXQgaiA9IDA7XG4gIGxldCBpZHggPSAwO1xuICBjb25zdCBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgY29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG4gIGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuICBjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuICBvcHRzLmFsaWFzID0gb3B0cy5hbGlhcyB8fCB7fTtcbiAgb3B0cy5zdHJpbmcgPSB0b0FycihvcHRzLnN0cmluZyk7XG4gIG9wdHMuYm9vbGVhbiA9IHRvQXJyKG9wdHMuYm9vbGVhbik7XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvcHRzLmFsaWFzKSB7XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdID0gdG9BcnIob3B0cy5hbGlhc1trXSk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIChvcHRzLmFsaWFzW2FycltpXV0gPSBhcnIuY29uY2F0KGspKS5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuYm9vbGVhbi5sZW5ndGg7IGktLSA+IDA7ICkge1xuICAgIGFyciA9IG9wdHMuYWxpYXNbb3B0cy5ib29sZWFuW2ldXSB8fCBbXTtcbiAgICBmb3IgKGogPSBhcnIubGVuZ3RoOyBqLS0gPiAwOyApIHtcbiAgICAgIG9wdHMuYm9vbGVhbi5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDsgKSB7XG4gICAgYXJyID0gb3B0cy5hbGlhc1tvcHRzLnN0cmluZ1tpXV0gfHwgW107XG4gICAgZm9yIChqID0gYXJyLmxlbmd0aDsgai0tID4gMDsgKSB7XG4gICAgICBvcHRzLnN0cmluZy5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICBpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG4gICAgICAgIG9wdHNbbmFtZV0ucHVzaChrKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9wdHNbbmFtZV0ucHVzaChhcnJbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT09IFwiLS1cIikge1xuICAgICAgb3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb3IgKGogPSAwOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgb3V0Ll8ucHVzaChhcmcpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09IFwibm8tXCIpIHtcbiAgICAgIG5hbWUgPSBhcmcuc2xpY2UoTWF0aC5tYXgoMCwgaiArIDMpKTtcbiAgICAgIGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihhcmcpO1xuICAgICAgfVxuICAgICAgb3V0W25hbWVdID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaWR4ID0gaiArIDE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuYW1lID0gYXJnLnN1YnN0cmluZyhqLCBpZHgpO1xuICAgICAgdmFsID0gYXJnLnNsaWNlKE1hdGgubWF4KDAsICsraWR4KSkgfHwgaSArIDEgPT09IGxlbiB8fCAoXCJcIiArIGFyZ3NbaSArIDFdKS5jaGFyQ29kZUF0KDApID09PSA0NSB8fCBhcmdzWysraV07XG4gICAgICBhcnIgPSBqID09PSAyID8gW25hbWVdIDogbmFtZTtcbiAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgYXJyLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgbmFtZSA9IGFycltpZHhdO1xuICAgICAgICBpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihcIi1cIi5yZXBlYXQoaikgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0b1ZhbChvdXQsIG5hbWUsIGlkeCArIDEgPCBhcnIubGVuZ3RoIHx8IHZhbCwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuICAgICAgICBvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvdXQpIHtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICB3aGlsZSAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3V0W2Fyci5zaGlmdCgpXSA9IG91dFtrXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzKHJhd0FyZ3MsIGFyZ3NEZWYpIHtcbiAgY29uc3QgcGFyc2VPcHRpb25zID0ge1xuICAgIGJvb2xlYW46IFtdLFxuICAgIHN0cmluZzogW10sXG4gICAgbWl4ZWQ6IFtdLFxuICAgIGFsaWFzOiB7fSxcbiAgICBkZWZhdWx0OiB7fVxuICB9O1xuICBjb25zdCBhcmdzID0gcmVzb2x2ZUFyZ3MoYXJnc0RlZik7XG4gIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFyZy50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuc3RyaW5nLnB1c2goYXJnLm5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYm9vbGVhbi5wdXNoKGFyZy5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGFyZy5kZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5kZWZhdWx0W2FyZy5uYW1lXSA9IGFyZy5kZWZhdWx0O1xuICAgIH1cbiAgICBpZiAoYXJnLmFsaWFzKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYWxpYXNbYXJnLm5hbWVdID0gYXJnLmFsaWFzO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhd0FyZ3MocmF3QXJncywgcGFyc2VPcHRpb25zKTtcbiAgY29uc3QgWy4uLnBvc2l0aW9uYWxBcmd1bWVudHNdID0gcGFyc2VkLl87XG4gIGNvbnN0IHBhcnNlZEFyZ3NQcm94eSA9IG5ldyBQcm94eShwYXJzZWQsIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdID8/IHRhcmdldFtjYW1lbENhc2UocHJvcCldID8/IHRhcmdldFtrZWJhYkNhc2UocHJvcCldO1xuICAgIH1cbiAgfSk7XG4gIGZvciAoY29uc3QgWywgYXJnXSBvZiBhcmdzLmVudHJpZXMoKSkge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbmFsQXJndW1lbnQgPSBwb3NpdGlvbmFsQXJndW1lbnRzLnNoaWZ0KCk7XG4gICAgICBpZiAobmV4dFBvc2l0aW9uYWxBcmd1bWVudCAhPT0gdm9pZCAwKSB7XG4gICAgICAgIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPSBuZXh0UG9zaXRpb25hbEFyZ3VtZW50O1xuICAgICAgfSBlbHNlIGlmIChhcmcuZGVmYXVsdCA9PT0gdm9pZCAwICYmIGFyZy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICR7YXJnLm5hbWUudG9VcHBlckNhc2UoKX1gLFxuICAgICAgICAgIFwiRUFSR1wiXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID0gYXJnLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmcucmVxdWlyZWQgJiYgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ6IC0tJHthcmcubmFtZX1gLCBcIkVBUkdcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJzZWRBcmdzUHJveHk7XG59XG5mdW5jdGlvbiByZXNvbHZlQXJncyhhcmdzRGVmKSB7XG4gIGNvbnN0IGFyZ3MgPSBbXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgYXJnRGVmXSBvZiBPYmplY3QuZW50cmllcyhhcmdzRGVmIHx8IHt9KSkge1xuICAgIGFyZ3MucHVzaCh7XG4gICAgICAuLi5hcmdEZWYsXG4gICAgICBuYW1lLFxuICAgICAgYWxpYXM6IHRvQXJyYXkoYXJnRGVmLmFsaWFzKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBhcmdzO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVDb21tYW5kKGRlZikge1xuICByZXR1cm4gZGVmO1xufVxuYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjbWQsIG9wdHMpIHtcbiAgY29uc3QgY21kQXJncyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSk7XG4gIGNvbnN0IHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3Mob3B0cy5yYXdBcmdzLCBjbWRBcmdzKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICByYXdBcmdzOiBvcHRzLnJhd0FyZ3MsXG4gICAgYXJnczogcGFyc2VkQXJncyxcbiAgICBkYXRhOiBvcHRzLmRhdGEsXG4gICAgY21kXG4gIH07XG4gIGlmICh0eXBlb2YgY21kLnNldHVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBhd2FpdCBjbWQuc2V0dXAoY29udGV4dCk7XG4gIH1cbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdWJDb21tYW5kcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuc3ViQ29tbWFuZHMpO1xuICAgIGlmIChzdWJDb21tYW5kcyAmJiBPYmplY3Qua2V5cyhzdWJDb21tYW5kcykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gb3B0cy5yYXdBcmdzLmZpbmRJbmRleChcbiAgICAgICAgKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1YkNvbW1hbmROYW1lID0gb3B0cy5yYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgICBpZiAoc3ViQ29tbWFuZE5hbWUpIHtcbiAgICAgICAgaWYgKCFzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biBjb21tYW5kIFxcYCR7c3ViQ29tbWFuZE5hbWV9XFxgYCxcbiAgICAgICAgICAgIFwiRV9VTktOT1dOX0NPTU1BTkRcIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgICAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoc3ViQ29tbWFuZCwge1xuICAgICAgICAgICAgcmF3QXJnczogb3B0cy5yYXdBcmdzLnNsaWNlKHN1YkNvbW1hbmRBcmdJbmRleCArIDEpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWNtZC5ydW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKGBObyBjb21tYW5kIHNwZWNpZmllZC5gLCBcIkVfTk9fQ09NTUFORFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbWQucnVuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNtZC5ydW4oY29udGV4dCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmICh0eXBlb2YgY21kLmNsZWFudXAgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgYXdhaXQgY21kLmNsZWFudXAoY29udGV4dCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlc3VsdCB9O1xufVxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgaWYgKHN1YkNvbW1hbmRzICYmIE9iamVjdC5rZXlzKHN1YkNvbW1hbmRzKS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gcmF3QXJncy5maW5kSW5kZXgoKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKSk7XG4gICAgY29uc3Qgc3ViQ29tbWFuZE5hbWUgPSByYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgIGlmIChzdWJDb21tYW5kKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVN1YkNvbW1hbmQoXG4gICAgICAgIHN1YkNvbW1hbmQsXG4gICAgICAgIHJhd0FyZ3Muc2xpY2Uoc3ViQ29tbWFuZEFyZ0luZGV4ICsgMSksXG4gICAgICAgIGNtZFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtjbWQsIHBhcmVudF07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIHBhcmVudCkge1xuICB0cnkge1xuICAgIGNvbnNvbGEubG9nKGF3YWl0IHJlbmRlclVzYWdlKGNtZCwgcGFyZW50KSArIFwiXFxuXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IpO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJVc2FnZShjbWQsIHBhcmVudCkge1xuICBjb25zdCBjbWRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5tZXRhIHx8IHt9KTtcbiAgY29uc3QgY21kQXJncyA9IHJlc29sdmVBcmdzKGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSkpO1xuICBjb25zdCBwYXJlbnRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHBhcmVudD8ubWV0YSB8fCB7fSk7XG4gIGNvbnN0IGNvbW1hbmROYW1lID0gYCR7cGFyZW50TWV0YS5uYW1lID8gYCR7cGFyZW50TWV0YS5uYW1lfSBgIDogXCJcIn1gICsgKGNtZE1ldGEubmFtZSB8fCBwcm9jZXNzLmFyZ3ZbMV0pO1xuICBjb25zdCBhcmdMaW5lcyA9IFtdO1xuICBjb25zdCBwb3NMaW5lcyA9IFtdO1xuICBjb25zdCBjb21tYW5kc0xpbmVzID0gW107XG4gIGNvbnN0IHVzYWdlTGluZSA9IFtdO1xuICBmb3IgKGNvbnN0IGFyZyBvZiBjbWRBcmdzKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29uc3QgbmFtZSA9IGFyZy5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkICE9PSBmYWxzZSAmJiBhcmcuZGVmYXVsdCA9PT0gdm9pZCAwO1xuICAgICAgY29uc3QgZGVmYXVsdEhpbnQgPSBhcmcuZGVmYXVsdCA/IGA9XCIke2FyZy5kZWZhdWx0fVwiYCA6IFwiXCI7XG4gICAgICBwb3NMaW5lcy5wdXNoKFtcbiAgICAgICAgXCJgXCIgKyBuYW1lICsgZGVmYXVsdEhpbnQgKyBcImBcIixcbiAgICAgICAgYXJnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIGFyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IFwiXCJcbiAgICAgIF0pO1xuICAgICAgdXNhZ2VMaW5lLnB1c2goaXNSZXF1aXJlZCA/IGA8JHtuYW1lfT5gIDogYFske25hbWV9XWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkID09PSB0cnVlICYmIGFyZy5kZWZhdWx0ID09PSB2b2lkIDA7XG4gICAgICBjb25zdCBhcmdTdHIgPSAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiICYmIGFyZy5kZWZhdWx0ID09PSB0cnVlID8gW1xuICAgICAgICAuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtLW5vLSR7YX1gKSxcbiAgICAgICAgYC0tbm8tJHthcmcubmFtZX1gXG4gICAgICBdLmpvaW4oXCIsIFwiKSA6IFsuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtJHthfWApLCBgLS0ke2FyZy5uYW1lfWBdLmpvaW4oXG4gICAgICAgIFwiLCBcIlxuICAgICAgKSkgKyAoYXJnLnR5cGUgPT09IFwic3RyaW5nXCIgJiYgKGFyZy52YWx1ZUhpbnQgfHwgYXJnLmRlZmF1bHQpID8gYD0ke2FyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IGBcIiR7YXJnLmRlZmF1bHQgfHwgXCJcIn1cImB9YCA6IFwiXCIpO1xuICAgICAgYXJnTGluZXMucHVzaChbXG4gICAgICAgIFwiYFwiICsgYXJnU3RyICsgKGlzUmVxdWlyZWQgPyBcIiAocmVxdWlyZWQpXCIgOiBcIlwiKSArIFwiYFwiLFxuICAgICAgICBhcmcuZGVzY3JpcHRpb24gfHwgXCJcIlxuICAgICAgXSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICB1c2FnZUxpbmUucHVzaChhcmdTdHIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY21kLnN1YkNvbW1hbmRzKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWVzID0gW107XG4gICAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzdWJdIG9mIE9iamVjdC5lbnRyaWVzKHN1YkNvbW1hbmRzKSkge1xuICAgICAgY29uc3Qgc3ViQ21kID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1Yik7XG4gICAgICBjb25zdCBtZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1YkNtZD8ubWV0YSk7XG4gICAgICBjb21tYW5kc0xpbmVzLnB1c2goW2BcXGAke25hbWV9XFxgYCwgbWV0YT8uZGVzY3JpcHRpb24gfHwgXCJcIl0pO1xuICAgICAgY29tbWFuZE5hbWVzLnB1c2gobmFtZSk7XG4gICAgfVxuICAgIHVzYWdlTGluZS5wdXNoKGNvbW1hbmROYW1lcy5qb2luKFwifFwiKSk7XG4gIH1cbiAgY29uc3QgdXNhZ2VMaW5lcyA9IFtdO1xuICBjb25zdCB2ZXJzaW9uID0gY21kTWV0YS52ZXJzaW9uIHx8IHBhcmVudE1ldGEudmVyc2lvbjtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGNvbG9ycy5ncmF5KFxuICAgICAgYCR7Y21kTWV0YS5kZXNjcmlwdGlvbn0gKCR7Y29tbWFuZE5hbWUgKyAodmVyc2lvbiA/IGAgdiR7dmVyc2lvbn1gIDogXCJcIil9KWBcbiAgICApLFxuICAgIFwiXCJcbiAgKTtcbiAgY29uc3QgaGFzT3B0aW9ucyA9IGFyZ0xpbmVzLmxlbmd0aCA+IDAgfHwgcG9zTGluZXMubGVuZ3RoID4gMDtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGAke2NvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJVU0FHRVwiKSl9IFxcYCR7Y29tbWFuZE5hbWV9JHtoYXNPcHRpb25zID8gXCIgW09QVElPTlNdXCIgOiBcIlwifSAke3VzYWdlTGluZS5qb2luKFwiIFwiKX1cXGBgLFxuICAgIFwiXCJcbiAgKTtcbiAgaWYgKHBvc0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIkFSR1VNRU5UU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhwb3NMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFwiXCIpO1xuICB9XG4gIGlmIChhcmdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJPUFRJT05TXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKGFyZ0xpbmVzLCBcIiAgXCIpKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goXCJcIik7XG4gIH1cbiAgaWYgKGNvbW1hbmRzTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiQ09NTUFORFNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMoY29tbWFuZHNMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgICAgXCJcIixcbiAgICAgIGBVc2UgXFxgJHtjb21tYW5kTmFtZX0gPGNvbW1hbmQ+IC0taGVscFxcYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbW1hbmQuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHVzYWdlTGluZXMuZmlsdGVyKChsKSA9PiB0eXBlb2YgbCA9PT0gXCJzdHJpbmdcIikuam9pbihcIlxcblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuTWFpbihjbWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCByYXdBcmdzID0gb3B0cy5yYXdBcmdzIHx8IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgY29uc3Qgc2hvd1VzYWdlJDEgPSBvcHRzLnNob3dVc2FnZSB8fCBzaG93VXNhZ2U7XG4gIHRyeSB7XG4gICAgaWYgKHJhd0FyZ3MuaW5jbHVkZXMoXCItLWhlbHBcIikgfHwgcmF3QXJncy5pbmNsdWRlcyhcIi1oXCIpKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGVsc2UgaWYgKHJhd0FyZ3MubGVuZ3RoID09PSAxICYmIHJhd0FyZ3NbMF0gPT09IFwiLS12ZXJzaW9uXCIpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSB0eXBlb2YgY21kLm1ldGEgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGNtZC5tZXRhKCkgOiBhd2FpdCBjbWQubWV0YTtcbiAgICAgIGlmICghbWV0YT8udmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXCJObyB2ZXJzaW9uIHNwZWNpZmllZFwiLCBcIkVfTk9fVkVSU0lPTlwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGEubG9nKG1ldGEudmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoY21kLCB7IHJhd0FyZ3MgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGlzQ0xJRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENMSUVycm9yO1xuICAgIGlmICghaXNDTElFcnJvcikge1xuICAgICAgY29uc29sYS5lcnJvcihlcnJvciwgXCJcXG5cIik7XG4gICAgfVxuICAgIGlmIChpc0NMSUVycm9yKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICB9XG4gICAgY29uc29sYS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU1haW4oY21kKSB7XG4gIHJldHVybiAob3B0cyA9IHt9KSA9PiBydW5NYWluKGNtZCwgb3B0cyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU1haW4sIGRlZmluZUNvbW1hbmQsIHBhcnNlQXJncywgcmVuZGVyVXNhZ2UsIHJ1bkNvbW1hbmQsIHJ1bk1haW4sIHNob3dVc2FnZSB9O1xuIiwgImltcG9ydCB0eXBlIHsgUGFja2FnZU1hbmlmZXN0IH0gZnJvbSBcInF1ZXJ5LXJlZ2lzdHJ5XCI7XG5cbmNvbnN0IGdpdGh1YlVybFJlZ2V4ID1cbiAgL14oPzpnaXRcXCspP2h0dHBzPzpcXC9cXC9naXRodWJcXC5jb21cXC8oW14vXSspXFwvKFteL10rKVxcLmdpdCQvO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE93bmVyQW5kUmVwbyhcbiAgcmVwb3NpdG9yeVVybDogc3RyaW5nLFxuKTogW3N0cmluZywgc3RyaW5nXSB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IHJlcG9zaXRvcnlVcmwubWF0Y2goZ2l0aHViVXJsUmVnZXgpO1xuXG4gIGlmIChtYXRjaCkge1xuICAgIHJldHVybiBbbWF0Y2hbMV0sIG1hdGNoWzJdXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdCkge1xuICByZXR1cm4gdHlwZW9mIG1hbmlmZXN0LnJlcG9zaXRvcnkgPT09IFwic3RyaW5nXCJcbiAgICA/IG1hbmlmZXN0LnJlcG9zaXRvcnlcbiAgICA6IG1hbmlmZXN0LnJlcG9zaXRvcnk/LnVybDtcbn1cblxuY29uc3QgY29tbWl0TGVuZ3RoID0gNztcblxuLypcbiAqIFwiMDllZmQwNTUzMzc0ZmY3ZDNlNjJiNzkzNzhlMzE4NGY1ZWI1NzU3MVwiID0+IFwiMDllZmQwNVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYmJyZXZpYXRlQ29tbWl0SGFzaChmdWxsSGFzaDogc3RyaW5nKSB7XG4gIHJldHVybiBmdWxsSGFzaC5zdWJzdHJpbmcoMCwgY29tbWl0TGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVsbFJlcXVlc3QocmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuICFOdW1iZXIuaXNOYU4oTnVtYmVyKHJlZikpO1xufVxuXG5leHBvcnQgdHlwZSBDb21tZW50ID0gXCJvZmZcIiB8IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiO1xuZXhwb3J0IHR5cGUgUGFja2FnZU1hbmFnZXIgPSBcIm5wbVwiIHwgXCJwbnBtXCIgfCBcInlhcm5cIiB8IFwiYnVuXCI7XG5cbmNvbnN0IHdoaXRlbGlzdCA9XG4gIFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YWNrYmxpdHotbGFicy9wa2cucHIubmV3L21haW4vLndoaXRlbGlzdFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNXaGl0ZWxpc3RlZChvd25lcjogc3RyaW5nLCByZXBvOiBzdHJpbmcpIHtcbiAgY29uc3QgY29tYmluYXRpb24gPSBgJHtvd25lcn0vJHtyZXBvfWA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHdoaXRlbGlzdCk7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcblxuICAgIHJldHVybiBjb250ZW50LmluY2x1ZGVzKGNvbWJpbmF0aW9uKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJwa2ctcHItbmV3XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMC41OVwiLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiXCIsXG4gIFwibWFpblwiOiBcImluZGV4LmpzXCIsXG4gIFwidHlwZVwiOiBcIm1vZHVsZVwiLFxuICBcImJpblwiOiB7XG4gICAgXCJwa2ctcHItbmV3XCI6IFwiYmluL2NsaS5qc1wiXG4gIH0sXG4gIFwicmVwb3NpdG9yeVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiZ2l0XCIsXG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vc3RhY2tibGl0ei1sYWJzL3BrZy5wci5uZXdcIixcbiAgICBcImRpcmVjdG9yeVwiOiBcInBhY2thZ2VzL2NsaVwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJkZXZcIjogXCJ0c3VwIC0td2F0Y2hcIixcbiAgICBcImJ1aWxkXCI6IFwidHN1cFwiLFxuICAgIFwiYnVpbGQ6cHVibGlzaFwiOiBcIkFQSV9VUkw9aHR0cHM6Ly9wa2cucHIubmV3LyB0c3VwXCJcbiAgfSxcbiAgXCJrZXl3b3Jkc1wiOiBbXSxcbiAgXCJhdXRob3JcIjogXCJcIixcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBhY3Rpb25zL2NvcmVcIjogXCJeMS4xMS4xXCIsXG4gICAgXCJAanNkZXZ0b29scy9lei1zcGF3blwiOiBcIl4zLjAuNFwiLFxuICAgIFwiQG9jdG9raXQvYWN0aW9uXCI6IFwiXjYuMS4wXCIsXG4gICAgXCJpZ25vcmVcIjogXCJeNS4zLjFcIixcbiAgICBcImlzYmluYXJ5ZmlsZVwiOiBcIl41LjAuMlwiLFxuICAgIFwicGtnLXR5cGVzXCI6IFwiXjEuMS4xXCIsXG4gICAgXCJxdWVyeS1yZWdpc3RyeVwiOiBcIl4zLjAuMVwiLFxuICAgIFwidGlueWdsb2JieVwiOiBcIl4wLjIuOVwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBwa2ctcHItbmV3L3V0aWxzXCI6IFwid29ya3NwYWNlOl5cIixcbiAgICBcImNpdHR5XCI6IFwiXjAuMS42XCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCJcbiAgfVxufVxuIiwgImV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0VGVtcGxhdGUgPSAoXG4gIGRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikgPT4gKHtcbiAgXCJpbmRleC5qc1wiOiBcIlwiLFxuICBcIlJFQURNRS5tZFwiOiBgXG4jIERlZmF1bHQgVGVtcGxhdGVcblxuVGhpcyBpcyBhIHRlbXBsYXRlIHRoYXQgbGV2ZXJhZ2VzIHRoZSBleHBlcmltZW50YWwgdGVtcGxhdGVzIGZlYXR1cmUgaW4gdGhlIFxcYHBrZy5wci5uZXdcXGAgdG9vbC5cblxuIyMgT3ZlcnZpZXdcblxuVGVtcGxhdGVzIGFyZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjcmVhdGluZyBsaXZlLCBpbnRlcmFjdGl2ZSBleGFtcGxlcyBvZiB5b3VyIHBhY2thZ2VzLCB3aGljaCBjYW4gYmUgdmVyeSBiZW5lZmljaWFsIGZvciBib3RoIGRldmVsb3BtZW50IGFuZCBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLlxuXG5BcyBhIHVzZXIsIHlvdSBjYW4gY2hlY2sgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGFuZCBzZWUgdGhlIG5ldyBnZW5lcmF0ZWQgcGFja2FnZXMhIFlvdSBjYW4ganVzdCBjb3B5IHRob3NlIGFuZCBwdXQgdGhlbSBpbiB5b3VyIHBhY2thZ2UuanNvbiBvciBpbnN0YWxsIHRoZW0gd2l0aCB5b3VyIGZhdm9yaXRlIHBhY2thZ2UgbWFuYWdlci5cblxuJHtPYmplY3QudmFsdWVzKGRlcGVuZGVuY2llcylcbiAgLm1hcChcbiAgICAodXJsKSA9PiBgXG5cXGBcXGBcXGBzaFxubnBtIGkgJHt1cmx9XG5cXGBcXGBcXGBcbmAsXG4gIClcbiAgLmpvaW4oXCJcIil9XG5cbiMjIFVzYWdlXG5cblRvIHVzZSB0aGlzIGZlYXR1cmUgYXMgYSBtYWludGFpbmVyLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG5cblxcYFxcYFxcYHNoXG5ucHggcGtnLXByLW5ldyBwdWJsaXNoICcuL3BhY2thZ2VzL0EnIC0tdGVtcGxhdGUgJy4vZXhhbXBsZXMvKidcblxcYFxcYFxcYFxuXG4jIyBCZW5lZml0c1xuXG4tIEludGVyYWN0aXZlIERlbW9zOiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaXZlIGRlbW9zIHRoYXQgdXNlcnMgY2FuIGludGVyYWN0IHdpdGggZGlyZWN0bHkgaW4gdGhlaXIgYnJvd3Nlci5cbi0gRW5oYW5jZWQgVGVzdGluZzogUXVpY2tseSBzcGluIHVwIGVudmlyb25tZW50cyB0byB0ZXN0IHlvdXIgcGFja2FnZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuLSBJbXByb3ZlZCBTaGFyaW5nOiBFYXNpbHkgc2hhcmUgd29ya2luZyBleGFtcGxlcyBvZiB5b3VyIHBhY2thZ2Ugd2l0aCBjb2xsYWJvcmF0b3JzIG9yIHVzZXJzIHdpdGhvdXQgbmVlZGluZyB0aGVtIHRvIHNldCB1cCB0aGVpciBlbnZpcm9ubWVudC5cbmAsXG4gIFwicGFja2FnZS5qc29uXCI6IEpTT04uc3RyaW5naWZ5KFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiZ2VuZXJhdGVkIGJ5IHBrZy5wci5uZXdcIixcbiAgICAgIG1haW46IFwiaW5kZXguanNcIixcbiAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgIGtleXdvcmRzOiBbXSxcbiAgICAgIGF1dGhvcjogXCJwa2cucHIubmV3XCIsXG4gICAgICBsaWNlbnNlOiBcIklTQ1wiLFxuICAgIH0sXG4gICAgbnVsbCxcbiAgICAyLFxuICApLFxufSk7XG4i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TUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsU0FBTyxNQUFJLE1BQUlBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxRQUFNLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxTQUFPQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFP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QUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFdBQVUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsY0FBYSxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsSUFBRyxFQUFFLEdBQUUsWUFBVyxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxVQUFTLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLFdBQVUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxRQUFPLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLGVBQWMsQ0FBQyxLQUFJLEVBQUUsR0FBRSxRQUFPLENBQUMsS0FBSSxFQUFFLEdBQUUsUUFBTyxDQUFDLEtBQUksRUFBRSxHQUFFLGFBQVksQ0FBQyxLQUFJLEVBQUUsR0FBRSxlQUFjLENBQUMsS0FBSSxFQUFFLEdBQUUsZ0JBQWUsQ0FBQyxLQUFJLEVBQUUsR0FBRSxjQUFhLENBQUMsS0FBSSxFQUFFLEdBQUUsaUJBQWdCLENBQUMsS0FBSSxFQUFFLEdBQUUsY0FBYSxDQUFDLEtBQUksRUFBRSxHQUFFLGVBQWMsQ0FBQyxLQUFJLEVBQUUsRUFBQyxFQUFDO0FBQUUsV0FBTyxLQUFLLEVBQUUsUUFBUTtBQUFFLElBQU0sS0FBRyxPQUFPLEtBQUssRUFBRSxLQUFL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QUEsUUFBRSxDQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsV0FBV0EsSUFBRUQsSUFBRTtBQUFDLFlBQUcsS0FBSyxVQUFRLFlBQVUsS0FBSyxRQUFNLFdBQVVBLElBQUcsU0FBTyxDQUFDLEtBQUssVUFBUSxFQUFFLFFBQVEsSUFBSUEsR0FBRSxJQUFJLEtBQUcsS0FBSyxLQUFLLFVBQVMsRUFBRSxRQUFRLElBQUlBLEdBQUUsSUFBSSxDQUFDLEdBQUUsRUFBRSxRQUFRLElBQUlBLEdBQUUsSUFBSSxLQUFHLEtBQUssS0FBSyxVQUFTQSxHQUFFLElBQUksSUFBR0MsT0FBSUEsR0FBRSxZQUFZLE1BQUksT0FBS0EsR0FBRSxZQUFZLE1BQUksUUFBTSxLQUFLLEtBQUssV0FBVUEsR0FBRSxZQUFZLE1BQUksR0FBRyxHQUFFQSxPQUFJLE9BQUssS0FBSyxLQUFLLGdCQUFjLEtBQUssVUFBUSxLQUFLLElBQUksTUFBTSxLQUFLLEtBQUssV0FBVyxHQUFFLEtBQUssS0FBSyxTQUFRLEtBQUssS0FBSyxXQUFXLEtBQUlBLE1BQUcsS0FBSyxLQUFLLE9BQU1BLEdBQUUsWUFBWSxDQUFDLEdBQUVELElBQUcsU0FBTyxVQUFTO0FBQUMsY0FBRyxLQUFLLEtBQUssVUFBUztBQUFDLGtCQUFNRSxLQUFFLEtBQUssS0FBSyxTQUFTLEtBQUssS0FBSztBQUFFLFlBQUFBLE9BQUksS0FBSyxRQUFNQSxJQUFFLEtBQUssUUFBTSxTQUFRLEtBQUssSUFBSSxNQUFNLEtBQUssS0FBSztBQUFBLFVBQUc7QUFBQyxlQUFLLFVBQVEsWUFBVSxLQUFLLFFBQU07QUFBQSxRQUFVO0FBQUMsVUFBRSxDQUFDRCxJQUFFRCxJQUFHLE1BQUtBLElBQUcsUUFBUSxHQUFFLFFBQVEsTUFBSSxLQUFLLFFBQU0sWUFBVyxLQUFLLFVBQVEsWUFBVSxLQUFLLFVBQVEsYUFBVyxLQUFLLEtBQUssVUFBVSxHQUFFLEtBQUssT0FBTyxJQUFHLEtBQUssVUFBUSxZQUFVLEtBQUssVUFBUSxhQUFXLEtBQUssTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFD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QUFJLE9BQU8sV0FBVyxVQUFVO0FBQy9CLFVBQU0sSUFBSSxVQUFVLGdDQUFnQyxPQUFPLE1BQU0sSUFBSTtBQUFBLEVBQ3RFO0FBS0EsU0FBTyxPQUFPLFFBQVEsT0FBTyxFQUFFO0FBQ2hDO0FBSUEsU0FBUyxZQUFZQyxJQUFHO0FBQ3ZCLFNBQU9BLE9BQU0sT0FDVEEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFRQSxNQUFLLE9BQ2xCQSxNQUFLLE9BQVFBLE1BQUssT0FDbEJBLE1BQUssT0FBUUEsTUFBSyxPQUNsQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxNQUFLLE9BQVFBLE1BQUssT0FDbEJBLE9BQU0sT0FDTkEsTUFBSyxPQUFRQSxNQUFLLE9BQ2xCQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFRQSxNQUFLLE9BQ2xCQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE9BQU0sUUFDTkEsTUFBSyxRQUFTQSxNQUFLLFFBQ25CQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sU0FDTkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE9BQU0sU0FDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxXQUNyQkEsTUFBSyxXQUFZQSxNQUFLO0FBQzNCO0FBRUEsU0FBUyxZQUFZQSxJQUFHO0FBQ3ZCLFNBQU9BLE9BQU0sU0FDVEEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUs7QUFDekI7QUFFQSxTQUFTLE9BQU9BLElBQUc7QUFDbEIsU0FBT0EsTUFBSyxRQUFVQSxNQUFLLFFBQ3ZCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsT0FBTSxTQUNOQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBV0EsTUFBSyxTQUNyQkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE1BQUssU0FBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxP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LEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFDQSxJQUFNLElBQUk7QUFBQSxFQUNSO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFDQSxJQUFNLElBQUksQ0FBQztBQUNYLElBQU0sU0FBTixjQUFxQixPQUFPO0FBQUEsRUFDMUIsY0FBYztBQUNaLFVBQU0sR0FBRyxTQUFTO0FBQ2xCLGtCQUFjLE1BQU0sU0FBUyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDcEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlBLFFBQVE7QUFDTixVQUFNLE1BQU07QUFDWixTQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFBQSxFQUNuQztBQUFBLEVBQ0EsZ0JBQWdCLEdBQUcsUUFBUTtBQUN6QixVQUFNLEtBQUssS0FBSyxNQUFNO0FBQ3RCLFFBQUlDLEtBQUksR0FBRyxDQUFDO0FBQ1osUUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNaLFFBQUlDLEtBQUksR0FBRyxDQUFDO0FBQ1osUUFBSUMsS0FBSSxHQUFHLENBQUM7QUFDWixRQUFJLElBQUksR0FBRyxDQUFDO0FBQ1osUUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNaLFFBQUlDLEtBQUksR0FBRyxDQUFDO0FBQ1osUUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNaLGFBQVNMLEtBQUksR0FBR0EsS0FBSSxJQUFJQSxNQUFLO0FBQzNCLFVBQUlBLEtBQUksSUFBSTtBQUNWLFVBQUVBLEVBQUMsSUFBSSxFQUFFLFNBQVNBLEVBQUMsSUFBSTtBQUFBLE1BQ3pCLE9BQU87QUFDTCxjQUFNLFVBQVUsRUFBRUEsS0FBSSxFQUFFO0FBQ3hCLGNBQU0sVUFBVSxXQUFXLEtBQUssWUFBWSxNQUFNLFdBQVcsS0FBSyxZQUFZLE1BQU0sWUFBWTtBQUNoRyxjQUFNLFVBQVUsRUFBRUEsS0FBSSxDQUFDO0FBQ3ZCLGNBQU0sVUFBVSxXQUFXLEtBQUssWUFBWSxPQUFPLFdBQVcsS0FBSyxZQUFZLE1BQU0sWUFBWTtBQUNqRyxVQUFFQSxFQUFDLElBQUksU0FBUyxFQUFFQSxLQUFJLENBQUMsSUFBSSxTQUFTLEVBQUVBLEtBQUksRUFBRTtBQUFBLE1BQzlDO0FBQ0EsWUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUlLO0FBQ3hCLFlBQU0sTUFBTUgsS0FBSSxJQUFJQSxLQUFJQyxLQUFJLElBQUlBO0FBQ2hDLFlBQU0sVUFBVUQsTUFBSyxLQUFLQSxPQUFNLE1BQU1BLE1BQUssS0FBS0EsT0FBTSxPQUFPQSxNQUFLLEtBQUtBLE9BQU07QUFDN0UsWUFBTSxVQUFVLEtBQUssS0FBSyxNQUFNLE1BQU0sS0FBSyxLQUFLLE1BQU0sT0FBTyxLQUFLLElBQUksTUFBTTtBQUM1RSxZQUFNLEtBQUssSUFBSSxTQUFTLEtBQUssRUFBRUYsRUFBQyxJQUFJLEVBQUVBLEVBQUM7QUFDdkMsWUFBTSxLQUFLLFNBQVM7QUFDcEIsVUFBSUs7QUFDSixNQUFBQSxLQUFJO0FBQ0osVUFBSTtBQUNKLFVBQUlELEtBQUksS0FBSztBQUNiLE1BQUFBLEtBQUlEO0FBQ0osTUFBQUEsS0FBSTtBQUNKLFVBQUlEO0FBQ0osTUFBQUEsS0FBSSxLQUFLLEtBQUs7QUFBQSxJQUNoQjtBQUNBLE9BQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJQSxLQUFJO0FBQ3BCLE9BQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUk7QUFDcEIsT0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUlDLEtBQUk7QUFDcEIsT0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUlDLEtBQUk7QUFDcEIsT0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSTtBQUNwQixPQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJO0FBQ3BCLE9BQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJQyxLQUFJO0FBQ3BCLE9BQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUk7QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsU0FBUyxlQUFlO0FBQ3RCLFVBQU0sU0FBUyxhQUFhO0FBQzVCLFVBQU0sYUFBYSxLQUFLLGNBQWM7QUFDdEMsVUFBTSxZQUFZLEtBQUssTUFBTSxXQUFXO0FBQ3hDLFNBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQyxLQUFLLE9BQU8sS0FBSyxZQUFZO0FBQzdELFNBQUssTUFBTSxPQUFPLFlBQVksT0FBTyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUs7QUFBQSxNQUN4RCxhQUFhO0FBQUEsSUFDZjtBQUNBLFNBQUssTUFBTSxPQUFPLFlBQVksT0FBTyxLQUFLLEtBQUssRUFBRSxJQUFJO0FBQ3JELFNBQUssTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFNLFNBQVM7QUFDaEQsU0FBSyxTQUFTO0FBQ2QsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBSUEsU0FBUyxhQUFhLFNBQVM7QUFDN0IsU0FBTyxJQUFJLE9BQU8sRUFBRSxTQUFTLE9BQU8sRUFBRSxTQUFTLE1BQU07QUFDdkQ7QUFFQSxTQUFTLEtBQUssUUFBUSxVQUFVLENBQUMsR0FBRztBQUNsQyxRQUFNLFNBQVMsT0FBTyxXQUFXLFdBQVcsU0FBUyxXQUFXLFFBQVEsT0FBTztBQUMvRSxTQUFPLGFBQWEsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFO0FBQ3pDOzs7QUQ1bUJBLE9BQU8sYUFBYTs7O0FFUHBCO0FBQ0E7QUFDQTtBQUVBOzs7QUNKQTs7O0FDR0EsU0FBUyxRQUFRLEtBQUs7QUFDcEIsTUFBSSxNQUFNLFFBQVEsR0FBRyxHQUFHO0FBQ3RCLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUNuQztBQUNBLFNBQVMsa0JBQWtCLE9BQU8sYUFBYSxJQUFJO0FBQ2pELFFBQU0sV0FBVyxDQUFDO0FBQ2xCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLGVBQVcsQ0FBQ0MsSUFBRyxPQUFPLEtBQUssS0FBSyxRQUFRLEdBQUc7QUFDekMsZUFBU0EsRUFBQyxJQUFJLEtBQUssSUFBSSxTQUFTQSxFQUFDLEtBQUssR0FBRyxRQUFRLE1BQU07QUFBQSxJQUN6RDtBQUFBLEVBQ0Y7QUFDQSxTQUFPLE1BQU07QUFBQSxJQUNYLENBQUNDLE9BQU1BLEdBQUU7QUFBQSxNQUNQLENBQUNDLElBQUdGLE9BQU0sYUFBYUUsR0FBRUYsT0FBTSxJQUFJLGFBQWEsUUFBUSxFQUFFLFNBQVNBLEVBQUMsQ0FBQztBQUFBLElBQ3ZFLEVBQUUsS0FBSyxJQUFJO0FBQUEsRUFDYixFQUFFLEtBQUssSUFBSTtBQUNiO0FBQ0EsU0FBUyxhQUFhLE9BQU87QUFDM0IsU0FBTyxPQUFPLFVBQVUsYUFBYSxNQUFNLElBQUk7QUFDakQ7QUFDQSxJQUFNLFdBQU4sY0FBdUIsTUFBTTtBQUFBLEVBQzNCLFlBQVksU0FBUyxNQUFNO0FBQ3pCLFVBQU0sT0FBTztBQUNiLFNBQUssT0FBTztBQUNaLFNBQUssT0FBTztBQUFBLEVBQ2Q7QUFDRjtBQUVBLElBQU0saUJBQWlCO0FBQ3ZCLElBQU0sZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEtBQUssR0FBRztBQUN6QyxTQUFTLFlBQVksT0FBTyxJQUFJO0FBQzlCLE1BQUksZUFBZSxLQUFLLElBQUksR0FBRztBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sU0FBUyxLQUFLLFlBQVk7QUFDbkM7QUFDQSxTQUFTLFlBQVksS0FBSyxZQUFZO0FBQ3BDLFFBQU0sWUFBWSxjQUFjO0FBQ2hDLFFBQU0sUUFBUSxDQUFDO0FBQ2YsTUFBSSxDQUFDLE9BQU8sT0FBTyxRQUFRLFVBQVU7QUFDbkMsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE9BQU87QUFDWCxNQUFJO0FBQ0osTUFBSTtBQUNKLGFBQVcsUUFBUSxLQUFLO0FBQ3RCLFVBQU0sYUFBYSxVQUFVLFNBQVMsSUFBSTtBQUMxQyxRQUFJLGVBQWUsTUFBTTtBQUN2QixZQUFNLEtBQUssSUFBSTtBQUNmLGFBQU87QUFDUCxzQkFBZ0I7QUFDaEI7QUFBQSxJQUNGO0FBQ0EsVUFBTSxVQUFVLFlBQVksSUFBSTtBQUNoQyxRQUFJLHFCQUFxQixPQUFPO0FBQzlCLFVBQUksa0JBQWtCLFNBQVMsWUFBWSxNQUFNO0FBQy9DLGNBQU0sS0FBSyxJQUFJO0FBQ2YsZUFBTztBQUNQLHdCQUFnQjtBQUNoQjtBQUFBLE1BQ0Y7QUFDQSxVQUFJLGtCQUFrQixRQUFRLFlBQVksU0FBUyxLQUFLLFNBQVMsR0FBRztBQUNsRSxjQUFNLFdBQVcsS0FBSyxHQUFHLEVBQUU7QUFDM0IsY0FBTSxLQUFLLEtBQUssTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztBQUN0RCxlQUFPLFdBQVc7QUFDbEIsd0JBQWdCO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxZQUFRO0FBQ1Isb0JBQWdCO0FBQ2hCLHVCQUFtQjtBQUFBLEVBQ3JCO0FBQ0EsUUFBTSxLQUFLLElBQUk7QUFDZixTQUFPO0FBQ1Q7QUFDQSxTQUFTLFdBQVcsS0FBSztBQUN2QixTQUFPLE1BQU0sSUFBSSxDQUFDLEVBQUUsWUFBWSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7QUFDckQ7QUFDQSxTQUFTLFdBQVcsS0FBSztBQUN2QixTQUFPLE1BQU0sSUFBSSxDQUFDLEVBQUUsWUFBWSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7QUFDckQ7QUFDQSxTQUFTLFdBQVcsS0FBSyxNQUFNO0FBQzdCLFNBQU8sT0FBTyxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDRyxPQUFNLFdBQVcsTUFBTSxZQUFZQSxHQUFFLFlBQVksSUFBSUEsRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDdEk7QUFDQSxTQUFTLFVBQVUsS0FBSyxNQUFNO0FBQzVCLFNBQU8sV0FBVyxXQUFXLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDL0M7QUFDQSxTQUFTLFVBQVUsS0FBSyxRQUFRO0FBQzlCLFNBQU8sT0FBTyxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDQSxPQUFNQSxHQUFFLFlBQVksQ0FBQyxFQUFFLEtBQUssVUFBVSxHQUFHLElBQUk7QUFDL0c7QUFFQSxTQUFTLE1BQU0sS0FBSztBQUNsQixTQUFPLE9BQU8sU0FBUyxDQUFDLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRztBQUM3RDtBQUNBLFNBQVMsTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNO0FBQ2xDLE1BQUlDO0FBQ0osUUFBTSxNQUFNLElBQUksR0FBRztBQUNuQixRQUFNLE1BQU0sQ0FBQyxLQUFLLE9BQU8sUUFBUSxHQUFHLElBQUksT0FBTyxVQUFVLFFBQVEsT0FBTyxLQUFLLE9BQU8sR0FBRyxJQUFJLE9BQU8sUUFBUSxZQUFZLE1BQU0sQ0FBQyxLQUFLLFFBQVEsUUFBUSxHQUFHLElBQUksUUFBUSxVQUFVLFFBQVEsUUFBUSxXQUFXLElBQUksRUFBRSxNQUFNQSxLQUFJLENBQUMsS0FBS0EsS0FBSSxNQUFNLEtBQUtBLEtBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRQSxLQUFJLENBQUMsS0FBS0EsS0FBSSxNQUFNLEtBQUtBLEtBQUk7QUFDNVIsTUFBSSxHQUFHLElBQUksT0FBTyxTQUFTLE1BQU0sTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHO0FBQ25GO0FBQ0EsU0FBUyxhQUFhLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHO0FBQzFDLE1BQUlDO0FBQ0osTUFBSTtBQUNKLE1BQUk7QUFDSixNQUFJO0FBQ0osTUFBSTtBQUNKLFFBQU0sTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQ3BCLE1BQUlMLEtBQUk7QUFDUixNQUFJLElBQUk7QUFDUixNQUFJLE1BQU07QUFDVixRQUFNLE1BQU0sS0FBSztBQUNqQixRQUFNLFFBQVEsS0FBSyxVQUFVO0FBQzdCLFFBQU0sU0FBUyxLQUFLLFlBQVk7QUFDaEMsUUFBTU0sWUFBVyxLQUFLLFlBQVk7QUFDbEMsT0FBSyxRQUFRLEtBQUssU0FBUyxDQUFDO0FBQzVCLE9BQUssU0FBUyxNQUFNLEtBQUssTUFBTTtBQUMvQixPQUFLLFVBQVUsTUFBTSxLQUFLLE9BQU87QUFDakMsTUFBSSxPQUFPO0FBQ1QsU0FBS0QsTUFBSyxLQUFLLE9BQU87QUFDcEIsWUFBTSxLQUFLLE1BQU1BLEVBQUMsSUFBSSxNQUFNLEtBQUssTUFBTUEsRUFBQyxDQUFDO0FBQ3pDLFdBQUtMLEtBQUksR0FBR0EsS0FBSSxJQUFJLFFBQVFBLE1BQUs7QUFDL0IsU0FBQyxLQUFLLE1BQU0sSUFBSUEsRUFBQyxDQUFDLElBQUksSUFBSSxPQUFPSyxFQUFDLEdBQUcsT0FBT0wsSUFBRyxDQUFDO0FBQUEsTUFDbEQ7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLE9BQUtBLEtBQUksS0FBSyxRQUFRLFFBQVFBLE9BQU0sS0FBSztBQUN2QyxVQUFNLEtBQUssTUFBTSxLQUFLLFFBQVFBLEVBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdEMsU0FBSyxJQUFJLElBQUksUUFBUSxNQUFNLEtBQUs7QUFDOUIsV0FBSyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFDQSxPQUFLQSxLQUFJLEtBQUssT0FBTyxRQUFRQSxPQUFNLEtBQUs7QUFDdEMsVUFBTSxLQUFLLE1BQU0sS0FBSyxPQUFPQSxFQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3JDLFNBQUssSUFBSSxJQUFJLFFBQVEsTUFBTSxLQUFLO0FBQzlCLFdBQUssT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQUEsSUFDekI7QUFBQSxFQUNGO0FBQ0EsTUFBSU0sV0FBVTtBQUNaLFNBQUtELE1BQUssS0FBSyxTQUFTO0FBQ3RCLGFBQU8sT0FBTyxLQUFLLFFBQVFBLEVBQUM7QUFDNUIsWUFBTSxLQUFLLE1BQU1BLEVBQUMsSUFBSSxLQUFLLE1BQU1BLEVBQUMsS0FBSyxDQUFDO0FBQ3hDLFVBQUksS0FBSyxJQUFJLE1BQU0sUUFBUTtBQUN6QixhQUFLLElBQUksRUFBRSxLQUFLQSxFQUFDO0FBQ2pCLGFBQUtMLEtBQUksR0FBR0EsS0FBSSxJQUFJLFFBQVFBLE1BQUs7QUFDL0IsZUFBSyxJQUFJLEVBQUUsS0FBSyxJQUFJQSxFQUFDLENBQUM7QUFBQSxRQUN4QjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFFBQU0sT0FBTyxTQUFTLE9BQU8sS0FBSyxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ2pELE9BQUtBLEtBQUksR0FBR0EsS0FBSSxLQUFLQSxNQUFLO0FBQ3hCLFVBQU0sS0FBS0EsRUFBQztBQUNaLFFBQUksUUFBUSxNQUFNO0FBQ2hCLFVBQUksSUFBSSxJQUFJLEVBQUUsT0FBTyxLQUFLLE1BQU0sRUFBRUEsRUFBQyxDQUFDO0FBQ3BDO0FBQUEsSUFDRjtBQUNBLFNBQUssSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDL0IsVUFBSSxJQUFJLFdBQVcsQ0FBQyxNQUFNLElBQUk7QUFDNUI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxHQUFHO0FBQ1gsVUFBSSxFQUFFLEtBQUssR0FBRztBQUFBLElBQ2hCLFdBQVcsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sT0FBTztBQUM1QyxhQUFPLElBQUksTUFBTSxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQyxVQUFJLFVBQVUsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLEdBQUc7QUFDbEMsZUFBTyxLQUFLLFFBQVEsR0FBRztBQUFBLE1BQ3pCO0FBQ0EsVUFBSSxJQUFJLElBQUk7QUFBQSxJQUNkLE9BQU87QUFDTCxXQUFLLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxRQUFRLE9BQU87QUFDekMsWUFBSSxJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUk7QUFDOUI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLGFBQU8sSUFBSSxVQUFVLEdBQUcsR0FBRztBQUMzQixZQUFNLElBQUksTUFBTSxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLQSxLQUFJLE1BQU0sUUFBUSxLQUFLLEtBQUtBLEtBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLE1BQU0sS0FBSyxFQUFFQSxFQUFDO0FBQzNHLFlBQU0sTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJO0FBQ3pCLFdBQUssTUFBTSxHQUFHLE1BQU0sSUFBSSxRQUFRLE9BQU87QUFDckMsZUFBTyxJQUFJLEdBQUc7QUFDZCxZQUFJLFVBQVUsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLEdBQUc7QUFDbEMsaUJBQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksSUFBSTtBQUFBLFFBQzFDO0FBQ0EsY0FBTSxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksVUFBVSxLQUFLLElBQUk7QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsTUFBSU0sV0FBVTtBQUNaLFNBQUtELE1BQUssS0FBSyxTQUFTO0FBQ3RCLFVBQUksSUFBSUEsRUFBQyxNQUFNLFFBQVE7QUFDckIsWUFBSUEsRUFBQyxJQUFJLEtBQUssUUFBUUEsRUFBQztBQUFBLE1BQ3pCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLE9BQU87QUFDVCxTQUFLQSxNQUFLLEtBQUs7QUFDYixZQUFNLEtBQUssTUFBTUEsRUFBQyxLQUFLLENBQUM7QUFDeEIsYUFBTyxJQUFJLFNBQVMsR0FBRztBQUNyQixZQUFJLElBQUksTUFBTSxDQUFDLElBQUksSUFBSUEsRUFBQztBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLFVBQVUsU0FBUyxTQUFTO0FBQ25DLFFBQU0sZUFBZTtBQUFBLElBQ25CLFNBQVMsQ0FBQztBQUFBLElBQ1YsUUFBUSxDQUFDO0FBQUEsSUFDVCxPQUFPLENBQUM7QUFBQSxJQUNSLE9BQU8sQ0FBQztBQUFBLElBQ1IsU0FBUyxDQUFDO0FBQUEsRUFDWjtBQUNBLFFBQU0sT0FBTyxZQUFZLE9BQU87QUFDaEMsYUFBVyxPQUFPLE1BQU07QUFDdEIsUUFBSSxJQUFJLFNBQVMsY0FBYztBQUM3QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLElBQUksU0FBUyxVQUFVO0FBQ3pCLG1CQUFhLE9BQU8sS0FBSyxJQUFJLElBQUk7QUFBQSxJQUNuQyxXQUFXLElBQUksU0FBUyxXQUFXO0FBQ2pDLG1CQUFhLFFBQVEsS0FBSyxJQUFJLElBQUk7QUFBQSxJQUNwQztBQUNBLFFBQUksSUFBSSxZQUFZLFFBQVE7QUFDMUIsbUJBQWEsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJO0FBQUEsSUFDdkM7QUFDQSxRQUFJLElBQUksT0FBTztBQUNiLG1CQUFhLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSTtBQUFBLElBQ3JDO0FBQUEsRUFDRjtBQUNBLFFBQU0sU0FBUyxhQUFhLFNBQVMsWUFBWTtBQUNqRCxRQUFNLENBQUMsR0FBRyxtQkFBbUIsSUFBSSxPQUFPO0FBQ3hDLFFBQU0sa0JBQWtCLElBQUksTUFBTSxRQUFRO0FBQUEsSUFDeEMsSUFBSSxRQUFRLE1BQU07QUFDaEIsYUFBTyxPQUFPLElBQUksS0FBSyxPQUFPLFVBQVUsSUFBSSxDQUFDLEtBQUssT0FBTyxVQUFVLElBQUksQ0FBQztBQUFBLElBQzFFO0FBQUEsRUFDRixDQUFDO0FBQ0QsYUFBVyxDQUFDLEVBQUUsR0FBRyxLQUFLLEtBQUssUUFBUSxHQUFHO0FBQ3BDLFFBQUksSUFBSSxTQUFTLGNBQWM7QUFDN0IsWUFBTSx5QkFBeUIsb0JBQW9CLE1BQU07QUFDekQsVUFBSSwyQkFBMkIsUUFBUTtBQUNyQyx3QkFBZ0IsSUFBSSxJQUFJLElBQUk7QUFBQSxNQUM5QixXQUFXLElBQUksWUFBWSxVQUFVLElBQUksYUFBYSxPQUFPO0FBQzNELGNBQU0sSUFBSTtBQUFBLFVBQ1IseUNBQXlDLElBQUksS0FBSyxZQUFZLENBQUM7QUFBQSxVQUMvRDtBQUFBLFFBQ0Y7QUFBQSxNQUNGLE9BQU87QUFDTCx3QkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSTtBQUFBLE1BQ2xDO0FBQUEsSUFDRixXQUFXLElBQUksWUFBWSxnQkFBZ0IsSUFBSSxJQUFJLE1BQU0sUUFBUTtBQUMvRCxZQUFNLElBQUksU0FBUyxnQ0FBZ0MsSUFBSSxJQUFJLElBQUksTUFBTTtBQUFBLElBQ3ZFO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUNBLFNBQVMsWUFBWSxTQUFTO0FBQzVCLFFBQU0sT0FBTyxDQUFDO0FBQ2QsYUFBVyxDQUFDLE1BQU0sTUFBTSxLQUFLLE9BQU8sUUFBUSxXQUFXLENBQUMsQ0FBQyxHQUFHO0FBQzFELFNBQUssS0FBSztBQUFBLE1BQ1IsR0FBRztBQUFBLE1BQ0g7QUFBQSxNQUNBLE9BQU8sUUFBUSxPQUFPLEtBQUs7QUFBQSxJQUM3QixDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU87QUFDVDtBQUVBLFNBQVMsY0FBYyxLQUFLO0FBQzFCLFNBQU87QUFDVDtBQUNBLGVBQWUsV0FBVyxLQUFLLE1BQU07QUFDbkMsUUFBTSxVQUFVLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELFFBQU0sYUFBYSxVQUFVLEtBQUssU0FBUyxPQUFPO0FBQ2xELFFBQU0sVUFBVTtBQUFBLElBQ2QsU0FBUyxLQUFLO0FBQUEsSUFDZCxNQUFNO0FBQUEsSUFDTixNQUFNLEtBQUs7QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUNBLE1BQUksT0FBTyxJQUFJLFVBQVUsWUFBWTtBQUNuQyxVQUFNLElBQUksTUFBTSxPQUFPO0FBQUEsRUFDekI7QUFDQSxNQUFJO0FBQ0osTUFBSTtBQUNGLFVBQU0sY0FBYyxNQUFNLGFBQWEsSUFBSSxXQUFXO0FBQ3RELFFBQUksZUFBZSxPQUFPLEtBQUssV0FBVyxFQUFFLFNBQVMsR0FBRztBQUN0RCxZQUFNLHFCQUFxQixLQUFLLFFBQVE7QUFBQSxRQUN0QyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsR0FBRztBQUFBLE1BQzlCO0FBQ0EsWUFBTSxpQkFBaUIsS0FBSyxRQUFRLGtCQUFrQjtBQUN0RCxVQUFJLGdCQUFnQjtBQUNsQixZQUFJLENBQUMsWUFBWSxjQUFjLEdBQUc7QUFDaEMsZ0JBQU0sSUFBSTtBQUFBLFlBQ1IscUJBQXFCLGNBQWM7QUFBQSxZQUNuQztBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsY0FBTSxhQUFhLE1BQU0sYUFBYSxZQUFZLGNBQWMsQ0FBQztBQUNqRSxZQUFJLFlBQVk7QUFDZCxnQkFBTSxXQUFXLFlBQVk7QUFBQSxZQUMzQixTQUFTLEtBQUssUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQUEsVUFDcEQsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGLFdBQVcsQ0FBQyxJQUFJLEtBQUs7QUFDbkIsY0FBTSxJQUFJLFNBQVMseUJBQXlCLGNBQWM7QUFBQSxNQUM1RDtBQUFBLElBQ0Y7QUFDQSxRQUFJLE9BQU8sSUFBSSxRQUFRLFlBQVk7QUFDakMsZUFBUyxNQUFNLElBQUksSUFBSSxPQUFPO0FBQUEsSUFDaEM7QUFBQSxFQUNGLFVBQUU7QUFDQSxRQUFJLE9BQU8sSUFBSSxZQUFZLFlBQVk7QUFDckMsWUFBTSxJQUFJLFFBQVEsT0FBTztBQUFBLElBQzNCO0FBQUEsRUFDRjtBQUNBLFNBQU8sRUFBRSxPQUFPO0FBQ2xCO0FBQ0EsZUFBZSxrQkFBa0IsS0FBSyxTQUFTLFFBQVE7QUFDckQsUUFBTSxjQUFjLE1BQU0sYUFBYSxJQUFJLFdBQVc7QUFDdEQsTUFBSSxlQUFlLE9BQU8sS0FBSyxXQUFXLEVBQUUsU0FBUyxHQUFHO0FBQ3RELFVBQU0scUJBQXFCLFFBQVEsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDO0FBQzFFLFVBQU0saUJBQWlCLFFBQVEsa0JBQWtCO0FBQ2pELFVBQU0sYUFBYSxNQUFNLGFBQWEsWUFBWSxjQUFjLENBQUM7QUFDakUsUUFBSSxZQUFZO0FBQ2QsYUFBTztBQUFBLFFBQ0w7QUFBQSxRQUNBLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUFBLFFBQ3BDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsU0FBTyxDQUFDLEtBQUssTUFBTTtBQUNyQjtBQUVBLGVBQWUsVUFBVSxLQUFLLFFBQVE7QUFDcEMsTUFBSTtBQUNGLFlBQVEsSUFBSSxNQUFNLFlBQVksS0FBSyxNQUFNLElBQUksSUFBSTtBQUFBLEVBQ25ELFNBQVMsT0FBTztBQUNkLFlBQVEsTUFBTSxLQUFLO0FBQUEsRUFDckI7QUFDRjtBQUNBLGVBQWUsWUFBWSxLQUFLLFFBQVE7QUFDdEMsUUFBTSxVQUFVLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELFFBQU0sVUFBVSxZQUFZLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDOUQsUUFBTSxhQUFhLE1BQU0sYUFBYSxRQUFRLFFBQVEsQ0FBQyxDQUFDO0FBQ3hELFFBQU0sY0FBYyxHQUFHLFdBQVcsT0FBTyxHQUFHLFdBQVcsSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLFFBQVEsUUFBUSxLQUFLLENBQUM7QUFDdkcsUUFBTSxXQUFXLENBQUM7QUFDbEIsUUFBTSxXQUFXLENBQUM7QUFDbEIsUUFBTSxnQkFBZ0IsQ0FBQztBQUN2QixRQUFNLFlBQVksQ0FBQztBQUNuQixhQUFXLE9BQU8sU0FBUztBQUN6QixRQUFJLElBQUksU0FBUyxjQUFjO0FBQzdCLFlBQU0sT0FBTyxJQUFJLEtBQUssWUFBWTtBQUNsQyxZQUFNLGFBQWEsSUFBSSxhQUFhLFNBQVMsSUFBSSxZQUFZO0FBQzdELFlBQU0sY0FBYyxJQUFJLFVBQVUsS0FBSyxJQUFJLE9BQU8sTUFBTTtBQUN4RCxlQUFTLEtBQUs7QUFBQSxRQUNaLE1BQU0sT0FBTyxjQUFjO0FBQUEsUUFDM0IsSUFBSSxlQUFlO0FBQUEsUUFDbkIsSUFBSSxZQUFZLElBQUksSUFBSSxTQUFTLE1BQU07QUFBQSxNQUN6QyxDQUFDO0FBQ0QsZ0JBQVUsS0FBSyxhQUFhLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxHQUFHO0FBQUEsSUFDdkQsT0FBTztBQUNMLFlBQU0sYUFBYSxJQUFJLGFBQWEsUUFBUSxJQUFJLFlBQVk7QUFDNUQsWUFBTSxVQUFVLElBQUksU0FBUyxhQUFhLElBQUksWUFBWSxPQUFPO0FBQUEsUUFDL0QsSUFBSSxJQUFJLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ0UsT0FBTSxRQUFRQSxFQUFDLEVBQUU7QUFBQSxRQUMzQyxRQUFRLElBQUksSUFBSTtBQUFBLE1BQ2xCLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxPQUFNLElBQUlBLEVBQUMsRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRTtBQUFBLFFBQ3pFO0FBQUEsTUFDRixNQUFNLElBQUksU0FBUyxhQUFhLElBQUksYUFBYSxJQUFJLFdBQVcsSUFBSSxJQUFJLFlBQVksSUFBSSxJQUFJLFNBQVMsTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLEdBQUcsS0FBSztBQUN4SSxlQUFTLEtBQUs7QUFBQSxRQUNaLE1BQU0sVUFBVSxhQUFhLGdCQUFnQixNQUFNO0FBQUEsUUFDbkQsSUFBSSxlQUFlO0FBQUEsTUFDckIsQ0FBQztBQUNELFVBQUksWUFBWTtBQUNkLGtCQUFVLEtBQUssTUFBTTtBQUFBLE1BQ3ZCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLElBQUksYUFBYTtBQUNuQixVQUFNLGVBQWUsQ0FBQztBQUN0QixVQUFNLGNBQWMsTUFBTSxhQUFhLElBQUksV0FBVztBQUN0RCxlQUFXLENBQUMsTUFBTSxHQUFHLEtBQUssT0FBTyxRQUFRLFdBQVcsR0FBRztBQUNyRCxZQUFNLFNBQVMsTUFBTSxhQUFhLEdBQUc7QUFDckMsWUFBTSxPQUFPLE1BQU0sYUFBYSxRQUFRLElBQUk7QUFDNUMsb0JBQWMsS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLE1BQU0sZUFBZSxFQUFFLENBQUM7QUFDM0QsbUJBQWEsS0FBSyxJQUFJO0FBQUEsSUFDeEI7QUFDQSxjQUFVLEtBQUssYUFBYSxLQUFLLEdBQUcsQ0FBQztBQUFBLEVBQ3ZDO0FBQ0EsUUFBTSxhQUFhLENBQUM7QUFDcEIsUUFBTSxVQUFVLFFBQVEsV0FBVyxXQUFXO0FBQzlDLGFBQVc7QUFBQSxJQUNULE9BQU87QUFBQSxNQUNMLEdBQUcsUUFBUSxXQUFXLEtBQUssZUFBZSxVQUFVLEtBQUssT0FBTyxLQUFLLEdBQUc7QUFBQSxJQUMxRTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0EsUUFBTSxhQUFhLFNBQVMsU0FBUyxLQUFLLFNBQVMsU0FBUztBQUM1RCxhQUFXO0FBQUEsSUFDVCxHQUFHLE9BQU8sVUFBVSxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxlQUFlLEVBQUUsSUFBSSxVQUFVLEtBQUssR0FBRyxDQUFDO0FBQUEsSUFDbEg7QUFBQSxFQUNGO0FBQ0EsTUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixlQUFXLEtBQUssT0FBTyxVQUFVLE9BQU8sS0FBSyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzlELGVBQVcsS0FBSyxrQkFBa0IsVUFBVSxJQUFJLENBQUM7QUFDakQsZUFBVyxLQUFLLEVBQUU7QUFBQSxFQUNwQjtBQUNBLE1BQUksU0FBUyxTQUFTLEdBQUc7QUFDdkIsZUFBVyxLQUFLLE9BQU8sVUFBVSxPQUFPLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUM1RCxlQUFXLEtBQUssa0JBQWtCLFVBQVUsSUFBSSxDQUFDO0FBQ2pELGVBQVcsS0FBSyxFQUFFO0FBQUEsRUFDcEI7QUFDQSxNQUFJLGNBQWMsU0FBUyxHQUFHO0FBQzVCLGVBQVcsS0FBSyxPQUFPLFVBQVUsT0FBTyxLQUFLLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDN0QsZUFBVyxLQUFLLGtCQUFrQixlQUFlLElBQUksQ0FBQztBQUN0RCxlQUFXO0FBQUEsTUFDVDtBQUFBLE1BQ0EsU0FBUyxXQUFXO0FBQUEsSUFDdEI7QUFBQSxFQUNGO0FBQ0EsU0FBTyxXQUFXLE9BQU8sQ0FBQ04sT0FBTSxPQUFPQSxPQUFNLFFBQVEsRUFBRSxLQUFLLElBQUk7QUFDbEU7QUFFQSxlQUFlLFFBQVEsS0FBSyxPQUFPLENBQUMsR0FBRztBQUNyQyxRQUFNLFVBQVUsS0FBSyxXQUFXLFFBQVEsS0FBSyxNQUFNLENBQUM7QUFDcEQsUUFBTSxjQUFjLEtBQUssYUFBYTtBQUN0QyxNQUFJO0FBQ0YsUUFBSSxRQUFRLFNBQVMsUUFBUSxLQUFLLFFBQVEsU0FBUyxJQUFJLEdBQUc7QUFDeEQsWUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBa0IsS0FBSyxPQUFPLENBQUM7QUFDMUQsY0FBUSxLQUFLLENBQUM7QUFBQSxJQUNoQixXQUFXLFFBQVEsV0FBVyxLQUFLLFFBQVEsQ0FBQyxNQUFNLGFBQWE7QUFDN0QsWUFBTSxPQUFPLE9BQU8sSUFBSSxTQUFTLGFBQWEsTUFBTSxJQUFJLEtBQUssSUFBSSxNQUFNLElBQUk7QUFDM0UsVUFBSSxDQUFDLE1BQU0sU0FBUztBQUNsQixjQUFNLElBQUksU0FBUyx3QkFBd0IsY0FBYztBQUFBLE1BQzNEO0FBQ0EsY0FBUSxJQUFJLEtBQUssT0FBTztBQUFBLElBQzFCLE9BQU87QUFDTCxZQUFNLFdBQVcsS0FBSyxFQUFFLFFBQVEsQ0FBQztBQUFBLElBQ25DO0FBQUEsRUFDRixTQUFTLE9BQU87QUFDZCxVQUFNLGFBQWEsaUJBQWlCO0FBQ3BDLFFBQUksQ0FBQyxZQUFZO0FBQ2YsY0FBUSxNQUFNLE9BQU8sSUFBSTtBQUFBLElBQzNCO0FBQ0EsUUFBSSxZQUFZO0FBQ2QsWUFBTSxZQUFZLEdBQUcsTUFBTSxrQkFBa0IsS0FBSyxPQUFPLENBQUM7QUFBQSxJQUM1RDtBQUNBLFlBQVEsTUFBTSxNQUFNLE9BQU87QUFDM0IsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNGOzs7QUpoY0EsU0FBUywwQkFBZ0Q7OztBS1B6RCxJQUFNLGlCQUNKO0FBRUssU0FBUyxvQkFDZCxlQUN5QjtBQUN6QixRQUFNLFFBQVEsY0FBYyxNQUFNLGNBQWM7QUFFaEQsTUFBSSxPQUFPO0FBQ1QsV0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFDNUI7QUFFQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLGtCQUFrQixVQUEyQjtBQUMzRCxTQUFPLE9BQU8sU0FBUyxlQUFlLFdBQ2xDLFNBQVMsYUFDVCxTQUFTLFlBQVk7QUFDM0I7QUFFQSxJQUFNLGVBQWU7QUFLZCxTQUFTLHFCQUFxQixVQUFrQjtBQUNyRCxTQUFPLFNBQVMsVUFBVSxHQUFHLFlBQVk7QUFDM0M7OztBTGRBLFNBQVMsWUFBWTtBQUNyQixPQUFPLFlBQVk7QUFFbkIsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyx3QkFBMEM7OztBTXBCbkQ7QUFBQSxFQUNFLE1BQVE7QUFBQSxFQUNSLFNBQVc7QUFBQSxFQUNYLGFBQWU7QUFBQSxFQUNmLE1BQVE7QUFBQSxFQUNSLE1BQVE7QUFBQSxFQUNSLEtBQU87QUFBQSxJQUNMLGNBQWM7QUFBQSxFQUNoQjtBQUFBLEVBQ0EsWUFBYztBQUFBLElBQ1osTUFBUTtBQUFBLElBQ1IsS0FBTztBQUFBLElBQ1AsV0FBYTtBQUFBLEVBQ2Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQU87QUFBQSxJQUNQLE9BQVM7QUFBQSxJQUNULGlCQUFpQjtBQUFBLEVBQ25CO0FBQUEsRUFDQSxVQUFZLENBQUM7QUFBQSxFQUNiLFFBQVU7QUFBQSxFQUNWLFNBQVc7QUFBQSxFQUNYLGNBQWdCO0FBQUEsSUFDZCxpQkFBaUI7QUFBQSxJQUNqQix3QkFBd0I7QUFBQSxJQUN4QixtQkFBbUI7QUFBQSxJQUNuQixRQUFVO0FBQUEsSUFDVixjQUFnQjtBQUFBLElBQ2hCLGFBQWE7QUFBQSxJQUNiLGtCQUFrQjtBQUFBLElBQ2xCLFlBQWM7QUFBQSxFQUNoQjtBQUFBLEVBQ0EsaUJBQW1CO0FBQUEsSUFDakIscUJBQXFCO0FBQUEsSUFDckIsT0FBUztBQUFBLElBQ1QsTUFBUTtBQUFBLEVBQ1Y7QUFDRjs7O0FDckNPLElBQU0sd0JBQXdCLENBQ25DLGtCQUNJO0FBQUEsRUFDSixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdiLE9BQU8sT0FBTyxZQUFZLEVBQ3pCO0FBQUEsSUFDQyxDQUFDLFFBQVE7QUFBQTtBQUFBLFFBRUwsR0FBRztBQUFBO0FBQUE7QUFBQSxFQUdULEVBQ0MsS0FBSyxFQUFFLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWdCVCxnQkFBZ0IsS0FBSztBQUFBLElBQ25CO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxhQUFhO0FBQUEsTUFDYixNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0EsVUFBVSxDQUFDO0FBQUEsTUFDWCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGOzs7QVA5QkEsWUFBWSxVQUFVO0FBa0J0QixJQUFNLFNBQVMsUUFBUSxJQUFJLFdBQVc7QUFDdEMsSUFBTSxhQUFhLElBQUksSUFBSSxZQUFZLE1BQU07QUFDN0MsSUFBTSxrQkFBa0IsSUFBSSxJQUFJLHFCQUFxQixNQUFNO0FBQzNELElBQU0sa0JBQWtCLElBQUksSUFBSSxxQkFBcUIsTUFBTTtBQUMzRCxJQUFNLG9CQUFvQixJQUFJLElBQUksdUJBQXVCLE1BQU07QUFFL0QsSUFBTSxPQUFPLGNBQWM7QUFBQSxFQUN6QixNQUFNO0FBQUEsSUFDSixTQUFTLGdCQUFJO0FBQUEsSUFDYixNQUFNO0FBQUEsSUFDTixhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0EsYUFBYTtBQUFBLElBQ1gsU0FBUyxNQUFNO0FBQ2IsYUFBTztBQUFBLFFBQ0wsTUFBTTtBQUFBLFVBQ0osU0FBUztBQUFBLFlBQ1AsTUFBTTtBQUFBLFlBQ04sYUFDRTtBQUFBLFVBQ0o7QUFBQSxVQUNBLFVBQVU7QUFBQSxZQUNSLE1BQU07QUFBQSxZQUNOLGFBQ0U7QUFBQSxZQUNGLFNBQVM7QUFBQSxVQUNYO0FBQUEsVUFDQSxNQUFNO0FBQUEsWUFDSixNQUFNO0FBQUEsWUFDTixhQUFhO0FBQUEsVUFDZjtBQUFBLFVBQ0EsTUFBTTtBQUFBLFlBQ0osTUFBTTtBQUFBLFlBQ04sYUFBYTtBQUFBLFVBQ2Y7QUFBQSxVQUNBLFVBQVU7QUFBQSxZQUNSLE1BQU07QUFBQSxZQUNOLGFBQ0U7QUFBQSxVQUNKO0FBQUEsVUFDQSxTQUFTO0FBQUEsWUFDUCxNQUFNO0FBQUE7QUFBQSxZQUNOLGFBQWE7QUFBQSxZQUNiLFNBQVM7QUFBQSxVQUNYO0FBQUEsVUFDQSxrQkFBa0I7QUFBQSxZQUNoQixNQUFNO0FBQUEsWUFDTixhQUFhO0FBQUEsWUFDYixTQUFTO0FBQUEsVUFDWDtBQUFBLFVBQ0EsTUFBTTtBQUFBLFlBQ0osTUFBTTtBQUFBLFlBQ04sYUFBYTtBQUFBLFVBQ2Y7QUFBQSxVQUNBLGdCQUFnQjtBQUFBLFlBQ2QsTUFBTTtBQUFBLFlBQ04sYUFDRTtBQUFBLFlBQ0YsTUFBTSxDQUFDLE9BQU8sT0FBTyxRQUFRLE1BQU07QUFBQSxZQUNuQyxTQUFTO0FBQUEsVUFDWDtBQUFBLFVBQ0EsS0FBSztBQUFBLFlBQ0gsTUFBTTtBQUFBLFlBQ04sYUFDRTtBQUFBLFVBQ0o7QUFBQSxRQUNGO0FBQUEsUUFDQSxLQUFLLE9BQU8sRUFBRSxLQUFLLE1BQU07QUFDdkIsZ0JBQU0sUUFDSixLQUFLLEVBQUUsU0FBUyxJQUNaLE1BQU0sS0FBSyxLQUFLLEdBQUc7QUFBQSxZQUNqQixtQkFBbUI7QUFBQSxZQUNuQixpQkFBaUI7QUFBQSxZQUNqQixVQUFVO0FBQUEsVUFDWixDQUFDLElBQ0QsQ0FBQyxRQUFRLElBQUksQ0FBQztBQUVwQixnQkFBTSxZQUFZLE1BQU0sS0FBSyxLQUFLLFlBQVksQ0FBQyxHQUFHO0FBQUEsWUFDaEQsbUJBQW1CO0FBQUEsWUFDbkIsaUJBQWlCO0FBQUEsWUFDakIsVUFBVTtBQUFBLFVBQ1osQ0FBQztBQUVELGdCQUFNLFdBQVcsSUFBSSxTQUFTO0FBRTlCLGdCQUFNLFlBQVksQ0FBQyxDQUFDLEtBQUs7QUFDekIsY0FBSSxhQUF5QjtBQUU3QixjQUFJLEtBQUssTUFBTTtBQUNiLHlCQUFhO0FBQUEsVUFDZixXQUFXLEtBQUssTUFBTTtBQUNwQix5QkFBYTtBQUFBLFVBQ2Y7QUFFQSxnQkFBTSxvQkFBb0IsQ0FBQyxDQUFDLEtBQUs7QUFDakMsZ0JBQU0sa0JBQWtCLENBQUMsQ0FBQyxLQUFLLGdCQUFnQjtBQUMvQyxnQkFBTSxzQkFBc0IsQ0FBQyxDQUFDLEtBQUs7QUFDbkMsZ0JBQU0sVUFBbUIsS0FBSztBQUM5QixnQkFBTSx5QkFBeUIsS0FBSztBQU1wQyxjQUNFLENBQUMsQ0FBQyxPQUFPLE9BQU8sUUFBUSxNQUFNLEVBQUUsU0FBUyxzQkFBc0IsR0FDL0Q7QUFDQSxvQkFBUTtBQUFBLGNBQ04sZ0NBQWdDLHNCQUFzQjtBQUFBLFlBQ3hEO0FBQ0Esb0JBQVEsS0FBSyxDQUFDO0FBQUEsVUFDaEI7QUFFQSxjQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsUUFBUSxJQUFJLG1CQUFtQixRQUFRO0FBQzlELG9CQUFRO0FBQUEsY0FDTjtBQUFBLFlBQ0Y7QUFDQSxvQkFBUSxLQUFLLENBQUM7QUFBQSxVQUNoQjtBQUVBLGdCQUFNO0FBQUEsWUFDSjtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxVQUNGLElBQUksUUFBUTtBQUVaLGdCQUFNLENBQUMsT0FBTyxJQUFJLElBQUksa0JBQWtCLE1BQU0sR0FBRztBQUVqRCxnQkFBTSxXQUFXO0FBQUEsWUFDZjtBQUFBLFlBQ0E7QUFBQSxZQUNBLEtBQUssT0FBTyxhQUFhO0FBQUEsWUFDekIsU0FBUyxPQUFPLGtCQUFrQjtBQUFBLFlBQ2xDLE9BQU8sT0FBTyxlQUFlO0FBQUEsVUFDL0I7QUFFQSxnQkFBTSxNQUFNLEtBQUssUUFBUTtBQUV6QixnQkFBTSxnQkFBZ0IsTUFBTSxNQUFNLElBQUksSUFBSSxVQUFVLE1BQU0sR0FBRztBQUFBLFlBQzNELFFBQVE7QUFBQSxZQUNSLE1BQU0sS0FBSyxVQUFVO0FBQUEsY0FDbkI7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0gsQ0FBQztBQUVELGNBQUksQ0FBQyxjQUFjLElBQUk7QUFDckIsb0JBQVEsTUFBTSxNQUFNLGNBQWMsS0FBSyxDQUFDO0FBQ3hDLG9CQUFRLEtBQUssQ0FBQztBQUFBLFVBQ2hCO0FBRUEsZ0JBQU0sRUFBRSxJQUFJLElBQUksTUFBTSxjQUFjLEtBQUs7QUFDekMsZ0JBQU0sZUFBZSxZQUFZLHFCQUFxQixHQUFHLElBQUk7QUFFN0QsZ0JBQU0sT0FBNEIsb0JBQUksSUFBSTtBQUMxQyxnQkFBTSxXQUF1QyxvQkFDekMsb0JBQUksSUFBSSxJQUNSO0FBRUosZ0JBQU0sWUFBWSxPQUFPLEtBQUssU0FBUztBQUN2QyxnQkFBTSxXQUFXLE9BQU8sS0FBSyxTQUFTO0FBQ3RDLGdCQUFNLGVBQWUsV0FBVyxLQUFLLE9BQU87QUFDNUMsZ0JBQU0saUJBQWlDO0FBQUEsWUFDckMsVUFBVSxDQUFDO0FBQUEsWUFDWCxXQUFXLENBQUM7QUFBQSxVQUNkO0FBRUEscUJBQVdPLE1BQUssT0FBTztBQUNyQixrQkFBTSxZQUFZLEtBQUssUUFBUUEsSUFBRyxjQUFjO0FBQ2hELGtCQUFNLFFBQVEsTUFBTSxnQkFBZ0IsU0FBUztBQUU3QyxnQkFBSSxDQUFDLE9BQU87QUFDVjtBQUFBLFlBQ0Y7QUFFQSxnQkFBSSxDQUFDLE1BQU0sTUFBTTtBQUNmLG9CQUFNLElBQUksTUFBTSxtQkFBbUIsU0FBUyxvQkFBb0I7QUFBQSxZQUNsRTtBQUNBLGdCQUFJLE1BQU0sU0FBUztBQUNqQjtBQUFBLFlBQ0Y7QUFFQSxnQkFBSSxXQUFXO0FBQ2Isb0JBQU0sa0JBQWtCLE1BQU0sSUFBSTtBQUFBLFlBQ3BDO0FBQ0Esa0JBQU0sYUFBYSxJQUFJO0FBQUEsY0FDckIsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLFlBQVk7QUFBQSxjQUMvQztBQUFBLFlBQ0YsRUFBRTtBQUNGLGlCQUFLLElBQUksTUFBTSxNQUFNLFVBQVU7QUFDL0Isc0JBQVUsSUFBSSxNQUFNLE1BQU0sTUFBTSxXQUFXLFVBQVU7QUFFckQsa0JBQU0sYUFBYSxJQUFJLGdCQUFnQjtBQUN2QyxrQkFBTSxXQUFXLE1BQU0sTUFBTSxZQUFZO0FBQUEsY0FDdkMsUUFBUSxXQUFXO0FBQUEsWUFDckIsQ0FBQztBQUNELGdCQUFJLFNBQVMsSUFBSTtBQUNmLHNCQUFRO0FBQUEsZ0JBQ04sR0FBRyxNQUFNLElBQUksSUFBSSxZQUFZLDZCQUE2QixVQUFVO0FBQUEsY0FDdEU7QUFBQSxZQUNGO0FBQ0EsdUJBQVcsTUFBTTtBQUVqQixrQkFBTSxVQUFVLFlBQ1osSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUksWUFBWSxJQUFJLE1BQU0sRUFBRSxPQUNsRDtBQUdKLDJCQUFlLFNBQVMsS0FBSztBQUFBLGNBQzNCLE1BQU0sTUFBTTtBQUFBLGNBQ1osS0FBSztBQUFBLGNBQ0wsUUFBUTtBQUFBO0FBQUEsWUFDVixDQUFDO0FBQUEsVUFDSDtBQUVBLHFCQUFXLGVBQWUsV0FBVztBQUNuQyxrQkFBTSxZQUFZLEtBQUssUUFBUSxhQUFhLGNBQWM7QUFDMUQsa0JBQU0sZ0JBQWdCLE1BQU0sWUFBWSxTQUFTO0FBQ2pELGtCQUFNLFFBQVEsZ0JBQ1YsaUJBQWlCLGFBQWEsSUFDOUI7QUFFSixnQkFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlO0FBQzVCLHNCQUFRO0FBQUEsZ0JBQ04sWUFBWSxXQUFXO0FBQUEsY0FDekI7QUFDQTtBQUFBLFlBQ0Y7QUFFQSxnQkFBSSxDQUFDLE1BQU0sTUFBTTtBQUNmLG9CQUFNLElBQUksTUFBTSxtQkFBbUIsU0FBUyxvQkFBb0I7QUFBQSxZQUNsRTtBQUVBLG9CQUFRLEtBQUssdUJBQXVCLE1BQU0sSUFBSTtBQUU5QyxrQkFBTSxVQUFVLE1BQU07QUFBQSxjQUNwQjtBQUFBLGNBQ0E7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxZQUNGO0FBRUEsa0JBQU0sZ0JBQWdCLEtBQUssS0FBSyxhQUFhLFlBQVk7QUFDekQsa0JBQU0sS0FBSyxPQUFPLEVBQUUsSUFBSSxjQUFjLEVBQUUsSUFBSSxNQUFNO0FBRWxELGdCQUFJLE9BQU8sV0FBVyxhQUFhLEdBQUc7QUFDcEMsb0JBQU0sbUJBQW1CLE1BQU0sR0FBRyxTQUFTLGVBQWUsTUFBTTtBQUNoRSxpQkFBRyxJQUFJLGdCQUFnQjtBQUFBLFlBQ3pCO0FBRUEsa0JBQU0sUUFBUSxNQUFNLEtBQUssQ0FBQyxNQUFNLEdBQUc7QUFBQSxjQUNqQyxLQUFLO0FBQUEsY0FDTCxLQUFLO0FBQUEsY0FDTCxXQUFXO0FBQUEsY0FDWCxRQUFRLENBQUMsbUJBQW1CLE1BQU07QUFBQTtBQUFBLFlBQ3BDLENBQUM7QUFFRCxrQkFBTSxnQkFBZ0IsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFFOUQsdUJBQVcsWUFBWSxlQUFlO0FBQ3BDLG9CQUFNLE9BQU8sTUFBTSxHQUFHLFNBQVMsS0FBSyxLQUFLLGFBQWEsUUFBUSxDQUFDO0FBQy9ELG9CQUFNLFdBQVcsTUFBTSxhQUFhLElBQUk7QUFDeEMsb0JBQU0sT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLE1BQU0sR0FBRztBQUFBLGdCQUNuQyxNQUFNO0FBQUEsY0FDUixDQUFDO0FBQ0QsdUJBQVM7QUFBQSxnQkFDUCxZQUFZLE1BQU0sSUFBSSxJQUFJLG1CQUFtQixRQUFRLENBQUM7QUFBQSxnQkFDdEQsV0FBVyxPQUFPLE1BQU0sS0FBSyxLQUFLO0FBQUEsY0FDcEM7QUFBQSxZQUNGO0FBQ0Esa0JBQU0sUUFBUTtBQUdkLGtCQUFNLGNBQWMsSUFBSTtBQUFBLGNBQ3RCLElBQUksS0FBSyxJQUFJLElBQUksYUFBYSxNQUFNLElBQUk7QUFBQSxjQUN4QztBQUFBLFlBQ0YsRUFBRTtBQUNGLDJCQUFlLFVBQVUsS0FBSztBQUFBLGNBQzVCLE1BQU0sTUFBTTtBQUFBLGNBQ1osS0FBSztBQUFBLFlBQ1AsQ0FBQztBQUFBLFVBQ0g7QUFFQSxnQkFBTSxvQkFBb0IsS0FBSyxhQUFhO0FBRTVDLGNBQUksQ0FBQyxxQkFBcUIsVUFBVSxXQUFXLEdBQUc7QUFDaEQsa0JBQU0sVUFBVTtBQUFBLGNBQ2QsT0FBTyxZQUFZLEtBQUssUUFBUSxDQUFDO0FBQUEsWUFDbkM7QUFFQSx1QkFBVyxZQUFZLE9BQU8sS0FBSyxPQUFPLEdBQUc7QUFDM0MsdUJBQVM7QUFBQSxnQkFDUCxvQkFBb0IsbUJBQW1CLFFBQVEsQ0FBQztBQUFBLGdCQUNoRCxRQUFRLFFBQVE7QUFBQSxjQUNsQjtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sYUFBYSxvQkFBSSxJQUdyQjtBQUNGLHFCQUFXQSxNQUFLLE9BQU87QUFDckIsa0JBQU0sWUFBWSxLQUFLLFFBQVFBLElBQUcsY0FBYztBQUNoRCxrQkFBTSxnQkFBZ0IsTUFBTSxZQUFZLFNBQVM7QUFDakQsa0JBQU0sUUFBUSxnQkFDVixpQkFBaUIsYUFBYSxJQUM5QjtBQUVKLGdCQUFJLENBQUMsU0FBUyxDQUFDLGVBQWU7QUFDNUI7QUFBQSxZQUNGO0FBRUEsZ0JBQUksTUFBTSxTQUFTO0FBQ2pCO0FBQUEsWUFDRjtBQUVBLHVCQUFXO0FBQUEsY0FDVEE7QUFBQSxjQUNBLE1BQU0sVUFBVUEsSUFBRyxlQUFlLE9BQU8sTUFBTSxRQUFRO0FBQUEsWUFDekQ7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sVUFBa0MsQ0FBQztBQUN6QyxxQkFBV0EsTUFBSyxPQUFPO0FBQ3JCLGtCQUFNLFlBQVksS0FBSyxRQUFRQSxJQUFHLGNBQWM7QUFDaEQsa0JBQU0sUUFBUSxNQUFNLGdCQUFnQixTQUFTO0FBQzdDLGdCQUFJLENBQUMsT0FBTztBQUNWLHNCQUFRO0FBQUEsZ0JBQ04sWUFBWUEsRUFBQztBQUFBLGNBQ2Y7QUFDQTtBQUFBLFlBQ0Y7QUFFQSxnQkFBSTtBQUNGLGtCQUFJLENBQUMsTUFBTSxNQUFNO0FBQ2Ysc0JBQU0sSUFBSTtBQUFBLGtCQUNSLG1CQUFtQixTQUFTO0FBQUEsZ0JBQzlCO0FBQUEsY0FDRjtBQUNBLGtCQUFJLE1BQU0sU0FBUztBQUNqQix3QkFBUSxLQUFLLFlBQVlBLEVBQUMsaUNBQWlDO0FBQzNEO0FBQUEsY0FDRjtBQUVBLG9CQUFNLEVBQUUsVUFBVSxPQUFPLElBQUksTUFBTTtBQUFBLGdCQUNqQztBQUFBLGdCQUNBQTtBQUFBLGdCQUNBO0FBQUEsY0FDRjtBQUVBLHNCQUFRLE1BQU0sSUFBSSxJQUFJO0FBRXRCLG9CQUFNLFlBQVksZUFBZSxTQUFTO0FBQUEsZ0JBQ3hDLENBQUNBLE9BQU1BLEdBQUUsU0FBUyxNQUFNO0FBQUEsY0FDMUI7QUFDQSx3QkFBVSxTQUFTO0FBRW5CLG9CQUFNLFdBQVcsS0FBSyxRQUFRQSxJQUFHLFFBQVE7QUFDekMsb0JBQU0sU0FBUyxNQUFNLEdBQUcsU0FBUyxRQUFRO0FBRXpDLG9CQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHO0FBQUEsZ0JBQzlCLE1BQU07QUFBQSxjQUNSLENBQUM7QUFDRCx1QkFBUyxPQUFPLFdBQVcsTUFBTSxJQUFJLElBQUksTUFBTSxRQUFRO0FBRXZELG9CQUFNLEdBQUcsR0FBRyxRQUFRO0FBQUEsWUFDdEIsVUFBRTtBQUNBLG9CQUFNLFdBQVcsSUFBSUEsRUFBQyxJQUFJO0FBQUEsWUFDNUI7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sdUJBQXVCLENBQUMsR0FBRyxTQUFTLFFBQVEsQ0FBQyxFQUFFO0FBQUEsWUFDbkQsQ0FBQyxNQUFNLENBQUNDLElBQUcsS0FBSyxNQUFNLE9BQU8saUJBQWlCLEtBQUs7QUFBQSxZQUNuRDtBQUFBLFVBQ0Y7QUFHQSxjQUFJLHVCQUF1QixPQUFPLE9BQU8sSUFBSTtBQUMzQyx1QkFBVyxDQUFDLE1BQU0sS0FBSyxLQUFLLFVBQVU7QUFDcEMsa0JBQUksS0FBSyxXQUFXLFVBQVUsR0FBRztBQUMvQixzQkFBTSxPQUFPO0FBQ2Isc0JBQU0sWUFBWSxPQUFPLE9BQU87QUFDaEMsb0JBQUksS0FBSyxRQUFRLFdBQVc7QUFDMUI7QUFBQSxnQkFDRjtBQUNBLHNCQUFNLGNBQWMsS0FBSyxLQUFLLEtBQUssT0FBTyxTQUFTO0FBQ25ELHNCQUFNLHFCQUFxQixNQUFNLE1BQU0saUJBQWlCO0FBQUEsa0JBQ3RELFFBQVE7QUFBQSxrQkFDUixTQUFTO0FBQUEsb0JBQ1AsVUFBVTtBQUFBLG9CQUNWLFdBQVcsS0FBSyxNQUFNLFdBQVcsTUFBTTtBQUFBLGtCQUN6QztBQUFBLGdCQUNGLENBQUM7QUFDRCxvQkFBSSxDQUFDLG1CQUFtQixJQUFJO0FBQzFCLDBCQUFRLE1BQU0sTUFBTSxtQkFBbUIsS0FBSyxDQUFDO0FBQzdDO0FBQUEsZ0JBQ0Y7QUFDQSxzQkFBTSxFQUFFLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFDbkMsTUFBTSxtQkFBbUIsS0FBSztBQU1oQyxzQkFBTSxnQkFBa0MsQ0FBQztBQUV6Qyx5QkFBU0MsS0FBSSxHQUFHQSxLQUFJLGFBQWFBLE1BQUs7QUFDcEMsd0JBQU0sUUFBUUEsS0FBSTtBQUNsQix3QkFBTSxNQUFNLEtBQUssSUFBSSxLQUFLLE1BQU0sUUFBUSxTQUFTO0FBQ2pELHdCQUFNLFFBQVEsS0FBSyxNQUFNLE9BQU8sR0FBRztBQUVuQyx3QkFBTSxxQkFBcUIsTUFBTSxNQUFNLGlCQUFpQjtBQUFBLG9CQUN0RCxRQUFRO0FBQUEsb0JBQ1IsU0FBUztBQUFBLHNCQUNQLEtBQUs7QUFBQSxzQkFDTCxJQUFJO0FBQUEsc0JBQ0osZUFBZSxHQUFHQSxLQUFJLENBQUM7QUFBQSxvQkFDekI7QUFBQSxvQkFDQSxNQUFNO0FBQUEsa0JBQ1IsQ0FBQztBQUVELHNCQUFJLENBQUMsbUJBQW1CLElBQUk7QUFDMUIsNEJBQVE7QUFBQSxzQkFDTix3QkFBd0JBLEtBQUksQ0FBQyxLQUFLLE1BQU0sbUJBQW1CLEtBQUssQ0FBQztBQUFBLG9CQUNuRTtBQUNBO0FBQUEsa0JBQ0Y7QUFDQSx3QkFBTSxFQUFFLEtBQUssSUFBSSxNQUFNLG1CQUFtQixLQUFLO0FBQy9DLGdDQUFjLEtBQUssSUFBSTtBQUFBLGdCQUN6QjtBQUNBLHNCQUFNLHVCQUF1QixNQUFNLE1BQU0sbUJBQW1CO0FBQUEsa0JBQzFELFFBQVE7QUFBQSxrQkFDUixTQUFTO0FBQUEsb0JBQ1AsS0FBSztBQUFBLG9CQUNMLElBQUk7QUFBQSxvQkFDSixrQkFBa0IsS0FBSyxVQUFVLGFBQWE7QUFBQSxrQkFDaEQ7QUFBQSxnQkFDRixDQUFDO0FBQ0Qsb0JBQUksQ0FBQyxxQkFBcUIsSUFBSTtBQUM1QiwwQkFBUTtBQUFBLG9CQUNOLG9CQUFvQixHQUFHLEtBQUssTUFBTSxxQkFBcUIsS0FBSyxDQUFDO0FBQUEsa0JBQy9EO0FBQ0E7QUFBQSxnQkFDRjtBQUNBLHNCQUFNLEVBQUUsS0FBSyxjQUFjLElBQ3pCLE1BQU0scUJBQXFCLEtBQUs7QUFFbEMseUJBQVMsSUFBSSxNQUFNLFVBQVUsYUFBYSxFQUFFO0FBQUEsY0FDOUM7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUVBLGdCQUFNLE1BQU0sTUFBTSxNQUFNLFlBQVk7QUFBQSxZQUNsQyxRQUFRO0FBQUEsWUFDUixTQUFTO0FBQUEsY0FDUCxjQUFjO0FBQUEsY0FDZCxjQUFjLEdBQUcsU0FBUztBQUFBLGNBQzFCLFVBQVU7QUFBQSxjQUNWLGNBQWMsS0FBSyxVQUFVLE9BQU87QUFBQSxjQUNwQyxhQUFhO0FBQUEsY0FDYixVQUFVLEdBQUcsbUJBQW1CO0FBQUEsY0FDaEMsc0JBQXNCO0FBQUEsY0FDdEIscUJBQXFCLEdBQUcsZUFBZTtBQUFBLFlBQ3pDO0FBQUEsWUFDQSxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQ0QsZ0JBQU0sV0FBVyxNQUFNLElBQUksTUFBTSxFQUFFLEtBQUs7QUFDeEMsaUJBQU87QUFBQSxZQUNMLElBQUk7QUFBQSxZQUNKO0FBQUEsWUFDQSxzQkFBc0IsTUFBTSxJQUFJLEtBQUssQ0FBQztBQUFBLFVBQ3hDO0FBRUEsZ0JBQU0sUUFBUSxTQUFTO0FBRXZCLFVBQUssZ0JBQVcsZ0JBQVM7QUFDekIsVUFBSyxZQUFPLEtBQUssVUFBVSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFVBQUssY0FBUztBQUVkLGtCQUFRLEtBQUssSUFBSTtBQUNqQixrQkFBUSxLQUFLLGlEQUF1QztBQUVwRCxnQkFBTSxjQUFjLENBQUMsR0FBRyxTQUFTLEtBQUssQ0FBQyxFQUNwQyxPQUFPLENBQUNDLE9BQU1BLEdBQUUsV0FBVyxVQUFVLENBQUMsRUFDdEMsSUFBSSxDQUFDLE1BQU1ELE9BQU07QUFDaEIsa0JBQU0sY0FBYyxLQUFLLE1BQU0sV0FBVyxNQUFNO0FBQ2hELGtCQUFNLE1BQU0sSUFBSSxJQUFJLFNBQVMsS0FBS0EsRUFBQyxDQUFDO0FBQ3BDLGtCQUFNLGFBQWEsSUFBSTtBQUFBLGNBQ3JCLGNBQWMsSUFBSSxRQUFRO0FBQUEsY0FDMUI7QUFBQSxZQUNGO0FBQ0EsbUJBQU8sR0FBRyxXQUFXO0FBQUEsU0FDMUIsUUFBUSxXQUFXLENBQUM7QUFBQSxhQUNoQixVQUFVO0FBQUEsZUFDUixHQUFHO0FBQUEsVUFDTixDQUFDLEVBQ0EsS0FBSyxNQUFNO0FBRWQsa0JBQVEsS0FBSyxXQUFXO0FBRXhCLGdCQUFNLFNBQVMsS0FBSyxVQUFVLGdCQUFnQixNQUFNLENBQUM7QUFDckQsY0FBSSxXQUFXO0FBQ2Isb0JBQVEsSUFBSSxNQUFNO0FBQUEsVUFDcEI7QUFDQSxjQUFJLFVBQVU7QUFDWixrQkFBTSxHQUFHLFVBQVUsY0FBYyxNQUFNO0FBQ3ZDLG9CQUFRLEtBQUssdUJBQXVCLFlBQVksRUFBRTtBQUFBLFVBQ3BEO0FBRUEsZ0JBQU0sR0FBRyxXQUFXLGVBQWUsT0FBTyxZQUFZO0FBQUEsR0FBTSxNQUFNO0FBQ2xFLGdCQUFNLEdBQUc7QUFBQSxZQUNQO0FBQUEsWUFDQSxRQUFRLGVBQWUsU0FBUyxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBO0FBQUEsWUFDL0Q7QUFBQSxVQUNGO0FBQ0EsZ0JBQU0sR0FBRztBQUFBLFlBQ1A7QUFBQSxZQUNBLFlBQVksZUFBZSxTQUFTLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBO0FBQUEsWUFDcEY7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxNQUFNLE1BQU07QUFDVixhQUFPO0FBQUEsUUFDTCxNQUFNLENBQUM7QUFBQSxRQUNQLEtBQUssTUFBTTtBQUFBLFFBRVg7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsUUFBUSxJQUFJLEVBQ1QsS0FBSyxNQUFNLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFDMUIsTUFBTSxNQUFNLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFJOUIsZUFBZSxlQUFlLElBQWdCRixJQUFXLE9BQW9CO0FBQzNFLE1BQUksTUFBTSxHQUFHLEVBQUU7QUFDZixNQUFJLFdBQVcsR0FBRyxNQUFNLEtBQU0sUUFBUSxLQUFLLEdBQUcsQ0FBQyxJQUFJLE1BQU0sT0FBTztBQUNoRSxNQUFJLE9BQU8sUUFBUTtBQUNqQixXQUFPLGVBQWUsUUFBUTtBQUFBLEVBQ2hDO0FBQ0EsUUFBTSxFQUFFLFFBQUFJLFFBQU8sSUFBSSxNQUFNLFFBQVEsTUFBTSxLQUFLO0FBQUEsSUFDMUMsT0FBTztBQUFBLElBQ1AsS0FBS0o7QUFBQSxFQUNQLENBQUM7QUFDRCxRQUFNLFFBQVFJLFFBQU8sTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPO0FBRS9DLE1BQUksT0FBTyxRQUFRO0FBQ2pCLGVBQVcsTUFBTSxNQUFNLFNBQVMsQ0FBQyxFQUFFLEtBQUs7QUFBQSxFQUMxQztBQUVBLFFBQU0sU0FBUyxXQUFXLE1BQU0sRUFDN0IsT0FBTyxNQUFNLEdBQUcsU0FBUyxLQUFLLFFBQVFKLElBQUcsUUFBUSxDQUFDLENBQUMsRUFDbkQsT0FBTyxLQUFLO0FBRWYsU0FBTyxFQUFFLFVBQVUsT0FBTztBQUM1QjtBQUVBLGVBQWUsVUFDYkEsSUFDQSxlQUNBLE9BQ0EsTUFDQSxVQUNBO0FBQ0EsUUFBTSxZQUFZLEtBQUssUUFBUUEsSUFBRyxjQUFjO0FBRWhELGFBQVcsTUFBTSxNQUFNLFlBQVk7QUFDbkMsYUFBVyxNQUFNLE1BQU0sZUFBZTtBQUN0QyxhQUFXLE1BQU0sTUFBTSxvQkFBb0I7QUFFM0MsTUFBSSxVQUFVO0FBQ1osZUFBVyxVQUFVLE1BQU0sZ0JBQWdCO0FBQUEsRUFDN0M7QUFFQSxRQUFNLGlCQUFpQixXQUFXLEtBQUs7QUFFdkMsU0FBTyxNQUFNLEdBQUcsVUFBVSxXQUFXLGFBQWE7QUFDcEQ7QUFFQSxTQUFTLFdBQ1AsU0FDQSxTQUNBO0FBQ0EsTUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLEVBQ0Y7QUFDQSxhQUFXLENBQUMsUUFBUSxHQUFHLEtBQUssU0FBUztBQUNuQyxRQUFJLFVBQVUsU0FBUztBQUNyQixjQUFRLE1BQU0sSUFBSTtBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxpQkFBaUIsT0FBMkI7QUFDbkQsTUFBSSxPQUFPLFVBQVUsVUFBVTtBQUM3QixXQUFPLE1BQU07QUFBQSxFQUNmO0FBQ0EsU0FBTyxNQUFNO0FBQ2Y7QUFFQSxlQUFlLGtCQUFrQixhQUFxQjtBQUNwRCxNQUFJO0FBRUosTUFBSTtBQUNGLGVBQVcsTUFBTSxtQkFBbUIsV0FBVztBQUFBLEVBQ2pELFFBQVE7QUFDTixVQUFNLElBQUk7QUFBQSxNQUNSLDZCQUE2QixXQUFXO0FBQUE7QUFBQSxJQUUxQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLGNBQWM7QUFBQTtBQUdwQixRQUFNLGFBQWEsa0JBQWtCLFFBQVE7QUFDN0MsTUFBSSxDQUFDLFlBQVk7QUFDZixVQUFNLElBQUk7QUFBQSxNQUNSLDBEQUEwRCxXQUFXO0FBQUEsRUFDekUsV0FBVztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxRQUFRLG9CQUFvQixVQUFVO0FBQzVDLE1BQUksQ0FBQyxPQUFPO0FBQ1YsVUFBTSxJQUFJO0FBQUEsTUFDUiwrREFBK0QsV0FBVyxxQkFBcUIsVUFBVTtBQUFBLEVBQzdHLFdBQVc7QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxZQUFZQSxJQUFXO0FBQ3BDLE1BQUk7QUFDRixXQUFPLE1BQU0sR0FBRyxTQUFTQSxJQUFHLE1BQU07QUFBQSxFQUNwQyxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLGVBQWUsZ0JBQWdCQSxJQUFXO0FBQ3hDLFFBQU0sV0FBVyxNQUFNLFlBQVlBLEVBQUM7QUFDcEMsTUFBSSxhQUFhLE1BQU07QUFDckIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJO0FBQ0YsV0FBTyxpQkFBaUIsUUFBUTtBQUFBLEVBQ2xDLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FBUyxpQkFBaUIsVUFBa0I7QUFDMUMsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLFFBQVE7QUFBQSxFQUM1QixRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFsiZGVmYXVsdHMiLCAicCIsICJjIiwgImkiLCAibCIsICJ4IiwgInRleHQiLCAiaSIsICJ4IiwgInkiLCAiaSIsICJwIiwgImFyZ3YiLCAiZW52IiwgImlzQ29sb3JTdXBwb3J0ZWQiLCAicmVwbGFjZUNsb3NlIiwgImNyZWF0ZUNvbG9ycyIsICJGIiwgInUiLCAidCIsICJzIiwgIlciLCAiQyIsICJEIiwgImEiLCAibiIsICJCIiwgImMiLCAicCIsICJHIiwgImFuc2lSZWdleCIsICJzdHJpcEFuc2kiLCAieCIsICJlbnYiLCAiXyIsICJtIiwgImdldENvbG9yIiwgImNyZWF0ZUNvbnNvbGEiLCAiVCIsICJBIiwgInIiLCAibCIsICJJIiwgIlIiLCAieSIsICJjIiwgIkwiLCAiTyIsICJOIiwgIlAiLCAidW5pY29kZSIsICJzIiwgInJlZ2V4IiwgImkiLCAiX19kZWZQcm9wIiwgImEiLCAiYyIsICJkIiwgImciLCAiaSIsICJsIiwgImMiLCAicCIsICJ4IiwgImsiLCAiZGVmYXVsdHMiLCAiYSIsICJwIiwgIl8iLCAiaSIsICJrIiwgInN0ZG91dCJdCn0K
|