@tricoteuses/assemblee 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -27
- package/lib/bugs/acteur-00010/plugin.test.js +4 -4
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +15 -16
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +4 -4
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +27 -28
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +4 -4
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +15 -16
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +5 -5
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +21 -22
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +17 -19
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +2 -2
- package/lib/datasets.js +53 -132
- package/lib/datasets.mjs +40 -118
- package/lib/dates.js +1 -2
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.d.ts +1 -0
- package/lib/git.js +21 -5
- package/lib/git.mjs +16 -1
- package/lib/inserters.js +3 -3
- package/lib/loaders.d.ts +14 -40
- package/lib/loaders.js +580 -1086
- package/lib/loaders.mjs +110 -353
- package/lib/parsers/documents.js +10 -10
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +9 -9
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.d.ts +26 -78
- package/lib/raw_types/debats.js +49 -242
- package/lib/raw_types/debats.mjs +41 -234
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +17 -18
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +183 -561
- package/lib/scripts/clean_reorganized_data.mjs +111 -410
- package/lib/scripts/diff_amendements.js +11 -24
- package/lib/scripts/diff_amendements.mjs +3 -17
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +5 -8
- package/lib/scripts/get_today_reunions.mjs +3 -7
- package/lib/scripts/merge_scrutins.js +11 -24
- package/lib/scripts/merge_scrutins.mjs +3 -17
- package/lib/scripts/parse_textes_lois.js +8 -38
- package/lib/scripts/parse_textes_lois.mjs +3 -33
- package/lib/scripts/raw_types_from_amendements.js +14 -27
- package/lib/scripts/raw_types_from_amendements.mjs +3 -17
- package/lib/scripts/reorganize_data.js +204 -456
- package/lib/scripts/reorganize_data.mjs +68 -260
- package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
- package/lib/scripts/retrieve_deputes_photos.js +146 -172
- package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
- package/lib/scripts/retrieve_documents.js +207 -156
- package/lib/scripts/retrieve_documents.mjs +116 -128
- package/lib/scripts/retrieve_open_data.js +272 -249
- package/lib/scripts/retrieve_open_data.mjs +109 -123
- package/lib/scripts/retrieve_pending_amendments.js +16 -67
- package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
- package/lib/scripts/retrieve_senateurs_photos.js +20 -77
- package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
- package/lib/scripts/retrieve_textes_lois.js +18 -46
- package/lib/scripts/retrieve_textes_lois.mjs +3 -33
- package/lib/scripts/shared/cli_helpers.d.ts +66 -0
- package/lib/scripts/shared/cli_helpers.js +90 -0
- package/lib/scripts/shared/cli_helpers.mjs +72 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +154 -0
- package/lib/scripts/test_iter_load.mjs +71 -0
- package/lib/scripts/test_load.js +4 -15
- package/lib/scripts/test_load.mjs +3 -14
- package/lib/scripts/test_load_big_files.js +4 -15
- package/lib/scripts/test_load_big_files.mjs +3 -14
- package/lib/scripts/validate_json.js +15 -16
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +9 -9
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.d.ts +27 -79
- package/lib/types/debats.js +48 -241
- package/lib/types/debats.mjs +40 -233
- package/lib/types/dossiers_legislatifs.js +9 -9
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/lib/types/legislatures.d.ts +4 -4
- package/lib/types/legislatures.js +5 -5
- package/lib/types/legislatures.mjs +5 -5
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +9 -7
package/lib/loaders.js
CHANGED
|
@@ -21,8 +21,6 @@ require("core-js/modules/es.object.create.js");
|
|
|
21
21
|
require("core-js/modules/es.object.define-property.js");
|
|
22
22
|
require("core-js/modules/es.object.get-prototype-of.js");
|
|
23
23
|
require("core-js/modules/es.promise.js");
|
|
24
|
-
require("core-js/modules/es.regexp.constructor.js");
|
|
25
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
26
24
|
require("core-js/modules/es.weak-map.js");
|
|
27
25
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
28
26
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -48,11 +46,12 @@ exports.loadAssembleeDataFromBigFiles = loadAssembleeDataFromBigFiles;
|
|
|
48
46
|
exports.loadAssembleeDocumentFile = loadAssembleeDocumentFile;
|
|
49
47
|
exports.loadAssembleePhotosDeputes = loadAssembleePhotosDeputes;
|
|
50
48
|
exports.loadAssembleePhotosSenateurs = loadAssembleePhotosSenateurs;
|
|
49
|
+
exports.pathFromCompteRenduUid = pathFromCompteRenduUid;
|
|
51
50
|
exports.pathFromDocumentUid = pathFromDocumentUid;
|
|
52
51
|
exports.pathFromDossierParlementaireUid = pathFromDossierParlementaireUid;
|
|
52
|
+
exports.pathFromQuestionUid = pathFromQuestionUid;
|
|
53
53
|
exports.pathFromReunionUid = pathFromReunionUid;
|
|
54
54
|
exports.pathFromScrutinUid = pathFromScrutinUid;
|
|
55
|
-
exports.pathFromUid = pathFromUid;
|
|
56
55
|
Object.defineProperty(exports, "walkDir", {
|
|
57
56
|
enumerable: true,
|
|
58
57
|
get: function get() {
|
|
@@ -68,7 +67,9 @@ require("core-js/modules/es.object.assign.js");
|
|
|
68
67
|
require("core-js/modules/es.object.keys.js");
|
|
69
68
|
require("core-js/modules/es.object.set-prototype-of.js");
|
|
70
69
|
require("core-js/modules/es.object.to-string.js");
|
|
70
|
+
require("core-js/modules/es.regexp.constructor.js");
|
|
71
71
|
require("core-js/modules/es.regexp.exec.js");
|
|
72
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
72
73
|
require("core-js/modules/es.set.js");
|
|
73
74
|
require("core-js/modules/es.string.ends-with.js");
|
|
74
75
|
require("core-js/modules/es.string.iterator.js");
|
|
@@ -88,18 +89,18 @@ var _legislatures = require("./types/legislatures");
|
|
|
88
89
|
var _scrutins = require("./types/scrutins");
|
|
89
90
|
var _questions = require("./types/questions");
|
|
90
91
|
var _debats = require("./types/debats");
|
|
91
|
-
function _interopRequireDefault(
|
|
92
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw
|
|
93
|
-
function _toConsumableArray(
|
|
92
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
93
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
94
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
94
95
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
95
|
-
function _iterableToArray(
|
|
96
|
-
function _arrayWithoutHoles(
|
|
97
|
-
function _createForOfIteratorHelper(
|
|
98
|
-
function _unsupportedIterableToArray(
|
|
99
|
-
function _arrayLikeToArray(
|
|
100
|
-
function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(e, r) { return new BabelRegExp(e, void 0, r); }; var e = RegExp.prototype, r = new WeakMap(); function BabelRegExp(e, t, p) { var o =
|
|
101
|
-
function _inherits(
|
|
102
|
-
function _setPrototypeOf(
|
|
96
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
97
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
98
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
99
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
100
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
101
|
+
function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(e, r) { return new BabelRegExp(e, void 0, r); }; var e = RegExp.prototype, r = new WeakMap(); function BabelRegExp(e, t, p) { var o = RegExp(e, t); return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype); } function buildGroups(e, t) { var p = r.get(t); return Object.keys(p).reduce(function (r, t) { var o = p[t]; if ("number" == typeof o) r[t] = e[o];else { for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++; r[t] = e[o[i]]; } return r; }, Object.create(null)); } return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) { var t = e.exec.call(this, r); if (t) { t.groups = buildGroups(t, this); var p = t.indices; p && (p.groups = buildGroups(p, this)); } return t; }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { if ("string" == typeof p) { var o = r.get(this); return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) { var t = o[r]; return "$" + (Array.isArray(t) ? t.join("$") : t); })); } if ("function" == typeof p) { var i = this; return e[Symbol.replace].call(this, t, function () { var e = arguments; return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e); }); } return e[Symbol.replace].call(this, t, p); }, _wrapRegExp.apply(this, arguments); }
|
|
102
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
103
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /// Load data from files
|
|
103
104
|
var documentUidRegex = /*#__PURE__*/_wrapRegExp(/^((ACIN|ALCN|AVCE|AVIS|DECL|ETDI|LETT|MESS|MION|PION|PNRE|PRJL|RAPP|RINF|RION)(AN|CG|SN)(R\d+)[LS](\d+)(B|BTA|BTC|TAP)(\d+)(\x2D.*)?)|((MION)(AN|SN)(R\d+)[LS](\d+)\x2DN(\d+))$/, {
|
|
104
105
|
documentType: 2,
|
|
105
106
|
chambre: 3,
|
|
@@ -116,19 +117,22 @@ var documentUidRegex = /*#__PURE__*/_wrapRegExp(/^((ACIN|ALCN|AVCE|AVIS|DECL|ETD
|
|
|
116
117
|
var dossierUidRegex = /^DL(R\d+)(L\d+)N(\d+)$/;
|
|
117
118
|
var reunionUidRegex = /^RU(AN|CG|SN)(R\d+)(L\d+)([AS]\d{4})(IDC|IDFL?|IDS)(\d+)$/;
|
|
118
119
|
var scrutinUidRegex = /^VT(AN|CG)(R\d+)(L\d+)V(\d+)$/;
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
var compteRenduUidRegex = /^CRS(AN|CG)(R\d+)(L\d+)(S\d+)(O|E)(\d+)(N\d+)$/;
|
|
121
|
+
var questionUidRegex = /^QAN(R\d+)(L\d+)Q(E|G|OSD)(\d+)$/;
|
|
122
|
+
function iterLoadAssembleeItems(dataDir, legislature, datasets, convertToItem, subfolderName) {
|
|
123
|
+
var fileExtension = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "json";
|
|
124
|
+
var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
|
|
121
125
|
_ref$noValidation = _ref.noValidation,
|
|
122
126
|
noValidation = _ref$noValidation === void 0 ? false : _ref$noValidation,
|
|
123
127
|
_ref$log = _ref.log,
|
|
124
128
|
log = _ref$log === void 0 ? false : _ref$log;
|
|
125
129
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
126
|
-
var
|
|
130
|
+
var itemUid, _iterator, _step, dataset, fileExtensionRegex, datasetDir, _iterator2, _step2, itemSplitPath, itemFilename, itemFilePath, itemJson, item;
|
|
127
131
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
128
132
|
while (1) switch (_context.prev = _context.next) {
|
|
129
133
|
case 0:
|
|
130
|
-
|
|
131
|
-
_iterator = _createForOfIteratorHelper(
|
|
134
|
+
itemUid = new Set();
|
|
135
|
+
_iterator = _createForOfIteratorHelper(datasets);
|
|
132
136
|
_context.prev = 2;
|
|
133
137
|
_iterator.s();
|
|
134
138
|
case 4:
|
|
@@ -143,64 +147,59 @@ function iterLoadAssembleeActeurs(dataDir, legislature) {
|
|
|
143
147
|
}
|
|
144
148
|
return _context.abrupt("continue", 39);
|
|
145
149
|
case 8:
|
|
146
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
150
|
+
if (!(legislature !== undefined && legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
147
151
|
_context.next = 10;
|
|
148
152
|
break;
|
|
149
153
|
}
|
|
150
154
|
return _context.abrupt("continue", 39);
|
|
151
155
|
case 10:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
fileExtensionRegex = new RegExp("\\.".concat(fileExtension, "$"));
|
|
157
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(fileExtensionRegex, "_nettoye"));
|
|
158
|
+
_iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, subfolderName));
|
|
159
|
+
_context.prev = 13;
|
|
155
160
|
_iterator2.s();
|
|
156
|
-
case
|
|
161
|
+
case 15:
|
|
157
162
|
if ((_step2 = _iterator2.n()).done) {
|
|
158
163
|
_context.next = 31;
|
|
159
164
|
break;
|
|
160
165
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (
|
|
164
|
-
_context.next =
|
|
166
|
+
itemSplitPath = _step2.value;
|
|
167
|
+
itemFilename = itemSplitPath[itemSplitPath.length - 1];
|
|
168
|
+
if (itemFilename.endsWith(".json")) {
|
|
169
|
+
_context.next = 20;
|
|
165
170
|
break;
|
|
166
171
|
}
|
|
167
172
|
return _context.abrupt("continue", 29);
|
|
168
|
-
case
|
|
169
|
-
|
|
173
|
+
case 20:
|
|
174
|
+
itemFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(itemSplitPath)));
|
|
170
175
|
if (log) {
|
|
171
|
-
console.log("Loading file: ".concat(
|
|
176
|
+
console.log("Loading file: ".concat(itemFilePath, "\u2026"));
|
|
172
177
|
}
|
|
173
|
-
|
|
178
|
+
itemJson = _fsExtra["default"].readFileSync(itemFilePath, {
|
|
174
179
|
encoding: "utf8"
|
|
175
180
|
});
|
|
176
|
-
|
|
177
|
-
if (
|
|
178
|
-
acteur = JSON.parse(acteurJson);
|
|
179
|
-
} else {
|
|
180
|
-
acteur = _acteurs_et_organes.Convert.toActeur(acteurJson);
|
|
181
|
-
}
|
|
182
|
-
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
183
|
-
if (!acteursUid.has(acteur.uid)) {
|
|
181
|
+
item = noValidation ? JSON.parse(itemJson) : convertToItem(itemJson);
|
|
182
|
+
if (!itemUid.has(item.uid)) {
|
|
184
183
|
_context.next = 26;
|
|
185
184
|
break;
|
|
186
185
|
}
|
|
187
186
|
return _context.abrupt("continue", 29);
|
|
188
187
|
case 26:
|
|
189
|
-
|
|
188
|
+
itemUid.add(item.uid);
|
|
190
189
|
_context.next = 29;
|
|
191
190
|
return {
|
|
192
|
-
|
|
191
|
+
item: item,
|
|
193
192
|
datasetLegislature: dataset.legislature
|
|
194
193
|
};
|
|
195
194
|
case 29:
|
|
196
|
-
_context.next =
|
|
195
|
+
_context.next = 15;
|
|
197
196
|
break;
|
|
198
197
|
case 31:
|
|
199
198
|
_context.next = 36;
|
|
200
199
|
break;
|
|
201
200
|
case 33:
|
|
202
201
|
_context.prev = 33;
|
|
203
|
-
_context.t0 = _context["catch"](
|
|
202
|
+
_context.t0 = _context["catch"](13);
|
|
204
203
|
_iterator2.e(_context.t0);
|
|
205
204
|
case 36:
|
|
206
205
|
_context.prev = 36;
|
|
@@ -224,905 +223,402 @@ function iterLoadAssembleeActeurs(dataDir, legislature) {
|
|
|
224
223
|
case "end":
|
|
225
224
|
return _context.stop();
|
|
226
225
|
}
|
|
227
|
-
}, _callee, null, [[2, 43, 46, 49], [
|
|
226
|
+
}, _callee, null, [[2, 43, 46, 49], [13, 33, 36, 39]]);
|
|
228
227
|
})();
|
|
229
228
|
}
|
|
230
|
-
function
|
|
231
|
-
var
|
|
232
|
-
_ref2$noValidation = _ref2.noValidation,
|
|
233
|
-
noValidation = _ref2$noValidation === void 0 ? false : _ref2$noValidation,
|
|
234
|
-
_ref2$log = _ref2.log,
|
|
235
|
-
log = _ref2$log === void 0 ? false : _ref2$log;
|
|
229
|
+
function iterLoadAssembleeActeurs(dataDir, legislature) {
|
|
230
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
236
231
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
237
|
-
var
|
|
232
|
+
var _iterator3, _step3, _step3$value, acteur, datasetLegislature;
|
|
238
233
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
239
234
|
while (1) switch (_context2.prev = _context2.next) {
|
|
240
235
|
case 0:
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
_context2.prev = 2;
|
|
236
|
+
_iterator3 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.acteursEtOrganes, _acteurs_et_organes.Convert.toActeur, ["acteurs"], "json", options));
|
|
237
|
+
_context2.prev = 1;
|
|
244
238
|
_iterator3.s();
|
|
245
|
-
case
|
|
239
|
+
case 3:
|
|
246
240
|
if ((_step3 = _iterator3.n()).done) {
|
|
247
|
-
_context2.next =
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
dataset = _step3.value;
|
|
251
|
-
if (!dataset.ignoreForWeb) {
|
|
252
|
-
_context2.next = 8;
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
return _context2.abrupt("continue", 39);
|
|
256
|
-
case 8:
|
|
257
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
258
|
-
_context2.next = 10;
|
|
241
|
+
_context2.next = 9;
|
|
259
242
|
break;
|
|
260
243
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
264
|
-
_iterator4 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
265
|
-
_context2.prev = 12;
|
|
266
|
-
_iterator4.s();
|
|
267
|
-
case 14:
|
|
268
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
269
|
-
_context2.next = 31;
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
amendementSplitPath = _step4.value;
|
|
273
|
-
amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
274
|
-
if (amendementFilename.endsWith(".json")) {
|
|
275
|
-
_context2.next = 19;
|
|
276
|
-
break;
|
|
277
|
-
}
|
|
278
|
-
return _context2.abrupt("continue", 29);
|
|
279
|
-
case 19:
|
|
280
|
-
amendementFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(amendementSplitPath)));
|
|
281
|
-
if (log) {
|
|
282
|
-
console.log("Loading file: ".concat(amendementFilePath, "\u2026"));
|
|
283
|
-
}
|
|
284
|
-
amendementJson = _fsExtra["default"].readFileSync(amendementFilePath, {
|
|
285
|
-
encoding: "utf8"
|
|
286
|
-
});
|
|
287
|
-
amendement = void 0;
|
|
288
|
-
if (noValidation) {
|
|
289
|
-
amendement = JSON.parse(amendementJson);
|
|
290
|
-
} else {
|
|
291
|
-
amendement = _amendements.Convert.toAmendement(amendementJson);
|
|
292
|
-
}
|
|
293
|
-
if (!amendementsUid.has(amendement.uid)) {
|
|
294
|
-
_context2.next = 26;
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
return _context2.abrupt("continue", 29);
|
|
298
|
-
case 26:
|
|
299
|
-
amendementsUid.add(amendement.uid);
|
|
300
|
-
_context2.next = 29;
|
|
244
|
+
_step3$value = _step3.value, acteur = _step3$value.item, datasetLegislature = _step3$value.datasetLegislature;
|
|
245
|
+
_context2.next = 7;
|
|
301
246
|
return {
|
|
302
|
-
|
|
303
|
-
datasetLegislature:
|
|
247
|
+
acteur: acteur,
|
|
248
|
+
datasetLegislature: datasetLegislature
|
|
304
249
|
};
|
|
305
|
-
case
|
|
306
|
-
_context2.next =
|
|
307
|
-
break;
|
|
308
|
-
case 31:
|
|
309
|
-
_context2.next = 36;
|
|
310
|
-
break;
|
|
311
|
-
case 33:
|
|
312
|
-
_context2.prev = 33;
|
|
313
|
-
_context2.t0 = _context2["catch"](12);
|
|
314
|
-
_iterator4.e(_context2.t0);
|
|
315
|
-
case 36:
|
|
316
|
-
_context2.prev = 36;
|
|
317
|
-
_iterator4.f();
|
|
318
|
-
return _context2.finish(36);
|
|
319
|
-
case 39:
|
|
320
|
-
_context2.next = 4;
|
|
250
|
+
case 7:
|
|
251
|
+
_context2.next = 3;
|
|
321
252
|
break;
|
|
322
|
-
case
|
|
323
|
-
_context2.next =
|
|
253
|
+
case 9:
|
|
254
|
+
_context2.next = 14;
|
|
324
255
|
break;
|
|
325
|
-
case
|
|
326
|
-
_context2.prev =
|
|
327
|
-
_context2.
|
|
328
|
-
_iterator3.e(_context2.
|
|
329
|
-
case
|
|
330
|
-
_context2.prev =
|
|
256
|
+
case 11:
|
|
257
|
+
_context2.prev = 11;
|
|
258
|
+
_context2.t0 = _context2["catch"](1);
|
|
259
|
+
_iterator3.e(_context2.t0);
|
|
260
|
+
case 14:
|
|
261
|
+
_context2.prev = 14;
|
|
331
262
|
_iterator3.f();
|
|
332
|
-
return _context2.finish(
|
|
333
|
-
case
|
|
263
|
+
return _context2.finish(14);
|
|
264
|
+
case 17:
|
|
334
265
|
case "end":
|
|
335
266
|
return _context2.stop();
|
|
336
267
|
}
|
|
337
|
-
}, _callee2, null, [[
|
|
268
|
+
}, _callee2, null, [[1, 11, 14, 17]]);
|
|
338
269
|
})();
|
|
339
270
|
}
|
|
340
|
-
function
|
|
341
|
-
var
|
|
342
|
-
_ref3$noValidation = _ref3.noValidation,
|
|
343
|
-
noValidation = _ref3$noValidation === void 0 ? false : _ref3$noValidation,
|
|
344
|
-
_ref3$log = _ref3.log,
|
|
345
|
-
log = _ref3$log === void 0 ? false : _ref3$log;
|
|
271
|
+
function iterLoadAssembleeOrganes(dataDir, legislature) {
|
|
272
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
346
273
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
347
|
-
var
|
|
274
|
+
var _iterator4, _step4, _step4$value, organe, datasetLegislature;
|
|
348
275
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
349
276
|
while (1) switch (_context3.prev = _context3.next) {
|
|
350
277
|
case 0:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
_context3.next = 41;
|
|
358
|
-
break;
|
|
359
|
-
}
|
|
360
|
-
dataset = _step5.value;
|
|
361
|
-
if (!dataset.ignoreForWeb) {
|
|
362
|
-
_context3.next = 8;
|
|
363
|
-
break;
|
|
364
|
-
}
|
|
365
|
-
return _context3.abrupt("continue", 39);
|
|
366
|
-
case 8:
|
|
367
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
368
|
-
_context3.next = 10;
|
|
369
|
-
break;
|
|
370
|
-
}
|
|
371
|
-
return _context3.abrupt("continue", 39);
|
|
372
|
-
case 10:
|
|
373
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
374
|
-
_iterator6 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["documents"]));
|
|
375
|
-
_context3.prev = 12;
|
|
376
|
-
_iterator6.s();
|
|
377
|
-
case 14:
|
|
378
|
-
if ((_step6 = _iterator6.n()).done) {
|
|
379
|
-
_context3.next = 31;
|
|
380
|
-
break;
|
|
381
|
-
}
|
|
382
|
-
documentSplitPath = _step6.value;
|
|
383
|
-
documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
384
|
-
if (documentFilename.endsWith(".json")) {
|
|
385
|
-
_context3.next = 19;
|
|
386
|
-
break;
|
|
387
|
-
}
|
|
388
|
-
return _context3.abrupt("continue", 29);
|
|
389
|
-
case 19:
|
|
390
|
-
documentFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(documentSplitPath)));
|
|
391
|
-
if (log) {
|
|
392
|
-
console.log("Loading file: ".concat(documentFilePath, "\u2026"));
|
|
393
|
-
}
|
|
394
|
-
documentJson = _fsExtra["default"].readFileSync(documentFilePath, {
|
|
395
|
-
encoding: "utf8"
|
|
396
|
-
});
|
|
397
|
-
document = void 0;
|
|
398
|
-
if (noValidation) {
|
|
399
|
-
document = JSON.parse(documentJson);
|
|
400
|
-
} else {
|
|
401
|
-
document = _dossiers_legislatifs.Convert.toDocument(documentJson);
|
|
402
|
-
}
|
|
403
|
-
if (!documentsUid.has(document.uid)) {
|
|
404
|
-
_context3.next = 26;
|
|
278
|
+
_iterator4 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.acteursEtOrganes, _acteurs_et_organes.Convert.toOrgane, ["organes"], "json", options));
|
|
279
|
+
_context3.prev = 1;
|
|
280
|
+
_iterator4.s();
|
|
281
|
+
case 3:
|
|
282
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
283
|
+
_context3.next = 9;
|
|
405
284
|
break;
|
|
406
285
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
documentsUid.add(document.uid);
|
|
410
|
-
_context3.next = 29;
|
|
286
|
+
_step4$value = _step4.value, organe = _step4$value.item, datasetLegislature = _step4$value.datasetLegislature;
|
|
287
|
+
_context3.next = 7;
|
|
411
288
|
return {
|
|
412
|
-
|
|
413
|
-
datasetLegislature:
|
|
289
|
+
organe: organe,
|
|
290
|
+
datasetLegislature: datasetLegislature
|
|
414
291
|
};
|
|
415
|
-
case
|
|
416
|
-
_context3.next =
|
|
417
|
-
break;
|
|
418
|
-
case 31:
|
|
419
|
-
_context3.next = 36;
|
|
292
|
+
case 7:
|
|
293
|
+
_context3.next = 3;
|
|
420
294
|
break;
|
|
421
|
-
case
|
|
422
|
-
_context3.
|
|
423
|
-
_context3.t0 = _context3["catch"](12);
|
|
424
|
-
_iterator6.e(_context3.t0);
|
|
425
|
-
case 36:
|
|
426
|
-
_context3.prev = 36;
|
|
427
|
-
_iterator6.f();
|
|
428
|
-
return _context3.finish(36);
|
|
429
|
-
case 39:
|
|
430
|
-
_context3.next = 4;
|
|
431
|
-
break;
|
|
432
|
-
case 41:
|
|
433
|
-
_context3.next = 46;
|
|
295
|
+
case 9:
|
|
296
|
+
_context3.next = 14;
|
|
434
297
|
break;
|
|
435
|
-
case
|
|
436
|
-
_context3.prev =
|
|
437
|
-
_context3.
|
|
438
|
-
|
|
439
|
-
case
|
|
440
|
-
_context3.prev =
|
|
441
|
-
|
|
442
|
-
return _context3.finish(
|
|
443
|
-
case
|
|
298
|
+
case 11:
|
|
299
|
+
_context3.prev = 11;
|
|
300
|
+
_context3.t0 = _context3["catch"](1);
|
|
301
|
+
_iterator4.e(_context3.t0);
|
|
302
|
+
case 14:
|
|
303
|
+
_context3.prev = 14;
|
|
304
|
+
_iterator4.f();
|
|
305
|
+
return _context3.finish(14);
|
|
306
|
+
case 17:
|
|
444
307
|
case "end":
|
|
445
308
|
return _context3.stop();
|
|
446
309
|
}
|
|
447
|
-
}, _callee3, null, [[
|
|
310
|
+
}, _callee3, null, [[1, 11, 14, 17]]);
|
|
448
311
|
})();
|
|
449
312
|
}
|
|
450
|
-
function
|
|
451
|
-
var
|
|
452
|
-
_ref4$noValidation = _ref4.noValidation,
|
|
453
|
-
noValidation = _ref4$noValidation === void 0 ? false : _ref4$noValidation,
|
|
454
|
-
_ref4$log = _ref4.log,
|
|
455
|
-
log = _ref4$log === void 0 ? false : _ref4$log;
|
|
313
|
+
function iterLoadAssembleeAmendements(dataDir, legislature) {
|
|
314
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
456
315
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
457
|
-
var
|
|
316
|
+
var _iterator5, _step5, _step5$value, amendement, datasetLegislature;
|
|
458
317
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
459
318
|
while (1) switch (_context4.prev = _context4.next) {
|
|
460
319
|
case 0:
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
_context4.next = 41;
|
|
468
|
-
break;
|
|
469
|
-
}
|
|
470
|
-
dataset = _step7.value;
|
|
471
|
-
if (!dataset.ignoreForWeb) {
|
|
472
|
-
_context4.next = 8;
|
|
473
|
-
break;
|
|
474
|
-
}
|
|
475
|
-
return _context4.abrupt("continue", 39);
|
|
476
|
-
case 8:
|
|
477
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
478
|
-
_context4.next = 10;
|
|
479
|
-
break;
|
|
480
|
-
}
|
|
481
|
-
return _context4.abrupt("continue", 39);
|
|
482
|
-
case 10:
|
|
483
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
484
|
-
_iterator8 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["dossiers"]));
|
|
485
|
-
_context4.prev = 12;
|
|
486
|
-
_iterator8.s();
|
|
487
|
-
case 14:
|
|
488
|
-
if ((_step8 = _iterator8.n()).done) {
|
|
489
|
-
_context4.next = 31;
|
|
490
|
-
break;
|
|
491
|
-
}
|
|
492
|
-
dossierParlementaireSplitPath = _step8.value;
|
|
493
|
-
dossierParlementaireFilename = dossierParlementaireSplitPath[dossierParlementaireSplitPath.length - 1];
|
|
494
|
-
if (dossierParlementaireFilename.endsWith(".json")) {
|
|
495
|
-
_context4.next = 19;
|
|
496
|
-
break;
|
|
497
|
-
}
|
|
498
|
-
return _context4.abrupt("continue", 29);
|
|
499
|
-
case 19:
|
|
500
|
-
dossierParlementaireFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(dossierParlementaireSplitPath)));
|
|
501
|
-
if (log) {
|
|
502
|
-
console.log("Loading file: ".concat(dossierParlementaireFilePath, "\u2026"));
|
|
503
|
-
}
|
|
504
|
-
dossierParlementaireJson = _fsExtra["default"].readFileSync(dossierParlementaireFilePath, {
|
|
505
|
-
encoding: "utf8"
|
|
506
|
-
});
|
|
507
|
-
dossierParlementaire = void 0;
|
|
508
|
-
if (noValidation) {
|
|
509
|
-
dossierParlementaire = JSON.parse(dossierParlementaireJson);
|
|
510
|
-
} else {
|
|
511
|
-
dossierParlementaire = _dossiers_legislatifs.Convert.toDossierParlementaire(dossierParlementaireJson);
|
|
512
|
-
}
|
|
513
|
-
if (!dossiersParlementairesUid.has(dossierParlementaire.uid)) {
|
|
514
|
-
_context4.next = 26;
|
|
320
|
+
_iterator5 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.amendements, _amendements.Convert.toAmendement, [], "json", options));
|
|
321
|
+
_context4.prev = 1;
|
|
322
|
+
_iterator5.s();
|
|
323
|
+
case 3:
|
|
324
|
+
if ((_step5 = _iterator5.n()).done) {
|
|
325
|
+
_context4.next = 9;
|
|
515
326
|
break;
|
|
516
327
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
dossiersParlementairesUid.add(dossierParlementaire.uid);
|
|
520
|
-
_context4.next = 29;
|
|
328
|
+
_step5$value = _step5.value, amendement = _step5$value.item, datasetLegislature = _step5$value.datasetLegislature;
|
|
329
|
+
_context4.next = 7;
|
|
521
330
|
return {
|
|
522
|
-
|
|
523
|
-
datasetLegislature:
|
|
331
|
+
amendement: amendement,
|
|
332
|
+
datasetLegislature: datasetLegislature
|
|
524
333
|
};
|
|
525
|
-
case
|
|
526
|
-
_context4.next =
|
|
527
|
-
break;
|
|
528
|
-
case 31:
|
|
529
|
-
_context4.next = 36;
|
|
530
|
-
break;
|
|
531
|
-
case 33:
|
|
532
|
-
_context4.prev = 33;
|
|
533
|
-
_context4.t0 = _context4["catch"](12);
|
|
534
|
-
_iterator8.e(_context4.t0);
|
|
535
|
-
case 36:
|
|
536
|
-
_context4.prev = 36;
|
|
537
|
-
_iterator8.f();
|
|
538
|
-
return _context4.finish(36);
|
|
539
|
-
case 39:
|
|
540
|
-
_context4.next = 4;
|
|
334
|
+
case 7:
|
|
335
|
+
_context4.next = 3;
|
|
541
336
|
break;
|
|
542
|
-
case
|
|
543
|
-
_context4.next =
|
|
337
|
+
case 9:
|
|
338
|
+
_context4.next = 14;
|
|
544
339
|
break;
|
|
545
|
-
case
|
|
546
|
-
_context4.prev =
|
|
547
|
-
_context4.
|
|
548
|
-
|
|
549
|
-
case
|
|
550
|
-
_context4.prev =
|
|
551
|
-
|
|
552
|
-
return _context4.finish(
|
|
553
|
-
case
|
|
340
|
+
case 11:
|
|
341
|
+
_context4.prev = 11;
|
|
342
|
+
_context4.t0 = _context4["catch"](1);
|
|
343
|
+
_iterator5.e(_context4.t0);
|
|
344
|
+
case 14:
|
|
345
|
+
_context4.prev = 14;
|
|
346
|
+
_iterator5.f();
|
|
347
|
+
return _context4.finish(14);
|
|
348
|
+
case 17:
|
|
554
349
|
case "end":
|
|
555
350
|
return _context4.stop();
|
|
556
351
|
}
|
|
557
|
-
}, _callee4, null, [[
|
|
352
|
+
}, _callee4, null, [[1, 11, 14, 17]]);
|
|
558
353
|
})();
|
|
559
354
|
}
|
|
560
|
-
function
|
|
561
|
-
var
|
|
562
|
-
_ref5$noValidation = _ref5.noValidation,
|
|
563
|
-
noValidation = _ref5$noValidation === void 0 ? false : _ref5$noValidation,
|
|
564
|
-
_ref5$log = _ref5.log,
|
|
565
|
-
log = _ref5$log === void 0 ? false : _ref5$log;
|
|
355
|
+
function iterLoadAssembleeDocuments(dataDir, legislature) {
|
|
356
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
566
357
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
567
|
-
var
|
|
358
|
+
var _iterator6, _step6, _step6$value, document, datasetLegislature;
|
|
568
359
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
569
360
|
while (1) switch (_context5.prev = _context5.next) {
|
|
570
361
|
case 0:
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
_context5.next = 41;
|
|
578
|
-
break;
|
|
579
|
-
}
|
|
580
|
-
dataset = _step9.value;
|
|
581
|
-
if (!dataset.ignoreForWeb) {
|
|
582
|
-
_context5.next = 8;
|
|
583
|
-
break;
|
|
584
|
-
}
|
|
585
|
-
return _context5.abrupt("continue", 39);
|
|
586
|
-
case 8:
|
|
587
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
588
|
-
_context5.next = 10;
|
|
589
|
-
break;
|
|
590
|
-
}
|
|
591
|
-
return _context5.abrupt("continue", 39);
|
|
592
|
-
case 10:
|
|
593
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
594
|
-
_iterator10 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"]));
|
|
595
|
-
_context5.prev = 12;
|
|
596
|
-
_iterator10.s();
|
|
597
|
-
case 14:
|
|
598
|
-
if ((_step10 = _iterator10.n()).done) {
|
|
599
|
-
_context5.next = 31;
|
|
600
|
-
break;
|
|
601
|
-
}
|
|
602
|
-
organeSplitPath = _step10.value;
|
|
603
|
-
organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
604
|
-
if (organeFilename.endsWith(".json")) {
|
|
605
|
-
_context5.next = 19;
|
|
606
|
-
break;
|
|
607
|
-
}
|
|
608
|
-
return _context5.abrupt("continue", 29);
|
|
609
|
-
case 19:
|
|
610
|
-
organeFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(organeSplitPath)));
|
|
611
|
-
if (log) {
|
|
612
|
-
console.log("Loading file: ".concat(organeFilePath, "\u2026"));
|
|
613
|
-
}
|
|
614
|
-
organeJson = _fsExtra["default"].readFileSync(organeFilePath, {
|
|
615
|
-
encoding: "utf8"
|
|
616
|
-
});
|
|
617
|
-
organe = void 0;
|
|
618
|
-
if (noValidation) {
|
|
619
|
-
organe = JSON.parse(organeJson);
|
|
620
|
-
} else {
|
|
621
|
-
organe = _acteurs_et_organes.Convert.toOrgane(organeJson);
|
|
622
|
-
}
|
|
623
|
-
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
624
|
-
if (!organesUid.has(organe.uid)) {
|
|
625
|
-
_context5.next = 26;
|
|
362
|
+
_iterator6 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.dossiersLegislatifs, _dossiers_legislatifs.Convert.toDocument, ["documents"], "json", options));
|
|
363
|
+
_context5.prev = 1;
|
|
364
|
+
_iterator6.s();
|
|
365
|
+
case 3:
|
|
366
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
367
|
+
_context5.next = 9;
|
|
626
368
|
break;
|
|
627
369
|
}
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
organesUid.add(organe.uid);
|
|
631
|
-
_context5.next = 29;
|
|
370
|
+
_step6$value = _step6.value, document = _step6$value.item, datasetLegislature = _step6$value.datasetLegislature;
|
|
371
|
+
_context5.next = 7;
|
|
632
372
|
return {
|
|
633
|
-
|
|
634
|
-
datasetLegislature:
|
|
373
|
+
document: document,
|
|
374
|
+
datasetLegislature: datasetLegislature
|
|
635
375
|
};
|
|
636
|
-
case
|
|
637
|
-
_context5.next =
|
|
638
|
-
break;
|
|
639
|
-
case 31:
|
|
640
|
-
_context5.next = 36;
|
|
376
|
+
case 7:
|
|
377
|
+
_context5.next = 3;
|
|
641
378
|
break;
|
|
642
|
-
case
|
|
643
|
-
_context5.
|
|
644
|
-
_context5.t0 = _context5["catch"](12);
|
|
645
|
-
_iterator10.e(_context5.t0);
|
|
646
|
-
case 36:
|
|
647
|
-
_context5.prev = 36;
|
|
648
|
-
_iterator10.f();
|
|
649
|
-
return _context5.finish(36);
|
|
650
|
-
case 39:
|
|
651
|
-
_context5.next = 4;
|
|
652
|
-
break;
|
|
653
|
-
case 41:
|
|
654
|
-
_context5.next = 46;
|
|
379
|
+
case 9:
|
|
380
|
+
_context5.next = 14;
|
|
655
381
|
break;
|
|
656
|
-
case
|
|
657
|
-
_context5.prev =
|
|
658
|
-
_context5.
|
|
659
|
-
|
|
660
|
-
case
|
|
661
|
-
_context5.prev =
|
|
662
|
-
|
|
663
|
-
return _context5.finish(
|
|
664
|
-
case
|
|
382
|
+
case 11:
|
|
383
|
+
_context5.prev = 11;
|
|
384
|
+
_context5.t0 = _context5["catch"](1);
|
|
385
|
+
_iterator6.e(_context5.t0);
|
|
386
|
+
case 14:
|
|
387
|
+
_context5.prev = 14;
|
|
388
|
+
_iterator6.f();
|
|
389
|
+
return _context5.finish(14);
|
|
390
|
+
case 17:
|
|
665
391
|
case "end":
|
|
666
392
|
return _context5.stop();
|
|
667
393
|
}
|
|
668
|
-
}, _callee5, null, [[
|
|
394
|
+
}, _callee5, null, [[1, 11, 14, 17]]);
|
|
669
395
|
})();
|
|
670
396
|
}
|
|
671
|
-
function
|
|
672
|
-
var
|
|
673
|
-
_ref6$noValidation = _ref6.noValidation,
|
|
674
|
-
noValidation = _ref6$noValidation === void 0 ? false : _ref6$noValidation,
|
|
675
|
-
_ref6$log = _ref6.log,
|
|
676
|
-
log = _ref6$log === void 0 ? false : _ref6$log;
|
|
397
|
+
function iterLoadAssembleeDossiersParlementaires(dataDir, legislature) {
|
|
398
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
677
399
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
678
|
-
var
|
|
400
|
+
var _iterator7, _step7, _step7$value, dossierParlementaire, datasetLegislature;
|
|
679
401
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
680
402
|
while (1) switch (_context6.prev = _context6.next) {
|
|
681
403
|
case 0:
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
_context6.next = 41;
|
|
689
|
-
break;
|
|
690
|
-
}
|
|
691
|
-
dataset = _step11.value;
|
|
692
|
-
if (!dataset.ignoreForWeb) {
|
|
693
|
-
_context6.next = 8;
|
|
694
|
-
break;
|
|
695
|
-
}
|
|
696
|
-
return _context6.abrupt("continue", 39);
|
|
697
|
-
case 8:
|
|
698
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
699
|
-
_context6.next = 10;
|
|
700
|
-
break;
|
|
701
|
-
}
|
|
702
|
-
return _context6.abrupt("continue", 39);
|
|
703
|
-
case 10:
|
|
704
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
705
|
-
_iterator12 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
706
|
-
_context6.prev = 12;
|
|
707
|
-
_iterator12.s();
|
|
708
|
-
case 14:
|
|
709
|
-
if ((_step12 = _iterator12.n()).done) {
|
|
710
|
-
_context6.next = 31;
|
|
711
|
-
break;
|
|
712
|
-
}
|
|
713
|
-
reunionSplitPath = _step12.value;
|
|
714
|
-
reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
715
|
-
if (reunionFilename.endsWith(".json")) {
|
|
716
|
-
_context6.next = 19;
|
|
717
|
-
break;
|
|
718
|
-
}
|
|
719
|
-
return _context6.abrupt("continue", 29);
|
|
720
|
-
case 19:
|
|
721
|
-
reunionFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(reunionSplitPath)));
|
|
722
|
-
if (log) {
|
|
723
|
-
console.log("Loading file: ".concat(reunionFilePath, "\u2026"));
|
|
724
|
-
}
|
|
725
|
-
reunionJson = _fsExtra["default"].readFileSync(reunionFilePath, {
|
|
726
|
-
encoding: "utf8"
|
|
727
|
-
});
|
|
728
|
-
reunion = void 0;
|
|
729
|
-
if (noValidation) {
|
|
730
|
-
reunion = JSON.parse(reunionJson);
|
|
731
|
-
} else {
|
|
732
|
-
reunion = _agendas.Convert.toReunion(reunionJson);
|
|
733
|
-
}
|
|
734
|
-
if (!reunionsUid.has(reunion.uid)) {
|
|
735
|
-
_context6.next = 26;
|
|
404
|
+
_iterator7 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.dossiersLegislatifs, _dossiers_legislatifs.Convert.toDossierParlementaire, ["dossiers"], "json", options));
|
|
405
|
+
_context6.prev = 1;
|
|
406
|
+
_iterator7.s();
|
|
407
|
+
case 3:
|
|
408
|
+
if ((_step7 = _iterator7.n()).done) {
|
|
409
|
+
_context6.next = 9;
|
|
736
410
|
break;
|
|
737
411
|
}
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
reunionsUid.add(reunion.uid);
|
|
741
|
-
_context6.next = 29;
|
|
412
|
+
_step7$value = _step7.value, dossierParlementaire = _step7$value.item, datasetLegislature = _step7$value.datasetLegislature;
|
|
413
|
+
_context6.next = 7;
|
|
742
414
|
return {
|
|
743
|
-
|
|
744
|
-
datasetLegislature:
|
|
415
|
+
dossierParlementaire: dossierParlementaire,
|
|
416
|
+
datasetLegislature: datasetLegislature
|
|
745
417
|
};
|
|
746
|
-
case
|
|
747
|
-
_context6.next =
|
|
748
|
-
break;
|
|
749
|
-
case 31:
|
|
750
|
-
_context6.next = 36;
|
|
751
|
-
break;
|
|
752
|
-
case 33:
|
|
753
|
-
_context6.prev = 33;
|
|
754
|
-
_context6.t0 = _context6["catch"](12);
|
|
755
|
-
_iterator12.e(_context6.t0);
|
|
756
|
-
case 36:
|
|
757
|
-
_context6.prev = 36;
|
|
758
|
-
_iterator12.f();
|
|
759
|
-
return _context6.finish(36);
|
|
760
|
-
case 39:
|
|
761
|
-
_context6.next = 4;
|
|
418
|
+
case 7:
|
|
419
|
+
_context6.next = 3;
|
|
762
420
|
break;
|
|
763
|
-
case
|
|
764
|
-
_context6.next =
|
|
421
|
+
case 9:
|
|
422
|
+
_context6.next = 14;
|
|
765
423
|
break;
|
|
766
|
-
case
|
|
767
|
-
_context6.prev =
|
|
768
|
-
_context6.
|
|
769
|
-
|
|
770
|
-
case
|
|
771
|
-
_context6.prev =
|
|
772
|
-
|
|
773
|
-
return _context6.finish(
|
|
774
|
-
case
|
|
424
|
+
case 11:
|
|
425
|
+
_context6.prev = 11;
|
|
426
|
+
_context6.t0 = _context6["catch"](1);
|
|
427
|
+
_iterator7.e(_context6.t0);
|
|
428
|
+
case 14:
|
|
429
|
+
_context6.prev = 14;
|
|
430
|
+
_iterator7.f();
|
|
431
|
+
return _context6.finish(14);
|
|
432
|
+
case 17:
|
|
775
433
|
case "end":
|
|
776
434
|
return _context6.stop();
|
|
777
435
|
}
|
|
778
|
-
}, _callee6, null, [[
|
|
436
|
+
}, _callee6, null, [[1, 11, 14, 17]]);
|
|
779
437
|
})();
|
|
780
438
|
}
|
|
781
|
-
function
|
|
782
|
-
var
|
|
783
|
-
_ref7$noValidation = _ref7.noValidation,
|
|
784
|
-
noValidation = _ref7$noValidation === void 0 ? false : _ref7$noValidation,
|
|
785
|
-
_ref7$log = _ref7.log,
|
|
786
|
-
log = _ref7$log === void 0 ? false : _ref7$log;
|
|
439
|
+
function iterLoadAssembleeReunions(dataDir, legislature) {
|
|
440
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
787
441
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
788
|
-
var
|
|
442
|
+
var _iterator8, _step8, _step8$value, reunion, datasetLegislature;
|
|
789
443
|
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
790
444
|
while (1) switch (_context7.prev = _context7.next) {
|
|
791
445
|
case 0:
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
_context7.next = 41;
|
|
799
|
-
break;
|
|
800
|
-
}
|
|
801
|
-
dataset = _step13.value;
|
|
802
|
-
if (!dataset.ignoreForWeb) {
|
|
803
|
-
_context7.next = 8;
|
|
804
|
-
break;
|
|
805
|
-
}
|
|
806
|
-
return _context7.abrupt("continue", 39);
|
|
807
|
-
case 8:
|
|
808
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
809
|
-
_context7.next = 10;
|
|
810
|
-
break;
|
|
811
|
-
}
|
|
812
|
-
return _context7.abrupt("continue", 39);
|
|
813
|
-
case 10:
|
|
814
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
815
|
-
_iterator14 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
816
|
-
_context7.prev = 12;
|
|
817
|
-
_iterator14.s();
|
|
818
|
-
case 14:
|
|
819
|
-
if ((_step14 = _iterator14.n()).done) {
|
|
820
|
-
_context7.next = 31;
|
|
821
|
-
break;
|
|
822
|
-
}
|
|
823
|
-
scrutinSplitPath = _step14.value;
|
|
824
|
-
scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
825
|
-
if (scrutinFilename.endsWith(".json")) {
|
|
826
|
-
_context7.next = 19;
|
|
827
|
-
break;
|
|
828
|
-
}
|
|
829
|
-
return _context7.abrupt("continue", 29);
|
|
830
|
-
case 19:
|
|
831
|
-
scrutinFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(scrutinSplitPath)));
|
|
832
|
-
if (log) {
|
|
833
|
-
console.log("Loading file: ".concat(scrutinFilePath, "\u2026"));
|
|
834
|
-
}
|
|
835
|
-
scrutinJson = _fsExtra["default"].readFileSync(scrutinFilePath, {
|
|
836
|
-
encoding: "utf8"
|
|
837
|
-
});
|
|
838
|
-
scrutin = void 0;
|
|
839
|
-
if (noValidation) {
|
|
840
|
-
scrutin = JSON.parse(scrutinJson);
|
|
841
|
-
} else {
|
|
842
|
-
scrutin = _scrutins.Convert.toScrutin(scrutinJson);
|
|
843
|
-
}
|
|
844
|
-
if (!scrutinsUid.has(scrutin.uid)) {
|
|
845
|
-
_context7.next = 26;
|
|
446
|
+
_iterator8 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.agendas, _agendas.Convert.toReunion, [], "json", options));
|
|
447
|
+
_context7.prev = 1;
|
|
448
|
+
_iterator8.s();
|
|
449
|
+
case 3:
|
|
450
|
+
if ((_step8 = _iterator8.n()).done) {
|
|
451
|
+
_context7.next = 9;
|
|
846
452
|
break;
|
|
847
453
|
}
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
scrutinsUid.add(scrutin.uid);
|
|
851
|
-
_context7.next = 29;
|
|
454
|
+
_step8$value = _step8.value, reunion = _step8$value.item, datasetLegislature = _step8$value.datasetLegislature;
|
|
455
|
+
_context7.next = 7;
|
|
852
456
|
return {
|
|
853
|
-
|
|
854
|
-
datasetLegislature:
|
|
457
|
+
reunion: reunion,
|
|
458
|
+
datasetLegislature: datasetLegislature
|
|
855
459
|
};
|
|
856
|
-
case
|
|
857
|
-
_context7.next =
|
|
858
|
-
break;
|
|
859
|
-
case 31:
|
|
860
|
-
_context7.next = 36;
|
|
861
|
-
break;
|
|
862
|
-
case 33:
|
|
863
|
-
_context7.prev = 33;
|
|
864
|
-
_context7.t0 = _context7["catch"](12);
|
|
865
|
-
_iterator14.e(_context7.t0);
|
|
866
|
-
case 36:
|
|
867
|
-
_context7.prev = 36;
|
|
868
|
-
_iterator14.f();
|
|
869
|
-
return _context7.finish(36);
|
|
870
|
-
case 39:
|
|
871
|
-
_context7.next = 4;
|
|
460
|
+
case 7:
|
|
461
|
+
_context7.next = 3;
|
|
872
462
|
break;
|
|
873
|
-
case
|
|
874
|
-
_context7.next =
|
|
463
|
+
case 9:
|
|
464
|
+
_context7.next = 14;
|
|
875
465
|
break;
|
|
876
|
-
case
|
|
877
|
-
_context7.prev =
|
|
878
|
-
_context7.
|
|
879
|
-
|
|
880
|
-
case
|
|
881
|
-
_context7.prev =
|
|
882
|
-
|
|
883
|
-
return _context7.finish(
|
|
884
|
-
case
|
|
466
|
+
case 11:
|
|
467
|
+
_context7.prev = 11;
|
|
468
|
+
_context7.t0 = _context7["catch"](1);
|
|
469
|
+
_iterator8.e(_context7.t0);
|
|
470
|
+
case 14:
|
|
471
|
+
_context7.prev = 14;
|
|
472
|
+
_iterator8.f();
|
|
473
|
+
return _context7.finish(14);
|
|
474
|
+
case 17:
|
|
885
475
|
case "end":
|
|
886
476
|
return _context7.stop();
|
|
887
477
|
}
|
|
888
|
-
}, _callee7, null, [[
|
|
478
|
+
}, _callee7, null, [[1, 11, 14, 17]]);
|
|
889
479
|
})();
|
|
890
480
|
}
|
|
891
|
-
function
|
|
892
|
-
var
|
|
893
|
-
_ref8$noValidation = _ref8.noValidation,
|
|
894
|
-
noValidation = _ref8$noValidation === void 0 ? false : _ref8$noValidation,
|
|
895
|
-
_ref8$log = _ref8.log,
|
|
896
|
-
log = _ref8$log === void 0 ? false : _ref8$log;
|
|
481
|
+
function iterLoadAssembleeScrutins(dataDir, legislature) {
|
|
482
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
897
483
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
898
|
-
var
|
|
484
|
+
var _iterator9, _step9, _step9$value, scrutin, datasetLegislature;
|
|
899
485
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
900
486
|
while (1) switch (_context8.prev = _context8.next) {
|
|
901
487
|
case 0:
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
_context8.next = 41;
|
|
909
|
-
break;
|
|
910
|
-
}
|
|
911
|
-
dataset = _step15.value;
|
|
912
|
-
if (!dataset.ignoreForWeb) {
|
|
913
|
-
_context8.next = 8;
|
|
914
|
-
break;
|
|
915
|
-
}
|
|
916
|
-
return _context8.abrupt("continue", 39);
|
|
917
|
-
case 8:
|
|
918
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
919
|
-
_context8.next = 10;
|
|
920
|
-
break;
|
|
921
|
-
}
|
|
922
|
-
return _context8.abrupt("continue", 39);
|
|
923
|
-
case 10:
|
|
924
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
925
|
-
_iterator16 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
926
|
-
_context8.prev = 12;
|
|
927
|
-
_iterator16.s();
|
|
928
|
-
case 14:
|
|
929
|
-
if ((_step16 = _iterator16.n()).done) {
|
|
930
|
-
_context8.next = 31;
|
|
931
|
-
break;
|
|
932
|
-
}
|
|
933
|
-
questionSplitPath = _step16.value;
|
|
934
|
-
questionFilename = questionSplitPath[questionSplitPath.length - 1];
|
|
935
|
-
if (questionFilename.endsWith(".json")) {
|
|
936
|
-
_context8.next = 19;
|
|
937
|
-
break;
|
|
938
|
-
}
|
|
939
|
-
return _context8.abrupt("continue", 29);
|
|
940
|
-
case 19:
|
|
941
|
-
questionFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(questionSplitPath)));
|
|
942
|
-
if (log) {
|
|
943
|
-
console.log("Loading file: ".concat(questionFilePath, "\u2026"));
|
|
944
|
-
}
|
|
945
|
-
questionJson = _fsExtra["default"].readFileSync(questionFilePath, {
|
|
946
|
-
encoding: "utf8"
|
|
947
|
-
});
|
|
948
|
-
question = void 0;
|
|
949
|
-
if (noValidation) {
|
|
950
|
-
question = JSON.parse(questionJson);
|
|
951
|
-
} else {
|
|
952
|
-
question = _questions.Convert.toQuestion(questionJson);
|
|
953
|
-
}
|
|
954
|
-
if (!questionsUid.has(question.uid)) {
|
|
955
|
-
_context8.next = 26;
|
|
488
|
+
_iterator9 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.scrutins, _scrutins.Convert.toScrutin, [], "json", options));
|
|
489
|
+
_context8.prev = 1;
|
|
490
|
+
_iterator9.s();
|
|
491
|
+
case 3:
|
|
492
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
493
|
+
_context8.next = 9;
|
|
956
494
|
break;
|
|
957
495
|
}
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
questionsUid.add(question.uid);
|
|
961
|
-
_context8.next = 29;
|
|
496
|
+
_step9$value = _step9.value, scrutin = _step9$value.item, datasetLegislature = _step9$value.datasetLegislature;
|
|
497
|
+
_context8.next = 7;
|
|
962
498
|
return {
|
|
963
|
-
|
|
964
|
-
datasetLegislature:
|
|
499
|
+
scrutin: scrutin,
|
|
500
|
+
datasetLegislature: datasetLegislature
|
|
965
501
|
};
|
|
966
|
-
case
|
|
967
|
-
_context8.next =
|
|
968
|
-
break;
|
|
969
|
-
case 31:
|
|
970
|
-
_context8.next = 36;
|
|
502
|
+
case 7:
|
|
503
|
+
_context8.next = 3;
|
|
971
504
|
break;
|
|
972
|
-
case
|
|
973
|
-
_context8.
|
|
974
|
-
_context8.t0 = _context8["catch"](12);
|
|
975
|
-
_iterator16.e(_context8.t0);
|
|
976
|
-
case 36:
|
|
977
|
-
_context8.prev = 36;
|
|
978
|
-
_iterator16.f();
|
|
979
|
-
return _context8.finish(36);
|
|
980
|
-
case 39:
|
|
981
|
-
_context8.next = 4;
|
|
982
|
-
break;
|
|
983
|
-
case 41:
|
|
984
|
-
_context8.next = 46;
|
|
505
|
+
case 9:
|
|
506
|
+
_context8.next = 14;
|
|
985
507
|
break;
|
|
986
|
-
case
|
|
987
|
-
_context8.prev =
|
|
988
|
-
_context8.
|
|
989
|
-
|
|
990
|
-
case
|
|
991
|
-
_context8.prev =
|
|
992
|
-
|
|
993
|
-
return _context8.finish(
|
|
994
|
-
case
|
|
508
|
+
case 11:
|
|
509
|
+
_context8.prev = 11;
|
|
510
|
+
_context8.t0 = _context8["catch"](1);
|
|
511
|
+
_iterator9.e(_context8.t0);
|
|
512
|
+
case 14:
|
|
513
|
+
_context8.prev = 14;
|
|
514
|
+
_iterator9.f();
|
|
515
|
+
return _context8.finish(14);
|
|
516
|
+
case 17:
|
|
995
517
|
case "end":
|
|
996
518
|
return _context8.stop();
|
|
997
519
|
}
|
|
998
|
-
}, _callee8, null, [[
|
|
520
|
+
}, _callee8, null, [[1, 11, 14, 17]]);
|
|
999
521
|
})();
|
|
1000
522
|
}
|
|
1001
|
-
function
|
|
1002
|
-
var
|
|
1003
|
-
_ref9$noValidation = _ref9.noValidation,
|
|
1004
|
-
noValidation = _ref9$noValidation === void 0 ? false : _ref9$noValidation,
|
|
1005
|
-
_ref9$log = _ref9.log,
|
|
1006
|
-
log = _ref9$log === void 0 ? false : _ref9$log;
|
|
523
|
+
function iterLoadAssembleeQuestions(dataDir, legislature) {
|
|
524
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1007
525
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
1008
|
-
var
|
|
526
|
+
var _iterator10, _step10, _step10$value, question, datasetLegislature;
|
|
1009
527
|
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
1010
528
|
while (1) switch (_context9.prev = _context9.next) {
|
|
1011
529
|
case 0:
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
_context9.next = 41;
|
|
1019
|
-
break;
|
|
1020
|
-
}
|
|
1021
|
-
dataset = _step17.value;
|
|
1022
|
-
if (!dataset.ignoreForWeb) {
|
|
1023
|
-
_context9.next = 8;
|
|
1024
|
-
break;
|
|
1025
|
-
}
|
|
1026
|
-
return _context9.abrupt("continue", 39);
|
|
1027
|
-
case 8:
|
|
1028
|
-
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
1029
|
-
_context9.next = 10;
|
|
530
|
+
_iterator10 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.questions, _questions.Convert.toQuestion, [], "json", options));
|
|
531
|
+
_context9.prev = 1;
|
|
532
|
+
_iterator10.s();
|
|
533
|
+
case 3:
|
|
534
|
+
if ((_step10 = _iterator10.n()).done) {
|
|
535
|
+
_context9.next = 9;
|
|
1030
536
|
break;
|
|
1031
537
|
}
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
538
|
+
_step10$value = _step10.value, question = _step10$value.item, datasetLegislature = _step10$value.datasetLegislature;
|
|
539
|
+
_context9.next = 7;
|
|
540
|
+
return {
|
|
541
|
+
question: question,
|
|
542
|
+
datasetLegislature: datasetLegislature
|
|
543
|
+
};
|
|
544
|
+
case 7:
|
|
545
|
+
_context9.next = 3;
|
|
546
|
+
break;
|
|
547
|
+
case 9:
|
|
548
|
+
_context9.next = 14;
|
|
549
|
+
break;
|
|
550
|
+
case 11:
|
|
551
|
+
_context9.prev = 11;
|
|
552
|
+
_context9.t0 = _context9["catch"](1);
|
|
553
|
+
_iterator10.e(_context9.t0);
|
|
1038
554
|
case 14:
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
compteRendu = _debats.Convert.toCompteRendu(compteRenduJson);
|
|
1063
|
-
}
|
|
1064
|
-
if (!comptesRendusUid.has(compteRendu.uid)) {
|
|
1065
|
-
_context9.next = 26;
|
|
555
|
+
_context9.prev = 14;
|
|
556
|
+
_iterator10.f();
|
|
557
|
+
return _context9.finish(14);
|
|
558
|
+
case 17:
|
|
559
|
+
case "end":
|
|
560
|
+
return _context9.stop();
|
|
561
|
+
}
|
|
562
|
+
}, _callee9, null, [[1, 11, 14, 17]]);
|
|
563
|
+
})();
|
|
564
|
+
}
|
|
565
|
+
function iterLoadAssembleeComptesRendus(dataDir, legislature) {
|
|
566
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
567
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
|
|
568
|
+
var _iterator11, _step11, _step11$value, compteRendu, datasetLegislature;
|
|
569
|
+
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
570
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
571
|
+
case 0:
|
|
572
|
+
_iterator11 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.comptesRendusSeances, _debats.Convert.toCompteRendu, [], "xml", options));
|
|
573
|
+
_context10.prev = 1;
|
|
574
|
+
_iterator11.s();
|
|
575
|
+
case 3:
|
|
576
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
577
|
+
_context10.next = 9;
|
|
1066
578
|
break;
|
|
1067
579
|
}
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
comptesRendusUid.add(compteRendu.uid);
|
|
1071
|
-
_context9.next = 29;
|
|
580
|
+
_step11$value = _step11.value, compteRendu = _step11$value.item, datasetLegislature = _step11$value.datasetLegislature;
|
|
581
|
+
_context10.next = 7;
|
|
1072
582
|
return {
|
|
1073
583
|
compteRendu: compteRendu,
|
|
1074
|
-
datasetLegislature:
|
|
584
|
+
datasetLegislature: datasetLegislature
|
|
1075
585
|
};
|
|
1076
|
-
case
|
|
1077
|
-
|
|
1078
|
-
break;
|
|
1079
|
-
case 31:
|
|
1080
|
-
_context9.next = 36;
|
|
1081
|
-
break;
|
|
1082
|
-
case 33:
|
|
1083
|
-
_context9.prev = 33;
|
|
1084
|
-
_context9.t0 = _context9["catch"](12);
|
|
1085
|
-
_iterator18.e(_context9.t0);
|
|
1086
|
-
case 36:
|
|
1087
|
-
_context9.prev = 36;
|
|
1088
|
-
_iterator18.f();
|
|
1089
|
-
return _context9.finish(36);
|
|
1090
|
-
case 39:
|
|
1091
|
-
_context9.next = 4;
|
|
586
|
+
case 7:
|
|
587
|
+
_context10.next = 3;
|
|
1092
588
|
break;
|
|
1093
|
-
case
|
|
1094
|
-
|
|
589
|
+
case 9:
|
|
590
|
+
_context10.next = 14;
|
|
1095
591
|
break;
|
|
1096
|
-
case
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
case
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
return
|
|
1104
|
-
case
|
|
592
|
+
case 11:
|
|
593
|
+
_context10.prev = 11;
|
|
594
|
+
_context10.t0 = _context10["catch"](1);
|
|
595
|
+
_iterator11.e(_context10.t0);
|
|
596
|
+
case 14:
|
|
597
|
+
_context10.prev = 14;
|
|
598
|
+
_iterator11.f();
|
|
599
|
+
return _context10.finish(14);
|
|
600
|
+
case 17:
|
|
1105
601
|
case "end":
|
|
1106
|
-
return
|
|
602
|
+
return _context10.stop();
|
|
1107
603
|
}
|
|
1108
|
-
},
|
|
604
|
+
}, _callee10, null, [[1, 11, 14, 17]]);
|
|
1109
605
|
})();
|
|
1110
606
|
}
|
|
1111
607
|
|
|
1112
608
|
/// Load data from split files.
|
|
1113
609
|
/// Deprecated: Use iterLoad... iterators instead.
|
|
1114
610
|
function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
1115
|
-
var
|
|
1116
|
-
|
|
1117
|
-
log =
|
|
611
|
+
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
612
|
+
_ref2$log = _ref2.log,
|
|
613
|
+
log = _ref2$log === void 0 ? false : _ref2$log;
|
|
1118
614
|
var acteurByUid = {};
|
|
1119
615
|
var organeByUid = {};
|
|
1120
616
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
1121
|
-
var
|
|
1122
|
-
|
|
617
|
+
var _iterator12 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
618
|
+
_step12;
|
|
1123
619
|
try {
|
|
1124
|
-
for (
|
|
1125
|
-
var dataset =
|
|
620
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
621
|
+
var dataset = _step12.value;
|
|
1126
622
|
if (dataset.ignoreForWeb) {
|
|
1127
623
|
continue;
|
|
1128
624
|
}
|
|
@@ -1130,11 +626,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1130
626
|
continue;
|
|
1131
627
|
}
|
|
1132
628
|
var datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
1133
|
-
var
|
|
1134
|
-
|
|
629
|
+
var _iterator13 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["acteurs"])),
|
|
630
|
+
_step13;
|
|
1135
631
|
try {
|
|
1136
|
-
for (
|
|
1137
|
-
var acteurSplitPath =
|
|
632
|
+
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
633
|
+
var acteurSplitPath = _step13.value;
|
|
1138
634
|
var acteurFilename = acteurSplitPath[acteurSplitPath.length - 1];
|
|
1139
635
|
if (!acteurFilename.endsWith(".json")) {
|
|
1140
636
|
continue;
|
|
@@ -1153,15 +649,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1153
649
|
}
|
|
1154
650
|
}
|
|
1155
651
|
} catch (err) {
|
|
1156
|
-
|
|
652
|
+
_iterator13.e(err);
|
|
1157
653
|
} finally {
|
|
1158
|
-
|
|
654
|
+
_iterator13.f();
|
|
1159
655
|
}
|
|
1160
|
-
var
|
|
1161
|
-
|
|
656
|
+
var _iterator14 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"])),
|
|
657
|
+
_step14;
|
|
1162
658
|
try {
|
|
1163
|
-
for (
|
|
1164
|
-
var organeSplitPath =
|
|
659
|
+
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
660
|
+
var organeSplitPath = _step14.value;
|
|
1165
661
|
var organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
1166
662
|
if (!organeFilename.endsWith(".json")) {
|
|
1167
663
|
continue;
|
|
@@ -1180,26 +676,26 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1180
676
|
}
|
|
1181
677
|
}
|
|
1182
678
|
} catch (err) {
|
|
1183
|
-
|
|
679
|
+
_iterator14.e(err);
|
|
1184
680
|
} finally {
|
|
1185
|
-
|
|
681
|
+
_iterator14.f();
|
|
1186
682
|
}
|
|
1187
683
|
}
|
|
1188
684
|
} catch (err) {
|
|
1189
|
-
|
|
685
|
+
_iterator12.e(err);
|
|
1190
686
|
} finally {
|
|
1191
|
-
|
|
687
|
+
_iterator12.f();
|
|
1192
688
|
}
|
|
1193
689
|
}
|
|
1194
690
|
var reunionByUid = {};
|
|
1195
691
|
var reunionsByDay = {};
|
|
1196
692
|
var reunionsByDossierUid = {};
|
|
1197
693
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
1198
|
-
var
|
|
1199
|
-
|
|
694
|
+
var _iterator15 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
695
|
+
_step15;
|
|
1200
696
|
try {
|
|
1201
|
-
for (
|
|
1202
|
-
var _dataset =
|
|
697
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
698
|
+
var _dataset = _step15.value;
|
|
1203
699
|
if (_dataset.ignoreForWeb) {
|
|
1204
700
|
continue;
|
|
1205
701
|
}
|
|
@@ -1207,11 +703,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1207
703
|
continue;
|
|
1208
704
|
}
|
|
1209
705
|
var _datasetDir = _path["default"].join(dataDir, _dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
1210
|
-
var
|
|
1211
|
-
|
|
706
|
+
var _iterator16 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir)),
|
|
707
|
+
_step16;
|
|
1212
708
|
try {
|
|
1213
|
-
for (
|
|
1214
|
-
var reunionSplitPath =
|
|
709
|
+
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
710
|
+
var reunionSplitPath = _step16.value;
|
|
1215
711
|
var reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
1216
712
|
if (!reunionFilename.endsWith(".json")) {
|
|
1217
713
|
continue;
|
|
@@ -1227,24 +723,24 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1227
723
|
if (reunionByUid[reunion.uid] === undefined) {
|
|
1228
724
|
reunionByUid[reunion.uid] = reunion;
|
|
1229
725
|
}
|
|
1230
|
-
var
|
|
1231
|
-
var reunionsAtDay = reunionsByDay[
|
|
726
|
+
var day = reunion.timestampDebut.toISOString().split("T")[0];
|
|
727
|
+
var reunionsAtDay = reunionsByDay[day];
|
|
1232
728
|
if (reunionsAtDay === undefined) {
|
|
1233
|
-
reunionsAtDay = reunionsByDay[
|
|
729
|
+
reunionsAtDay = reunionsByDay[day] = [];
|
|
1234
730
|
}
|
|
1235
731
|
reunionsAtDay.push(reunion);
|
|
1236
732
|
var odj = reunion.odj;
|
|
1237
733
|
if (odj !== undefined) {
|
|
1238
|
-
var
|
|
1239
|
-
|
|
734
|
+
var _iterator17 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
735
|
+
_step17;
|
|
1240
736
|
try {
|
|
1241
|
-
for (
|
|
1242
|
-
var pointOdj =
|
|
1243
|
-
var
|
|
1244
|
-
|
|
737
|
+
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
738
|
+
var pointOdj = _step17.value;
|
|
739
|
+
var _iterator18 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
740
|
+
_step18;
|
|
1245
741
|
try {
|
|
1246
|
-
for (
|
|
1247
|
-
var dossierLegislatifRef =
|
|
742
|
+
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
743
|
+
var dossierLegislatifRef = _step18.value;
|
|
1248
744
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
1249
745
|
if (reunionsAtDossierUid === undefined) {
|
|
1250
746
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -1252,37 +748,37 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1252
748
|
reunionsAtDossierUid.push(reunion);
|
|
1253
749
|
}
|
|
1254
750
|
} catch (err) {
|
|
1255
|
-
|
|
751
|
+
_iterator18.e(err);
|
|
1256
752
|
} finally {
|
|
1257
|
-
|
|
753
|
+
_iterator18.f();
|
|
1258
754
|
}
|
|
1259
755
|
}
|
|
1260
756
|
} catch (err) {
|
|
1261
|
-
|
|
757
|
+
_iterator17.e(err);
|
|
1262
758
|
} finally {
|
|
1263
|
-
|
|
759
|
+
_iterator17.f();
|
|
1264
760
|
}
|
|
1265
761
|
}
|
|
1266
762
|
}
|
|
1267
763
|
} catch (err) {
|
|
1268
|
-
|
|
764
|
+
_iterator16.e(err);
|
|
1269
765
|
} finally {
|
|
1270
|
-
|
|
766
|
+
_iterator16.f();
|
|
1271
767
|
}
|
|
1272
768
|
}
|
|
1273
769
|
} catch (err) {
|
|
1274
|
-
|
|
770
|
+
_iterator15.e(err);
|
|
1275
771
|
} finally {
|
|
1276
|
-
|
|
772
|
+
_iterator15.f();
|
|
1277
773
|
}
|
|
1278
774
|
}
|
|
1279
775
|
var amendementByUid = {};
|
|
1280
776
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
1281
|
-
var
|
|
1282
|
-
|
|
777
|
+
var _iterator19 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
778
|
+
_step19;
|
|
1283
779
|
try {
|
|
1284
|
-
for (
|
|
1285
|
-
var _dataset2 =
|
|
780
|
+
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
781
|
+
var _dataset2 = _step19.value;
|
|
1286
782
|
if (_dataset2.ignoreForWeb) {
|
|
1287
783
|
continue;
|
|
1288
784
|
}
|
|
@@ -1290,11 +786,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1290
786
|
continue;
|
|
1291
787
|
}
|
|
1292
788
|
var _datasetDir2 = _path["default"].join(dataDir, _dataset2.filename.replace(/\.json$/, "_nettoye"));
|
|
1293
|
-
var
|
|
1294
|
-
|
|
789
|
+
var _iterator20 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir2)),
|
|
790
|
+
_step20;
|
|
1295
791
|
try {
|
|
1296
|
-
for (
|
|
1297
|
-
var amendementSplitPath =
|
|
792
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
793
|
+
var amendementSplitPath = _step20.value;
|
|
1298
794
|
var amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
1299
795
|
if (!amendementFilename.endsWith(".json")) {
|
|
1300
796
|
continue;
|
|
@@ -1312,15 +808,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1312
808
|
}
|
|
1313
809
|
}
|
|
1314
810
|
} catch (err) {
|
|
1315
|
-
|
|
811
|
+
_iterator20.e(err);
|
|
1316
812
|
} finally {
|
|
1317
|
-
|
|
813
|
+
_iterator20.f();
|
|
1318
814
|
}
|
|
1319
815
|
}
|
|
1320
816
|
} catch (err) {
|
|
1321
|
-
|
|
817
|
+
_iterator19.e(err);
|
|
1322
818
|
} finally {
|
|
1323
|
-
|
|
819
|
+
_iterator19.f();
|
|
1324
820
|
}
|
|
1325
821
|
}
|
|
1326
822
|
var documentByUid = {};
|
|
@@ -1328,11 +824,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1328
824
|
var dossierParlementaireByTitreChemin = {};
|
|
1329
825
|
var dossierParlementaireByUid = {};
|
|
1330
826
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
1331
|
-
var
|
|
1332
|
-
|
|
827
|
+
var _iterator21 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
828
|
+
_step21;
|
|
1333
829
|
try {
|
|
1334
|
-
for (
|
|
1335
|
-
var _dataset3 =
|
|
830
|
+
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
831
|
+
var _dataset3 = _step21.value;
|
|
1336
832
|
if (_dataset3.ignoreForWeb) {
|
|
1337
833
|
continue;
|
|
1338
834
|
}
|
|
@@ -1340,11 +836,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1340
836
|
continue;
|
|
1341
837
|
}
|
|
1342
838
|
var _datasetDir3 = _path["default"].join(dataDir, _dataset3.filename.replace(/\.json$/, "_nettoye"));
|
|
1343
|
-
var
|
|
1344
|
-
|
|
839
|
+
var _iterator22 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["documents"])),
|
|
840
|
+
_step22;
|
|
1345
841
|
try {
|
|
1346
|
-
for (
|
|
1347
|
-
var documentSplitPath =
|
|
842
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
843
|
+
var documentSplitPath = _step22.value;
|
|
1348
844
|
var documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
1349
845
|
if (!documentFilename.endsWith(".json")) {
|
|
1350
846
|
continue;
|
|
@@ -1362,15 +858,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1362
858
|
}
|
|
1363
859
|
}
|
|
1364
860
|
} catch (err) {
|
|
1365
|
-
|
|
861
|
+
_iterator22.e(err);
|
|
1366
862
|
} finally {
|
|
1367
|
-
|
|
863
|
+
_iterator22.f();
|
|
1368
864
|
}
|
|
1369
|
-
var
|
|
1370
|
-
|
|
865
|
+
var _iterator23 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["dossiers"])),
|
|
866
|
+
_step23;
|
|
1371
867
|
try {
|
|
1372
|
-
for (
|
|
1373
|
-
var dossierSplitPath =
|
|
868
|
+
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
869
|
+
var dossierSplitPath = _step23.value;
|
|
1374
870
|
var dossierFilename = dossierSplitPath[dossierSplitPath.length - 1];
|
|
1375
871
|
if (!dossierFilename.endsWith(".json")) {
|
|
1376
872
|
continue;
|
|
@@ -1395,15 +891,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1395
891
|
}
|
|
1396
892
|
}
|
|
1397
893
|
} catch (err) {
|
|
1398
|
-
|
|
894
|
+
_iterator23.e(err);
|
|
1399
895
|
} finally {
|
|
1400
|
-
|
|
896
|
+
_iterator23.f();
|
|
1401
897
|
}
|
|
1402
898
|
}
|
|
1403
899
|
} catch (err) {
|
|
1404
|
-
|
|
900
|
+
_iterator21.e(err);
|
|
1405
901
|
} finally {
|
|
1406
|
-
|
|
902
|
+
_iterator21.f();
|
|
1407
903
|
}
|
|
1408
904
|
}
|
|
1409
905
|
var photoByUid = {};
|
|
@@ -1416,10 +912,10 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1416
912
|
if (log) {
|
|
1417
913
|
console.log("Loading file: ".concat(jsonFilePath));
|
|
1418
914
|
}
|
|
1419
|
-
var
|
|
915
|
+
var _json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1420
916
|
encoding: "utf8"
|
|
1421
917
|
});
|
|
1422
|
-
Object.assign(photoByUid, JSON.parse(
|
|
918
|
+
Object.assign(photoByUid, JSON.parse(_json));
|
|
1423
919
|
} else if (log) {
|
|
1424
920
|
console.log("Ignoring missing file: ".concat(jsonFilePath));
|
|
1425
921
|
}
|
|
@@ -1430,10 +926,10 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1430
926
|
if (log) {
|
|
1431
927
|
console.log("Loading file: ".concat(_jsonFilePath));
|
|
1432
928
|
}
|
|
1433
|
-
var
|
|
929
|
+
var _json2 = _fsExtra["default"].readFileSync(_jsonFilePath, {
|
|
1434
930
|
encoding: "utf8"
|
|
1435
931
|
});
|
|
1436
|
-
Object.assign(photoByUid, JSON.parse(
|
|
932
|
+
Object.assign(photoByUid, JSON.parse(_json2));
|
|
1437
933
|
} else if (log) {
|
|
1438
934
|
console.log("Ignoring missing file: ".concat(_jsonFilePath));
|
|
1439
935
|
}
|
|
@@ -1441,11 +937,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1441
937
|
}
|
|
1442
938
|
var scrutinByUid = {};
|
|
1443
939
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
1444
|
-
var
|
|
1445
|
-
|
|
940
|
+
var _iterator24 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
941
|
+
_step24;
|
|
1446
942
|
try {
|
|
1447
|
-
for (
|
|
1448
|
-
var _dataset4 =
|
|
943
|
+
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
944
|
+
var _dataset4 = _step24.value;
|
|
1449
945
|
if (_dataset4.ignoreForWeb) {
|
|
1450
946
|
continue;
|
|
1451
947
|
}
|
|
@@ -1453,11 +949,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1453
949
|
continue;
|
|
1454
950
|
}
|
|
1455
951
|
var _datasetDir4 = _path["default"].join(dataDir, _dataset4.filename.replace(/\.json$/, "_nettoye"));
|
|
1456
|
-
var
|
|
1457
|
-
|
|
952
|
+
var _iterator25 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir4)),
|
|
953
|
+
_step25;
|
|
1458
954
|
try {
|
|
1459
|
-
for (
|
|
1460
|
-
var scrutinSplitPath =
|
|
955
|
+
for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
|
|
956
|
+
var scrutinSplitPath = _step25.value;
|
|
1461
957
|
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
1462
958
|
if (!scrutinFilename.endsWith(".json")) {
|
|
1463
959
|
continue;
|
|
@@ -1475,24 +971,24 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1475
971
|
}
|
|
1476
972
|
}
|
|
1477
973
|
} catch (err) {
|
|
1478
|
-
|
|
974
|
+
_iterator25.e(err);
|
|
1479
975
|
} finally {
|
|
1480
|
-
|
|
976
|
+
_iterator25.f();
|
|
1481
977
|
}
|
|
1482
978
|
}
|
|
1483
979
|
} catch (err) {
|
|
1484
|
-
|
|
980
|
+
_iterator24.e(err);
|
|
1485
981
|
} finally {
|
|
1486
|
-
|
|
982
|
+
_iterator24.f();
|
|
1487
983
|
}
|
|
1488
984
|
}
|
|
1489
985
|
var questionByUid = {};
|
|
1490
986
|
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
1491
|
-
var
|
|
1492
|
-
|
|
987
|
+
var _iterator26 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
988
|
+
_step26;
|
|
1493
989
|
try {
|
|
1494
|
-
for (
|
|
1495
|
-
var _dataset5 =
|
|
990
|
+
for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
|
|
991
|
+
var _dataset5 = _step26.value;
|
|
1496
992
|
if (_dataset5.ignoreForWeb) {
|
|
1497
993
|
continue;
|
|
1498
994
|
}
|
|
@@ -1500,11 +996,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1500
996
|
continue;
|
|
1501
997
|
}
|
|
1502
998
|
var _datasetDir5 = _path["default"].join(dataDir, _dataset5.filename.replace(/\.json$/, "_nettoye"));
|
|
1503
|
-
var
|
|
1504
|
-
|
|
999
|
+
var _iterator27 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir5)),
|
|
1000
|
+
_step27;
|
|
1505
1001
|
try {
|
|
1506
|
-
for (
|
|
1507
|
-
var questionSplitPath =
|
|
1002
|
+
for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
|
|
1003
|
+
var questionSplitPath = _step27.value;
|
|
1508
1004
|
var questionFilename = questionSplitPath[questionSplitPath.length - 1];
|
|
1509
1005
|
if (!questionFilename.endsWith(".json")) {
|
|
1510
1006
|
continue;
|
|
@@ -1522,24 +1018,24 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1522
1018
|
}
|
|
1523
1019
|
}
|
|
1524
1020
|
} catch (err) {
|
|
1525
|
-
|
|
1021
|
+
_iterator27.e(err);
|
|
1526
1022
|
} finally {
|
|
1527
|
-
|
|
1023
|
+
_iterator27.f();
|
|
1528
1024
|
}
|
|
1529
1025
|
}
|
|
1530
1026
|
} catch (err) {
|
|
1531
|
-
|
|
1027
|
+
_iterator26.e(err);
|
|
1532
1028
|
} finally {
|
|
1533
|
-
|
|
1029
|
+
_iterator26.f();
|
|
1534
1030
|
}
|
|
1535
1031
|
}
|
|
1536
1032
|
var compteRenduByUid = {};
|
|
1537
1033
|
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1538
|
-
var
|
|
1539
|
-
|
|
1034
|
+
var _iterator28 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1035
|
+
_step28;
|
|
1540
1036
|
try {
|
|
1541
|
-
for (
|
|
1542
|
-
var _dataset6 =
|
|
1037
|
+
for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
|
|
1038
|
+
var _dataset6 = _step28.value;
|
|
1543
1039
|
if (_dataset6.ignoreForWeb) {
|
|
1544
1040
|
continue;
|
|
1545
1041
|
}
|
|
@@ -1547,11 +1043,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1547
1043
|
continue;
|
|
1548
1044
|
}
|
|
1549
1045
|
var _datasetDir6 = _path["default"].join(dataDir, _dataset6.filename.replace(/\.json$/, "_nettoye"));
|
|
1550
|
-
var
|
|
1551
|
-
|
|
1046
|
+
var _iterator29 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir6)),
|
|
1047
|
+
_step29;
|
|
1552
1048
|
try {
|
|
1553
|
-
for (
|
|
1554
|
-
var compteRenduPath =
|
|
1049
|
+
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
1050
|
+
var compteRenduPath = _step29.value;
|
|
1555
1051
|
var compteRenduFilename = compteRenduPath[compteRenduPath.length - 1];
|
|
1556
1052
|
if (!compteRenduFilename.endsWith(".json")) {
|
|
1557
1053
|
continue;
|
|
@@ -1569,15 +1065,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1569
1065
|
}
|
|
1570
1066
|
}
|
|
1571
1067
|
} catch (err) {
|
|
1572
|
-
|
|
1068
|
+
_iterator29.e(err);
|
|
1573
1069
|
} finally {
|
|
1574
|
-
|
|
1070
|
+
_iterator29.f();
|
|
1575
1071
|
}
|
|
1576
1072
|
}
|
|
1577
1073
|
} catch (err) {
|
|
1578
|
-
|
|
1074
|
+
_iterator28.e(err);
|
|
1579
1075
|
} finally {
|
|
1580
|
-
|
|
1076
|
+
_iterator28.f();
|
|
1581
1077
|
}
|
|
1582
1078
|
}
|
|
1583
1079
|
return {
|
|
@@ -1601,17 +1097,17 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1601
1097
|
/// Load data from big monolytic files.
|
|
1602
1098
|
/// Deprecated: Assemblée nationale open data no more uses monolytic files.
|
|
1603
1099
|
function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
1604
|
-
var
|
|
1605
|
-
|
|
1606
|
-
log =
|
|
1100
|
+
var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
1101
|
+
_ref3$log = _ref3.log,
|
|
1102
|
+
log = _ref3$log === void 0 ? false : _ref3$log;
|
|
1607
1103
|
var acteurByUid = {};
|
|
1608
1104
|
var organeByUid = {};
|
|
1609
1105
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
1610
|
-
var
|
|
1611
|
-
|
|
1106
|
+
var _iterator30 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
1107
|
+
_step30;
|
|
1612
1108
|
try {
|
|
1613
|
-
for (
|
|
1614
|
-
var dataset =
|
|
1109
|
+
for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
|
|
1110
|
+
var dataset = _step30.value;
|
|
1615
1111
|
if (dataset.ignoreForWeb) {
|
|
1616
1112
|
continue;
|
|
1617
1113
|
}
|
|
@@ -1622,56 +1118,56 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1622
1118
|
if (log) {
|
|
1623
1119
|
console.log("Loading file: ".concat(jsonFilePath));
|
|
1624
1120
|
}
|
|
1625
|
-
var
|
|
1121
|
+
var _json3 = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1626
1122
|
encoding: "utf8"
|
|
1627
1123
|
});
|
|
1628
|
-
var acteursEtOrganes = _acteurs_et_organes.Convert.toActeursEtOrganes(
|
|
1629
|
-
var
|
|
1630
|
-
|
|
1124
|
+
var acteursEtOrganes = _acteurs_et_organes.Convert.toActeursEtOrganes(_json3);
|
|
1125
|
+
var _iterator31 = _createForOfIteratorHelper(acteursEtOrganes.acteurs),
|
|
1126
|
+
_step31;
|
|
1631
1127
|
try {
|
|
1632
|
-
for (
|
|
1633
|
-
var acteur =
|
|
1128
|
+
for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
|
|
1129
|
+
var acteur = _step31.value;
|
|
1634
1130
|
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
1635
1131
|
if (acteurByUid[acteur.uid] === undefined) {
|
|
1636
1132
|
acteurByUid[acteur.uid] = acteur;
|
|
1637
1133
|
}
|
|
1638
1134
|
}
|
|
1639
1135
|
} catch (err) {
|
|
1640
|
-
|
|
1136
|
+
_iterator31.e(err);
|
|
1641
1137
|
} finally {
|
|
1642
|
-
|
|
1138
|
+
_iterator31.f();
|
|
1643
1139
|
}
|
|
1644
|
-
var
|
|
1645
|
-
|
|
1140
|
+
var _iterator32 = _createForOfIteratorHelper(acteursEtOrganes.organes),
|
|
1141
|
+
_step32;
|
|
1646
1142
|
try {
|
|
1647
|
-
for (
|
|
1648
|
-
var organe =
|
|
1143
|
+
for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
|
|
1144
|
+
var organe = _step32.value;
|
|
1649
1145
|
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
1650
1146
|
if (organeByUid[organe.uid] === undefined) {
|
|
1651
1147
|
organeByUid[organe.uid] = organe;
|
|
1652
1148
|
}
|
|
1653
1149
|
}
|
|
1654
1150
|
} catch (err) {
|
|
1655
|
-
|
|
1151
|
+
_iterator32.e(err);
|
|
1656
1152
|
} finally {
|
|
1657
|
-
|
|
1153
|
+
_iterator32.f();
|
|
1658
1154
|
}
|
|
1659
1155
|
}
|
|
1660
1156
|
} catch (err) {
|
|
1661
|
-
|
|
1157
|
+
_iterator30.e(err);
|
|
1662
1158
|
} finally {
|
|
1663
|
-
|
|
1159
|
+
_iterator30.f();
|
|
1664
1160
|
}
|
|
1665
1161
|
}
|
|
1666
1162
|
var reunionByUid = {};
|
|
1667
1163
|
var reunionsByDay = {};
|
|
1668
1164
|
var reunionsByDossierUid = {};
|
|
1669
1165
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
1670
|
-
var
|
|
1671
|
-
|
|
1166
|
+
var _iterator33 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
1167
|
+
_step33;
|
|
1672
1168
|
try {
|
|
1673
|
-
for (
|
|
1674
|
-
var _dataset7 =
|
|
1169
|
+
for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
|
|
1170
|
+
var _dataset7 = _step33.value;
|
|
1675
1171
|
if (_dataset7.ignoreForWeb) {
|
|
1676
1172
|
continue;
|
|
1677
1173
|
}
|
|
@@ -1682,36 +1178,36 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1682
1178
|
if (log) {
|
|
1683
1179
|
console.log("Loading file: ".concat(_jsonFilePath2));
|
|
1684
1180
|
}
|
|
1685
|
-
var
|
|
1181
|
+
var _json4 = _fsExtra["default"].readFileSync(_jsonFilePath2, {
|
|
1686
1182
|
encoding: "utf8"
|
|
1687
1183
|
});
|
|
1688
|
-
var agendas = _agendas.Convert.toAgendas(
|
|
1689
|
-
var
|
|
1690
|
-
|
|
1184
|
+
var agendas = _agendas.Convert.toAgendas(_json4);
|
|
1185
|
+
var _iterator34 = _createForOfIteratorHelper(agendas.reunions),
|
|
1186
|
+
_step34;
|
|
1691
1187
|
try {
|
|
1692
|
-
for (
|
|
1693
|
-
var reunion =
|
|
1188
|
+
for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
|
|
1189
|
+
var reunion = _step34.value;
|
|
1694
1190
|
if (reunionByUid[reunion.uid] === undefined) {
|
|
1695
1191
|
reunionByUid[reunion.uid] = reunion;
|
|
1696
1192
|
}
|
|
1697
|
-
var
|
|
1698
|
-
var reunionsAtDay = reunionsByDay[
|
|
1193
|
+
var day = reunion.timestampDebut.toISOString().split("T")[0];
|
|
1194
|
+
var reunionsAtDay = reunionsByDay[day];
|
|
1699
1195
|
if (reunionsAtDay === undefined) {
|
|
1700
|
-
reunionsAtDay = reunionsByDay[
|
|
1196
|
+
reunionsAtDay = reunionsByDay[day] = [];
|
|
1701
1197
|
}
|
|
1702
1198
|
reunionsAtDay.push(reunion);
|
|
1703
1199
|
var odj = reunion.odj;
|
|
1704
1200
|
if (odj !== undefined) {
|
|
1705
|
-
var
|
|
1706
|
-
|
|
1201
|
+
var _iterator35 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
1202
|
+
_step35;
|
|
1707
1203
|
try {
|
|
1708
|
-
for (
|
|
1709
|
-
var pointOdj =
|
|
1710
|
-
var
|
|
1711
|
-
|
|
1204
|
+
for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
|
|
1205
|
+
var pointOdj = _step35.value;
|
|
1206
|
+
var _iterator36 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
1207
|
+
_step36;
|
|
1712
1208
|
try {
|
|
1713
|
-
for (
|
|
1714
|
-
var dossierLegislatifRef =
|
|
1209
|
+
for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
|
|
1210
|
+
var dossierLegislatifRef = _step36.value;
|
|
1715
1211
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
1716
1212
|
if (reunionsAtDossierUid === undefined) {
|
|
1717
1213
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -1719,37 +1215,37 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1719
1215
|
reunionsAtDossierUid.push(reunion);
|
|
1720
1216
|
}
|
|
1721
1217
|
} catch (err) {
|
|
1722
|
-
|
|
1218
|
+
_iterator36.e(err);
|
|
1723
1219
|
} finally {
|
|
1724
|
-
|
|
1220
|
+
_iterator36.f();
|
|
1725
1221
|
}
|
|
1726
1222
|
}
|
|
1727
1223
|
} catch (err) {
|
|
1728
|
-
|
|
1224
|
+
_iterator35.e(err);
|
|
1729
1225
|
} finally {
|
|
1730
|
-
|
|
1226
|
+
_iterator35.f();
|
|
1731
1227
|
}
|
|
1732
1228
|
}
|
|
1733
1229
|
}
|
|
1734
1230
|
} catch (err) {
|
|
1735
|
-
|
|
1231
|
+
_iterator34.e(err);
|
|
1736
1232
|
} finally {
|
|
1737
|
-
|
|
1233
|
+
_iterator34.f();
|
|
1738
1234
|
}
|
|
1739
1235
|
}
|
|
1740
1236
|
} catch (err) {
|
|
1741
|
-
|
|
1237
|
+
_iterator33.e(err);
|
|
1742
1238
|
} finally {
|
|
1743
|
-
|
|
1239
|
+
_iterator33.f();
|
|
1744
1240
|
}
|
|
1745
1241
|
}
|
|
1746
1242
|
var amendementByUid = {};
|
|
1747
1243
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
1748
|
-
var
|
|
1749
|
-
|
|
1244
|
+
var _iterator37 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
1245
|
+
_step37;
|
|
1750
1246
|
try {
|
|
1751
|
-
for (
|
|
1752
|
-
var _dataset8 =
|
|
1247
|
+
for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {
|
|
1248
|
+
var _dataset8 = _step37.value;
|
|
1753
1249
|
if (_dataset8.ignoreForWeb) {
|
|
1754
1250
|
continue;
|
|
1755
1251
|
}
|
|
@@ -1760,40 +1256,40 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1760
1256
|
if (log) {
|
|
1761
1257
|
console.log("Loading file: ".concat(_jsonFilePath3));
|
|
1762
1258
|
}
|
|
1763
|
-
var
|
|
1259
|
+
var _json5 = _fsExtra["default"].readFileSync(_jsonFilePath3, {
|
|
1764
1260
|
encoding: "utf8"
|
|
1765
1261
|
});
|
|
1766
|
-
var amendements = _amendements.Convert.toAmendements(
|
|
1767
|
-
var
|
|
1768
|
-
|
|
1262
|
+
var amendements = _amendements.Convert.toAmendements(_json5);
|
|
1263
|
+
var _iterator38 = _createForOfIteratorHelper(amendements.textesLegislatifs),
|
|
1264
|
+
_step38;
|
|
1769
1265
|
try {
|
|
1770
|
-
for (
|
|
1771
|
-
var texteLegislatif =
|
|
1772
|
-
var
|
|
1773
|
-
|
|
1266
|
+
for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) {
|
|
1267
|
+
var texteLegislatif = _step38.value;
|
|
1268
|
+
var _iterator39 = _createForOfIteratorHelper(texteLegislatif.amendements),
|
|
1269
|
+
_step39;
|
|
1774
1270
|
try {
|
|
1775
|
-
for (
|
|
1776
|
-
var amendement =
|
|
1271
|
+
for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) {
|
|
1272
|
+
var amendement = _step39.value;
|
|
1777
1273
|
if (amendementByUid[amendement.uid] === undefined) {
|
|
1778
1274
|
amendementByUid[amendement.uid] = amendement;
|
|
1779
1275
|
}
|
|
1780
1276
|
}
|
|
1781
1277
|
} catch (err) {
|
|
1782
|
-
|
|
1278
|
+
_iterator39.e(err);
|
|
1783
1279
|
} finally {
|
|
1784
|
-
|
|
1280
|
+
_iterator39.f();
|
|
1785
1281
|
}
|
|
1786
1282
|
}
|
|
1787
1283
|
} catch (err) {
|
|
1788
|
-
|
|
1284
|
+
_iterator38.e(err);
|
|
1789
1285
|
} finally {
|
|
1790
|
-
|
|
1286
|
+
_iterator38.f();
|
|
1791
1287
|
}
|
|
1792
1288
|
}
|
|
1793
1289
|
} catch (err) {
|
|
1794
|
-
|
|
1290
|
+
_iterator37.e(err);
|
|
1795
1291
|
} finally {
|
|
1796
|
-
|
|
1292
|
+
_iterator37.f();
|
|
1797
1293
|
}
|
|
1798
1294
|
}
|
|
1799
1295
|
var documentByUid = {};
|
|
@@ -1801,11 +1297,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1801
1297
|
var dossierParlementaireByTitreChemin = {};
|
|
1802
1298
|
var dossierParlementaireByUid = {};
|
|
1803
1299
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
1804
|
-
var
|
|
1805
|
-
|
|
1300
|
+
var _iterator40 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1301
|
+
_step40;
|
|
1806
1302
|
try {
|
|
1807
|
-
for (
|
|
1808
|
-
var _dataset9 =
|
|
1303
|
+
for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
|
|
1304
|
+
var _dataset9 = _step40.value;
|
|
1809
1305
|
if (_dataset9.ignoreForWeb) {
|
|
1810
1306
|
continue;
|
|
1811
1307
|
}
|
|
@@ -1816,29 +1312,29 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1816
1312
|
if (log) {
|
|
1817
1313
|
console.log("Loading file: ".concat(_jsonFilePath4));
|
|
1818
1314
|
}
|
|
1819
|
-
var
|
|
1315
|
+
var _json6 = _fsExtra["default"].readFileSync(_jsonFilePath4, {
|
|
1820
1316
|
encoding: "utf8"
|
|
1821
1317
|
});
|
|
1822
|
-
var dossiersLegislatifs = _dossiers_legislatifs.Convert.toDossiersLegislatifs(
|
|
1823
|
-
var
|
|
1824
|
-
|
|
1318
|
+
var dossiersLegislatifs = _dossiers_legislatifs.Convert.toDossiersLegislatifs(_json6);
|
|
1319
|
+
var _iterator41 = _createForOfIteratorHelper(dossiersLegislatifs.textesLegislatifs),
|
|
1320
|
+
_step41;
|
|
1825
1321
|
try {
|
|
1826
|
-
for (
|
|
1827
|
-
var document =
|
|
1322
|
+
for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) {
|
|
1323
|
+
var document = _step41.value;
|
|
1828
1324
|
if (documentByUid[document.uid] === undefined) {
|
|
1829
1325
|
documentByUid[document.uid] = document;
|
|
1830
1326
|
}
|
|
1831
1327
|
}
|
|
1832
1328
|
} catch (err) {
|
|
1833
|
-
|
|
1329
|
+
_iterator41.e(err);
|
|
1834
1330
|
} finally {
|
|
1835
|
-
|
|
1331
|
+
_iterator41.f();
|
|
1836
1332
|
}
|
|
1837
|
-
var
|
|
1838
|
-
|
|
1333
|
+
var _iterator42 = _createForOfIteratorHelper(dossiersLegislatifs.dossiersParlementaires),
|
|
1334
|
+
_step42;
|
|
1839
1335
|
try {
|
|
1840
|
-
for (
|
|
1841
|
-
var dossier =
|
|
1336
|
+
for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
|
|
1337
|
+
var dossier = _step42.value;
|
|
1842
1338
|
var titreDossier = dossier.titreDossier;
|
|
1843
1339
|
if (titreDossier.senatChemin && dossierParlementaireBySenatChemin[titreDossier.senatChemin] === undefined) {
|
|
1844
1340
|
dossierParlementaireBySenatChemin[titreDossier.senatChemin] = dossier;
|
|
@@ -1851,15 +1347,15 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1851
1347
|
}
|
|
1852
1348
|
}
|
|
1853
1349
|
} catch (err) {
|
|
1854
|
-
|
|
1350
|
+
_iterator42.e(err);
|
|
1855
1351
|
} finally {
|
|
1856
|
-
|
|
1352
|
+
_iterator42.f();
|
|
1857
1353
|
}
|
|
1858
1354
|
}
|
|
1859
1355
|
} catch (err) {
|
|
1860
|
-
|
|
1356
|
+
_iterator40.e(err);
|
|
1861
1357
|
} finally {
|
|
1862
|
-
|
|
1358
|
+
_iterator40.f();
|
|
1863
1359
|
}
|
|
1864
1360
|
}
|
|
1865
1361
|
var photoByUid = {};
|
|
@@ -1873,10 +1369,10 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1873
1369
|
if (log) {
|
|
1874
1370
|
console.log("Loading file: ".concat(_jsonFilePath5));
|
|
1875
1371
|
}
|
|
1876
|
-
var
|
|
1372
|
+
var _json7 = _fsExtra["default"].readFileSync(_jsonFilePath5, {
|
|
1877
1373
|
encoding: "utf8"
|
|
1878
1374
|
});
|
|
1879
|
-
Object.assign(_photoByUid, JSON.parse(
|
|
1375
|
+
Object.assign(_photoByUid, JSON.parse(_json7));
|
|
1880
1376
|
} else if (log) {
|
|
1881
1377
|
console.log("Ignoring missing file: ".concat(_jsonFilePath5));
|
|
1882
1378
|
}
|
|
@@ -1887,10 +1383,10 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1887
1383
|
if (log) {
|
|
1888
1384
|
console.log("Loading file: ".concat(_jsonFilePath6));
|
|
1889
1385
|
}
|
|
1890
|
-
var
|
|
1386
|
+
var _json8 = _fsExtra["default"].readFileSync(_jsonFilePath6, {
|
|
1891
1387
|
encoding: "utf8"
|
|
1892
1388
|
});
|
|
1893
|
-
Object.assign(_photoByUid, JSON.parse(
|
|
1389
|
+
Object.assign(_photoByUid, JSON.parse(_json8));
|
|
1894
1390
|
} else if (log) {
|
|
1895
1391
|
console.log("Ignoring missing file: ".concat(_jsonFilePath6));
|
|
1896
1392
|
}
|
|
@@ -1898,11 +1394,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1898
1394
|
}
|
|
1899
1395
|
var scrutinByUid = {};
|
|
1900
1396
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
1901
|
-
var
|
|
1902
|
-
|
|
1397
|
+
var _iterator43 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1398
|
+
_step43;
|
|
1903
1399
|
try {
|
|
1904
|
-
for (
|
|
1905
|
-
var _dataset10 =
|
|
1400
|
+
for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {
|
|
1401
|
+
var _dataset10 = _step43.value;
|
|
1906
1402
|
if (_dataset10.ignoreForWeb) {
|
|
1907
1403
|
continue;
|
|
1908
1404
|
}
|
|
@@ -1913,38 +1409,38 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1913
1409
|
if (log) {
|
|
1914
1410
|
console.log("Loading file: ".concat(_jsonFilePath7));
|
|
1915
1411
|
}
|
|
1916
|
-
var
|
|
1412
|
+
var _json9 = _fsExtra["default"].readFileSync(_jsonFilePath7, {
|
|
1917
1413
|
encoding: "utf8"
|
|
1918
1414
|
});
|
|
1919
|
-
var scrutins = _scrutins.Convert.toScrutins(
|
|
1920
|
-
var
|
|
1921
|
-
|
|
1415
|
+
var scrutins = _scrutins.Convert.toScrutins(_json9);
|
|
1416
|
+
var _iterator44 = _createForOfIteratorHelper(scrutins.scrutins),
|
|
1417
|
+
_step44;
|
|
1922
1418
|
try {
|
|
1923
|
-
for (
|
|
1924
|
-
var scrutin =
|
|
1419
|
+
for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) {
|
|
1420
|
+
var scrutin = _step44.value;
|
|
1925
1421
|
if (scrutinByUid[scrutin.uid] === undefined) {
|
|
1926
1422
|
scrutinByUid[scrutin.uid] = scrutin;
|
|
1927
1423
|
}
|
|
1928
1424
|
}
|
|
1929
1425
|
} catch (err) {
|
|
1930
|
-
|
|
1426
|
+
_iterator44.e(err);
|
|
1931
1427
|
} finally {
|
|
1932
|
-
|
|
1428
|
+
_iterator44.f();
|
|
1933
1429
|
}
|
|
1934
1430
|
}
|
|
1935
1431
|
} catch (err) {
|
|
1936
|
-
|
|
1432
|
+
_iterator43.e(err);
|
|
1937
1433
|
} finally {
|
|
1938
|
-
|
|
1434
|
+
_iterator43.f();
|
|
1939
1435
|
}
|
|
1940
1436
|
}
|
|
1941
1437
|
var questionByUid = {};
|
|
1942
1438
|
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
1943
|
-
var
|
|
1944
|
-
|
|
1439
|
+
var _iterator45 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
1440
|
+
_step45;
|
|
1945
1441
|
try {
|
|
1946
|
-
for (
|
|
1947
|
-
var _dataset11 =
|
|
1442
|
+
for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) {
|
|
1443
|
+
var _dataset11 = _step45.value;
|
|
1948
1444
|
if (_dataset11.ignoreForWeb) {
|
|
1949
1445
|
continue;
|
|
1950
1446
|
}
|
|
@@ -1955,38 +1451,38 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1955
1451
|
if (log) {
|
|
1956
1452
|
console.log("Loading file: ".concat(_jsonFilePath8));
|
|
1957
1453
|
}
|
|
1958
|
-
var
|
|
1454
|
+
var _json10 = _fsExtra["default"].readFileSync(_jsonFilePath8, {
|
|
1959
1455
|
encoding: "utf8"
|
|
1960
1456
|
});
|
|
1961
|
-
var questions = _questions.Convert.toQuestions(
|
|
1962
|
-
var
|
|
1963
|
-
|
|
1457
|
+
var questions = _questions.Convert.toQuestions(_json10);
|
|
1458
|
+
var _iterator46 = _createForOfIteratorHelper(questions.questions),
|
|
1459
|
+
_step46;
|
|
1964
1460
|
try {
|
|
1965
|
-
for (
|
|
1966
|
-
var question =
|
|
1461
|
+
for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
|
|
1462
|
+
var question = _step46.value;
|
|
1967
1463
|
if (questionByUid[question.uid] === undefined) {
|
|
1968
1464
|
questionByUid[question.uid] = question;
|
|
1969
1465
|
}
|
|
1970
1466
|
}
|
|
1971
1467
|
} catch (err) {
|
|
1972
|
-
|
|
1468
|
+
_iterator46.e(err);
|
|
1973
1469
|
} finally {
|
|
1974
|
-
|
|
1470
|
+
_iterator46.f();
|
|
1975
1471
|
}
|
|
1976
1472
|
}
|
|
1977
1473
|
} catch (err) {
|
|
1978
|
-
|
|
1474
|
+
_iterator45.e(err);
|
|
1979
1475
|
} finally {
|
|
1980
|
-
|
|
1476
|
+
_iterator45.f();
|
|
1981
1477
|
}
|
|
1982
1478
|
}
|
|
1983
1479
|
var compteRenduByUid = {};
|
|
1984
1480
|
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1985
|
-
var
|
|
1986
|
-
|
|
1481
|
+
var _iterator47 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1482
|
+
_step47;
|
|
1987
1483
|
try {
|
|
1988
|
-
for (
|
|
1989
|
-
var _dataset12 =
|
|
1484
|
+
for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) {
|
|
1485
|
+
var _dataset12 = _step47.value;
|
|
1990
1486
|
if (_dataset12.ignoreForWeb) {
|
|
1991
1487
|
continue;
|
|
1992
1488
|
}
|
|
@@ -1997,29 +1493,29 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1997
1493
|
if (log) {
|
|
1998
1494
|
console.log("Loading file: ".concat(_jsonFilePath9));
|
|
1999
1495
|
}
|
|
2000
|
-
var
|
|
1496
|
+
var _json11 = _fsExtra["default"].readFileSync(_jsonFilePath9, {
|
|
2001
1497
|
encoding: "utf8"
|
|
2002
1498
|
});
|
|
2003
|
-
var comptesRendus = _debats.Convert.toComptesRendus(
|
|
2004
|
-
var
|
|
2005
|
-
|
|
1499
|
+
var comptesRendus = _debats.Convert.toComptesRendus(_json11);
|
|
1500
|
+
var _iterator48 = _createForOfIteratorHelper(comptesRendus.comptesRendus),
|
|
1501
|
+
_step48;
|
|
2006
1502
|
try {
|
|
2007
|
-
for (
|
|
2008
|
-
var compteRendu =
|
|
1503
|
+
for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) {
|
|
1504
|
+
var compteRendu = _step48.value;
|
|
2009
1505
|
if (compteRenduByUid[compteRendu.uid] === undefined) {
|
|
2010
1506
|
compteRenduByUid[compteRendu.uid] = compteRendu;
|
|
2011
1507
|
}
|
|
2012
1508
|
}
|
|
2013
1509
|
} catch (err) {
|
|
2014
|
-
|
|
1510
|
+
_iterator48.e(err);
|
|
2015
1511
|
} finally {
|
|
2016
|
-
|
|
1512
|
+
_iterator48.f();
|
|
2017
1513
|
}
|
|
2018
1514
|
}
|
|
2019
1515
|
} catch (err) {
|
|
2020
|
-
|
|
1516
|
+
_iterator47.e(err);
|
|
2021
1517
|
} finally {
|
|
2022
|
-
|
|
1518
|
+
_iterator47.f();
|
|
2023
1519
|
}
|
|
2024
1520
|
}
|
|
2025
1521
|
return {
|
|
@@ -2055,19 +1551,19 @@ function loadAssembleeDocumentFile(dataDir, uid, formats) {
|
|
|
2055
1551
|
return undefined;
|
|
2056
1552
|
}
|
|
2057
1553
|
var index = _fsExtra["default"].readJsonSync(indexPath);
|
|
2058
|
-
var
|
|
2059
|
-
|
|
1554
|
+
var _iterator49 = _createForOfIteratorHelper(formats),
|
|
1555
|
+
_step49;
|
|
2060
1556
|
try {
|
|
2061
|
-
for (
|
|
1557
|
+
for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) {
|
|
2062
1558
|
var _index$format;
|
|
2063
|
-
var format =
|
|
2064
|
-
var
|
|
2065
|
-
|
|
1559
|
+
var format = _step49.value;
|
|
1560
|
+
var _iterator50 = _createForOfIteratorHelper((_index$format = index[format]) !== null && _index$format !== void 0 ? _index$format : []),
|
|
1561
|
+
_step50;
|
|
2066
1562
|
try {
|
|
2067
|
-
for (
|
|
2068
|
-
var
|
|
2069
|
-
filename =
|
|
2070
|
-
url =
|
|
1563
|
+
for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) {
|
|
1564
|
+
var _step50$value = _step50.value,
|
|
1565
|
+
filename = _step50$value.filename,
|
|
1566
|
+
url = _step50$value.url;
|
|
2071
1567
|
if (filename === undefined) {
|
|
2072
1568
|
continue;
|
|
2073
1569
|
}
|
|
@@ -2078,22 +1574,22 @@ function loadAssembleeDocumentFile(dataDir, uid, formats) {
|
|
|
2078
1574
|
};
|
|
2079
1575
|
}
|
|
2080
1576
|
} catch (err) {
|
|
2081
|
-
|
|
1577
|
+
_iterator50.e(err);
|
|
2082
1578
|
} finally {
|
|
2083
|
-
|
|
1579
|
+
_iterator50.f();
|
|
2084
1580
|
}
|
|
2085
1581
|
}
|
|
2086
1582
|
} catch (err) {
|
|
2087
|
-
|
|
1583
|
+
_iterator49.e(err);
|
|
2088
1584
|
} finally {
|
|
2089
|
-
|
|
1585
|
+
_iterator49.f();
|
|
2090
1586
|
}
|
|
2091
1587
|
return undefined;
|
|
2092
1588
|
}
|
|
2093
1589
|
function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
2094
|
-
var
|
|
2095
|
-
|
|
2096
|
-
log =
|
|
1590
|
+
var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
1591
|
+
_ref4$log = _ref4.log,
|
|
1592
|
+
log = _ref4$log === void 0 ? false : _ref4$log;
|
|
2097
1593
|
var jsonFilePath = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
2098
1594
|
// TODO: Handle Legislature.All.
|
|
2099
1595
|
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.Seize : legislature), "deputes.json");
|
|
@@ -2106,9 +1602,9 @@ function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
|
2106
1602
|
return JSON.parse(json);
|
|
2107
1603
|
}
|
|
2108
1604
|
function loadAssembleePhotosSenateurs(dataDir) {
|
|
2109
|
-
var
|
|
2110
|
-
|
|
2111
|
-
log =
|
|
1605
|
+
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1606
|
+
_ref5$log = _ref5.log,
|
|
1607
|
+
log = _ref5$log === void 0 ? false : _ref5$log;
|
|
2112
1608
|
var jsonFilePath = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
2113
1609
|
if (log) {
|
|
2114
1610
|
console.log("Loading file: ".concat(jsonFilePath));
|
|
@@ -2140,15 +1636,7 @@ function pathFromDocumentUid(documentsDir, uid) {
|
|
|
2140
1636
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
2141
1637
|
}
|
|
2142
1638
|
function pathFromDossierParlementaireUid(dossiersDir, uid) {
|
|
2143
|
-
|
|
2144
|
-
_assert["default"].notStrictEqual(match, null, "Unexpected structure for dossier parlementaire UID: ".concat(uid));
|
|
2145
|
-
var republiqueDir = _path["default"].join(dossiersDir, match[1]);
|
|
2146
|
-
var legislatureDir = _path["default"].join(republiqueDir, match[2]);
|
|
2147
|
-
var numero = "000000" + match[3];
|
|
2148
|
-
numero = numero.substring(numero.length - 6);
|
|
2149
|
-
var numeroMilliersDir = _path["default"].join(legislatureDir, numero.substring(0, 3));
|
|
2150
|
-
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
2151
|
-
return _path["default"].join(numeroMilliersDir, uid);
|
|
1639
|
+
return pathFromUid(dossiersDir, uid, dossierUidRegex);
|
|
2152
1640
|
}
|
|
2153
1641
|
function pathFromReunionUid(reunionsDir, uid) {
|
|
2154
1642
|
var match = reunionUidRegex.exec(uid);
|
|
@@ -2177,6 +1665,12 @@ function pathFromScrutinUid(scrutinsDir, uid) {
|
|
|
2177
1665
|
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
2178
1666
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
2179
1667
|
}
|
|
1668
|
+
function pathFromQuestionUid(dataDir, uid) {
|
|
1669
|
+
return pathFromUid(dataDir, uid, questionUidRegex);
|
|
1670
|
+
}
|
|
1671
|
+
function pathFromCompteRenduUid(dataDir, uid) {
|
|
1672
|
+
return pathFromUid(dataDir, uid, compteRenduUidRegex);
|
|
1673
|
+
}
|
|
2180
1674
|
|
|
2181
1675
|
// Get standard path for object with uid : republique > legislature > group objects by thousands
|
|
2182
1676
|
function pathFromUid(dataDir, uid, dataRegexp) {
|
|
@@ -2190,4 +1684,4 @@ function pathFromUid(dataDir, uid, dataRegexp) {
|
|
|
2190
1684
|
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
2191
1685
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
2192
1686
|
}
|
|
2193
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJGIiwiX2UiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsInRvU3RyaW5nIiwidGVzdCIsImxlbiIsImFycjIiLCJfd3JhcFJlZ0V4cCIsIkJhYmVsUmVnRXhwIiwiUmVnRXhwIiwiV2Vha01hcCIsInNldCIsImdldCIsIl9zZXRQcm90b3R5cGVPZiIsImJ1aWxkR3JvdXBzIiwicmVkdWNlIiwiX2luaGVyaXRzIiwiZXhlYyIsImdyb3VwcyIsImluZGljZXMiLCJyZXBsYWNlIiwiam9pbiIsImFyZ3VtZW50cyIsImFwcGx5Iiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiYmluZCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlIiwicmVwdWJsaXF1ZSIsImxlZ2lzbGF0dXJlIiwiZXRhdCIsIm51bWVybyIsImRvY3VtZW50VHlwZTIiLCJjaGFtYnJlMiIsInJlcHVibGlxdWUyIiwibGVnaXNsYXR1cmUyIiwibnVtZXJvMiIsImRvc3NpZXJVaWRSZWdleCIsInJldW5pb25VaWRSZWdleCIsInNjcnV0aW5VaWRSZWdleCIsIml0ZXJMb2FkQXNzZW1ibGVlQWN0ZXVycyIsImRhdGFEaXIiLCJfcmVmIiwidW5kZWZpbmVkIiwiX3JlZiRub1ZhbGlkYXRpb24iLCJub1ZhbGlkYXRpb24iLCJfcmVmJGxvZyIsImxvZyIsIl9jYWxsZWUiLCJhY3RldXJzVWlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJkYXRhc2V0IiwiZGF0YXNldERpciIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ckZpbGVQYXRoIiwiYWN0ZXVySnNvbiIsImFjdGV1ciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJTZXQiLCJkYXRhc2V0cyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJMZWdpc2xhdHVyZSIsIkFsbCIsInBhdGgiLCJmaWxlbmFtZSIsIndhbGtEaXIiLCJlbmRzV2l0aCIsImNvbmNhdCIsImNvbnNvbGUiLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiSlNPTiIsInBhcnNlIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImhhcyIsInVpZCIsImFkZCIsImRhdGFzZXRMZWdpc2xhdHVyZSIsInQwIiwidDEiLCJpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzIiwiX3JlZjIiLCJfcmVmMiRub1ZhbGlkYXRpb24iLCJfcmVmMiRsb2ciLCJfY2FsbGVlMiIsImFtZW5kZW1lbnRzVWlkIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYW1lbmRlbWVudHMiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsIl9yZWYzIiwiX3JlZjMkbm9WYWxpZGF0aW9uIiwiX3JlZjMkbG9nIiwiX2NhbGxlZTMiLCJkb2N1bWVudHNVaWQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfcmVmNCIsIl9yZWY0JG5vVmFsaWRhdGlvbiIsIl9yZWY0JGxvZyIsIl9jYWxsZWU0IiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlc1VpZCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIml0ZXJMb2FkQXNzZW1ibGVlT3JnYW5lcyIsIl9yZWY1IiwiX3JlZjUkbm9WYWxpZGF0aW9uIiwiX3JlZjUkbG9nIiwiX2NhbGxlZTUiLCJvcmdhbmVzVWlkIiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwidG9PcmdhbmUiLCJpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zIiwiX3JlZjYiLCJfcmVmNiRub1ZhbGlkYXRpb24iLCJfcmVmNiRsb2ciLCJfY2FsbGVlNiIsInJldW5pb25zVWlkIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25GaWxlUGF0aCIsInJldW5pb25Kc29uIiwicmV1bmlvbiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFnZW5kYXMiLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMiLCJfcmVmNyIsIl9yZWY3JG5vVmFsaWRhdGlvbiIsIl9yZWY3JGxvZyIsIl9jYWxsZWU3Iiwic2NydXRpbnNVaWQiLCJfaXRlcmF0b3IxMyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3Iiwic2NydXRpbnMiLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJpdGVyTG9hZEFzc2VtYmxlZVF1ZXN0aW9ucyIsIl9yZWY4IiwiX3JlZjgkbm9WYWxpZGF0aW9uIiwiX3JlZjgkbG9nIiwiX2NhbGxlZTgiLCJxdWVzdGlvbnNVaWQiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJxdWVzdGlvblNwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvbkZpbGVQYXRoIiwicXVlc3Rpb25Kc29uIiwicXVlc3Rpb24iLCJfY2FsbGVlOCQiLCJfY29udGV4dDgiLCJxdWVzdGlvbnMiLCJRdWVzdGlvbnNDb252ZXJ0IiwidG9RdWVzdGlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlQ29tcHRlc1JlbmR1cyIsIl9yZWY5IiwiX3JlZjkkbm9WYWxpZGF0aW9uIiwiX3JlZjkkbG9nIiwiX2NhbGxlZTkiLCJjb21wdGVzUmVuZHVzVWlkIiwiX2l0ZXJhdG9yMTciLCJfc3RlcDE3IiwiX2l0ZXJhdG9yMTgiLCJfc3RlcDE4IiwiY29tcHRlUmVuZHVTcGxpdFBhdGgiLCJjb21wdGVSZW5kdUZpbGVuYW1lIiwiY29tcHRlUmVuZHVGaWxlUGF0aCIsImNvbXB0ZVJlbmR1SnNvbiIsImNvbXB0ZVJlbmR1IiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJDb21wdGVzUmVuZHVzQ29udmVydCIsInRvQ29tcHRlUmVuZHUiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImVuYWJsZWREYXRhc2V0cyIsIl9yZWYxMCIsIl9yZWYxMCRsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3IyMiIsIl9zdGVwMjIiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5Iiwib2RqIiwiX2l0ZXJhdG9yMjQiLCJwb2ludHNPZGoiLCJfc3RlcDI0IiwicG9pbnRPZGoiLCJfaXRlcmF0b3IyNSIsImRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIiwiX3N0ZXAyNSIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjI2IiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsImRvY3VtZW50QnlVaWQiLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjI4IiwiX3N0ZXAyOCIsIl9pdGVyYXRvcjI5IiwiX3N0ZXAyOSIsIl9pdGVyYXRvcjMwIiwiX3N0ZXAzMCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0aXRyZURvc3NpZXIiLCJzZW5hdENoZW1pbiIsInRpdHJlQ2hlbWluIiwicGhvdG9CeVVpZCIsIlBob3RvcyIsImpzb25GaWxlUGF0aCIsIlNlaXplIiwiZXhpc3RzU3luYyIsImpzb24iLCJhc3NpZ24iLCJzY3J1dGluQnlVaWQiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjMxIiwiX3N0ZXAzMSIsIl9pdGVyYXRvcjMyIiwiX3N0ZXAzMiIsInF1ZXN0aW9uQnlVaWQiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IzMyIsIl9zdGVwMzMiLCJfaXRlcmF0b3IzNCIsIl9zdGVwMzQiLCJjb21wdGVSZW5kdUJ5VWlkIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IzNSIsIl9zdGVwMzUiLCJfaXRlcmF0b3IzNiIsIl9zdGVwMzYiLCJjb21wdGVSZW5kdVBhdGgiLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWYxMSIsIl9yZWYxMSRsb2ciLCJfaXRlcmF0b3IzNyIsIl9zdGVwMzciLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IzOCIsImFjdGV1cnMiLCJfc3RlcDM4IiwiX2l0ZXJhdG9yMzkiLCJvcmdhbmVzIiwiX3N0ZXAzOSIsIl9pdGVyYXRvcjQwIiwiX3N0ZXA0MCIsInRvQWdlbmRhcyIsIl9pdGVyYXRvcjQxIiwicmV1bmlvbnMiLCJfc3RlcDQxIiwiX2l0ZXJhdG9yNDIiLCJfc3RlcDQyIiwiX2l0ZXJhdG9yNDMiLCJfc3RlcDQzIiwiX2l0ZXJhdG9yNDQiLCJfc3RlcDQ0IiwidG9BbWVuZGVtZW50cyIsIl9pdGVyYXRvcjQ1IiwidGV4dGVzTGVnaXNsYXRpZnMiLCJfc3RlcDQ1IiwidGV4dGVMZWdpc2xhdGlmIiwiX2l0ZXJhdG9yNDYiLCJfc3RlcDQ2IiwiX2l0ZXJhdG9yNDciLCJfc3RlcDQ3IiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yNDgiLCJfc3RlcDQ4IiwiX2l0ZXJhdG9yNDkiLCJkb3NzaWVyc1BhcmxlbWVudGFpcmVzIiwiX3N0ZXA0OSIsIl9pdGVyYXRvcjUwIiwiX3N0ZXA1MCIsInRvU2NydXRpbnMiLCJfaXRlcmF0b3I1MSIsIl9zdGVwNTEiLCJfaXRlcmF0b3I1MiIsIl9zdGVwNTIiLCJ0b1F1ZXN0aW9ucyIsIl9pdGVyYXRvcjUzIiwiX3N0ZXA1MyIsIl9pdGVyYXRvcjU0IiwiX3N0ZXA1NCIsImNvbXB0ZXNSZW5kdXMiLCJ0b0NvbXB0ZXNSZW5kdXMiLCJfaXRlcmF0b3I1NSIsIl9zdGVwNTUiLCJsb2FkQXNzZW1ibGVlRG9jdW1lbnRGaWxlIiwiZm9ybWF0cyIsImRvY3VtZW50c0RpciIsImRvY3VtZW50RGlyIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsImluZGV4UGF0aCIsInBhdGhFeGlzdHNTeW5jIiwiaW5kZXgiLCJyZWFkSnNvblN5bmMiLCJfaXRlcmF0b3I1NiIsIl9zdGVwNTYiLCJfaW5kZXgkZm9ybWF0IiwiZm9ybWF0IiwiX2l0ZXJhdG9yNTciLCJfc3RlcDU3IiwiX3N0ZXA1NyR2YWx1ZSIsInVybCIsImxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzIiwiX3JlZjEyIiwiX3JlZjEyJGxvZyIsImxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMiLCJfcmVmMTMiLCJfcmVmMTMkbG9nIiwiX2dyb3VwcyRkb2N1bWVudFR5cGUiLCJfZ3JvdXBzJGNoYW1icmUiLCJfZ3JvdXBzJHJlcHVibGlxdWUiLCJfZ3JvdXBzJGxlZ2lzbGF0dXJlIiwiX2dyb3VwcyRudW1lcm8iLCJtYXRjaCIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImVuc3VyZURpclN5bmMiLCJldGF0RGlyIiwic3Vic3RyaW5nIiwibnVtZXJvTWlsbGllcnNEaXIiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiLCJwYXRoRnJvbVVpZCIsImRhdGFSZWdleHAiXSwic291cmNlcyI6WyIuLi9zcmMvbG9hZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudEZpbGVzSW5kZXggfSBmcm9tIFwiLi9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCB9IGZyb20gXCIuL3VybHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbiAgcmVhZG9ubHkgcXVlc3Rpb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBRdWVzdGlvbiB9XG4gIHJlYWRvbmx5IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oKD88ZG9jdW1lbnRUeXBlPkFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xNSU9OfFBJT058UE5SRXxQUkpMfFJBUFB8UklORnxSSU9OKSg/PGNoYW1icmU+QU58Q0d8U04pKD88cmVwdWJsaXF1ZT5SXFxkKylbTFNdKD88bGVnaXNsYXR1cmU+XFxkKykoPzxldGF0PkJ8QlRBfEJUQ3xUQVApKD88bnVtZXJvPlxcZCspKC0uKik/KXwoKD88ZG9jdW1lbnRUeXBlMj5NSU9OKSg/PGNoYW1icmUyPkFOfFNOKSg/PHJlcHVibGlxdWUyPlJcXGQrKVtMU10oPzxsZWdpc2xhdHVyZTI+XFxkKyktTig/PG51bWVybzI+XFxkKykpJC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUKEFOfENHKShSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFjdGV1cjogQWN0ZXVyOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBhY3RldXJzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGV1ckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBsZXQgYWN0ZXVyOiBBY3RldXJcbiAgICAgIGlmIChub1ZhbGlkYXRpb24pIHtcbiAgICAgICAgYWN0ZXVyID0gSlNPTi5wYXJzZShhY3RldXJKc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgIH1cbiAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICBpZiAoYWN0ZXVyc1VpZC5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFjdGV1cnNVaWQuYWRkKGFjdGV1ci51aWQpXG4gICAgICB5aWVsZCB7IGFjdGV1ciwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQ7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGFtZW5kZW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGxldCBhbWVuZGVtZW50OiBBbWVuZGVtZW50XG4gICAgICBpZiAobm9WYWxpZGF0aW9uKSB7XG4gICAgICAgIGFtZW5kZW1lbnQgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRKc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW1lbmRlbWVudCA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICB9XG4gICAgICBpZiAoYW1lbmRlbWVudHNVaWQuaGFzKGFtZW5kZW1lbnQudWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgYW1lbmRlbWVudHNVaWQuYWRkKGFtZW5kZW1lbnQudWlkKVxuICAgICAgeWllbGQgeyBhbWVuZGVtZW50LCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGRvY3VtZW50OiBEb2N1bWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgZG9jdW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9jdW1lbnRTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgbGV0IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICAgaWYgKG5vVmFsaWRhdGlvbikge1xuICAgICAgICBkb2N1bWVudCA9IEpTT04ucGFyc2UoZG9jdW1lbnRKc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgIH1cbiAgICAgIGlmIChkb2N1bWVudHNVaWQuaGFzKGRvY3VtZW50LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50c1VpZC5hZGQoZG9jdW1lbnQudWlkKVxuICAgICAgeWllbGQgeyBkb2N1bWVudCwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IG5vVmFsaWRhdGlvbiA9IGZhbHNlLCBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHtcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlXG4gIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcbiAgICAgIFwiZG9zc2llcnNcIixcbiAgICBdKSkge1xuICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSA9XG4gICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW2Rvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIWRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YXNldERpcixcbiAgICAgICAgLi4uZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgsXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZVBhdGgsXG4gICAgICAgIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGxldCBkb3NzaWVyUGFybGVtZW50YWlyZTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgICAgIGlmIChub1ZhbGlkYXRpb24pIHtcbiAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUgPSBKU09OLnBhcnNlKGRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVKc29uLFxuICAgICAgICAgIClcbiAgICAgIH1cblxuICAgICAgaWYgKGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQuaGFzKGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQuYWRkKGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZClcbiAgICAgIHlpZWxkIHsgZG9zc2llclBhcmxlbWVudGFpcmUsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IG9yZ2FuZTogT3JnYW5lOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBvcmdhbmVzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZ2FuZUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBsZXQgb3JnYW5lOiBPcmdhbmVcbiAgICAgIGlmIChub1ZhbGlkYXRpb24pIHtcbiAgICAgICAgb3JnYW5lID0gSlNPTi5wYXJzZShvcmdhbmVKc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgIH1cbiAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICBpZiAob3JnYW5lc1VpZC5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIG9yZ2FuZXNVaWQuYWRkKG9yZ2FuZS51aWQpXG4gICAgICB5aWVsZCB7IG9yZ2FuZSwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHJldW5pb246IFJldW5pb247IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IHJldW5pb25zVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cmV1bmlvbkZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuXG4gICAgICBsZXQgcmV1bmlvbjogUmV1bmlvblxuICAgICAgaWYgKG5vVmFsaWRhdGlvbikge1xuICAgICAgICByZXVuaW9uID0gSlNPTi5wYXJzZShyZXVuaW9uSnNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXVuaW9uc1VpZC5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICByZXVuaW9uc1VpZC5hZGQocmV1bmlvbi51aWQpXG4gICAgICB5aWVsZCB7IHJldW5pb24sIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVTY3J1dGlucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbm9WYWxpZGF0aW9uID0gZmFsc2UsIGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBzY3J1dGluOiBTY3J1dGluOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBzY3J1dGluc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtzY3J1dGluRmlsZVBhdGh94oCmYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG5cbiAgICAgIGxldCBzY3J1dGluOiBTY3J1dGluXG4gICAgICBpZiAobm9WYWxpZGF0aW9uKSB7XG4gICAgICAgIHNjcnV0aW4gPSBKU09OLnBhcnNlKHNjcnV0aW5Kc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChzY3J1dGluc1VpZC5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBzY3J1dGluc1VpZC5hZGQoc2NydXRpbi51aWQpXG4gICAgICB5aWVsZCB7IHNjcnV0aW4sIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVRdWVzdGlvbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IG5vVmFsaWRhdGlvbiA9IGZhbHNlLCBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgcXVlc3Rpb246IFF1ZXN0aW9uOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBxdWVzdGlvbnNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgcXVlc3Rpb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9IHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgcXVlc3Rpb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5xdWVzdGlvblNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtxdWVzdGlvbkZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBxdWVzdGlvbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhxdWVzdGlvbkZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG5cbiAgICAgIGxldCBxdWVzdGlvbjogUXVlc3Rpb25cbiAgICAgIGlmIChub1ZhbGlkYXRpb24pIHtcbiAgICAgICAgcXVlc3Rpb24gPSBKU09OLnBhcnNlKHF1ZXN0aW9uSnNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXN0aW9uID0gUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHF1ZXN0aW9uc1VpZC5oYXMocXVlc3Rpb24udWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcXVlc3Rpb25zVWlkLmFkZChxdWVzdGlvbi51aWQpXG4gICAgICB5aWVsZCB7IHF1ZXN0aW9uLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlQ29tcHRlc1JlbmR1cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbm9WYWxpZGF0aW9uID0gZmFsc2UsIGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBjb21wdGVSZW5kdTogQ29tcHRlUmVuZHU7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGNvbXB0ZXNSZW5kdXNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC54bWwkLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICBjb21wdGVSZW5kdVNwbGl0UGF0aFtjb21wdGVSZW5kdVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFjb21wdGVSZW5kdUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uY29tcHRlUmVuZHVTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoY29tcHRlUmVuZHVGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuXG4gICAgICBsZXQgY29tcHRlUmVuZHU6IENvbXB0ZVJlbmR1XG4gICAgICBpZiAobm9WYWxpZGF0aW9uKSB7XG4gICAgICAgIGNvbXB0ZVJlbmR1ID0gSlNPTi5wYXJzZShjb21wdGVSZW5kdUpzb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wdGVSZW5kdSA9IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgfVxuICAgICAgaWYgKGNvbXB0ZXNSZW5kdXNVaWQuaGFzKGNvbXB0ZVJlbmR1LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbXB0ZXNSZW5kdXNVaWQuYWRkKGNvbXB0ZVJlbmR1LnVpZClcbiAgICAgIHlpZWxkIHsgY29tcHRlUmVuZHUsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy5cbi8vLyBEZXByZWNhdGVkOiBVc2UgaXRlckxvYWQuLi4gaXRlcmF0b3JzIGluc3RlYWQuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHF1ZXN0aW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUXVlc3Rpb24gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9IHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnF1ZXN0aW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtxdWVzdGlvbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBpZiAocXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBxdWVzdGlvbkJ5VWlkW3F1ZXN0aW9uLnVpZF0gPSBxdWVzdGlvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29tcHRlUmVuZHVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBDb21wdGVSZW5kdSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPSBjb21wdGVSZW5kdVBhdGhbY29tcHRlUmVuZHVQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghY29tcHRlUmVuZHVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmNvbXB0ZVJlbmR1UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGNvbXB0ZVJlbmR1RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdShjb21wdGVSZW5kdUpzb24pXG4gICAgICAgIGlmIChjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbXB0ZVJlbmR1QnlVaWRbY29tcHRlUmVuZHUudWlkXSA9IGNvbXB0ZVJlbmR1XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgICBxdWVzdGlvbkJ5VWlkLFxuICAgIGNvbXB0ZVJlbmR1QnlVaWQsXG4gIH1cbn1cblxuLy8vIExvYWQgZGF0YSBmcm9tIGJpZyBtb25vbHl0aWMgZmlsZXMuXG4vLy8gRGVwcmVjYXRlZDogQXNzZW1ibMOpZSBuYXRpb25hbGUgb3BlbiBkYXRhIG5vIG1vcmUgdXNlcyBtb25vbHl0aWMgZmlsZXMuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWN0ZXVyc0V0T3JnYW5lcyA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBhY3RldXIgb2YgYWN0ZXVyc0V0T3JnYW5lcy5hY3RldXJzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2YgYWN0ZXVyc0V0T3JnYW5lcy5vcmdhbmVzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhZ2VuZGFzID0gQWdlbmRhc0NvbnZlcnQudG9BZ2VuZGFzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2YgYWdlbmRhcy5yZXVuaW9ucykge1xuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudHMoanNvbilcbiAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIGFtZW5kZW1lbnRzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBkb3NzaWVyc0xlZ2lzbGF0aWZzID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyIG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcnNQYXJsZW1lbnRhaXJlcykge1xuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIGNvbnN0IHBob3RvQnlVaWQgPSB7fVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBxdWVzdGlvbnMgPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb25zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9ucy5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID0gcXVlc3Rpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBjb21wdGVzUmVuZHVzID0gQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVzUmVuZHVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1IG9mIGNvbXB0ZXNSZW5kdXMuY29tcHRlc1JlbmR1cykge1xuICAgICAgICBpZiAoY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPSBjb21wdGVSZW5kdVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gICAgcXVlc3Rpb25CeVVpZCxcbiAgICBjb21wdGVSZW5kdUJ5VWlkLFxuICB9XG59XG5cbi8qKlxuICogUmVhZCBpbmZvcyBvZiBhIGRvY3VtZW50IG9yIGEgZGl2aXNpb24gb2YgYSBkb2N1bWVudCBmcm9tIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIGRhdGFEaXJcbiAqIEBwYXJhbSB1aWQgVUlEIG9mIGEgZG9jdW1lbnQgb3IgYSBkaXZpc2lvblxuICogQHBhcmFtIGZvcm1hdHMgcmVxdWVzdGVkIGZvcm1hdHMgb2YgdGhlIGRvY3VtZW50IGluIGRlY3JlYXNpbmcgcHJlZmVyZW5jZSBvcmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURvY3VtZW50RmlsZShcbiAgZGF0YURpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbiAgZm9ybWF0czogRG9jdW1lbnRVcmxGb3JtYXRbXSxcbik6XG4gIHwge1xuICAgICAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdFxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgICB1cmw6IHN0cmluZ1xuICAgIH1cbiAgfCB1bmRlZmluZWQge1xuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgY29uc3QgZG9jdW1lbnREaXIgPSBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0RpciwgdWlkKVxuICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIFwiaW5kZXguanNvblwiKVxuICBpZiAoIWZzLnBhdGhFeGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgaW5kZXggPSBmcy5yZWFkSnNvblN5bmMoaW5kZXhQYXRoKSBhcyBEb2N1bWVudEZpbGVzSW5kZXhcbiAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgIGZvciAoY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gb2YgaW5kZXhbZm9ybWF0XSA/PyBbXSkge1xuICAgICAgaWYgKGZpbGVuYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGZvcm1hdCwgcGF0aDogcGF0aC5qb2luKGRvY3VtZW50RGlyLCBmaWxlbmFtZSksIHVybCB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgfWAsXG4gICAgXCJkZXB1dGVzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSB1aWQubWF0Y2goZG9jdW1lbnRVaWRSZWdleClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb2N1bWVudCBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgZ3JvdXBzID0gbWF0Y2ghLmdyb3VwcyBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihcbiAgICBkb2N1bWVudHNEaXIsXG4gICAgZ3JvdXBzLmRvY3VtZW50VHlwZSA/PyBncm91cHMuZG9jdW1lbnRUeXBlMixcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKGRvY3VtZW50VHlwZSwgZ3JvdXBzLmNoYW1icmUgPz8gZ3JvdXBzLmNoYW1icmUyKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKFxuICAgIGNoYW1icmVEaXIsXG4gICAgZ3JvdXBzLnJlcHVibGlxdWUgPz8gZ3JvdXBzLnJlcHVibGlxdWUyLFxuICApXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKFxuICAgIHJlcHVibGlxdWVEaXIsXG4gICAgZ3JvdXBzLmxlZ2lzbGF0dXJlID8/IGdyb3Vwcy5sZWdpc2xhdHVyZTIsXG4gIClcbiAgY29uc3QgZXRhdCA9IGdyb3Vwcy5ldGF0XG4gIGlmIChldGF0ID09PSB1bmRlZmluZWQpIHtcbiAgICBmcy5lbnN1cmVEaXJTeW5jKGxlZ2lzbGF0dXJlRGlyKVxuICAgIHJldHVybiBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIHVpZClcbiAgfVxuICBjb25zdCBldGF0RGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBldGF0KVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIChncm91cHMubnVtZXJvID8/IGdyb3Vwcy5udW1lcm8yKVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyaW5nKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHJpbmcobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyaW5nKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cmluZygwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHJpbmcoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNF1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cmluZyhudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHJpbmcoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuLy8gR2V0IHN0YW5kYXJkIHBhdGggZm9yIG9iamVjdCB3aXRoIHVpZCA6IHJlcHVibGlxdWUgPiBsZWdpc2xhdHVyZSA+IGdyb3VwIG9iamVjdHMgYnkgdGhvdXNhbmRzXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21VaWQoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgdWlkOiBzdHJpbmcsXG4gIGRhdGFSZWdleHA6IFJlZ0V4cCxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZGF0YVJlZ2V4cC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBvYmplY3Qgd2l0aCBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkYXRhRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cmluZyhudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHJpbmcoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxtQkFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sUUFBQSxHQUFBTixPQUFB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
|
|
1687
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiX3dyYXBSZWdFeHAiLCJCYWJlbFJlZ0V4cCIsIlJlZ0V4cCIsIldlYWtNYXAiLCJzZXQiLCJnZXQiLCJfc2V0UHJvdG90eXBlT2YiLCJidWlsZEdyb3VwcyIsInJlZHVjZSIsIl9pbmhlcml0cyIsImV4ZWMiLCJncm91cHMiLCJpbmRpY2VzIiwicmVwbGFjZSIsImpvaW4iLCJhcmd1bWVudHMiLCJhcHBseSIsImJpbmQiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZSIsInJlcHVibGlxdWUiLCJsZWdpc2xhdHVyZSIsImV0YXQiLCJudW1lcm8iLCJkb2N1bWVudFR5cGUyIiwiY2hhbWJyZTIiLCJyZXB1YmxpcXVlMiIsImxlZ2lzbGF0dXJlMiIsIm51bWVybzIiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJjb21wdGVSZW5kdVVpZFJlZ2V4IiwicXVlc3Rpb25VaWRSZWdleCIsIml0ZXJMb2FkQXNzZW1ibGVlSXRlbXMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJjb252ZXJ0VG9JdGVtIiwic3ViZm9sZGVyTmFtZSIsImZpbGVFeHRlbnNpb24iLCJ1bmRlZmluZWQiLCJfcmVmIiwiX3JlZiRub1ZhbGlkYXRpb24iLCJub1ZhbGlkYXRpb24iLCJfcmVmJGxvZyIsImxvZyIsIl9jYWxsZWUiLCJpdGVtVWlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJkYXRhc2V0IiwiZmlsZUV4dGVuc2lvblJlZ2V4IiwiZGF0YXNldERpciIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpdGVtU3BsaXRQYXRoIiwiaXRlbUZpbGVuYW1lIiwiaXRlbUZpbGVQYXRoIiwiaXRlbUpzb24iLCJpdGVtIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIlNldCIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiY29uY2F0IiwicGF0aCIsImZpbGVuYW1lIiwid2Fsa0RpciIsImVuZHNXaXRoIiwiY29uc29sZSIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJKU09OIiwicGFyc2UiLCJoYXMiLCJ1aWQiLCJhZGQiLCJkYXRhc2V0TGVnaXNsYXR1cmUiLCJ0MCIsInQxIiwiaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzIiwib3B0aW9ucyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9zdGVwMyR2YWx1ZSIsImFjdGV1ciIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwiaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzIiwiX2NhbGxlZTMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwiX3N0ZXA0JHZhbHVlIiwib3JnYW5lIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwidG9PcmdhbmUiLCJpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzIiwiX2NhbGxlZTQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX3N0ZXA1JHZhbHVlIiwiYW1lbmRlbWVudCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImFtZW5kZW1lbnRzIiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMiLCJfY2FsbGVlNSIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJfc3RlcDYkdmFsdWUiLCJkb2N1bWVudCIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfY2FsbGVlNiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfc3RlcDckdmFsdWUiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zIiwiX2NhbGxlZTciLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiX3N0ZXA4JHZhbHVlIiwicmV1bmlvbiIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsImFnZW5kYXMiLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMiLCJfY2FsbGVlOCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJfc3RlcDkkdmFsdWUiLCJzY3J1dGluIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4Iiwic2NydXRpbnMiLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJpdGVyTG9hZEFzc2VtYmxlZVF1ZXN0aW9ucyIsIl9jYWxsZWU5IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX3N0ZXAxMCR2YWx1ZSIsInF1ZXN0aW9uIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwicXVlc3Rpb25zIiwiUXVlc3Rpb25zQ29udmVydCIsInRvUXVlc3Rpb24iLCJpdGVyTG9hZEFzc2VtYmxlZUNvbXB0ZXNSZW5kdXMiLCJfY2FsbGVlMTAiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJfc3RlcDExJHZhbHVlIiwiY29tcHRlUmVuZHUiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1IiwibG9hZEFzc2VtYmxlZURhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJfcmVmMiIsIl9yZWYyJGxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJhY3RldXJGaWxlUGF0aCIsImFjdGV1ckpzb24iLCJlcnIiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZUZpbGVQYXRoIiwib3JnYW5lSnNvbiIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5Iiwib2RqIiwiX2l0ZXJhdG9yMTciLCJwb2ludHNPZGoiLCJfc3RlcDE3IiwicG9pbnRPZGoiLCJfaXRlcmF0b3IxOCIsImRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIiwiX3N0ZXAxOCIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImRvY3VtZW50QnlVaWQiLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiYXNzaWduIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IyNCIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJxdWVzdGlvbkJ5VWlkIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjYiLCJfc3RlcDI2IiwiX2l0ZXJhdG9yMjciLCJfc3RlcDI3IiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25GaWxlUGF0aCIsInF1ZXN0aW9uSnNvbiIsImNvbXB0ZVJlbmR1QnlVaWQiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjI4IiwiX3N0ZXAyOCIsIl9pdGVyYXRvcjI5IiwiX3N0ZXAyOSIsImNvbXB0ZVJlbmR1UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdUZpbGVQYXRoIiwiY29tcHRlUmVuZHVKc29uIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJfcmVmMyIsIl9yZWYzJGxvZyIsIl9pdGVyYXRvcjMwIiwiX3N0ZXAzMCIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvcjMxIiwiYWN0ZXVycyIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMiIsIm9yZ2FuZXMiLCJfc3RlcDMyIiwiX2l0ZXJhdG9yMzMiLCJfc3RlcDMzIiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yMzQiLCJyZXVuaW9ucyIsIl9zdGVwMzQiLCJfaXRlcmF0b3IzNSIsIl9zdGVwMzUiLCJfaXRlcmF0b3IzNiIsIl9zdGVwMzYiLCJfaXRlcmF0b3IzNyIsIl9zdGVwMzciLCJ0b0FtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMzgiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsIl9zdGVwMzgiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IzOSIsIl9zdGVwMzkiLCJfaXRlcmF0b3I0MCIsIl9zdGVwNDAiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3I0MSIsIl9zdGVwNDEiLCJfaXRlcmF0b3I0MiIsImRvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfc3RlcDQyIiwiX2l0ZXJhdG9yNDMiLCJfc3RlcDQzIiwidG9TY3J1dGlucyIsIl9pdGVyYXRvcjQ0IiwiX3N0ZXA0NCIsIl9pdGVyYXRvcjQ1IiwiX3N0ZXA0NSIsInRvUXVlc3Rpb25zIiwiX2l0ZXJhdG9yNDYiLCJfc3RlcDQ2IiwiX2l0ZXJhdG9yNDciLCJfc3RlcDQ3IiwiY29tcHRlc1JlbmR1cyIsInRvQ29tcHRlc1JlbmR1cyIsIl9pdGVyYXRvcjQ4IiwiX3N0ZXA0OCIsImxvYWRBc3NlbWJsZWVEb2N1bWVudEZpbGUiLCJmb3JtYXRzIiwiZG9jdW1lbnRzRGlyIiwiZG9jdW1lbnREaXIiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiaW5kZXhQYXRoIiwicGF0aEV4aXN0c1N5bmMiLCJpbmRleCIsInJlYWRKc29uU3luYyIsIl9pdGVyYXRvcjQ5IiwiX3N0ZXA0OSIsIl9pbmRleCRmb3JtYXQiLCJmb3JtYXQiLCJfaXRlcmF0b3I1MCIsIl9zdGVwNTAiLCJfc3RlcDUwJHZhbHVlIiwidXJsIiwibG9hZEFzc2VtYmxlZVBob3Rvc0RlcHV0ZXMiLCJfcmVmNCIsIl9yZWY0JGxvZyIsImxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMiLCJfcmVmNSIsIl9yZWY1JGxvZyIsIl9ncm91cHMkZG9jdW1lbnRUeXBlIiwiX2dyb3VwcyRjaGFtYnJlIiwiX2dyb3VwcyRyZXB1YmxpcXVlIiwiX2dyb3VwcyRsZWdpc2xhdHVyZSIsIl9ncm91cHMkbnVtZXJvIiwibWF0Y2giLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsImNoYW1icmVEaXIiLCJyZXB1YmxpcXVlRGlyIiwibGVnaXNsYXR1cmVEaXIiLCJlbnN1cmVEaXJTeW5jIiwiZXRhdERpciIsInN1YnN0cmluZyIsIm51bWVyb01pbGxpZXJzRGlyIiwicGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCIsImRvc3NpZXJzRGlyIiwicGF0aEZyb21VaWQiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiLCJwYXRoRnJvbVF1ZXN0aW9uVWlkIiwicGF0aEZyb21Db21wdGVSZW5kdVVpZCIsImRhdGFSZWdleHAiXSwic291cmNlcyI6WyIuLi9zcmMvbG9hZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzLCBEYXRhc2V0IH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHR5cGUgeyBEb2N1bWVudEZpbGVzSW5kZXggfSBmcm9tIFwiLi9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCB9IGZyb20gXCIuL3VybHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbiAgcmVhZG9ubHkgcXVlc3Rpb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBRdWVzdGlvbiB9XG4gIHJlYWRvbmx5IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oKD88ZG9jdW1lbnRUeXBlPkFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xNSU9OfFBJT058UE5SRXxQUkpMfFJBUFB8UklORnxSSU9OKSg/PGNoYW1icmU+QU58Q0d8U04pKD88cmVwdWJsaXF1ZT5SXFxkKylbTFNdKD88bGVnaXNsYXR1cmU+XFxkKykoPzxldGF0PkJ8QlRBfEJUQ3xUQVApKD88bnVtZXJvPlxcZCspKC0uKik/KXwoKD88ZG9jdW1lbnRUeXBlMj5NSU9OKSg/PGNoYW1icmUyPkFOfFNOKSg/PHJlcHVibGlxdWUyPlJcXGQrKVtMU10oPzxsZWdpc2xhdHVyZTI+XFxkKyktTig/PG51bWVybzI+XFxkKykpJC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUKEFOfENHKShSXFxkKykoTFxcZCspVihcXGQrKSQvXG5jb25zdCBjb21wdGVSZW5kdVVpZFJlZ2V4OiBSZWdFeHAgPVxuICAvXkNSUyhBTnxDRykoUlxcZCspKExcXGQrKShTXFxkKykoT3xFKShcXGQrKShOXFxkKykkL1xuY29uc3QgcXVlc3Rpb25VaWRSZWdleDogUmVnRXhwID0gL15RQU4oUlxcZCspKExcXGQrKVEoRXxHfE9TRCkoXFxkKykkL1xuXG50eXBlIEl0ZW1Db252ZXJ0ZXI8VD4gPSAoanNvbjogc3RyaW5nKSA9PiBUXG5cbmZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPFQgZXh0ZW5kcyB7IHVpZDogc3RyaW5nIH0+KFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgZGF0YXNldHM6IERhdGFzZXRbXSxcbiAgY29udmVydFRvSXRlbTogSXRlbUNvbnZlcnRlcjxUPixcbiAgc3ViZm9sZGVyTmFtZTogc3RyaW5nW10sXG4gIGZpbGVFeHRlbnNpb246IHN0cmluZyA9IFwianNvblwiLFxuICB7IG5vVmFsaWRhdGlvbiA9IGZhbHNlLCBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8eyBpdGVtOiBUOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sIHZvaWQsIHVua25vd24+IHtcbiAgY29uc3QgaXRlbVVpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgbGV0IGZpbGVFeHRlbnNpb25SZWdleCA9IG5ldyBSZWdFeHAoYFxcXFwuJHtmaWxlRXh0ZW5zaW9ufSRgKVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKGZpbGVFeHRlbnNpb25SZWdleCwgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGl0ZW1TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBzdWJmb2xkZXJOYW1lKSkge1xuICAgICAgY29uc3QgaXRlbUZpbGVuYW1lID0gaXRlbVNwbGl0UGF0aFtpdGVtU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIWl0ZW1GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uaXRlbVNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtpdGVtRmlsZVBhdGh94oCmYClcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXRlbUpzb24gPSBmcy5yZWFkRmlsZVN5bmMoaXRlbUZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgbGV0IGl0ZW06IFQgPSBub1ZhbGlkYXRpb25cbiAgICAgICAgPyBKU09OLnBhcnNlKGl0ZW1Kc29uKVxuICAgICAgICA6IGNvbnZlcnRUb0l0ZW0oaXRlbUpzb24pXG5cbiAgICAgIGlmIChpdGVtVWlkLmhhcyhpdGVtLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGl0ZW1VaWQuYWRkKGl0ZW0udWlkKVxuICAgICAgeWllbGQgeyBpdGVtOiBpdGVtLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlQWN0ZXVycyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBhY3RldXI6IEFjdGV1cjsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgZm9yIChjb25zdCB7XG4gICAgaXRlbTogYWN0ZXVyLFxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZSxcbiAgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPEFjdGV1cj4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzLFxuICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyLFxuICAgIFtcImFjdGV1cnNcIl0sXG4gICAgXCJqc29uXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgYWN0ZXVyLCBkYXRhc2V0TGVnaXNsYXR1cmUgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IG9yZ2FuZTogT3JnYW5lOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBvcmdhbmUsXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8T3JnYW5lPihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMsXG4gICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUsXG4gICAgW1wib3JnYW5lc1wiXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyBvcmdhbmUsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQ7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IGFtZW5kZW1lbnQsXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8QW1lbmRlbWVudD4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5hbWVuZGVtZW50cyxcbiAgICBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50LFxuICAgIFtdLFxuICAgIFwianNvblwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IGFtZW5kZW1lbnQsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBkb2N1bWVudDogRG9jdW1lbnQ7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IGRvY3VtZW50LFxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZSxcbiAgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPERvY3VtZW50PihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMsXG4gICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudCxcbiAgICBbXCJkb2N1bWVudHNcIl0sXG4gICAgXCJqc29uXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgZG9jdW1lbnQsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHtcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlXG4gIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxEb3NzaWVyUGFybGVtZW50YWlyZT4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzLFxuICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgW1wiZG9zc2llcnNcIl0sXG4gICAgXCJqc29uXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgZG9zc2llclBhcmxlbWVudGFpcmUsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHJldW5pb246IFJldW5pb247IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IHJldW5pb24sXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8UmV1bmlvbj4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5hZ2VuZGFzLFxuICAgIEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbixcbiAgICBbXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyByZXVuaW9uLCBkYXRhc2V0TGVnaXNsYXR1cmUgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVTY3J1dGlucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBzY3J1dGluOiBTY3J1dGluOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBzY3J1dGluLFxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZSxcbiAgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPFNjcnV0aW4+KFxuICAgIGRhdGFEaXIsXG4gICAgbGVnaXNsYXR1cmUsXG4gICAgZGF0YXNldHMuc2NydXRpbnMsXG4gICAgU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbixcbiAgICBbXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyBzY3J1dGluLCBkYXRhc2V0TGVnaXNsYXR1cmUgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVRdWVzdGlvbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgcXVlc3Rpb246IFF1ZXN0aW9uOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBxdWVzdGlvbixcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxRdWVzdGlvbj4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5xdWVzdGlvbnMsXG4gICAgUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uLFxuICAgIFtdLFxuICAgIFwianNvblwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IHF1ZXN0aW9uLCBkYXRhc2V0TGVnaXNsYXR1cmUgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVDb21wdGVzUmVuZHVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGNvbXB0ZVJlbmR1OiBDb21wdGVSZW5kdTsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgZm9yIChjb25zdCB7XG4gICAgaXRlbTogY29tcHRlUmVuZHUsXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8Q29tcHRlUmVuZHU+KFxuICAgIGRhdGFEaXIsXG4gICAgbGVnaXNsYXR1cmUsXG4gICAgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMsXG4gICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdSxcbiAgICBbXSxcbiAgICBcInhtbFwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IGNvbXB0ZVJlbmR1LCBkYXRhc2V0TGVnaXNsYXR1cmUgfVxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy5cbi8vLyBEZXByZWNhdGVkOiBVc2UgaXRlckxvYWQuLi4gaXRlcmF0b3JzIGluc3RlYWQuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHF1ZXN0aW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUXVlc3Rpb24gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9IHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnF1ZXN0aW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtxdWVzdGlvbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBpZiAocXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBxdWVzdGlvbkJ5VWlkW3F1ZXN0aW9uLnVpZF0gPSBxdWVzdGlvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29tcHRlUmVuZHVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBDb21wdGVSZW5kdSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPSBjb21wdGVSZW5kdVBhdGhbY29tcHRlUmVuZHVQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghY29tcHRlUmVuZHVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmNvbXB0ZVJlbmR1UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGNvbXB0ZVJlbmR1RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdShjb21wdGVSZW5kdUpzb24pXG4gICAgICAgIGlmIChjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbXB0ZVJlbmR1QnlVaWRbY29tcHRlUmVuZHUudWlkXSA9IGNvbXB0ZVJlbmR1XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgICBxdWVzdGlvbkJ5VWlkLFxuICAgIGNvbXB0ZVJlbmR1QnlVaWQsXG4gIH1cbn1cblxuLy8vIExvYWQgZGF0YSBmcm9tIGJpZyBtb25vbHl0aWMgZmlsZXMuXG4vLy8gRGVwcmVjYXRlZDogQXNzZW1ibMOpZSBuYXRpb25hbGUgb3BlbiBkYXRhIG5vIG1vcmUgdXNlcyBtb25vbHl0aWMgZmlsZXMuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWN0ZXVyc0V0T3JnYW5lcyA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBhY3RldXIgb2YgYWN0ZXVyc0V0T3JnYW5lcy5hY3RldXJzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2YgYWN0ZXVyc0V0T3JnYW5lcy5vcmdhbmVzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhZ2VuZGFzID0gQWdlbmRhc0NvbnZlcnQudG9BZ2VuZGFzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2YgYWdlbmRhcy5yZXVuaW9ucykge1xuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudHMoanNvbilcbiAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIGFtZW5kZW1lbnRzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBkb3NzaWVyc0xlZ2lzbGF0aWZzID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyIG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcnNQYXJsZW1lbnRhaXJlcykge1xuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIGNvbnN0IHBob3RvQnlVaWQgPSB7fVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBxdWVzdGlvbnMgPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb25zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9ucy5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID0gcXVlc3Rpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBjb21wdGVzUmVuZHVzID0gQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVzUmVuZHVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1IG9mIGNvbXB0ZXNSZW5kdXMuY29tcHRlc1JlbmR1cykge1xuICAgICAgICBpZiAoY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPSBjb21wdGVSZW5kdVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gICAgcXVlc3Rpb25CeVVpZCxcbiAgICBjb21wdGVSZW5kdUJ5VWlkLFxuICB9XG59XG5cbi8qKlxuICogUmVhZCBpbmZvcyBvZiBhIGRvY3VtZW50IG9yIGEgZGl2aXNpb24gb2YgYSBkb2N1bWVudCBmcm9tIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIGRhdGFEaXJcbiAqIEBwYXJhbSB1aWQgVUlEIG9mIGEgZG9jdW1lbnQgb3IgYSBkaXZpc2lvblxuICogQHBhcmFtIGZvcm1hdHMgcmVxdWVzdGVkIGZvcm1hdHMgb2YgdGhlIGRvY3VtZW50IGluIGRlY3JlYXNpbmcgcHJlZmVyZW5jZSBvcmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURvY3VtZW50RmlsZShcbiAgZGF0YURpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbiAgZm9ybWF0czogRG9jdW1lbnRVcmxGb3JtYXRbXSxcbik6XG4gIHwge1xuICAgICAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdFxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgICB1cmw6IHN0cmluZ1xuICAgIH1cbiAgfCB1bmRlZmluZWQge1xuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgY29uc3QgZG9jdW1lbnREaXIgPSBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0RpciwgdWlkKVxuICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIFwiaW5kZXguanNvblwiKVxuICBpZiAoIWZzLnBhdGhFeGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgaW5kZXggPSBmcy5yZWFkSnNvblN5bmMoaW5kZXhQYXRoKSBhcyBEb2N1bWVudEZpbGVzSW5kZXhcbiAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgIGZvciAoY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gb2YgaW5kZXhbZm9ybWF0XSA/PyBbXSkge1xuICAgICAgaWYgKGZpbGVuYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGZvcm1hdCwgcGF0aDogcGF0aC5qb2luKGRvY3VtZW50RGlyLCBmaWxlbmFtZSksIHVybCB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgfWAsXG4gICAgXCJkZXB1dGVzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSB1aWQubWF0Y2goZG9jdW1lbnRVaWRSZWdleClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb2N1bWVudCBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgZ3JvdXBzID0gbWF0Y2ghLmdyb3VwcyBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihcbiAgICBkb2N1bWVudHNEaXIsXG4gICAgZ3JvdXBzLmRvY3VtZW50VHlwZSA/PyBncm91cHMuZG9jdW1lbnRUeXBlMixcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKGRvY3VtZW50VHlwZSwgZ3JvdXBzLmNoYW1icmUgPz8gZ3JvdXBzLmNoYW1icmUyKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKFxuICAgIGNoYW1icmVEaXIsXG4gICAgZ3JvdXBzLnJlcHVibGlxdWUgPz8gZ3JvdXBzLnJlcHVibGlxdWUyLFxuICApXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKFxuICAgIHJlcHVibGlxdWVEaXIsXG4gICAgZ3JvdXBzLmxlZ2lzbGF0dXJlID8/IGdyb3Vwcy5sZWdpc2xhdHVyZTIsXG4gIClcbiAgY29uc3QgZXRhdCA9IGdyb3Vwcy5ldGF0XG4gIGlmIChldGF0ID09PSB1bmRlZmluZWQpIHtcbiAgICBmcy5lbnN1cmVEaXJTeW5jKGxlZ2lzbGF0dXJlRGlyKVxuICAgIHJldHVybiBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIHVpZClcbiAgfVxuICBjb25zdCBldGF0RGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBldGF0KVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIChncm91cHMubnVtZXJvID8/IGdyb3Vwcy5udW1lcm8yKVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyaW5nKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoRnJvbVVpZChkb3NzaWVyc0RpciwgdWlkLCBkb3NzaWVyVWlkUmVnZXgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cmluZygwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHJpbmcoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNF1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cmluZyhudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHJpbmcoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tUXVlc3Rpb25VaWQoZGF0YURpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoRnJvbVVpZChkYXRhRGlyLCB1aWQsIHF1ZXN0aW9uVWlkUmVnZXgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkKGRhdGFEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aEZyb21VaWQoZGF0YURpciwgdWlkLCBjb21wdGVSZW5kdVVpZFJlZ2V4KVxufVxuXG4vLyBHZXQgc3RhbmRhcmQgcGF0aCBmb3Igb2JqZWN0IHdpdGggdWlkIDogcmVwdWJsaXF1ZSA+IGxlZ2lzbGF0dXJlID4gZ3JvdXAgb2JqZWN0cyBieSB0aG91c2FuZHNcbmZ1bmN0aW9uIHBhdGhGcm9tVWlkKGRhdGFEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcsIGRhdGFSZWdleHA6IFJlZ0V4cCk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZGF0YVJlZ2V4cC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBvYmplY3Qgd2l0aCBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkYXRhRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cmluZyhudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHJpbmcoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsU0FBQSxH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
|