vitest 0.2.3 → 0.2.4
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/LICENSE.md +29 -0
- package/dist/{_commonjsHelpers-bdec4bbd.js → _commonjsHelpers-c9e3b764.js} +6 -2
- package/dist/cli.js +12 -11
- package/dist/client-f15310bf.js +9442 -0
- package/dist/{create-b3e0df3f.js → create-2c5e5720.js} +35 -39
- package/dist/{diff-abc9f1a4.js → diff-6be0541d.js} +3 -3
- package/dist/entry.js +20 -16
- package/dist/{globals-67f38862.js → globals-19399ded.js} +7 -7
- package/dist/{index-87602a5a.js → index-043440ae.js} +2 -2
- package/dist/{index-825cb54c.js → index-61c8686f.js} +2 -2
- package/dist/{index-0c3a317d.js → index-9f4b9905.js} +3 -3
- package/dist/{index-6102d563.js → index-bffba653.js} +2 -2
- package/dist/index.d.ts +28 -13
- package/dist/index.js +6 -6
- package/dist/node.d.ts +8 -2
- package/dist/node.js +9 -8
- package/dist/setup-d961d28c.js +4402 -0
- package/dist/{source-map-002462f4.js → source-map-1132e742.js} +2 -2
- package/dist/vi-ed2bce6b.js +5901 -0
- package/dist/worker.js +7 -159
- package/package.json +15 -14
- package/dist/index-1085cee5.js +0 -9288
- package/dist/setup-0edb4bff.js +0 -4389
- package/dist/vi-7f0c5d26.js +0 -5750
package/LICENSE.md
CHANGED
|
@@ -1231,6 +1231,35 @@ Repository: unjs/mlly
|
|
|
1231
1231
|
|
|
1232
1232
|
---------------------------------------
|
|
1233
1233
|
|
|
1234
|
+
## mockdate
|
|
1235
|
+
License: MIT
|
|
1236
|
+
By: Bob Lauer
|
|
1237
|
+
Repository: https://github.com/boblauer/MockDate.git
|
|
1238
|
+
|
|
1239
|
+
> The MIT License (MIT)
|
|
1240
|
+
>
|
|
1241
|
+
> Copyright (c) 2014 Bob Lauer
|
|
1242
|
+
>
|
|
1243
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1244
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
1245
|
+
> in the Software without restriction, including without limitation the rights
|
|
1246
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
1247
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
1248
|
+
> furnished to do so, subject to the following conditions:
|
|
1249
|
+
>
|
|
1250
|
+
> The above copyright notice and this permission notice shall be included in all
|
|
1251
|
+
> copies or substantial portions of the Software.
|
|
1252
|
+
>
|
|
1253
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1254
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1255
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1256
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1257
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1258
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1259
|
+
> SOFTWARE.
|
|
1260
|
+
|
|
1261
|
+
---------------------------------------
|
|
1262
|
+
|
|
1234
1263
|
## natural-compare
|
|
1235
1264
|
License: MIT
|
|
1236
1265
|
By: Lauri Rooden
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
2
2
|
|
|
3
|
+
function getDefaultExportFromCjs (x) {
|
|
4
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
function commonjsRequire (path) {
|
|
4
8
|
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
|
|
5
9
|
}
|
|
6
10
|
|
|
7
|
-
export { commonjsRequire as a, commonjsGlobal as c };
|
|
8
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
11
|
+
export { commonjsRequire as a, commonjsGlobal as c, getDefaultExportFromCjs as g };
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NvbW1vbmpzSGVscGVycy1jOWUzYjc2NC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7In0=
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { c, e as ensurePackageInstalled } from './index-
|
|
3
|
-
import { c as createVitest } from './create-
|
|
2
|
+
import { c, e as ensurePackageInstalled } from './index-043440ae.js';
|
|
3
|
+
import { c as createVitest } from './create-2c5e5720.js';
|
|
4
4
|
import require$$0 from 'readline';
|
|
5
5
|
import 'tty';
|
|
6
6
|
import 'local-pkg';
|
|
@@ -14,14 +14,15 @@ import 'url';
|
|
|
14
14
|
import 'os';
|
|
15
15
|
import 'util';
|
|
16
16
|
import 'stream';
|
|
17
|
-
import './
|
|
17
|
+
import './client-f15310bf.js';
|
|
18
18
|
import 'module';
|
|
19
19
|
import 'assert';
|
|
20
|
+
import 'vm';
|
|
20
21
|
import 'perf_hooks';
|
|
21
|
-
import './diff-
|
|
22
|
-
import './source-map-
|
|
23
|
-
import './index-
|
|
24
|
-
import './_commonjsHelpers-
|
|
22
|
+
import './diff-6be0541d.js';
|
|
23
|
+
import './source-map-1132e742.js';
|
|
24
|
+
import './index-61c8686f.js';
|
|
25
|
+
import './_commonjsHelpers-c9e3b764.js';
|
|
25
26
|
import 'worker_threads';
|
|
26
27
|
import 'tinypool';
|
|
27
28
|
import './magic-string.es-94000aea.js';
|
|
@@ -639,7 +640,7 @@ class CAC extends EventEmitter {
|
|
|
639
640
|
|
|
640
641
|
const cac = (name = "") => new CAC(name);
|
|
641
642
|
|
|
642
|
-
var version = "0.2.
|
|
643
|
+
var version = "0.2.4";
|
|
643
644
|
|
|
644
645
|
const keys = [
|
|
645
646
|
["a", "rerun all tests"],
|
|
@@ -650,7 +651,7 @@ const keys = [
|
|
|
650
651
|
function printShortcutsHelp() {
|
|
651
652
|
process.stdout.write(`
|
|
652
653
|
${c.bold(" Watch Usage")}
|
|
653
|
-
${keys.map((i) => c.dim(" press ") + c.
|
|
654
|
+
${keys.map((i) => c.dim(" press ") + c.reset(c.bold(i[0])) + c.dim(` to ${i[1]}`)).join("\n")}
|
|
654
655
|
`);
|
|
655
656
|
}
|
|
656
657
|
function registerConsoleShortcuts(ctx) {
|
|
@@ -674,7 +675,7 @@ function registerConsoleShortcuts(ctx) {
|
|
|
674
675
|
}
|
|
675
676
|
|
|
676
677
|
const cli = cac("vitest");
|
|
677
|
-
cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run test names with the specified pattern").option("--ui", "open UI").option("--api [api]", "serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--threads", "enabled threads", { default: true }).option("--silent", "silent console output from tests").option("--isolate", "isolate environment for each test file", { default: true }).option("--reporter <name>", "reporter").option("--outputFile <filename>", "write test results to a file when the --reporter=json option is also specified").option("--coverage", "use c8 for coverage").option("--run", "do not watch").option("--globals", "inject apis globally").option("--global", "deprecated, use --globals").option("--dom", "mock browser api with happy-dom").option("--environment <env>", "runner environment", { default: "node" }).option("--passWithNoTests", "pass when no tests found").help();
|
|
678
|
+
cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run test names with the specified pattern").option("--ui", "enable UI").option("--open", "open UI automatically", { default: true }).option("--api [api]", "serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--threads", "enabled threads", { default: true }).option("--silent", "silent console output from tests").option("--isolate", "isolate environment for each test file", { default: true }).option("--reporter <name>", "reporter").option("--outputFile <filename>", "write test results to a file when the --reporter=json option is also specified").option("--coverage", "use c8 for coverage").option("--run", "do not watch").option("--globals", "inject apis globally").option("--global", "deprecated, use --globals").option("--dom", "mock browser api with happy-dom").option("--environment <env>", "runner environment", { default: "node" }).option("--passWithNoTests", "pass when no tests found").help();
|
|
678
679
|
cli.command("run [...filters]").action(run);
|
|
679
680
|
cli.command("related [...filters]").action(runRelated);
|
|
680
681
|
cli.command("watch [...filters]").action(dev);
|
|
@@ -723,4 +724,4 @@ async function run(cliFilters, options) {
|
|
|
723
724
|
await ctx.exit();
|
|
724
725
|
}
|
|
725
726
|
}
|
|
726
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvc3RkaW4udHMiLCIuLi9zcmMvbm9kZS9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuZnVuY3Rpb24gdG9BcnIoYW55KSB7XG5cdHJldHVybiBhbnkgPT0gbnVsbCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5cbmZ1bmN0aW9uIHRvVmFsKG91dCwga2V5LCB2YWwsIG9wdHMpIHtcblx0dmFyIHgsIG9sZD1vdXRba2V5XSwgbnh0PShcblx0XHQhIX5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyAodmFsID09IG51bGwgfHwgdmFsID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsKSlcblx0XHQ6IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbFxuXHRcdDogISF+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/ICh2YWwgPT09ICdmYWxzZScgPyBmYWxzZSA6IHZhbCA9PT0gJ3RydWUnIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCx4ICogMCA9PT0gMCkgPyB4IDogdmFsKSwhIXZhbCkpXG5cdFx0OiAoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbFxuXHQpO1xuXHRvdXRba2V5XSA9IG9sZCA9PSBudWxsID8gbnh0IDogKEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF0pO1xufVxuXG5mdW5jdGlvbiBtcmkyIChhcmdzLCBvcHRzKSB7XG5cdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHR2YXIgaywgYXJyLCBhcmcsIG5hbWUsIHZhbCwgb3V0PXsgXzpbXSB9O1xuXHR2YXIgaT0wLCBqPTAsIGlkeD0wLCBsZW49YXJncy5sZW5ndGg7XG5cblx0Y29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG5cdGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuXHRjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuXG5cdG9wdHMuYWxpYXMgPSBvcHRzLmFsaWFzIHx8IHt9O1xuXHRvcHRzLnN0cmluZyA9IHRvQXJyKG9wdHMuc3RyaW5nKTtcblx0b3B0cy5ib29sZWFuID0gdG9BcnIob3B0cy5ib29sZWFuKTtcblxuXHRpZiAoYWxpYmkpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuXHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0KG9wdHMuYWxpYXNbYXJyW2ldXSA9IGFyci5jb25jYXQoaykpLnNwbGljZShpLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3IgKGk9b3B0cy5ib29sZWFuLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuXHR9XG5cblx0Zm9yIChpPW9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuc3RyaW5nW2ldXSB8fCBbXTtcblx0XHRmb3IgKGo9YXJyLmxlbmd0aDsgai0tID4gMDspIG9wdHMuc3RyaW5nLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHRpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG5cdFx0XHRcdG9wdHNbbmFtZV0ucHVzaChrKTtcblx0XHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuXG5cdGZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHtcblx0XHRhcmcgPSBhcmdzW2ldO1xuXG5cdFx0aWYgKGFyZyA9PT0gJy0tJykge1xuXHRcdFx0b3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSBicmVhazsgLy8gXCItXCJcblx0XHR9XG5cblx0XHRpZiAoaiA9PT0gMCkge1xuXHRcdFx0b3V0Ll8ucHVzaChhcmcpO1xuXHRcdH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09ICduby0nKSB7XG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqICsgMyk7XG5cdFx0XHRpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcblx0XHRcdH1cblx0XHRcdG91dFtuYW1lXSA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGlkeD1qKzE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkgYnJlYWs7IC8vIFwiPVwiXG5cdFx0XHR9XG5cblx0XHRcdG5hbWUgPSBhcmcuc3Vic3RyaW5nKGosIGlkeCk7XG5cdFx0XHR2YWwgPSBhcmcuc3Vic3RyaW5nKCsraWR4KSB8fCAoaSsxID09PSBsZW4gfHwgKCcnK2FyZ3NbaSsxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldKTtcblx0XHRcdGFyciA9IChqID09PSAyID8gW25hbWVdIDogbmFtZSk7XG5cblx0XHRcdGZvciAoaWR4PTA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdG5hbWUgPSBhcnJbaWR4XTtcblx0XHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkgcmV0dXJuIG9wdHMudW5rbm93bignLScucmVwZWF0KGopICsgbmFtZSk7XG5cdFx0XHRcdHRvVmFsKG91dCwgbmFtZSwgKGlkeCArIDEgPCBhcnIubGVuZ3RoKSB8fCB2YWwsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuXHRcdFx0XHRvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG91dCkge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcblx0XHRcdHdoaWxlIChhcnIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRvdXRbYXJyLnNoaWZ0KCldID0gb3V0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IHJlbW92ZUJyYWNrZXRzID0gKHYpID0+IHYucmVwbGFjZSgvWzxbXS4rLywgXCJcIikudHJpbSgpO1xuY29uc3QgZmluZEFsbEJyYWNrZXRzID0gKHYpID0+IHtcbiAgY29uc3QgQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMID0gLzwoW14+XSspPi9nO1xuICBjb25zdCBTUVVBUkVfQlJBQ0tFVF9SRV9HTE9CQUwgPSAvXFxbKFteXFxdXSspXFxdL2c7XG4gIGNvbnN0IHJlcyA9IFtdO1xuICBjb25zdCBwYXJzZSA9IChtYXRjaCkgPT4ge1xuICAgIGxldCB2YXJpYWRpYyA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiLi4uXCIpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDMpO1xuICAgICAgdmFyaWFkaWMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZWQ6IG1hdGNoWzBdLnN0YXJ0c1dpdGgoXCI8XCIpLFxuICAgICAgdmFsdWUsXG4gICAgICB2YXJpYWRpY1xuICAgIH07XG4gIH07XG4gIGxldCBhbmdsZWRNYXRjaDtcbiAgd2hpbGUgKGFuZ2xlZE1hdGNoID0gQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShhbmdsZWRNYXRjaCkpO1xuICB9XG4gIGxldCBzcXVhcmVNYXRjaDtcbiAgd2hpbGUgKHNxdWFyZU1hdGNoID0gU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShzcXVhcmVNYXRjaCkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuY29uc3QgZ2V0TXJpT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHthbGlhczoge30sIGJvb2xlYW46IFtdfTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIG9wdGlvbl0gb2Ygb3B0aW9ucy5lbnRyaWVzKCkpIHtcbiAgICBpZiAob3B0aW9uLm5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlc3VsdC5hbGlhc1tvcHRpb24ubmFtZXNbMF1dID0gb3B0aW9uLm5hbWVzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uLmlzQm9vbGVhbikge1xuICAgICAgaWYgKG9wdGlvbi5uZWdhdGVkKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0cmluZ1R5cGVPcHRpb24gPSBvcHRpb25zLnNvbWUoKG8sIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaSAhPT0gaW5kZXggJiYgby5uYW1lcy5zb21lKChuYW1lKSA9PiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSkpICYmIHR5cGVvZiBvLnJlcXVpcmVkID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaGFzU3RyaW5nVHlwZU9wdGlvbikge1xuICAgICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LmJvb2xlYW4ucHVzaChvcHRpb24ubmFtZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IGZpbmRMb25nZXN0ID0gKGFycikgPT4ge1xuICByZXR1cm4gYXJyLnNvcnQoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IC0xIDogMTtcbiAgfSlbMF07XG59O1xuY29uc3QgcGFkUmlnaHQgPSAoc3RyLCBsZW5ndGgpID0+IHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPj0gbGVuZ3RoID8gc3RyIDogYCR7c3RyfSR7XCIgXCIucmVwZWF0KGxlbmd0aCAtIHN0ci5sZW5ndGgpfWA7XG59O1xuY29uc3QgY2FtZWxjYXNlID0gKGlucHV0KSA9PiB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW2Etel0pLShbYS16XSkvZywgKF8sIHAxLCBwMikgPT4ge1xuICAgIHJldHVybiBwMSArIHAyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcbmNvbnN0IHNldERvdFByb3AgPSAob2JqLCBrZXlzLCB2YWwpID0+IHtcbiAgbGV0IGkgPSAwO1xuICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIGxldCB0ID0gb2JqO1xuICBsZXQgeDtcbiAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHggPSB0W2tleXNbaV1dO1xuICAgIHQgPSB0W2tleXNbaV1dID0gaSA9PT0gbGVuZ3RoIC0gMSA/IHZhbCA6IHggIT0gbnVsbCA/IHggOiAhIX5rZXlzW2kgKyAxXS5pbmRleE9mKFwiLlwiKSB8fCAhKCtrZXlzW2kgKyAxXSA+IC0xKSA/IHt9IDogW107XG4gIH1cbn07XG5jb25zdCBzZXRCeVR5cGUgPSAob2JqLCB0cmFuc2Zvcm1zKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRyYW5zZm9ybXMpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3Jtc1trZXldO1xuICAgIGlmICh0cmFuc2Zvcm0uc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICBvYmpba2V5XSA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgb2JqW2tleV0pO1xuICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmpba2V5XSA9IG9ialtrZXldLm1hcCh0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbmNvbnN0IGdldEZpbGVOYW1lID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IG0gPSAvKFteXFxcXFxcL10rKSQvLmV4ZWMoaW5wdXQpO1xuICByZXR1cm4gbSA/IG1bMV0gOiBcIlwiO1xufTtcbmNvbnN0IGNhbWVsY2FzZU9wdGlvbk5hbWUgPSAobmFtZSkgPT4ge1xuICByZXR1cm4gbmFtZS5zcGxpdChcIi5cIikubWFwKCh2LCBpKSA9PiB7XG4gICAgcmV0dXJuIGkgPT09IDAgPyBjYW1lbGNhc2UodikgOiB2O1xuICB9KS5qb2luKFwiLlwiKTtcbn07XG5jbGFzcyBDQUNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICAgIHJhd05hbWUgPSByYXdOYW1lLnJlcGxhY2UoL1xcLlxcKi9nLCBcIlwiKTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5hbWVzID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSkuc3BsaXQoXCIsXCIpLm1hcCgodikgPT4ge1xuICAgICAgbGV0IG5hbWUgPSB2LnRyaW0oKS5yZXBsYWNlKC9eLXsxLDJ9LywgXCJcIik7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAgIHRoaXMubmVnYXRlZCA9IHRydWU7XG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL15uby0vLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYW1lbGNhc2VPcHRpb25OYW1lKG5hbWUpO1xuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTEpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZXNbdGhpcy5uYW1lcy5sZW5ndGggLSAxXTtcbiAgICBpZiAodGhpcy5uZWdhdGVkICYmIHRoaXMuY29uZmlnLmRlZmF1bHQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcuZGVmYXVsdCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiPFwiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiW1wiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQm9vbGVhbiA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NBcmdzID0gcHJvY2Vzcy5hcmd2O1xuY29uc3QgcGxhdGZvcm1JbmZvID0gYCR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9IG5vZGUtJHtwcm9jZXNzLnZlcnNpb259YDtcblxuY2xhc3MgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcgPSB7fSwgY2xpKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jbGkgPSBjbGk7XG4gICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgdGhpcy5hbGlhc05hbWVzID0gW107XG4gICAgdGhpcy5uYW1lID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSk7XG4gICAgdGhpcy5hcmdzID0gZmluZEFsbEJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuZXhhbXBsZXMgPSBbXTtcbiAgfVxuICB1c2FnZSh0ZXh0KSB7XG4gICAgdGhpcy51c2FnZVRleHQgPSB0ZXh0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFsbG93VW5rbm93bk9wdGlvbnMoKSB7XG4gICAgdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlKCkge1xuICAgIHRoaXMuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy52ZXJzaW9uTnVtYmVyID0gdmVyc2lvbjtcbiAgICB0aGlzLm9wdGlvbihjdXN0b21GbGFncywgXCJEaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZXhhbXBsZXMucHVzaChleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIGNvbnN0IG9wdGlvbiA9IG5ldyBPcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGlhcyhuYW1lKSB7XG4gICAgdGhpcy5hbGlhc05hbWVzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWN0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jb21tYW5kQWN0aW9uID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaXNNYXRjaGVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBuYW1lIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuICBnZXQgaXNEZWZhdWx0Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBcIlwiIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhcIiFcIik7XG4gIH1cbiAgZ2V0IGlzR2xvYmFsQ29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEdsb2JhbENvbW1hbmQ7XG4gIH1cbiAgaGFzT3B0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbmFtZS5zcGxpdChcIi5cIilbMF07XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gICAgfSk7XG4gIH1cbiAgb3V0cHV0SGVscCgpIHtcbiAgICBjb25zdCB7bmFtZSwgY29tbWFuZHN9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge1xuICAgICAgdmVyc2lvbk51bWJlcixcbiAgICAgIG9wdGlvbnM6IGdsb2JhbE9wdGlvbnMsXG4gICAgICBoZWxwQ2FsbGJhY2tcbiAgICB9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGJvZHk6IGAke25hbWV9JHt2ZXJzaW9uTnVtYmVyID8gYC8ke3ZlcnNpb25OdW1iZXJ9YCA6IFwiXCJ9YFxuICAgICAgfVxuICAgIF07XG4gICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICB0aXRsZTogXCJVc2FnZVwiLFxuICAgICAgYm9keTogYCAgJCAke25hbWV9ICR7dGhpcy51c2FnZVRleHQgfHwgdGhpcy5yYXdOYW1lfWBcbiAgICB9KTtcbiAgICBjb25zdCBzaG93Q29tbWFuZHMgPSAodGhpcy5pc0dsb2JhbENvbW1hbmQgfHwgdGhpcy5pc0RlZmF1bHRDb21tYW5kKSAmJiBjb21tYW5kcy5sZW5ndGggPiAwO1xuICAgIGlmIChzaG93Q29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGxvbmdlc3RDb21tYW5kTmFtZSA9IGZpbmRMb25nZXN0KGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiQ29tbWFuZHNcIixcbiAgICAgICAgYm9keTogY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQoY29tbWFuZC5yYXdOYW1lLCBsb25nZXN0Q29tbWFuZE5hbWUubGVuZ3RoKX0gICR7Y29tbWFuZC5kZXNjcmlwdGlvbn1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgICB0aXRsZTogYEZvciBtb3JlIGluZm8sIHJ1biBhbnkgY29tbWFuZCB3aXRoIHRoZSBcXGAtLWhlbHBcXGAgZmxhZ2AsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gYCAgJCAke25hbWV9JHtjb21tYW5kLm5hbWUgPT09IFwiXCIgPyBcIlwiIDogYCAke2NvbW1hbmQubmFtZX1gfSAtLWhlbHBgKS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmlzR2xvYmFsQ29tbWFuZCA/IGdsb2JhbE9wdGlvbnMgOiBbLi4udGhpcy5vcHRpb25zLCAuLi5nbG9iYWxPcHRpb25zIHx8IFtdXTtcbiAgICBpZiAoIXRoaXMuaXNHbG9iYWxDb21tYW5kICYmICF0aGlzLmlzRGVmYXVsdENvbW1hbmQpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ubmFtZSAhPT0gXCJ2ZXJzaW9uXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb25nZXN0T3B0aW9uTmFtZSA9IGZpbmRMb25nZXN0KG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiT3B0aW9uc1wiLFxuICAgICAgICBib2R5OiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQob3B0aW9uLnJhd05hbWUsIGxvbmdlc3RPcHRpb25OYW1lLmxlbmd0aCl9ICAke29wdGlvbi5kZXNjcmlwdGlvbn0gJHtvcHRpb24uY29uZmlnLmRlZmF1bHQgPT09IHZvaWQgMCA/IFwiXCIgOiBgKGRlZmF1bHQ6ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0fSlgfWA7XG4gICAgICAgIH0pLmpvaW4oXCJcXG5cIilcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGFtcGxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiRXhhbXBsZXNcIixcbiAgICAgICAgYm9keTogdGhpcy5leGFtcGxlcy5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGV4YW1wbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGFtcGxlO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGhlbHBDYWxsYmFjaykge1xuICAgICAgc2VjdGlvbnMgPSBoZWxwQ2FsbGJhY2soc2VjdGlvbnMpIHx8IHNlY3Rpb25zO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLnRpdGxlID8gYCR7c2VjdGlvbi50aXRsZX06XG4ke3NlY3Rpb24uYm9keX1gIDogc2VjdGlvbi5ib2R5O1xuICAgIH0pLmpvaW4oXCJcXG5cXG5cIikpO1xuICB9XG4gIG91dHB1dFZlcnNpb24oKSB7XG4gICAgY29uc3Qge25hbWV9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge3ZlcnNpb25OdW1iZXJ9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBpZiAodmVyc2lvbk51bWJlcikge1xuICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0vJHt2ZXJzaW9uTnVtYmVyfSAke3BsYXRmb3JtSW5mb31gKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tSZXF1aXJlZEFyZ3MoKSB7XG4gICAgY29uc3QgbWluaW1hbEFyZ3NDb3VudCA9IHRoaXMuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLnJlcXVpcmVkKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuY2xpLmFyZ3MubGVuZ3RoIDwgbWluaW1hbEFyZ3NDb3VudCkge1xuICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBtaXNzaW5nIHJlcXVpcmVkIGFyZ3MgZm9yIGNvbW1hbmQgXFxgJHt0aGlzLnJhd05hbWV9XFxgYCk7XG4gICAgfVxuICB9XG4gIGNoZWNrVW5rbm93bk9wdGlvbnMoKSB7XG4gICAgY29uc3Qge29wdGlvbnMsIGdsb2JhbENvbW1hbmR9ID0gdGhpcy5jbGk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5hbGxvd1Vua25vd25PcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKG5hbWUgIT09IFwiLS1cIiAmJiAhdGhpcy5oYXNPcHRpb24obmFtZSkgJiYgIWdsb2JhbENvbW1hbmQuaGFzT3B0aW9uKG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBVbmtub3duIG9wdGlvbiBcXGAke25hbWUubGVuZ3RoID4gMSA/IGAtLSR7bmFtZX1gIDogYC0ke25hbWV9YH1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjaGVja09wdGlvblZhbHVlKCkge1xuICAgIGNvbnN0IHtvcHRpb25zOiBwYXJzZWRPcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4uZ2xvYmFsQ29tbWFuZC5vcHRpb25zLCAuLi50aGlzLm9wdGlvbnNdO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkT3B0aW9uc1tvcHRpb24ubmFtZS5zcGxpdChcIi5cIilbMF1dO1xuICAgICAgaWYgKG9wdGlvbi5yZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBoYXNOZWdhdGVkID0gb3B0aW9ucy5zb21lKChvKSA9PiBvLm5lZ2F0ZWQgJiYgby5uYW1lcy5pbmNsdWRlcyhvcHRpb24ubmFtZSkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlICYmICFoYXNOZWdhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBvcHRpb24gXFxgJHtvcHRpb24ucmF3TmFtZX1cXGAgdmFsdWUgaXMgbWlzc2luZ2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBHbG9iYWxDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKGNsaSkge1xuICAgIHN1cGVyKFwiQEBnbG9iYWxAQFwiLCBcIlwiLCB7fSwgY2xpKTtcbiAgfVxufVxuXG52YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuY2xhc3MgQ0FDIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IobmFtZSA9IFwiXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMucmF3QXJncyA9IFtdO1xuICAgIHRoaXMuYXJncyA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZCA9IG5ldyBHbG9iYWxDb21tYW5kKHRoaXMpO1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZShcIjxjb21tYW5kPiBbb3B0aW9uc11cIik7XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZSh0ZXh0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBjb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IENvbW1hbmQocmF3TmFtZSwgZGVzY3JpcHRpb24gfHwgXCJcIiwgY29uZmlnLCB0aGlzKTtcbiAgICBjb21tYW5kLmdsb2JhbENvbW1hbmQgPSB0aGlzLmdsb2JhbENvbW1hbmQ7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG4gIG9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBoZWxwKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihcIi1oLCAtLWhlbHBcIiwgXCJEaXNwbGF5IHRoaXMgbWVzc2FnZVwiKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuaGVscENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5zaG93SGVscE9uRXhpdCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLnZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MpO1xuICAgIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5leGFtcGxlKGV4YW1wbGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgaWYgKHRoaXMubWF0Y2hlZENvbW1hbmQpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH1cbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vdXRwdXRWZXJzaW9uKCk7XG4gIH1cbiAgc2V0UGFyc2VkSW5mbyh7YXJncywgb3B0aW9uc30sIG1hdGNoZWRDb21tYW5kLCBtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKG1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gbWF0Y2hlZENvbW1hbmQ7XG4gICAgfVxuICAgIGlmIChtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gbWF0Y2hlZENvbW1hbmROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB1bnNldE1hdGNoZWRDb21tYW5kKCkge1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPSB2b2lkIDA7XG4gIH1cbiAgcGFyc2UoYXJndiA9IHByb2Nlc3NBcmdzLCB7XG4gICAgcnVuID0gdHJ1ZVxuICB9ID0ge30pIHtcbiAgICB0aGlzLnJhd0FyZ3MgPSBhcmd2O1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aGlzLm5hbWUgPSBhcmd2WzFdID8gZ2V0RmlsZU5hbWUoYXJndlsxXSkgOiBcImNsaVwiO1xuICAgIH1cbiAgICBsZXQgc2hvdWxkUGFyc2UgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiB0aGlzLmNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gcGFyc2VkLmFyZ3NbMF07XG4gICAgICBpZiAoY29tbWFuZC5pc01hdGNoZWQoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcGFyc2VkKSwge1xuICAgICAgICAgIGFyZ3M6IHBhcnNlZC5hcmdzLnNsaWNlKDEpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkSW5mbywgY29tbWFuZCwgY29tbWFuZE5hbWUpO1xuICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6JHtjb21tYW5kTmFtZX1gLCBjb21tYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZFBhcnNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoY29tbWFuZC5uYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgc2hvdWxkUGFyc2UgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6IWAsIGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSk7XG4gICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWxwICYmIHRoaXMuc2hvd0hlbHBPbkV4aXQpIHtcbiAgICAgIHRoaXMub3V0cHV0SGVscCgpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJzaW9uICYmIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgJiYgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vdXRwdXRWZXJzaW9uKCk7XG4gICAgICBydW4gPSBmYWxzZTtcbiAgICAgIHRoaXMudW5zZXRNYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRBcmd2ID0ge2FyZ3M6IHRoaXMuYXJncywgb3B0aW9uczogdGhpcy5vcHRpb25zfTtcbiAgICBpZiAocnVuKSB7XG4gICAgICB0aGlzLnJ1bk1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXRjaGVkQ29tbWFuZCAmJiB0aGlzLmFyZ3NbMF0pIHtcbiAgICAgIHRoaXMuZW1pdChcImNvbW1hbmQ6KlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEFyZ3Y7XG4gIH1cbiAgbXJpKGFyZ3YsIGNvbW1hbmQpIHtcbiAgICBjb25zdCBjbGlPcHRpb25zID0gW1xuICAgICAgLi4udGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbnMsXG4gICAgICAuLi5jb21tYW5kID8gY29tbWFuZC5vcHRpb25zIDogW11cbiAgICBdO1xuICAgIGNvbnN0IG1yaU9wdGlvbnMgPSBnZXRNcmlPcHRpb25zKGNsaU9wdGlvbnMpO1xuICAgIGxldCBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBbXTtcbiAgICBjb25zdCBkb3VibGVEYXNoZXNJbmRleCA9IGFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICAgIGlmIChkb3VibGVEYXNoZXNJbmRleCA+IC0xKSB7XG4gICAgICBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBhcmd2LnNsaWNlKGRvdWJsZURhc2hlc0luZGV4ICsgMSk7XG4gICAgICBhcmd2ID0gYXJndi5zbGljZSgwLCBkb3VibGVEYXNoZXNJbmRleCk7XG4gICAgfVxuICAgIGxldCBwYXJzZWQgPSBtcmkyKGFyZ3YsIG1yaU9wdGlvbnMpO1xuICAgIHBhcnNlZCA9IE9iamVjdC5rZXlzKHBhcnNlZCkucmVkdWNlKChyZXMsIG5hbWUpID0+IHtcbiAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzKSwge1xuICAgICAgICBbY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKV06IHBhcnNlZFtuYW1lXVxuICAgICAgfSk7XG4gICAgfSwge186IFtdfSk7XG4gICAgY29uc3QgYXJncyA9IHBhcnNlZC5fO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBcIi0tXCI6IGFyZ3NBZnRlckRvdWJsZURhc2hlc1xuICAgIH07XG4gICAgY29uc3QgaWdub3JlRGVmYXVsdCA9IGNvbW1hbmQgJiYgY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlID8gY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlIDogdGhpcy5nbG9iYWxDb21tYW5kLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWU7XG4gICAgbGV0IHRyYW5zZm9ybXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAoY29uc3QgY2xpT3B0aW9uIG9mIGNsaU9wdGlvbnMpIHtcbiAgICAgIGlmICghaWdub3JlRGVmYXVsdCAmJiBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2xpT3B0aW9uLm5hbWVzKSB7XG4gICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGNsaU9wdGlvbi5jb25maWcuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xpT3B0aW9uLmNvbmZpZy50eXBlKSkge1xuICAgICAgICBpZiAodHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXVtcInNob3VsZFRyYW5zZm9ybVwiXSA9IHRydWU7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJ0cmFuc2Zvcm1GdW5jdGlvblwiXSA9IGNsaU9wdGlvbi5jb25maWcudHlwZVswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWQpKSB7XG4gICAgICBpZiAoa2V5ICE9PSBcIl9cIikge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgc2V0RG90UHJvcChvcHRpb25zLCBrZXlzLCBwYXJzZWRba2V5XSk7XG4gICAgICAgIHNldEJ5VHlwZShvcHRpb25zLCB0cmFuc2Zvcm1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3MsXG4gICAgICBvcHRpb25zXG4gICAgfTtcbiAgfVxuICBydW5NYXRjaGVkQ29tbWFuZCgpIHtcbiAgICBjb25zdCB7YXJncywgb3B0aW9ucywgbWF0Y2hlZENvbW1hbmQ6IGNvbW1hbmR9ID0gdGhpcztcbiAgICBpZiAoIWNvbW1hbmQgfHwgIWNvbW1hbmQuY29tbWFuZEFjdGlvbilcbiAgICAgIHJldHVybjtcbiAgICBjb21tYW5kLmNoZWNrVW5rbm93bk9wdGlvbnMoKTtcbiAgICBjb21tYW5kLmNoZWNrT3B0aW9uVmFsdWUoKTtcbiAgICBjb21tYW5kLmNoZWNrUmVxdWlyZWRBcmdzKCk7XG4gICAgY29uc3QgYWN0aW9uQXJncyA9IFtdO1xuICAgIGNvbW1hbmQuYXJncy5mb3JFYWNoKChhcmcsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoYXJnLnZhcmlhZGljKSB7XG4gICAgICAgIGFjdGlvbkFyZ3MucHVzaChhcmdzLnNsaWNlKGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJnc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGFjdGlvbkFyZ3MucHVzaChvcHRpb25zKTtcbiAgICByZXR1cm4gY29tbWFuZC5jb21tYW5kQWN0aW9uLmFwcGx5KHRoaXMsIGFjdGlvbkFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IGNhYyA9IChuYW1lID0gXCJcIikgPT4gbmV3IENBQyhuYW1lKTtcblxuZXhwb3J0IGRlZmF1bHQgY2FjO1xuZXhwb3J0IHsgQ0FDLCBDb21tYW5kLCBjYWMgfTtcbiIsImltcG9ydCByZWFkbGluZSBmcm9tICdyZWFkbGluZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4vY29yZSdcblxuY29uc3Qga2V5cyA9IFtcbiAgWydhJywgJ3JlcnVuIGFsbCB0ZXN0cyddLFxuICBbJ2YnLCAncmVydW4gb25seSBmYWlsZWQgdGVzdHMnXSxcbiAgWyd1JywgJ3VwZGF0ZSBzbmFwc2hvdCddLFxuICBbJ3EnLCAncXVpdCddLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTaG9ydGN1dHNIZWxwKCkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShcbiAgICBgXG4ke2MuYm9sZCgnICBXYXRjaCBVc2FnZScpfVxuJHtrZXlzLm1hcChpID0+IGMuZGltKCcgIHByZXNzICcpICsgYy5ib2xkKGMucmVzZXQoaVswXSkpICsgYy5kaW0oYCB0byAke2lbMV19YCkpLmpvaW4oJ1xcbicpfVxuYCxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb25zb2xlU2hvcnRjdXRzKGN0eDogVml0ZXN0KSB7XG4gIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyhwcm9jZXNzLnN0ZGluKVxuICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSlcbiAgcHJvY2Vzcy5zdGRpbi5vbigna2V5cHJlc3MnLCAoc3RyOiBzdHJpbmcsIGtleTogYW55KSA9PiB7XG4gICAgLy8gY3RybC1jIG9yIGVzY1xuICAgIGlmIChzdHIgPT09ICdcXHgwMycgfHwgc3RyID09PSAnXFx4MUInIHx8IChrZXkgJiYga2V5LmN0cmwgJiYga2V5Lm5hbWUgPT09ICdjJykpXG4gICAgICByZXR1cm4gY3R4LmV4aXQodHJ1ZSlcblxuICAgIC8vIGlzIHJ1bm5pbmcsIGlnbm9yZSBrZXlwcmVzc1xuICAgIGlmIChjdHgucnVubmluZ1Byb21pc2UpXG4gICAgICByZXR1cm5cblxuICAgIGNvbnN0IG5hbWUgPSBrZXk/Lm5hbWVcblxuICAgIC8vIGhlbHBcbiAgICBpZiAobmFtZSA9PT0gJ2gnKVxuICAgICAgcmV0dXJuIHByaW50U2hvcnRjdXRzSGVscCgpXG4gICAgLy8gdXBkYXRlIHNuYXBzaG90XG4gICAgaWYgKG5hbWUgPT09ICd1JylcbiAgICAgIHJldHVybiBjdHgudXBkYXRlU25hcHNob3QoKVxuICAgIC8vIHJlcnVuIGFsbCB0ZXN0c1xuICAgIGlmIChuYW1lID09PSAnYScgfHwgbmFtZSA9PT0gJ3JldHVybicpXG4gICAgICByZXR1cm4gY3R4LnJlcnVuRmlsZXModW5kZWZpbmVkLCAncmVydW4gYWxsJylcbiAgICAvLyBxdWl0XG4gICAgaWYgKG5hbWUgPT09ICdxJylcbiAgICAgIHJldHVybiBjdHguZXhpdCh0cnVlKVxuXG4gICAgLy8gVE9ETzogYWRkIG1vcmUgY29tbWFuZHNcbiAgfSlcbn1cbiIsImltcG9ydCBjYWMgZnJvbSAnY2FjJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJ1xuaW1wb3J0IHsgZW5zdXJlUGFja2FnZUluc3RhbGxlZCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlVml0ZXN0IH0gZnJvbSAnLi9jcmVhdGUnXG5pbXBvcnQgeyByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMgfSBmcm9tICcuL3N0ZGluJ1xuXG5jb25zdCBjbGkgPSBjYWMoJ3ZpdGVzdCcpXG5cbmNsaVxuICAudmVyc2lvbih2ZXJzaW9uKVxuICAub3B0aW9uKCctciwgLS1yb290IDxwYXRoPicsICdyb290IHBhdGgnKVxuICAub3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ3BhdGggdG8gY29uZmlnIGZpbGUnKVxuICAub3B0aW9uKCctdSwgLS11cGRhdGUnLCAndXBkYXRlIHNuYXBzaG90JylcbiAgLm9wdGlvbignLXcsIC0td2F0Y2gnLCAnd2F0Y2ggbW9kZScpXG4gIC5vcHRpb24oJy10LCAtLXRlc3ROYW1lUGF0dGVybiA8cGF0dGVybj4nLCAncnVuIHRlc3QgbmFtZXMgd2l0aCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4nKVxuICAub3B0aW9uKCctLXVpJywgJ29wZW4gVUknKVxuICAub3B0aW9uKCctLWFwaSBbYXBpXScsICdzZXJ2ZSBBUEksIGF2YWlsYWJsZSBvcHRpb25zOiAtLWFwaS5wb3J0IDxwb3J0PiwgLS1hcGkuaG9zdCBbaG9zdF0gYW5kIC0tYXBpLnN0cmljdFBvcnQnKVxuICAub3B0aW9uKCctLXRocmVhZHMnLCAnZW5hYmxlZCB0aHJlYWRzJywgeyBkZWZhdWx0OiB0cnVlIH0pXG4gIC5vcHRpb24oJy0tc2lsZW50JywgJ3NpbGVudCBjb25zb2xlIG91dHB1dCBmcm9tIHRlc3RzJylcbiAgLm9wdGlvbignLS1pc29sYXRlJywgJ2lzb2xhdGUgZW52aXJvbm1lbnQgZm9yIGVhY2ggdGVzdCBmaWxlJywgeyBkZWZhdWx0OiB0cnVlIH0pXG4gIC5vcHRpb24oJy0tcmVwb3J0ZXIgPG5hbWU+JywgJ3JlcG9ydGVyJylcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxmaWxlbmFtZT4nLCAnd3JpdGUgdGVzdCByZXN1bHRzIHRvIGEgZmlsZSB3aGVuIHRoZSAtLXJlcG9ydGVyPWpzb24gb3B0aW9uIGlzIGFsc28gc3BlY2lmaWVkJylcbiAgLm9wdGlvbignLS1jb3ZlcmFnZScsICd1c2UgYzggZm9yIGNvdmVyYWdlJylcbiAgLm9wdGlvbignLS1ydW4nLCAnZG8gbm90IHdhdGNoJylcbiAgLm9wdGlvbignLS1nbG9iYWxzJywgJ2luamVjdCBhcGlzIGdsb2JhbGx5JylcbiAgLm9wdGlvbignLS1nbG9iYWwnLCAnZGVwcmVjYXRlZCwgdXNlIC0tZ2xvYmFscycpXG4gIC5vcHRpb24oJy0tZG9tJywgJ21vY2sgYnJvd3NlciBhcGkgd2l0aCBoYXBweS1kb20nKVxuICAub3B0aW9uKCctLWVudmlyb25tZW50IDxlbnY+JywgJ3J1bm5lciBlbnZpcm9ubWVudCcsIHsgZGVmYXVsdDogJ25vZGUnIH0pXG4gIC5vcHRpb24oJy0tcGFzc1dpdGhOb1Rlc3RzJywgJ3Bhc3Mgd2hlbiBubyB0ZXN0cyBmb3VuZCcpXG4gIC5oZWxwKClcblxuY2xpXG4gIC5jb21tYW5kKCdydW4gWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihydW4pXG5cbmNsaVxuICAuY29tbWFuZCgncmVsYXRlZCBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHJ1blJlbGF0ZWQpXG5cbmNsaVxuICAuY29tbWFuZCgnd2F0Y2ggWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihkZXYpXG5cbmNsaVxuICAuY29tbWFuZCgnZGV2IFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24oZGV2KVxuXG5jbGlcbiAgLmNvbW1hbmQoJ1suLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24oZGV2KVxuXG5jbGkucGFyc2UoKVxuXG5hc3luYyBmdW5jdGlvbiBydW5SZWxhdGVkKHJlbGF0ZWRGaWxlczogc3RyaW5nW10gfCBzdHJpbmcsIGFyZ3Y6IFVzZXJDb25maWcpIHtcbiAgYXJndi5yZWxhdGVkID0gcmVsYXRlZEZpbGVzXG4gIGFyZ3YucGFzc1dpdGhOb1Rlc3RzID8/PSB0cnVlXG4gIGF3YWl0IGRldihbXSwgYXJndilcbn1cblxuYXN5bmMgZnVuY3Rpb24gZGV2KGNsaUZpbHRlcnM6IHN0cmluZ1tdLCBhcmd2OiBVc2VyQ29uZmlnKSB7XG4gIGlmIChhcmd2LndhdGNoID09IG51bGwpXG4gICAgYXJndi53YXRjaCA9ICFwcm9jZXNzLmVudi5DSSAmJiAhYXJndi5ydW5cbiAgYXdhaXQgcnVuKGNsaUZpbHRlcnMsIGFyZ3YpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bihjbGlGaWx0ZXJzOiBzdHJpbmdbXSwgb3B0aW9uczogVXNlckNvbmZpZykge1xuICBwcm9jZXNzLmVudi5WSVRFU1QgPSAndHJ1ZSdcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSAndGVzdCdcblxuICBpZiAoIWF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoJ3ZpdGUnKSlcbiAgICBwcm9jZXNzLmV4aXQoMSlcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuY292ZXJhZ2UgPT09ICdib29sZWFuJylcbiAgICBvcHRpb25zLmNvdmVyYWdlID0geyBlbmFibGVkOiBvcHRpb25zLmNvdmVyYWdlIH1cblxuICBjb25zdCBjdHggPSBhd2FpdCBjcmVhdGVWaXRlc3Qob3B0aW9ucylcblxuICBpZiAoY3R4LmNvbmZpZy5jb3ZlcmFnZS5lbmFibGVkKSB7XG4gICAgaWYgKCFhd2FpdCBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkKCdjOCcpKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cblxuICBpZiAoY3R4LmNvbmZpZy5lbnZpcm9ubWVudCAmJiBjdHguY29uZmlnLmVudmlyb25tZW50ICE9PSAnbm9kZScpIHtcbiAgICBpZiAoIWF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoY3R4LmNvbmZpZy5lbnZpcm9ubWVudCkpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuXG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZICYmIGN0eC5jb25maWcud2F0Y2gpXG4gICAgcmVnaXN0ZXJDb25zb2xlU2hvcnRjdXRzKGN0eClcblxuICBwcm9jZXNzLmNoZGlyKGN0eC5jb25maWcucm9vdClcblxuICBjdHgub25TZXJ2ZXJSZXN0YXJ0ZWQoKCkgPT4ge1xuICAgIC8vIFRPRE86IHJlLWNvbnNpZGVyIGhvdyB0byByZS1ydW4gdGhlIHRlc3RzIHRoZSBzZXJ2ZXIgc21hcnRseVxuICAgIGN0eC5zdGFydChjbGlGaWx0ZXJzKVxuICB9KVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY3R4LnN0YXJ0KGNsaUZpbHRlcnMpXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMVxuICAgIHRocm93IGVcbiAgfVxuICBmaW5hbGx5IHtcbiAgICBpZiAoIWN0eC5jb25maWcud2F0Y2gpXG4gICAgICBhd2FpdCBjdHguZXhpdCgpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJyZWFkbGluZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUNwQixDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDcEMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUc7QUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0UsSUFBSSxPQUFPLEdBQUcsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxHQUFHLEdBQUcsS0FBSyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDcEksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRztBQUNwQyxFQUFFLENBQUM7QUFDSCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBQ0Q7QUFDQSxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzNCLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNuQjtBQUNBLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMxQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDdEM7QUFDQSxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQztBQUMxQztBQUNBLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQztBQUNBLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFDWixFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDeEIsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHO0FBQ3ZDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMxQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELEVBQUU7QUFDRjtBQUNBLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHO0FBQ3RDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxRQUFRLEVBQUU7QUFDZixFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDMUIsR0FBRyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0MsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtBQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbkMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLEtBQUs7QUFDTCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwRDtBQUNBLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekIsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7QUFDcEIsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsTUFBTTtBQUNULEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNO0FBQ3ZDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2YsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ2hELEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUcsSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsSUFBSTtBQUNKLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDMUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU07QUFDMUMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDaEMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25HLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQztBQUNBLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ3hDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2xGLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFELElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUNmLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUMxQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLElBQUksS0FBSyxFQUFFO0FBQ1osRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUU7QUFDakIsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0IsR0FBRyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzFCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDO0FBQ0Q7QUFDQSxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3RCxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsS0FBSztBQUMvQixFQUFFLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO0FBQ2hELEVBQUUsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUM7QUFDbkQsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDakIsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssS0FBSztBQUMzQixJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN6QixJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixJQUFJLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixLQUFLO0FBQ0wsSUFBSSxPQUFPO0FBQ1gsTUFBTSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7QUFDeEMsTUFBTSxLQUFLO0FBQ1gsTUFBTSxRQUFRO0FBQ2QsS0FBSyxDQUFDO0FBQ04sR0FBRyxDQUFDO0FBQ0osRUFBRSxJQUFJLFdBQVcsQ0FBQztBQUNsQixFQUFFLE9BQU8sV0FBVyxHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN6RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDakMsR0FBRztBQUNILEVBQUUsSUFBSSxXQUFXLENBQUM7QUFDbEIsRUFBRSxPQUFPLFdBQVcsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekQsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEdBQUc7QUFDSCxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFPLEtBQUs7QUFDbkMsRUFBRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLEVBQUUsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtBQUNuRCxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2pDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO0FBQzFCLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQzFCLFFBQVEsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMzRCxVQUFVLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUM7QUFDdkgsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtBQUNsQyxVQUFVLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxTQUFTO0FBQ1QsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsS0FBSztBQUM3QixFQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDNUIsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUM7QUFDRixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUs7QUFDbEMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDLENBQUM7QUFDRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssS0FBSztBQUM3QixFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLO0FBQzFELElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2pDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSztBQUN2QyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLEVBQUUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMzQixFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNkLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDUixFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtBQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDNUgsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsS0FBSztBQUN2QyxFQUFFLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM3QyxJQUFJLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxJQUFJLElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRTtBQUNuQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNELE1BQU0sSUFBSSxPQUFPLFNBQVMsQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7QUFDN0QsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUM3RCxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssS0FBSztBQUMvQixFQUFFLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUNGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLEtBQUs7QUFDdEMsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUN2QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUNGLE1BQU0sUUFBUSxTQUFTLEtBQUssQ0FBQztBQUM3QixFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3RDLElBQUksSUFBSSxPQUFPLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7QUFDdkQsTUFBTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RCxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxNQUFNLENBQUM7QUFDYixFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtBQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQy9ELE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakQsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUM1QixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QyxPQUFPO0FBQ1AsTUFBTSxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xELElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtBQUNyRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNqQyxLQUFLO0FBQ0wsSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDL0IsTUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMzQixLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RDLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDNUIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUM1QixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDakMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ25GO0FBQ0EsTUFBTSxPQUFPLENBQUM7QUFDZCxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFO0FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzFCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsbUJBQW1CLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUMzQyxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLHdCQUF3QixHQUFHO0FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsR0FBRyxlQUFlLEVBQUU7QUFDbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFDdkQsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDdkMsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7QUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUNsQyxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDbEIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hFLEdBQUc7QUFDSCxFQUFFLElBQUksZ0JBQWdCLEdBQUc7QUFDekIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdELEdBQUc7QUFDSCxFQUFFLElBQUksZUFBZSxHQUFHO0FBQ3hCLElBQUksT0FBTyxJQUFJLFlBQVksYUFBYSxDQUFDO0FBQ3pDLEdBQUc7QUFDSCxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDbEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUs7QUFDekMsTUFBTSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLEtBQUssQ0FBQyxDQUFDO0FBQ1AsR0FBRztBQUNILEVBQUUsVUFBVSxHQUFHO0FBQ2YsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdEMsSUFBSSxNQUFNO0FBQ1YsTUFBTSxhQUFhO0FBQ25CLE1BQU0sT0FBTyxFQUFFLGFBQWE7QUFDNUIsTUFBTSxZQUFZO0FBQ2xCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztBQUMvQixJQUFJLElBQUksUUFBUSxHQUFHO0FBQ25CLE1BQU07QUFDTixRQUFRLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbEUsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztBQUNsQixNQUFNLEtBQUssRUFBRSxPQUFPO0FBQ3BCLE1BQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0QsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDaEcsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixNQUFNLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDekYsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO0FBQ3BCLFFBQVEsS0FBSyxFQUFFLFVBQVU7QUFDekIsUUFBUSxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSztBQUN4QyxVQUFVLE9BQU8sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3JHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDckIsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDcEIsUUFBUSxLQUFLLEVBQUUsQ0FBQyx1REFBdUQsQ0FBQztBQUN4RSxRQUFRLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDeEgsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQ3pELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztBQUN0RSxLQUFLO0FBQ0wsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzVCLE1BQU0sTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDcEIsUUFBUSxLQUFLLEVBQUUsU0FBUztBQUN4QixRQUFRLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLO0FBQ3RDLFVBQVUsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuTCxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3JCLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDbEMsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO0FBQ3BCLFFBQVEsS0FBSyxFQUFFLFVBQVU7QUFDekIsUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUs7QUFDN0MsVUFBVSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUM3QyxZQUFZLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFdBQVc7QUFDWCxVQUFVLE9BQU8sT0FBTyxDQUFDO0FBQ3pCLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDckIsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ3BELEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSztBQUMxQyxNQUFNLE9BQU8sT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5QyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDaEMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckIsR0FBRztBQUNILEVBQUUsYUFBYSxHQUFHO0FBQ2xCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDNUIsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7QUFDbkQsSUFBSSxJQUFJLGFBQWEsRUFBRTtBQUN2QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFLGlCQUFpQixHQUFHO0FBQ3RCLElBQUksTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzVFLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUU7QUFDakQsTUFBTSxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxtQkFBbUIsR0FBRztBQUN4QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFO0FBQzFDLE1BQU0sS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQy9DLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdEYsVUFBVSxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakcsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsZ0JBQWdCLEdBQUc7QUFDckIsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzdELElBQUksTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEUsSUFBSSxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtBQUNsQyxNQUFNLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO0FBQzNCLFFBQVEsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNGLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDOUQsVUFBVSxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQzlFLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ0QsTUFBTSxhQUFhLFNBQVMsT0FBTyxDQUFDO0FBQ3BDLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUNuQixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUM3QixNQUFNLEdBQUcsU0FBUyxZQUFZLENBQUM7QUFDL0IsRUFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUN6QixJQUFJLEtBQUssRUFBRSxDQUFDO0FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDcEQsR0FBRztBQUNILEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtBQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDeEMsSUFBSSxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDMUUsSUFBSSxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxJQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtBQUN2QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUQsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDcEUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7QUFDL0MsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztBQUMvQixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxHQUFHLGVBQWUsRUFBRTtBQUNsRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDbEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxVQUFVLEdBQUc7QUFDZixJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtBQUM3QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdkMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RDLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxhQUFhLEdBQUc7QUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3ZDLEdBQUc7QUFDSCxFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7QUFDckUsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzNCLElBQUksSUFBSSxjQUFjLEVBQUU7QUFDeEIsTUFBTSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsSUFBSSxJQUFJLGtCQUFrQixFQUFFO0FBQzVCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0FBQ25ELEtBQUs7QUFDTCxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLG1CQUFtQixHQUFHO0FBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNqQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRTtBQUM1QixJQUFJLEdBQUcsR0FBRyxJQUFJO0FBQ2QsR0FBRyxHQUFHLEVBQUUsRUFBRTtBQUNWLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNwQixNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDekQsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQzNCLElBQUksS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3pDLE1BQU0sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELE1BQU0sTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRTtBQUMxQyxRQUFRLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDNUIsUUFBUSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtBQUMxRCxVQUFVLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDcEMsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3RCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyRCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLEVBQUU7QUFDckIsTUFBTSxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDM0MsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2pDLFVBQVUsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUM5QixVQUFVLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxVQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLEVBQUU7QUFDckIsTUFBTSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO0FBQ2xELE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNsQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ2pDLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUU7QUFDM0YsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ2xCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDakMsS0FBSztBQUNMLElBQUksTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLElBQUksSUFBSSxHQUFHLEVBQUU7QUFDYixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBQy9CLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDOUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdCLEtBQUs7QUFDTCxJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3JCLElBQUksTUFBTSxVQUFVLEdBQUc7QUFDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztBQUNuQyxNQUFNLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRTtBQUN2QyxLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqRCxJQUFJLElBQUkscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ25DLElBQUksTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNoQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUM5QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3hDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSztBQUN2RCxNQUFNLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDekMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakQsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQixJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUIsSUFBSSxNQUFNLE9BQU8sR0FBRztBQUNwQixNQUFNLElBQUksRUFBRSxxQkFBcUI7QUFDakMsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLGFBQWEsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDO0FBQzVLLElBQUksSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxJQUFJLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO0FBQ3hDLE1BQU0sSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRTtBQUNqRSxRQUFRLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtBQUM1QyxVQUFVLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUNuRCxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsUUFBUSxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDbkQsVUFBVSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsVUFBVSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9ELFVBQVUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQzNDLE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLFFBQVEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxRQUFRLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLFFBQVEsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2QyxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTztBQUNYLE1BQU0sSUFBSTtBQUNWLE1BQU0sT0FBTztBQUNiLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxFQUFFLGlCQUFpQixHQUFHO0FBQ3RCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtBQUMxQyxNQUFNLE9BQU87QUFDYixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ2xDLElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDL0IsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUNoQyxJQUFJLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSztBQUN6QyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtBQUN4QixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLE9BQU8sTUFBTTtBQUNiLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyQyxPQUFPO0FBQ1AsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQzs7OztBQ25tQnhDLE1BQU0sSUFBSSxHQUFHO0FBQ2IsRUFBRSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQztBQUMxQixFQUFFLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDO0FBQ2xDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7QUFDMUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDZixDQUFDLENBQUM7QUFDSyxTQUFTLGtCQUFrQixHQUFHO0FBQ3JDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUM7QUFDSCxDQUFDO0FBQ00sU0FBUyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUU7QUFDOUMsRUFBRUEsVUFBUSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSztBQUM3QyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRztBQUN6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixJQUFJLElBQUksR0FBRyxDQUFDLGNBQWM7QUFDMUIsTUFBTSxPQUFPO0FBQ2IsSUFBSSxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDakQsSUFBSSxJQUFJLElBQUksS0FBSyxHQUFHO0FBQ3BCLE1BQU0sT0FBTyxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xDLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNwQixNQUFNLE9BQU8sR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ2xDLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksS0FBSyxRQUFRO0FBQ3pDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNwQixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixHQUFHLENBQUMsQ0FBQztBQUNMOztBQzNCQSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxFQUFFLDJDQUEyQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLHlGQUF5RixDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsa0NBQWtDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLHdDQUF3QyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxnRkFBZ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BtQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLEdBQUcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNaLGVBQWUsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUU7QUFDOUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztBQUM5QixFQUFFLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4RCxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsZUFBZSxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtBQUNyQyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJO0FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxFQUFFLE1BQU0sR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0QsZUFBZSxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRTtBQUN4QyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM5QixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUNoQyxFQUFFLElBQUksQ0FBQyxNQUFNLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztBQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBRSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTO0FBQzNDLElBQUksT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDckQsRUFBRSxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sc0JBQXNCLENBQUMsSUFBSSxDQUFDO0FBQzNDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixHQUFHO0FBQ0gsRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLE1BQU0sRUFBRTtBQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQzdELE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixHQUFHO0FBQ0gsRUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUM3QyxJQUFJLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU07QUFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJO0FBQ04sSUFBSSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2QsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQ1osR0FBRyxTQUFTO0FBQ1osSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ3pCLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdkIsR0FBRztBQUNIIn0=
|
|
727
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvc3RkaW4udHMiLCIuLi9zcmMvbm9kZS9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuZnVuY3Rpb24gdG9BcnIoYW55KSB7XG5cdHJldHVybiBhbnkgPT0gbnVsbCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5cbmZ1bmN0aW9uIHRvVmFsKG91dCwga2V5LCB2YWwsIG9wdHMpIHtcblx0dmFyIHgsIG9sZD1vdXRba2V5XSwgbnh0PShcblx0XHQhIX5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyAodmFsID09IG51bGwgfHwgdmFsID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsKSlcblx0XHQ6IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbFxuXHRcdDogISF+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/ICh2YWwgPT09ICdmYWxzZScgPyBmYWxzZSA6IHZhbCA9PT0gJ3RydWUnIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCx4ICogMCA9PT0gMCkgPyB4IDogdmFsKSwhIXZhbCkpXG5cdFx0OiAoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbFxuXHQpO1xuXHRvdXRba2V5XSA9IG9sZCA9PSBudWxsID8gbnh0IDogKEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF0pO1xufVxuXG5mdW5jdGlvbiBtcmkyIChhcmdzLCBvcHRzKSB7XG5cdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHR2YXIgaywgYXJyLCBhcmcsIG5hbWUsIHZhbCwgb3V0PXsgXzpbXSB9O1xuXHR2YXIgaT0wLCBqPTAsIGlkeD0wLCBsZW49YXJncy5sZW5ndGg7XG5cblx0Y29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG5cdGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuXHRjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuXG5cdG9wdHMuYWxpYXMgPSBvcHRzLmFsaWFzIHx8IHt9O1xuXHRvcHRzLnN0cmluZyA9IHRvQXJyKG9wdHMuc3RyaW5nKTtcblx0b3B0cy5ib29sZWFuID0gdG9BcnIob3B0cy5ib29sZWFuKTtcblxuXHRpZiAoYWxpYmkpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuXHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0KG9wdHMuYWxpYXNbYXJyW2ldXSA9IGFyci5jb25jYXQoaykpLnNwbGljZShpLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3IgKGk9b3B0cy5ib29sZWFuLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuXHR9XG5cblx0Zm9yIChpPW9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuc3RyaW5nW2ldXSB8fCBbXTtcblx0XHRmb3IgKGo9YXJyLmxlbmd0aDsgai0tID4gMDspIG9wdHMuc3RyaW5nLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHRpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG5cdFx0XHRcdG9wdHNbbmFtZV0ucHVzaChrKTtcblx0XHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuXG5cdGZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHtcblx0XHRhcmcgPSBhcmdzW2ldO1xuXG5cdFx0aWYgKGFyZyA9PT0gJy0tJykge1xuXHRcdFx0b3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSBicmVhazsgLy8gXCItXCJcblx0XHR9XG5cblx0XHRpZiAoaiA9PT0gMCkge1xuXHRcdFx0b3V0Ll8ucHVzaChhcmcpO1xuXHRcdH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09ICduby0nKSB7XG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqICsgMyk7XG5cdFx0XHRpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcblx0XHRcdH1cblx0XHRcdG91dFtuYW1lXSA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGlkeD1qKzE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkgYnJlYWs7IC8vIFwiPVwiXG5cdFx0XHR9XG5cblx0XHRcdG5hbWUgPSBhcmcuc3Vic3RyaW5nKGosIGlkeCk7XG5cdFx0XHR2YWwgPSBhcmcuc3Vic3RyaW5nKCsraWR4KSB8fCAoaSsxID09PSBsZW4gfHwgKCcnK2FyZ3NbaSsxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldKTtcblx0XHRcdGFyciA9IChqID09PSAyID8gW25hbWVdIDogbmFtZSk7XG5cblx0XHRcdGZvciAoaWR4PTA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdG5hbWUgPSBhcnJbaWR4XTtcblx0XHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkgcmV0dXJuIG9wdHMudW5rbm93bignLScucmVwZWF0KGopICsgbmFtZSk7XG5cdFx0XHRcdHRvVmFsKG91dCwgbmFtZSwgKGlkeCArIDEgPCBhcnIubGVuZ3RoKSB8fCB2YWwsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuXHRcdFx0XHRvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG91dCkge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcblx0XHRcdHdoaWxlIChhcnIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRvdXRbYXJyLnNoaWZ0KCldID0gb3V0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IHJlbW92ZUJyYWNrZXRzID0gKHYpID0+IHYucmVwbGFjZSgvWzxbXS4rLywgXCJcIikudHJpbSgpO1xuY29uc3QgZmluZEFsbEJyYWNrZXRzID0gKHYpID0+IHtcbiAgY29uc3QgQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMID0gLzwoW14+XSspPi9nO1xuICBjb25zdCBTUVVBUkVfQlJBQ0tFVF9SRV9HTE9CQUwgPSAvXFxbKFteXFxdXSspXFxdL2c7XG4gIGNvbnN0IHJlcyA9IFtdO1xuICBjb25zdCBwYXJzZSA9IChtYXRjaCkgPT4ge1xuICAgIGxldCB2YXJpYWRpYyA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiLi4uXCIpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDMpO1xuICAgICAgdmFyaWFkaWMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZWQ6IG1hdGNoWzBdLnN0YXJ0c1dpdGgoXCI8XCIpLFxuICAgICAgdmFsdWUsXG4gICAgICB2YXJpYWRpY1xuICAgIH07XG4gIH07XG4gIGxldCBhbmdsZWRNYXRjaDtcbiAgd2hpbGUgKGFuZ2xlZE1hdGNoID0gQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShhbmdsZWRNYXRjaCkpO1xuICB9XG4gIGxldCBzcXVhcmVNYXRjaDtcbiAgd2hpbGUgKHNxdWFyZU1hdGNoID0gU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShzcXVhcmVNYXRjaCkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuY29uc3QgZ2V0TXJpT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHthbGlhczoge30sIGJvb2xlYW46IFtdfTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIG9wdGlvbl0gb2Ygb3B0aW9ucy5lbnRyaWVzKCkpIHtcbiAgICBpZiAob3B0aW9uLm5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlc3VsdC5hbGlhc1tvcHRpb24ubmFtZXNbMF1dID0gb3B0aW9uLm5hbWVzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uLmlzQm9vbGVhbikge1xuICAgICAgaWYgKG9wdGlvbi5uZWdhdGVkKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0cmluZ1R5cGVPcHRpb24gPSBvcHRpb25zLnNvbWUoKG8sIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaSAhPT0gaW5kZXggJiYgby5uYW1lcy5zb21lKChuYW1lKSA9PiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSkpICYmIHR5cGVvZiBvLnJlcXVpcmVkID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaGFzU3RyaW5nVHlwZU9wdGlvbikge1xuICAgICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LmJvb2xlYW4ucHVzaChvcHRpb24ubmFtZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IGZpbmRMb25nZXN0ID0gKGFycikgPT4ge1xuICByZXR1cm4gYXJyLnNvcnQoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IC0xIDogMTtcbiAgfSlbMF07XG59O1xuY29uc3QgcGFkUmlnaHQgPSAoc3RyLCBsZW5ndGgpID0+IHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPj0gbGVuZ3RoID8gc3RyIDogYCR7c3RyfSR7XCIgXCIucmVwZWF0KGxlbmd0aCAtIHN0ci5sZW5ndGgpfWA7XG59O1xuY29uc3QgY2FtZWxjYXNlID0gKGlucHV0KSA9PiB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW2Etel0pLShbYS16XSkvZywgKF8sIHAxLCBwMikgPT4ge1xuICAgIHJldHVybiBwMSArIHAyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcbmNvbnN0IHNldERvdFByb3AgPSAob2JqLCBrZXlzLCB2YWwpID0+IHtcbiAgbGV0IGkgPSAwO1xuICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIGxldCB0ID0gb2JqO1xuICBsZXQgeDtcbiAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHggPSB0W2tleXNbaV1dO1xuICAgIHQgPSB0W2tleXNbaV1dID0gaSA9PT0gbGVuZ3RoIC0gMSA/IHZhbCA6IHggIT0gbnVsbCA/IHggOiAhIX5rZXlzW2kgKyAxXS5pbmRleE9mKFwiLlwiKSB8fCAhKCtrZXlzW2kgKyAxXSA+IC0xKSA/IHt9IDogW107XG4gIH1cbn07XG5jb25zdCBzZXRCeVR5cGUgPSAob2JqLCB0cmFuc2Zvcm1zKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRyYW5zZm9ybXMpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3Jtc1trZXldO1xuICAgIGlmICh0cmFuc2Zvcm0uc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICBvYmpba2V5XSA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgb2JqW2tleV0pO1xuICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmpba2V5XSA9IG9ialtrZXldLm1hcCh0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbmNvbnN0IGdldEZpbGVOYW1lID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IG0gPSAvKFteXFxcXFxcL10rKSQvLmV4ZWMoaW5wdXQpO1xuICByZXR1cm4gbSA/IG1bMV0gOiBcIlwiO1xufTtcbmNvbnN0IGNhbWVsY2FzZU9wdGlvbk5hbWUgPSAobmFtZSkgPT4ge1xuICByZXR1cm4gbmFtZS5zcGxpdChcIi5cIikubWFwKCh2LCBpKSA9PiB7XG4gICAgcmV0dXJuIGkgPT09IDAgPyBjYW1lbGNhc2UodikgOiB2O1xuICB9KS5qb2luKFwiLlwiKTtcbn07XG5jbGFzcyBDQUNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICAgIHJhd05hbWUgPSByYXdOYW1lLnJlcGxhY2UoL1xcLlxcKi9nLCBcIlwiKTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5hbWVzID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSkuc3BsaXQoXCIsXCIpLm1hcCgodikgPT4ge1xuICAgICAgbGV0IG5hbWUgPSB2LnRyaW0oKS5yZXBsYWNlKC9eLXsxLDJ9LywgXCJcIik7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAgIHRoaXMubmVnYXRlZCA9IHRydWU7XG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL15uby0vLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYW1lbGNhc2VPcHRpb25OYW1lKG5hbWUpO1xuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTEpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZXNbdGhpcy5uYW1lcy5sZW5ndGggLSAxXTtcbiAgICBpZiAodGhpcy5uZWdhdGVkICYmIHRoaXMuY29uZmlnLmRlZmF1bHQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcuZGVmYXVsdCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiPFwiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiW1wiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQm9vbGVhbiA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NBcmdzID0gcHJvY2Vzcy5hcmd2O1xuY29uc3QgcGxhdGZvcm1JbmZvID0gYCR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9IG5vZGUtJHtwcm9jZXNzLnZlcnNpb259YDtcblxuY2xhc3MgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcgPSB7fSwgY2xpKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jbGkgPSBjbGk7XG4gICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgdGhpcy5hbGlhc05hbWVzID0gW107XG4gICAgdGhpcy5uYW1lID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSk7XG4gICAgdGhpcy5hcmdzID0gZmluZEFsbEJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuZXhhbXBsZXMgPSBbXTtcbiAgfVxuICB1c2FnZSh0ZXh0KSB7XG4gICAgdGhpcy51c2FnZVRleHQgPSB0ZXh0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFsbG93VW5rbm93bk9wdGlvbnMoKSB7XG4gICAgdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlKCkge1xuICAgIHRoaXMuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy52ZXJzaW9uTnVtYmVyID0gdmVyc2lvbjtcbiAgICB0aGlzLm9wdGlvbihjdXN0b21GbGFncywgXCJEaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZXhhbXBsZXMucHVzaChleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIGNvbnN0IG9wdGlvbiA9IG5ldyBPcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGlhcyhuYW1lKSB7XG4gICAgdGhpcy5hbGlhc05hbWVzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWN0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jb21tYW5kQWN0aW9uID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaXNNYXRjaGVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBuYW1lIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuICBnZXQgaXNEZWZhdWx0Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBcIlwiIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhcIiFcIik7XG4gIH1cbiAgZ2V0IGlzR2xvYmFsQ29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEdsb2JhbENvbW1hbmQ7XG4gIH1cbiAgaGFzT3B0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbmFtZS5zcGxpdChcIi5cIilbMF07XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gICAgfSk7XG4gIH1cbiAgb3V0cHV0SGVscCgpIHtcbiAgICBjb25zdCB7bmFtZSwgY29tbWFuZHN9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge1xuICAgICAgdmVyc2lvbk51bWJlcixcbiAgICAgIG9wdGlvbnM6IGdsb2JhbE9wdGlvbnMsXG4gICAgICBoZWxwQ2FsbGJhY2tcbiAgICB9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGJvZHk6IGAke25hbWV9JHt2ZXJzaW9uTnVtYmVyID8gYC8ke3ZlcnNpb25OdW1iZXJ9YCA6IFwiXCJ9YFxuICAgICAgfVxuICAgIF07XG4gICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICB0aXRsZTogXCJVc2FnZVwiLFxuICAgICAgYm9keTogYCAgJCAke25hbWV9ICR7dGhpcy51c2FnZVRleHQgfHwgdGhpcy5yYXdOYW1lfWBcbiAgICB9KTtcbiAgICBjb25zdCBzaG93Q29tbWFuZHMgPSAodGhpcy5pc0dsb2JhbENvbW1hbmQgfHwgdGhpcy5pc0RlZmF1bHRDb21tYW5kKSAmJiBjb21tYW5kcy5sZW5ndGggPiAwO1xuICAgIGlmIChzaG93Q29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGxvbmdlc3RDb21tYW5kTmFtZSA9IGZpbmRMb25nZXN0KGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiQ29tbWFuZHNcIixcbiAgICAgICAgYm9keTogY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQoY29tbWFuZC5yYXdOYW1lLCBsb25nZXN0Q29tbWFuZE5hbWUubGVuZ3RoKX0gICR7Y29tbWFuZC5kZXNjcmlwdGlvbn1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgICB0aXRsZTogYEZvciBtb3JlIGluZm8sIHJ1biBhbnkgY29tbWFuZCB3aXRoIHRoZSBcXGAtLWhlbHBcXGAgZmxhZ2AsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gYCAgJCAke25hbWV9JHtjb21tYW5kLm5hbWUgPT09IFwiXCIgPyBcIlwiIDogYCAke2NvbW1hbmQubmFtZX1gfSAtLWhlbHBgKS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmlzR2xvYmFsQ29tbWFuZCA/IGdsb2JhbE9wdGlvbnMgOiBbLi4udGhpcy5vcHRpb25zLCAuLi5nbG9iYWxPcHRpb25zIHx8IFtdXTtcbiAgICBpZiAoIXRoaXMuaXNHbG9iYWxDb21tYW5kICYmICF0aGlzLmlzRGVmYXVsdENvbW1hbmQpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ubmFtZSAhPT0gXCJ2ZXJzaW9uXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb25nZXN0T3B0aW9uTmFtZSA9IGZpbmRMb25nZXN0KG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiT3B0aW9uc1wiLFxuICAgICAgICBib2R5OiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQob3B0aW9uLnJhd05hbWUsIGxvbmdlc3RPcHRpb25OYW1lLmxlbmd0aCl9ICAke29wdGlvbi5kZXNjcmlwdGlvbn0gJHtvcHRpb24uY29uZmlnLmRlZmF1bHQgPT09IHZvaWQgMCA/IFwiXCIgOiBgKGRlZmF1bHQ6ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0fSlgfWA7XG4gICAgICAgIH0pLmpvaW4oXCJcXG5cIilcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGFtcGxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiRXhhbXBsZXNcIixcbiAgICAgICAgYm9keTogdGhpcy5leGFtcGxlcy5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGV4YW1wbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGFtcGxlO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGhlbHBDYWxsYmFjaykge1xuICAgICAgc2VjdGlvbnMgPSBoZWxwQ2FsbGJhY2soc2VjdGlvbnMpIHx8IHNlY3Rpb25zO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLnRpdGxlID8gYCR7c2VjdGlvbi50aXRsZX06XG4ke3NlY3Rpb24uYm9keX1gIDogc2VjdGlvbi5ib2R5O1xuICAgIH0pLmpvaW4oXCJcXG5cXG5cIikpO1xuICB9XG4gIG91dHB1dFZlcnNpb24oKSB7XG4gICAgY29uc3Qge25hbWV9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge3ZlcnNpb25OdW1iZXJ9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBpZiAodmVyc2lvbk51bWJlcikge1xuICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0vJHt2ZXJzaW9uTnVtYmVyfSAke3BsYXRmb3JtSW5mb31gKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tSZXF1aXJlZEFyZ3MoKSB7XG4gICAgY29uc3QgbWluaW1hbEFyZ3NDb3VudCA9IHRoaXMuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLnJlcXVpcmVkKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuY2xpLmFyZ3MubGVuZ3RoIDwgbWluaW1hbEFyZ3NDb3VudCkge1xuICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBtaXNzaW5nIHJlcXVpcmVkIGFyZ3MgZm9yIGNvbW1hbmQgXFxgJHt0aGlzLnJhd05hbWV9XFxgYCk7XG4gICAgfVxuICB9XG4gIGNoZWNrVW5rbm93bk9wdGlvbnMoKSB7XG4gICAgY29uc3Qge29wdGlvbnMsIGdsb2JhbENvbW1hbmR9ID0gdGhpcy5jbGk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5hbGxvd1Vua25vd25PcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKG5hbWUgIT09IFwiLS1cIiAmJiAhdGhpcy5oYXNPcHRpb24obmFtZSkgJiYgIWdsb2JhbENvbW1hbmQuaGFzT3B0aW9uKG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBVbmtub3duIG9wdGlvbiBcXGAke25hbWUubGVuZ3RoID4gMSA/IGAtLSR7bmFtZX1gIDogYC0ke25hbWV9YH1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjaGVja09wdGlvblZhbHVlKCkge1xuICAgIGNvbnN0IHtvcHRpb25zOiBwYXJzZWRPcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4uZ2xvYmFsQ29tbWFuZC5vcHRpb25zLCAuLi50aGlzLm9wdGlvbnNdO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkT3B0aW9uc1tvcHRpb24ubmFtZS5zcGxpdChcIi5cIilbMF1dO1xuICAgICAgaWYgKG9wdGlvbi5yZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBoYXNOZWdhdGVkID0gb3B0aW9ucy5zb21lKChvKSA9PiBvLm5lZ2F0ZWQgJiYgby5uYW1lcy5pbmNsdWRlcyhvcHRpb24ubmFtZSkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlICYmICFoYXNOZWdhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBvcHRpb24gXFxgJHtvcHRpb24ucmF3TmFtZX1cXGAgdmFsdWUgaXMgbWlzc2luZ2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBHbG9iYWxDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKGNsaSkge1xuICAgIHN1cGVyKFwiQEBnbG9iYWxAQFwiLCBcIlwiLCB7fSwgY2xpKTtcbiAgfVxufVxuXG52YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuY2xhc3MgQ0FDIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IobmFtZSA9IFwiXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMucmF3QXJncyA9IFtdO1xuICAgIHRoaXMuYXJncyA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZCA9IG5ldyBHbG9iYWxDb21tYW5kKHRoaXMpO1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZShcIjxjb21tYW5kPiBbb3B0aW9uc11cIik7XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZSh0ZXh0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBjb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IENvbW1hbmQocmF3TmFtZSwgZGVzY3JpcHRpb24gfHwgXCJcIiwgY29uZmlnLCB0aGlzKTtcbiAgICBjb21tYW5kLmdsb2JhbENvbW1hbmQgPSB0aGlzLmdsb2JhbENvbW1hbmQ7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG4gIG9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBoZWxwKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihcIi1oLCAtLWhlbHBcIiwgXCJEaXNwbGF5IHRoaXMgbWVzc2FnZVwiKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuaGVscENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5zaG93SGVscE9uRXhpdCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLnZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MpO1xuICAgIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5leGFtcGxlKGV4YW1wbGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgaWYgKHRoaXMubWF0Y2hlZENvbW1hbmQpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH1cbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vdXRwdXRWZXJzaW9uKCk7XG4gIH1cbiAgc2V0UGFyc2VkSW5mbyh7YXJncywgb3B0aW9uc30sIG1hdGNoZWRDb21tYW5kLCBtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKG1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gbWF0Y2hlZENvbW1hbmQ7XG4gICAgfVxuICAgIGlmIChtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gbWF0Y2hlZENvbW1hbmROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB1bnNldE1hdGNoZWRDb21tYW5kKCkge1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPSB2b2lkIDA7XG4gIH1cbiAgcGFyc2UoYXJndiA9IHByb2Nlc3NBcmdzLCB7XG4gICAgcnVuID0gdHJ1ZVxuICB9ID0ge30pIHtcbiAgICB0aGlzLnJhd0FyZ3MgPSBhcmd2O1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aGlzLm5hbWUgPSBhcmd2WzFdID8gZ2V0RmlsZU5hbWUoYXJndlsxXSkgOiBcImNsaVwiO1xuICAgIH1cbiAgICBsZXQgc2hvdWxkUGFyc2UgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiB0aGlzLmNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gcGFyc2VkLmFyZ3NbMF07XG4gICAgICBpZiAoY29tbWFuZC5pc01hdGNoZWQoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcGFyc2VkKSwge1xuICAgICAgICAgIGFyZ3M6IHBhcnNlZC5hcmdzLnNsaWNlKDEpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkSW5mbywgY29tbWFuZCwgY29tbWFuZE5hbWUpO1xuICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6JHtjb21tYW5kTmFtZX1gLCBjb21tYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZFBhcnNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoY29tbWFuZC5uYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgc2hvdWxkUGFyc2UgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6IWAsIGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSk7XG4gICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWxwICYmIHRoaXMuc2hvd0hlbHBPbkV4aXQpIHtcbiAgICAgIHRoaXMub3V0cHV0SGVscCgpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJzaW9uICYmIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgJiYgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vdXRwdXRWZXJzaW9uKCk7XG4gICAgICBydW4gPSBmYWxzZTtcbiAgICAgIHRoaXMudW5zZXRNYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRBcmd2ID0ge2FyZ3M6IHRoaXMuYXJncywgb3B0aW9uczogdGhpcy5vcHRpb25zfTtcbiAgICBpZiAocnVuKSB7XG4gICAgICB0aGlzLnJ1bk1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXRjaGVkQ29tbWFuZCAmJiB0aGlzLmFyZ3NbMF0pIHtcbiAgICAgIHRoaXMuZW1pdChcImNvbW1hbmQ6KlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEFyZ3Y7XG4gIH1cbiAgbXJpKGFyZ3YsIGNvbW1hbmQpIHtcbiAgICBjb25zdCBjbGlPcHRpb25zID0gW1xuICAgICAgLi4udGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbnMsXG4gICAgICAuLi5jb21tYW5kID8gY29tbWFuZC5vcHRpb25zIDogW11cbiAgICBdO1xuICAgIGNvbnN0IG1yaU9wdGlvbnMgPSBnZXRNcmlPcHRpb25zKGNsaU9wdGlvbnMpO1xuICAgIGxldCBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBbXTtcbiAgICBjb25zdCBkb3VibGVEYXNoZXNJbmRleCA9IGFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICAgIGlmIChkb3VibGVEYXNoZXNJbmRleCA+IC0xKSB7XG4gICAgICBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBhcmd2LnNsaWNlKGRvdWJsZURhc2hlc0luZGV4ICsgMSk7XG4gICAgICBhcmd2ID0gYXJndi5zbGljZSgwLCBkb3VibGVEYXNoZXNJbmRleCk7XG4gICAgfVxuICAgIGxldCBwYXJzZWQgPSBtcmkyKGFyZ3YsIG1yaU9wdGlvbnMpO1xuICAgIHBhcnNlZCA9IE9iamVjdC5rZXlzKHBhcnNlZCkucmVkdWNlKChyZXMsIG5hbWUpID0+IHtcbiAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzKSwge1xuICAgICAgICBbY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKV06IHBhcnNlZFtuYW1lXVxuICAgICAgfSk7XG4gICAgfSwge186IFtdfSk7XG4gICAgY29uc3QgYXJncyA9IHBhcnNlZC5fO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBcIi0tXCI6IGFyZ3NBZnRlckRvdWJsZURhc2hlc1xuICAgIH07XG4gICAgY29uc3QgaWdub3JlRGVmYXVsdCA9IGNvbW1hbmQgJiYgY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlID8gY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlIDogdGhpcy5nbG9iYWxDb21tYW5kLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWU7XG4gICAgbGV0IHRyYW5zZm9ybXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAoY29uc3QgY2xpT3B0aW9uIG9mIGNsaU9wdGlvbnMpIHtcbiAgICAgIGlmICghaWdub3JlRGVmYXVsdCAmJiBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2xpT3B0aW9uLm5hbWVzKSB7XG4gICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGNsaU9wdGlvbi5jb25maWcuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xpT3B0aW9uLmNvbmZpZy50eXBlKSkge1xuICAgICAgICBpZiAodHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXVtcInNob3VsZFRyYW5zZm9ybVwiXSA9IHRydWU7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJ0cmFuc2Zvcm1GdW5jdGlvblwiXSA9IGNsaU9wdGlvbi5jb25maWcudHlwZVswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWQpKSB7XG4gICAgICBpZiAoa2V5ICE9PSBcIl9cIikge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgc2V0RG90UHJvcChvcHRpb25zLCBrZXlzLCBwYXJzZWRba2V5XSk7XG4gICAgICAgIHNldEJ5VHlwZShvcHRpb25zLCB0cmFuc2Zvcm1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3MsXG4gICAgICBvcHRpb25zXG4gICAgfTtcbiAgfVxuICBydW5NYXRjaGVkQ29tbWFuZCgpIHtcbiAgICBjb25zdCB7YXJncywgb3B0aW9ucywgbWF0Y2hlZENvbW1hbmQ6IGNvbW1hbmR9ID0gdGhpcztcbiAgICBpZiAoIWNvbW1hbmQgfHwgIWNvbW1hbmQuY29tbWFuZEFjdGlvbilcbiAgICAgIHJldHVybjtcbiAgICBjb21tYW5kLmNoZWNrVW5rbm93bk9wdGlvbnMoKTtcbiAgICBjb21tYW5kLmNoZWNrT3B0aW9uVmFsdWUoKTtcbiAgICBjb21tYW5kLmNoZWNrUmVxdWlyZWRBcmdzKCk7XG4gICAgY29uc3QgYWN0aW9uQXJncyA9IFtdO1xuICAgIGNvbW1hbmQuYXJncy5mb3JFYWNoKChhcmcsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoYXJnLnZhcmlhZGljKSB7XG4gICAgICAgIGFjdGlvbkFyZ3MucHVzaChhcmdzLnNsaWNlKGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJnc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGFjdGlvbkFyZ3MucHVzaChvcHRpb25zKTtcbiAgICByZXR1cm4gY29tbWFuZC5jb21tYW5kQWN0aW9uLmFwcGx5KHRoaXMsIGFjdGlvbkFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IGNhYyA9IChuYW1lID0gXCJcIikgPT4gbmV3IENBQyhuYW1lKTtcblxuZXhwb3J0IGRlZmF1bHQgY2FjO1xuZXhwb3J0IHsgQ0FDLCBDb21tYW5kLCBjYWMgfTtcbiIsImltcG9ydCByZWFkbGluZSBmcm9tICdyZWFkbGluZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4vY29yZSdcblxuY29uc3Qga2V5cyA9IFtcbiAgWydhJywgJ3JlcnVuIGFsbCB0ZXN0cyddLFxuICBbJ2YnLCAncmVydW4gb25seSBmYWlsZWQgdGVzdHMnXSxcbiAgWyd1JywgJ3VwZGF0ZSBzbmFwc2hvdCddLFxuICBbJ3EnLCAncXVpdCddLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTaG9ydGN1dHNIZWxwKCkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShcbiAgICBgXG4ke2MuYm9sZCgnICBXYXRjaCBVc2FnZScpfVxuJHtrZXlzLm1hcChpID0+IGMuZGltKCcgIHByZXNzICcpICsgYy5yZXNldChjLmJvbGQoaVswXSkpICsgYy5kaW0oYCB0byAke2lbMV19YCkpLmpvaW4oJ1xcbicpfVxuYCxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb25zb2xlU2hvcnRjdXRzKGN0eDogVml0ZXN0KSB7XG4gIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyhwcm9jZXNzLnN0ZGluKVxuICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSlcbiAgcHJvY2Vzcy5zdGRpbi5vbigna2V5cHJlc3MnLCAoc3RyOiBzdHJpbmcsIGtleTogYW55KSA9PiB7XG4gICAgLy8gY3RybC1jIG9yIGVzY1xuICAgIGlmIChzdHIgPT09ICdcXHgwMycgfHwgc3RyID09PSAnXFx4MUInIHx8IChrZXkgJiYga2V5LmN0cmwgJiYga2V5Lm5hbWUgPT09ICdjJykpXG4gICAgICByZXR1cm4gY3R4LmV4aXQodHJ1ZSlcblxuICAgIC8vIGlzIHJ1bm5pbmcsIGlnbm9yZSBrZXlwcmVzc1xuICAgIGlmIChjdHgucnVubmluZ1Byb21pc2UpXG4gICAgICByZXR1cm5cblxuICAgIGNvbnN0IG5hbWUgPSBrZXk/Lm5hbWVcblxuICAgIC8vIGhlbHBcbiAgICBpZiAobmFtZSA9PT0gJ2gnKVxuICAgICAgcmV0dXJuIHByaW50U2hvcnRjdXRzSGVscCgpXG4gICAgLy8gdXBkYXRlIHNuYXBzaG90XG4gICAgaWYgKG5hbWUgPT09ICd1JylcbiAgICAgIHJldHVybiBjdHgudXBkYXRlU25hcHNob3QoKVxuICAgIC8vIHJlcnVuIGFsbCB0ZXN0c1xuICAgIGlmIChuYW1lID09PSAnYScgfHwgbmFtZSA9PT0gJ3JldHVybicpXG4gICAgICByZXR1cm4gY3R4LnJlcnVuRmlsZXModW5kZWZpbmVkLCAncmVydW4gYWxsJylcbiAgICAvLyBxdWl0XG4gICAgaWYgKG5hbWUgPT09ICdxJylcbiAgICAgIHJldHVybiBjdHguZXhpdCh0cnVlKVxuXG4gICAgLy8gVE9ETzogYWRkIG1vcmUgY29tbWFuZHNcbiAgfSlcbn1cbiIsImltcG9ydCBjYWMgZnJvbSAnY2FjJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJ1xuaW1wb3J0IHsgZW5zdXJlUGFja2FnZUluc3RhbGxlZCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlVml0ZXN0IH0gZnJvbSAnLi9jcmVhdGUnXG5pbXBvcnQgeyByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMgfSBmcm9tICcuL3N0ZGluJ1xuXG5jb25zdCBjbGkgPSBjYWMoJ3ZpdGVzdCcpXG5cbmNsaVxuICAudmVyc2lvbih2ZXJzaW9uKVxuICAub3B0aW9uKCctciwgLS1yb290IDxwYXRoPicsICdyb290IHBhdGgnKVxuICAub3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ3BhdGggdG8gY29uZmlnIGZpbGUnKVxuICAub3B0aW9uKCctdSwgLS11cGRhdGUnLCAndXBkYXRlIHNuYXBzaG90JylcbiAgLm9wdGlvbignLXcsIC0td2F0Y2gnLCAnd2F0Y2ggbW9kZScpXG4gIC5vcHRpb24oJy10LCAtLXRlc3ROYW1lUGF0dGVybiA8cGF0dGVybj4nLCAncnVuIHRlc3QgbmFtZXMgd2l0aCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4nKVxuICAub3B0aW9uKCctLXVpJywgJ2VuYWJsZSBVSScpXG4gIC5vcHRpb24oJy0tb3BlbicsICdvcGVuIFVJIGF1dG9tYXRpY2FsbHknLCB7IGRlZmF1bHQ6IHRydWUgfSlcbiAgLm9wdGlvbignLS1hcGkgW2FwaV0nLCAnc2VydmUgQVBJLCBhdmFpbGFibGUgb3B0aW9uczogLS1hcGkucG9ydCA8cG9ydD4sIC0tYXBpLmhvc3QgW2hvc3RdIGFuZCAtLWFwaS5zdHJpY3RQb3J0JylcbiAgLm9wdGlvbignLS10aHJlYWRzJywgJ2VuYWJsZWQgdGhyZWFkcycsIHsgZGVmYXVsdDogdHJ1ZSB9KVxuICAub3B0aW9uKCctLXNpbGVudCcsICdzaWxlbnQgY29uc29sZSBvdXRwdXQgZnJvbSB0ZXN0cycpXG4gIC5vcHRpb24oJy0taXNvbGF0ZScsICdpc29sYXRlIGVudmlyb25tZW50IGZvciBlYWNoIHRlc3QgZmlsZScsIHsgZGVmYXVsdDogdHJ1ZSB9KVxuICAub3B0aW9uKCctLXJlcG9ydGVyIDxuYW1lPicsICdyZXBvcnRlcicpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8ZmlsZW5hbWU+JywgJ3dyaXRlIHRlc3QgcmVzdWx0cyB0byBhIGZpbGUgd2hlbiB0aGUgLS1yZXBvcnRlcj1qc29uIG9wdGlvbiBpcyBhbHNvIHNwZWNpZmllZCcpXG4gIC5vcHRpb24oJy0tY292ZXJhZ2UnLCAndXNlIGM4IGZvciBjb3ZlcmFnZScpXG4gIC5vcHRpb24oJy0tcnVuJywgJ2RvIG5vdCB3YXRjaCcpXG4gIC5vcHRpb24oJy0tZ2xvYmFscycsICdpbmplY3QgYXBpcyBnbG9iYWxseScpXG4gIC5vcHRpb24oJy0tZ2xvYmFsJywgJ2RlcHJlY2F0ZWQsIHVzZSAtLWdsb2JhbHMnKVxuICAub3B0aW9uKCctLWRvbScsICdtb2NrIGJyb3dzZXIgYXBpIHdpdGggaGFwcHktZG9tJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8ZW52PicsICdydW5uZXIgZW52aXJvbm1lbnQnLCB7IGRlZmF1bHQ6ICdub2RlJyB9KVxuICAub3B0aW9uKCctLXBhc3NXaXRoTm9UZXN0cycsICdwYXNzIHdoZW4gbm8gdGVzdHMgZm91bmQnKVxuICAuaGVscCgpXG5cbmNsaVxuICAuY29tbWFuZCgncnVuIFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24ocnVuKVxuXG5jbGlcbiAgLmNvbW1hbmQoJ3JlbGF0ZWQgWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihydW5SZWxhdGVkKVxuXG5jbGlcbiAgLmNvbW1hbmQoJ3dhdGNoIFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24oZGV2KVxuXG5jbGlcbiAgLmNvbW1hbmQoJ2RldiBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKGRldilcblxuY2xpXG4gIC5jb21tYW5kKCdbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKGRldilcblxuY2xpLnBhcnNlKClcblxuYXN5bmMgZnVuY3Rpb24gcnVuUmVsYXRlZChyZWxhdGVkRmlsZXM6IHN0cmluZ1tdIHwgc3RyaW5nLCBhcmd2OiBVc2VyQ29uZmlnKSB7XG4gIGFyZ3YucmVsYXRlZCA9IHJlbGF0ZWRGaWxlc1xuICBhcmd2LnBhc3NXaXRoTm9UZXN0cyA/Pz0gdHJ1ZVxuICBhd2FpdCBkZXYoW10sIGFyZ3YpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldihjbGlGaWx0ZXJzOiBzdHJpbmdbXSwgYXJndjogVXNlckNvbmZpZykge1xuICBpZiAoYXJndi53YXRjaCA9PSBudWxsKVxuICAgIGFyZ3Yud2F0Y2ggPSAhcHJvY2Vzcy5lbnYuQ0kgJiYgIWFyZ3YucnVuXG4gIGF3YWl0IHJ1bihjbGlGaWx0ZXJzLCBhcmd2KVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW4oY2xpRmlsdGVyczogc3RyaW5nW10sIG9wdGlvbnM6IFVzZXJDb25maWcpIHtcbiAgcHJvY2Vzcy5lbnYuVklURVNUID0gJ3RydWUnXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID0gJ3Rlc3QnXG5cbiAgaWYgKCFhd2FpdCBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkKCd2aXRlJykpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmNvdmVyYWdlID09PSAnYm9vbGVhbicpXG4gICAgb3B0aW9ucy5jb3ZlcmFnZSA9IHsgZW5hYmxlZDogb3B0aW9ucy5jb3ZlcmFnZSB9XG5cbiAgY29uc3QgY3R4ID0gYXdhaXQgY3JlYXRlVml0ZXN0KG9wdGlvbnMpXG5cbiAgaWYgKGN0eC5jb25maWcuY292ZXJhZ2UuZW5hYmxlZCkge1xuICAgIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZCgnYzgnKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG5cbiAgaWYgKGN0eC5jb25maWcuZW52aXJvbm1lbnQgJiYgY3R4LmNvbmZpZy5lbnZpcm9ubWVudCAhPT0gJ25vZGUnKSB7XG4gICAgaWYgKCFhd2FpdCBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkKGN0eC5jb25maWcuZW52aXJvbm1lbnQpKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSAmJiBjdHguY29uZmlnLndhdGNoKVxuICAgIHJlZ2lzdGVyQ29uc29sZVNob3J0Y3V0cyhjdHgpXG5cbiAgcHJvY2Vzcy5jaGRpcihjdHguY29uZmlnLnJvb3QpXG5cbiAgY3R4Lm9uU2VydmVyUmVzdGFydGVkKCgpID0+IHtcbiAgICAvLyBUT0RPOiByZS1jb25zaWRlciBob3cgdG8gcmUtcnVuIHRoZSB0ZXN0cyB0aGUgc2VydmVyIHNtYXJ0bHlcbiAgICBjdHguc3RhcnQoY2xpRmlsdGVycylcbiAgfSlcblxuICB0cnkge1xuICAgIGF3YWl0IGN0eC5zdGFydChjbGlGaWx0ZXJzKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDFcbiAgICB0aHJvdyBlXG4gIH1cbiAgZmluYWxseSB7XG4gICAgaWYgKCFjdHguY29uZmlnLndhdGNoKVxuICAgICAgYXdhaXQgY3R4LmV4aXQoKVxuICB9XG59XG4iXSwibmFtZXMiOlsicmVhZGxpbmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3BCLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFDRDtBQUNBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNwQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRztBQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUMvRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLE9BQU8sR0FBRyxLQUFLLEdBQUcsR0FBRyxLQUFLLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNwSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHO0FBQ3BDLEVBQUUsQ0FBQztBQUNILENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFDRDtBQUNBLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDM0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNuQixDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN0QztBQUNBLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxP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
|