@tricoteuses/assemblee 1.1.8 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +5 -1
- package/README.md +69 -178
- package/lib/api.js +9 -9
- package/lib/api.mjs +7 -7
- package/lib/bugs/acteur-00010/plugin.test.js +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +1 -1
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +3 -3
- package/lib/bugs/agenda-00002.mjs +2 -2
- package/lib/bugs/agenda-00008/plugin.test.js +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +1 -1
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +1 -1
- package/lib/bugs/agenda-00011.mjs +1 -1
- package/lib/bugs.js +1 -1
- package/lib/bugs.mjs +1 -1
- package/lib/cleaners/acteurs.js +1 -1
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +1 -1
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.d.ts +1 -0
- package/lib/cleaners/debats.js +12 -0
- package/lib/cleaners/debats.mjs +5 -0
- package/lib/cleaners/index.d.ts +2 -0
- package/lib/cleaners/index.js +15 -1
- package/lib/cleaners/index.mjs +3 -1
- package/lib/cleaners/questions.d.ts +1 -0
- package/lib/cleaners/questions.js +12 -0
- package/lib/cleaners/questions.mjs +5 -0
- package/lib/cleaners/reunions.js +1 -1
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/xml.js +12 -6
- package/lib/cleaners/xml.mjs +12 -6
- package/lib/datasets.d.ts +5 -1
- package/lib/datasets.js +70 -12
- package/lib/datasets.mjs +68 -10
- package/lib/dates.js +1 -1
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +9 -9
- package/lib/dossiers_legislatifs.mjs +7 -7
- package/lib/file_systems.js +4 -4
- package/lib/file_systems.mjs +2 -2
- package/lib/git.js +1 -1
- package/lib/git.mjs +1 -1
- package/lib/loaders.d.ts +21 -0
- package/lib/loaders.js +608 -202
- package/lib/loaders.mjs +200 -3
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +1 -1
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +3 -2
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +49 -49
- package/lib/raw_types/acteurs_et_organes.mjs +37 -37
- package/lib/raw_types/agendas.js +50 -50
- package/lib/raw_types/agendas.mjs +39 -39
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +53 -51
- package/lib/raw_types/amendements.mjs +41 -39
- package/lib/raw_types/debats.d.ts +190 -0
- package/lib/raw_types/debats.js +816 -0
- package/lib/raw_types/debats.mjs +758 -0
- package/lib/raw_types/dossiers_legislatifs.js +71 -62
- package/lib/raw_types/dossiers_legislatifs.mjs +46 -46
- package/lib/raw_types/questions.d.ts +129 -0
- package/lib/raw_types/questions.js +497 -0
- package/lib/raw_types/questions.mjs +439 -0
- package/lib/raw_types/scrutins.js +34 -34
- package/lib/raw_types/scrutins.mjs +28 -28
- package/lib/scripts/bugs_helper.js +1 -1
- package/lib/scripts/bugs_helper.mjs +1 -1
- package/lib/scripts/clean_reorganized_data.js +174 -24
- package/lib/scripts/clean_reorganized_data.mjs +127 -13
- package/lib/scripts/diff_amendements.js +1 -1
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
- package/lib/scripts/get_today_reunions.js +1 -1
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +1 -1
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +4 -3
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/raw_types_from_amendements.js +1 -1
- package/lib/scripts/raw_types_from_amendements.mjs +1 -1
- package/lib/scripts/reorganize_data.js +189 -7
- package/lib/scripts/reorganize_data.mjs +136 -8
- package/lib/scripts/retrieve_deputes_photos.js +7 -1
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -1
- package/lib/scripts/retrieve_documents.js +1 -1
- package/lib/scripts/retrieve_documents.mjs +1 -1
- package/lib/scripts/retrieve_open_data.js +105 -37
- package/lib/scripts/retrieve_open_data.mjs +34 -2
- package/lib/scripts/retrieve_pending_amendments.js +7 -1
- package/lib/scripts/retrieve_pending_amendments.mjs +7 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -2
- package/lib/scripts/retrieve_senateurs_photos.mjs +7 -1
- package/lib/scripts/retrieve_textes_lois.js +1 -1
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/test_load.js +1 -1
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +1 -1
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +1 -1
- package/lib/scripts/validate_json.mjs +1 -1
- package/lib/shared_types/codes_actes.d.ts +4 -0
- package/lib/shared_types/codes_actes.js +19 -17
- package/lib/shared_types/codes_actes.mjs +15 -13
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +37 -37
- package/lib/types/acteurs_et_organes.mjs +28 -28
- package/lib/types/agendas.js +50 -50
- package/lib/types/agendas.mjs +40 -40
- package/lib/types/amendements.d.ts +1 -0
- package/lib/types/amendements.js +52 -51
- package/lib/types/amendements.mjs +42 -41
- package/lib/types/debats.d.ts +184 -0
- package/lib/types/debats.js +805 -0
- package/lib/types/debats.mjs +747 -0
- package/lib/types/dossiers_legislatifs.js +68 -59
- package/lib/types/dossiers_legislatifs.mjs +46 -46
- package/lib/types/legislatures.js +5 -5
- package/lib/types/legislatures.mjs +4 -4
- package/lib/types/questions.d.ts +122 -0
- package/lib/types/questions.js +482 -0
- package/lib/types/questions.mjs +424 -0
- package/lib/types/scrutins.js +34 -34
- package/lib/types/scrutins.mjs +28 -28
- package/lib/urls.js +5 -5
- package/lib/urls.mjs +4 -4
- package/package.json +15 -7
- package/lib/scripts/clean_data.d.ts +0 -1
- package/lib/scripts/clean_data.js +0 -309
- package/lib/scripts/clean_data.mjs +0 -171
package/lib/loaders.js
CHANGED
|
@@ -31,9 +31,11 @@ Object.defineProperty(exports, "EnabledDatasets", {
|
|
|
31
31
|
});
|
|
32
32
|
exports.iterLoadAssembleeActeurs = iterLoadAssembleeActeurs;
|
|
33
33
|
exports.iterLoadAssembleeAmendements = iterLoadAssembleeAmendements;
|
|
34
|
+
exports.iterLoadAssembleeComptesRendus = iterLoadAssembleeComptesRendus;
|
|
34
35
|
exports.iterLoadAssembleeDocuments = iterLoadAssembleeDocuments;
|
|
35
36
|
exports.iterLoadAssembleeDossiersParlementaires = iterLoadAssembleeDossiersParlementaires;
|
|
36
37
|
exports.iterLoadAssembleeOrganes = iterLoadAssembleeOrganes;
|
|
38
|
+
exports.iterLoadAssembleeQuestions = iterLoadAssembleeQuestions;
|
|
37
39
|
exports.iterLoadAssembleeReunions = iterLoadAssembleeReunions;
|
|
38
40
|
exports.iterLoadAssembleeScrutins = iterLoadAssembleeScrutins;
|
|
39
41
|
exports.loadAssembleeData = loadAssembleeData;
|
|
@@ -44,6 +46,7 @@ exports.pathFromDocumentUid = pathFromDocumentUid;
|
|
|
44
46
|
exports.pathFromDossierParlementaireUid = pathFromDossierParlementaireUid;
|
|
45
47
|
exports.pathFromReunionUid = pathFromReunionUid;
|
|
46
48
|
exports.pathFromScrutinUid = pathFromScrutinUid;
|
|
49
|
+
exports.pathFromUid = pathFromUid;
|
|
47
50
|
Object.defineProperty(exports, "walkDir", {
|
|
48
51
|
enumerable: true,
|
|
49
52
|
get: function get() {
|
|
@@ -73,6 +76,8 @@ var _amendements = require("./types/amendements");
|
|
|
73
76
|
var _dossiers_legislatifs = require("./types/dossiers_legislatifs");
|
|
74
77
|
var _legislatures = require("./types/legislatures");
|
|
75
78
|
var _scrutins = require("./types/scrutins");
|
|
79
|
+
var _questions = require("./types/questions");
|
|
80
|
+
var _debats = require("./types/debats");
|
|
76
81
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
77
82
|
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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
78
83
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
@@ -81,7 +86,7 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
|
|
|
81
86
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
82
87
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
83
88
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
84
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
89
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /// Load data from files
|
|
85
90
|
var documentUidRegex = /^(ACIN|ALCN|AVCE|AVIS|DECL|ETDI|LETT|MESS|PION|PNRE|PRJL|RAPP|RINF|RION)(AN|SN)(R\d+)[LS](\d+)(B|BTA|BTC|TAP)(\d+)(-.*)?$/;
|
|
86
91
|
var dossierUidRegex = /^DL(R\d+)(L\d+)N(\d+)$/;
|
|
87
92
|
var reunionUidRegex = /^RU(AN|CG|SN)(R\d+)(L\d+)([AS]\d{4})(IDC|IDFL?|IDS)(\d+)$/;
|
|
@@ -807,21 +812,227 @@ function iterLoadAssembleeScrutins(dataDir, legislature) {
|
|
|
807
812
|
}, _callee7, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
808
813
|
})();
|
|
809
814
|
}
|
|
815
|
+
function iterLoadAssembleeQuestions(dataDir, legislature) {
|
|
816
|
+
var _ref8 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
817
|
+
_ref8$log = _ref8.log,
|
|
818
|
+
log = _ref8$log === void 0 ? false : _ref8$log;
|
|
819
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
820
|
+
var questionsUid, _iterator15, _step15, dataset, datasetDir, _iterator16, _step16, questionSplitPath, questionFilename, questionFilePath, questionJson, question;
|
|
821
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
822
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
823
|
+
case 0:
|
|
824
|
+
questionsUid = new Set();
|
|
825
|
+
_iterator15 = _createForOfIteratorHelper(_datasets.datasets.questions);
|
|
826
|
+
_context8.prev = 2;
|
|
827
|
+
_iterator15.s();
|
|
828
|
+
case 4:
|
|
829
|
+
if ((_step15 = _iterator15.n()).done) {
|
|
830
|
+
_context8.next = 40;
|
|
831
|
+
break;
|
|
832
|
+
}
|
|
833
|
+
dataset = _step15.value;
|
|
834
|
+
if (!dataset.ignoreForWeb) {
|
|
835
|
+
_context8.next = 8;
|
|
836
|
+
break;
|
|
837
|
+
}
|
|
838
|
+
return _context8.abrupt("continue", 38);
|
|
839
|
+
case 8:
|
|
840
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
841
|
+
_context8.next = 10;
|
|
842
|
+
break;
|
|
843
|
+
}
|
|
844
|
+
return _context8.abrupt("continue", 38);
|
|
845
|
+
case 10:
|
|
846
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
847
|
+
_iterator16 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
848
|
+
_context8.prev = 12;
|
|
849
|
+
_iterator16.s();
|
|
850
|
+
case 14:
|
|
851
|
+
if ((_step16 = _iterator16.n()).done) {
|
|
852
|
+
_context8.next = 30;
|
|
853
|
+
break;
|
|
854
|
+
}
|
|
855
|
+
questionSplitPath = _step16.value;
|
|
856
|
+
questionFilename = questionSplitPath[questionSplitPath.length - 1];
|
|
857
|
+
if (questionFilename.endsWith(".json")) {
|
|
858
|
+
_context8.next = 19;
|
|
859
|
+
break;
|
|
860
|
+
}
|
|
861
|
+
return _context8.abrupt("continue", 28);
|
|
862
|
+
case 19:
|
|
863
|
+
questionFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(questionSplitPath)));
|
|
864
|
+
if (log) {
|
|
865
|
+
console.log("Loading file: ".concat(questionFilePath, "\u2026"));
|
|
866
|
+
}
|
|
867
|
+
questionJson = _fsExtra["default"].readFileSync(questionFilePath, {
|
|
868
|
+
encoding: "utf8"
|
|
869
|
+
});
|
|
870
|
+
question = _questions.Convert.toQuestion(questionJson);
|
|
871
|
+
if (!questionsUid.has(question.uid)) {
|
|
872
|
+
_context8.next = 25;
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
return _context8.abrupt("continue", 28);
|
|
876
|
+
case 25:
|
|
877
|
+
questionsUid.add(question.uid);
|
|
878
|
+
_context8.next = 28;
|
|
879
|
+
return {
|
|
880
|
+
question: question,
|
|
881
|
+
datasetLegislature: dataset.legislature
|
|
882
|
+
};
|
|
883
|
+
case 28:
|
|
884
|
+
_context8.next = 14;
|
|
885
|
+
break;
|
|
886
|
+
case 30:
|
|
887
|
+
_context8.next = 35;
|
|
888
|
+
break;
|
|
889
|
+
case 32:
|
|
890
|
+
_context8.prev = 32;
|
|
891
|
+
_context8.t0 = _context8["catch"](12);
|
|
892
|
+
_iterator16.e(_context8.t0);
|
|
893
|
+
case 35:
|
|
894
|
+
_context8.prev = 35;
|
|
895
|
+
_iterator16.f();
|
|
896
|
+
return _context8.finish(35);
|
|
897
|
+
case 38:
|
|
898
|
+
_context8.next = 4;
|
|
899
|
+
break;
|
|
900
|
+
case 40:
|
|
901
|
+
_context8.next = 45;
|
|
902
|
+
break;
|
|
903
|
+
case 42:
|
|
904
|
+
_context8.prev = 42;
|
|
905
|
+
_context8.t1 = _context8["catch"](2);
|
|
906
|
+
_iterator15.e(_context8.t1);
|
|
907
|
+
case 45:
|
|
908
|
+
_context8.prev = 45;
|
|
909
|
+
_iterator15.f();
|
|
910
|
+
return _context8.finish(45);
|
|
911
|
+
case 48:
|
|
912
|
+
case "end":
|
|
913
|
+
return _context8.stop();
|
|
914
|
+
}
|
|
915
|
+
}, _callee8, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
916
|
+
})();
|
|
917
|
+
}
|
|
918
|
+
function iterLoadAssembleeComptesRendus(dataDir, legislature) {
|
|
919
|
+
var _ref9 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
920
|
+
_ref9$log = _ref9.log,
|
|
921
|
+
log = _ref9$log === void 0 ? false : _ref9$log;
|
|
922
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
923
|
+
var comptesRendusUid, _iterator17, _step17, dataset, datasetDir, _iterator18, _step18, compteRenduSplitPath, compteRenduFilename, compteRenduFilePath, compteRenduJson, compteRendu;
|
|
924
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
925
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
926
|
+
case 0:
|
|
927
|
+
comptesRendusUid = new Set();
|
|
928
|
+
_iterator17 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances);
|
|
929
|
+
_context9.prev = 2;
|
|
930
|
+
_iterator17.s();
|
|
931
|
+
case 4:
|
|
932
|
+
if ((_step17 = _iterator17.n()).done) {
|
|
933
|
+
_context9.next = 40;
|
|
934
|
+
break;
|
|
935
|
+
}
|
|
936
|
+
dataset = _step17.value;
|
|
937
|
+
if (!dataset.ignoreForWeb) {
|
|
938
|
+
_context9.next = 8;
|
|
939
|
+
break;
|
|
940
|
+
}
|
|
941
|
+
return _context9.abrupt("continue", 38);
|
|
942
|
+
case 8:
|
|
943
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
944
|
+
_context9.next = 10;
|
|
945
|
+
break;
|
|
946
|
+
}
|
|
947
|
+
return _context9.abrupt("continue", 38);
|
|
948
|
+
case 10:
|
|
949
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
950
|
+
_iterator18 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
951
|
+
_context9.prev = 12;
|
|
952
|
+
_iterator18.s();
|
|
953
|
+
case 14:
|
|
954
|
+
if ((_step18 = _iterator18.n()).done) {
|
|
955
|
+
_context9.next = 30;
|
|
956
|
+
break;
|
|
957
|
+
}
|
|
958
|
+
compteRenduSplitPath = _step18.value;
|
|
959
|
+
compteRenduFilename = compteRenduSplitPath[compteRenduSplitPath.length - 1];
|
|
960
|
+
if (compteRenduFilename.endsWith(".json")) {
|
|
961
|
+
_context9.next = 19;
|
|
962
|
+
break;
|
|
963
|
+
}
|
|
964
|
+
return _context9.abrupt("continue", 28);
|
|
965
|
+
case 19:
|
|
966
|
+
compteRenduFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(compteRenduSplitPath)));
|
|
967
|
+
if (log) {
|
|
968
|
+
console.log("Loading file: ".concat(compteRenduFilePath, "\u2026"));
|
|
969
|
+
}
|
|
970
|
+
compteRenduJson = _fsExtra["default"].readFileSync(compteRenduFilePath, {
|
|
971
|
+
encoding: "utf8"
|
|
972
|
+
});
|
|
973
|
+
compteRendu = _debats.Convert.toCompteRendu(compteRenduJson);
|
|
974
|
+
if (!comptesRendusUid.has(compteRendu.uid)) {
|
|
975
|
+
_context9.next = 25;
|
|
976
|
+
break;
|
|
977
|
+
}
|
|
978
|
+
return _context9.abrupt("continue", 28);
|
|
979
|
+
case 25:
|
|
980
|
+
comptesRendusUid.add(compteRendu.uid);
|
|
981
|
+
_context9.next = 28;
|
|
982
|
+
return {
|
|
983
|
+
compteRendu: compteRendu,
|
|
984
|
+
datasetLegislature: dataset.legislature
|
|
985
|
+
};
|
|
986
|
+
case 28:
|
|
987
|
+
_context9.next = 14;
|
|
988
|
+
break;
|
|
989
|
+
case 30:
|
|
990
|
+
_context9.next = 35;
|
|
991
|
+
break;
|
|
992
|
+
case 32:
|
|
993
|
+
_context9.prev = 32;
|
|
994
|
+
_context9.t0 = _context9["catch"](12);
|
|
995
|
+
_iterator18.e(_context9.t0);
|
|
996
|
+
case 35:
|
|
997
|
+
_context9.prev = 35;
|
|
998
|
+
_iterator18.f();
|
|
999
|
+
return _context9.finish(35);
|
|
1000
|
+
case 38:
|
|
1001
|
+
_context9.next = 4;
|
|
1002
|
+
break;
|
|
1003
|
+
case 40:
|
|
1004
|
+
_context9.next = 45;
|
|
1005
|
+
break;
|
|
1006
|
+
case 42:
|
|
1007
|
+
_context9.prev = 42;
|
|
1008
|
+
_context9.t1 = _context9["catch"](2);
|
|
1009
|
+
_iterator17.e(_context9.t1);
|
|
1010
|
+
case 45:
|
|
1011
|
+
_context9.prev = 45;
|
|
1012
|
+
_iterator17.f();
|
|
1013
|
+
return _context9.finish(45);
|
|
1014
|
+
case 48:
|
|
1015
|
+
case "end":
|
|
1016
|
+
return _context9.stop();
|
|
1017
|
+
}
|
|
1018
|
+
}, _callee9, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
1019
|
+
})();
|
|
1020
|
+
}
|
|
810
1021
|
|
|
811
1022
|
/// Load data from split files.
|
|
812
1023
|
/// Deprecated: Use iterLoad... iterators instead.
|
|
813
1024
|
function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
814
|
-
var
|
|
815
|
-
|
|
816
|
-
log =
|
|
1025
|
+
var _ref10 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
1026
|
+
_ref10$log = _ref10.log,
|
|
1027
|
+
log = _ref10$log === void 0 ? false : _ref10$log;
|
|
817
1028
|
var acteurByUid = {};
|
|
818
1029
|
var organeByUid = {};
|
|
819
1030
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
820
|
-
var
|
|
821
|
-
|
|
1031
|
+
var _iterator19 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
1032
|
+
_step19;
|
|
822
1033
|
try {
|
|
823
|
-
for (
|
|
824
|
-
var dataset =
|
|
1034
|
+
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
1035
|
+
var dataset = _step19.value;
|
|
825
1036
|
if (dataset.ignoreForWeb) {
|
|
826
1037
|
continue;
|
|
827
1038
|
}
|
|
@@ -829,11 +1040,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
829
1040
|
continue;
|
|
830
1041
|
}
|
|
831
1042
|
var datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
832
|
-
var
|
|
833
|
-
|
|
1043
|
+
var _iterator20 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["acteurs"])),
|
|
1044
|
+
_step20;
|
|
834
1045
|
try {
|
|
835
|
-
for (
|
|
836
|
-
var acteurSplitPath =
|
|
1046
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
1047
|
+
var acteurSplitPath = _step20.value;
|
|
837
1048
|
var acteurFilename = acteurSplitPath[acteurSplitPath.length - 1];
|
|
838
1049
|
if (!acteurFilename.endsWith(".json")) {
|
|
839
1050
|
continue;
|
|
@@ -852,15 +1063,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
852
1063
|
}
|
|
853
1064
|
}
|
|
854
1065
|
} catch (err) {
|
|
855
|
-
|
|
1066
|
+
_iterator20.e(err);
|
|
856
1067
|
} finally {
|
|
857
|
-
|
|
1068
|
+
_iterator20.f();
|
|
858
1069
|
}
|
|
859
|
-
var
|
|
860
|
-
|
|
1070
|
+
var _iterator21 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"])),
|
|
1071
|
+
_step21;
|
|
861
1072
|
try {
|
|
862
|
-
for (
|
|
863
|
-
var organeSplitPath =
|
|
1073
|
+
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
1074
|
+
var organeSplitPath = _step21.value;
|
|
864
1075
|
var organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
865
1076
|
if (!organeFilename.endsWith(".json")) {
|
|
866
1077
|
continue;
|
|
@@ -879,26 +1090,26 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
879
1090
|
}
|
|
880
1091
|
}
|
|
881
1092
|
} catch (err) {
|
|
882
|
-
|
|
1093
|
+
_iterator21.e(err);
|
|
883
1094
|
} finally {
|
|
884
|
-
|
|
1095
|
+
_iterator21.f();
|
|
885
1096
|
}
|
|
886
1097
|
}
|
|
887
1098
|
} catch (err) {
|
|
888
|
-
|
|
1099
|
+
_iterator19.e(err);
|
|
889
1100
|
} finally {
|
|
890
|
-
|
|
1101
|
+
_iterator19.f();
|
|
891
1102
|
}
|
|
892
1103
|
}
|
|
893
1104
|
var reunionByUid = {};
|
|
894
1105
|
var reunionsByDay = {};
|
|
895
1106
|
var reunionsByDossierUid = {};
|
|
896
1107
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
897
|
-
var
|
|
898
|
-
|
|
1108
|
+
var _iterator22 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
1109
|
+
_step22;
|
|
899
1110
|
try {
|
|
900
|
-
for (
|
|
901
|
-
var _dataset =
|
|
1111
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
1112
|
+
var _dataset = _step22.value;
|
|
902
1113
|
if (_dataset.ignoreForWeb) {
|
|
903
1114
|
continue;
|
|
904
1115
|
}
|
|
@@ -906,11 +1117,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
906
1117
|
continue;
|
|
907
1118
|
}
|
|
908
1119
|
var _datasetDir = _path["default"].join(dataDir, _dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
909
|
-
var
|
|
910
|
-
|
|
1120
|
+
var _iterator23 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir)),
|
|
1121
|
+
_step23;
|
|
911
1122
|
try {
|
|
912
|
-
for (
|
|
913
|
-
var reunionSplitPath =
|
|
1123
|
+
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
1124
|
+
var reunionSplitPath = _step23.value;
|
|
914
1125
|
var reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
915
1126
|
if (!reunionFilename.endsWith(".json")) {
|
|
916
1127
|
continue;
|
|
@@ -934,16 +1145,16 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
934
1145
|
reunionsAtDay.push(reunion);
|
|
935
1146
|
var odj = reunion.odj;
|
|
936
1147
|
if (odj !== undefined) {
|
|
937
|
-
var
|
|
938
|
-
|
|
1148
|
+
var _iterator24 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
1149
|
+
_step24;
|
|
939
1150
|
try {
|
|
940
|
-
for (
|
|
941
|
-
var pointOdj =
|
|
942
|
-
var
|
|
943
|
-
|
|
1151
|
+
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
1152
|
+
var pointOdj = _step24.value;
|
|
1153
|
+
var _iterator25 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
1154
|
+
_step25;
|
|
944
1155
|
try {
|
|
945
|
-
for (
|
|
946
|
-
var dossierLegislatifRef =
|
|
1156
|
+
for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
|
|
1157
|
+
var dossierLegislatifRef = _step25.value;
|
|
947
1158
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
948
1159
|
if (reunionsAtDossierUid === undefined) {
|
|
949
1160
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -951,37 +1162,37 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
951
1162
|
reunionsAtDossierUid.push(reunion);
|
|
952
1163
|
}
|
|
953
1164
|
} catch (err) {
|
|
954
|
-
|
|
1165
|
+
_iterator25.e(err);
|
|
955
1166
|
} finally {
|
|
956
|
-
|
|
1167
|
+
_iterator25.f();
|
|
957
1168
|
}
|
|
958
1169
|
}
|
|
959
1170
|
} catch (err) {
|
|
960
|
-
|
|
1171
|
+
_iterator24.e(err);
|
|
961
1172
|
} finally {
|
|
962
|
-
|
|
1173
|
+
_iterator24.f();
|
|
963
1174
|
}
|
|
964
1175
|
}
|
|
965
1176
|
}
|
|
966
1177
|
} catch (err) {
|
|
967
|
-
|
|
1178
|
+
_iterator23.e(err);
|
|
968
1179
|
} finally {
|
|
969
|
-
|
|
1180
|
+
_iterator23.f();
|
|
970
1181
|
}
|
|
971
1182
|
}
|
|
972
1183
|
} catch (err) {
|
|
973
|
-
|
|
1184
|
+
_iterator22.e(err);
|
|
974
1185
|
} finally {
|
|
975
|
-
|
|
1186
|
+
_iterator22.f();
|
|
976
1187
|
}
|
|
977
1188
|
}
|
|
978
1189
|
var amendementByUid = {};
|
|
979
1190
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
980
|
-
var
|
|
981
|
-
|
|
1191
|
+
var _iterator26 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
1192
|
+
_step26;
|
|
982
1193
|
try {
|
|
983
|
-
for (
|
|
984
|
-
var _dataset2 =
|
|
1194
|
+
for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
|
|
1195
|
+
var _dataset2 = _step26.value;
|
|
985
1196
|
if (_dataset2.ignoreForWeb) {
|
|
986
1197
|
continue;
|
|
987
1198
|
}
|
|
@@ -989,11 +1200,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
989
1200
|
continue;
|
|
990
1201
|
}
|
|
991
1202
|
var _datasetDir2 = _path["default"].join(dataDir, _dataset2.filename.replace(/\.json$/, "_nettoye"));
|
|
992
|
-
var
|
|
993
|
-
|
|
1203
|
+
var _iterator27 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir2)),
|
|
1204
|
+
_step27;
|
|
994
1205
|
try {
|
|
995
|
-
for (
|
|
996
|
-
var amendementSplitPath =
|
|
1206
|
+
for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
|
|
1207
|
+
var amendementSplitPath = _step27.value;
|
|
997
1208
|
var amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
998
1209
|
if (!amendementFilename.endsWith(".json")) {
|
|
999
1210
|
continue;
|
|
@@ -1011,15 +1222,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1011
1222
|
}
|
|
1012
1223
|
}
|
|
1013
1224
|
} catch (err) {
|
|
1014
|
-
|
|
1225
|
+
_iterator27.e(err);
|
|
1015
1226
|
} finally {
|
|
1016
|
-
|
|
1227
|
+
_iterator27.f();
|
|
1017
1228
|
}
|
|
1018
1229
|
}
|
|
1019
1230
|
} catch (err) {
|
|
1020
|
-
|
|
1231
|
+
_iterator26.e(err);
|
|
1021
1232
|
} finally {
|
|
1022
|
-
|
|
1233
|
+
_iterator26.f();
|
|
1023
1234
|
}
|
|
1024
1235
|
}
|
|
1025
1236
|
var documentByUid = {};
|
|
@@ -1027,11 +1238,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1027
1238
|
var dossierParlementaireByTitreChemin = {};
|
|
1028
1239
|
var dossierParlementaireByUid = {};
|
|
1029
1240
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
1030
|
-
var
|
|
1031
|
-
|
|
1241
|
+
var _iterator28 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1242
|
+
_step28;
|
|
1032
1243
|
try {
|
|
1033
|
-
for (
|
|
1034
|
-
var _dataset3 =
|
|
1244
|
+
for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
|
|
1245
|
+
var _dataset3 = _step28.value;
|
|
1035
1246
|
if (_dataset3.ignoreForWeb) {
|
|
1036
1247
|
continue;
|
|
1037
1248
|
}
|
|
@@ -1039,11 +1250,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1039
1250
|
continue;
|
|
1040
1251
|
}
|
|
1041
1252
|
var _datasetDir3 = _path["default"].join(dataDir, _dataset3.filename.replace(/\.json$/, "_nettoye"));
|
|
1042
|
-
var
|
|
1043
|
-
|
|
1253
|
+
var _iterator29 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["documents"])),
|
|
1254
|
+
_step29;
|
|
1044
1255
|
try {
|
|
1045
|
-
for (
|
|
1046
|
-
var documentSplitPath =
|
|
1256
|
+
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
1257
|
+
var documentSplitPath = _step29.value;
|
|
1047
1258
|
var documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
1048
1259
|
if (!documentFilename.endsWith(".json")) {
|
|
1049
1260
|
continue;
|
|
@@ -1061,15 +1272,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1061
1272
|
}
|
|
1062
1273
|
}
|
|
1063
1274
|
} catch (err) {
|
|
1064
|
-
|
|
1275
|
+
_iterator29.e(err);
|
|
1065
1276
|
} finally {
|
|
1066
|
-
|
|
1277
|
+
_iterator29.f();
|
|
1067
1278
|
}
|
|
1068
|
-
var
|
|
1069
|
-
|
|
1279
|
+
var _iterator30 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["dossiers"])),
|
|
1280
|
+
_step30;
|
|
1070
1281
|
try {
|
|
1071
|
-
for (
|
|
1072
|
-
var dossierSplitPath =
|
|
1282
|
+
for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
|
|
1283
|
+
var dossierSplitPath = _step30.value;
|
|
1073
1284
|
var dossierFilename = dossierSplitPath[dossierSplitPath.length - 1];
|
|
1074
1285
|
if (!dossierFilename.endsWith(".json")) {
|
|
1075
1286
|
continue;
|
|
@@ -1094,15 +1305,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1094
1305
|
}
|
|
1095
1306
|
}
|
|
1096
1307
|
} catch (err) {
|
|
1097
|
-
|
|
1308
|
+
_iterator30.e(err);
|
|
1098
1309
|
} finally {
|
|
1099
|
-
|
|
1310
|
+
_iterator30.f();
|
|
1100
1311
|
}
|
|
1101
1312
|
}
|
|
1102
1313
|
} catch (err) {
|
|
1103
|
-
|
|
1314
|
+
_iterator28.e(err);
|
|
1104
1315
|
} finally {
|
|
1105
|
-
|
|
1316
|
+
_iterator28.f();
|
|
1106
1317
|
}
|
|
1107
1318
|
}
|
|
1108
1319
|
var photoByUid = {};
|
|
@@ -1140,11 +1351,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1140
1351
|
}
|
|
1141
1352
|
var scrutinByUid = {};
|
|
1142
1353
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
1143
|
-
var
|
|
1144
|
-
|
|
1354
|
+
var _iterator31 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1355
|
+
_step31;
|
|
1145
1356
|
try {
|
|
1146
|
-
for (
|
|
1147
|
-
var _dataset4 =
|
|
1357
|
+
for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
|
|
1358
|
+
var _dataset4 = _step31.value;
|
|
1148
1359
|
if (_dataset4.ignoreForWeb) {
|
|
1149
1360
|
continue;
|
|
1150
1361
|
}
|
|
@@ -1152,11 +1363,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1152
1363
|
continue;
|
|
1153
1364
|
}
|
|
1154
1365
|
var _datasetDir4 = _path["default"].join(dataDir, _dataset4.filename.replace(/\.json$/, "_nettoye"));
|
|
1155
|
-
var
|
|
1156
|
-
|
|
1366
|
+
var _iterator32 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir4)),
|
|
1367
|
+
_step32;
|
|
1157
1368
|
try {
|
|
1158
|
-
for (
|
|
1159
|
-
var scrutinSplitPath =
|
|
1369
|
+
for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
|
|
1370
|
+
var scrutinSplitPath = _step32.value;
|
|
1160
1371
|
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
1161
1372
|
if (!scrutinFilename.endsWith(".json")) {
|
|
1162
1373
|
continue;
|
|
@@ -1174,15 +1385,109 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1174
1385
|
}
|
|
1175
1386
|
}
|
|
1176
1387
|
} catch (err) {
|
|
1177
|
-
|
|
1388
|
+
_iterator32.e(err);
|
|
1389
|
+
} finally {
|
|
1390
|
+
_iterator32.f();
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
} catch (err) {
|
|
1394
|
+
_iterator31.e(err);
|
|
1395
|
+
} finally {
|
|
1396
|
+
_iterator31.f();
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
var questionByUid = {};
|
|
1400
|
+
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
1401
|
+
var _iterator33 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
1402
|
+
_step33;
|
|
1403
|
+
try {
|
|
1404
|
+
for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
|
|
1405
|
+
var _dataset5 = _step33.value;
|
|
1406
|
+
if (_dataset5.ignoreForWeb) {
|
|
1407
|
+
continue;
|
|
1408
|
+
}
|
|
1409
|
+
if (legislature !== _legislatures.Legislature.All && _dataset5.legislature !== _legislatures.Legislature.All && legislature !== _dataset5.legislature) {
|
|
1410
|
+
continue;
|
|
1411
|
+
}
|
|
1412
|
+
var _datasetDir5 = _path["default"].join(dataDir, _dataset5.filename.replace(/\.json$/, "_nettoye"));
|
|
1413
|
+
var _iterator34 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir5)),
|
|
1414
|
+
_step34;
|
|
1415
|
+
try {
|
|
1416
|
+
for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
|
|
1417
|
+
var questionSplitPath = _step34.value;
|
|
1418
|
+
var questionFilename = questionSplitPath[questionSplitPath.length - 1];
|
|
1419
|
+
if (!questionFilename.endsWith(".json")) {
|
|
1420
|
+
continue;
|
|
1421
|
+
}
|
|
1422
|
+
var questionFilePath = _path["default"].join.apply(_path["default"], [_datasetDir5].concat(_toConsumableArray(questionSplitPath)));
|
|
1423
|
+
if (log) {
|
|
1424
|
+
console.log("Loading file: ".concat(questionFilePath, "\u2026"));
|
|
1425
|
+
}
|
|
1426
|
+
var questionJson = _fsExtra["default"].readFileSync(questionFilePath, {
|
|
1427
|
+
encoding: "utf8"
|
|
1428
|
+
});
|
|
1429
|
+
var question = _questions.Convert.toQuestion(questionJson);
|
|
1430
|
+
if (questionByUid[question.uid] === undefined) {
|
|
1431
|
+
questionByUid[question.uid] = question;
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
} catch (err) {
|
|
1435
|
+
_iterator34.e(err);
|
|
1178
1436
|
} finally {
|
|
1179
|
-
|
|
1437
|
+
_iterator34.f();
|
|
1180
1438
|
}
|
|
1181
1439
|
}
|
|
1182
1440
|
} catch (err) {
|
|
1183
|
-
|
|
1441
|
+
_iterator33.e(err);
|
|
1184
1442
|
} finally {
|
|
1185
|
-
|
|
1443
|
+
_iterator33.f();
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
var compteRenduByUid = {};
|
|
1447
|
+
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1448
|
+
var _iterator35 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1449
|
+
_step35;
|
|
1450
|
+
try {
|
|
1451
|
+
for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
|
|
1452
|
+
var _dataset6 = _step35.value;
|
|
1453
|
+
if (_dataset6.ignoreForWeb) {
|
|
1454
|
+
continue;
|
|
1455
|
+
}
|
|
1456
|
+
if (legislature !== _legislatures.Legislature.All && _dataset6.legislature !== _legislatures.Legislature.All && legislature !== _dataset6.legislature) {
|
|
1457
|
+
continue;
|
|
1458
|
+
}
|
|
1459
|
+
var _datasetDir6 = _path["default"].join(dataDir, _dataset6.filename.replace(/\.json$/, "_nettoye"));
|
|
1460
|
+
var _iterator36 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir6)),
|
|
1461
|
+
_step36;
|
|
1462
|
+
try {
|
|
1463
|
+
for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
|
|
1464
|
+
var compteRenduPath = _step36.value;
|
|
1465
|
+
var compteRenduFilename = compteRenduPath[compteRenduPath.length - 1];
|
|
1466
|
+
if (!compteRenduFilename.endsWith(".json")) {
|
|
1467
|
+
continue;
|
|
1468
|
+
}
|
|
1469
|
+
var compteRenduFilePath = _path["default"].join.apply(_path["default"], [_datasetDir6].concat(_toConsumableArray(compteRenduPath)));
|
|
1470
|
+
if (log) {
|
|
1471
|
+
console.log("Loading file: ".concat(compteRenduFilePath, "\u2026"));
|
|
1472
|
+
}
|
|
1473
|
+
var compteRenduJson = _fsExtra["default"].readFileSync(compteRenduFilePath, {
|
|
1474
|
+
encoding: "utf8"
|
|
1475
|
+
});
|
|
1476
|
+
var compteRendu = _debats.Convert.toCompteRendu(compteRenduJson);
|
|
1477
|
+
if (compteRenduByUid[compteRendu.uid] === undefined) {
|
|
1478
|
+
compteRenduByUid[compteRendu.uid] = compteRendu;
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
} catch (err) {
|
|
1482
|
+
_iterator36.e(err);
|
|
1483
|
+
} finally {
|
|
1484
|
+
_iterator36.f();
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
} catch (err) {
|
|
1488
|
+
_iterator35.e(err);
|
|
1489
|
+
} finally {
|
|
1490
|
+
_iterator35.f();
|
|
1186
1491
|
}
|
|
1187
1492
|
}
|
|
1188
1493
|
return {
|
|
@@ -1197,24 +1502,26 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
1197
1502
|
reunionByUid: reunionByUid,
|
|
1198
1503
|
reunionsByDay: reunionsByDay,
|
|
1199
1504
|
reunionsByDossierUid: reunionsByDossierUid,
|
|
1200
|
-
scrutinByUid: scrutinByUid
|
|
1505
|
+
scrutinByUid: scrutinByUid,
|
|
1506
|
+
questionByUid: questionByUid,
|
|
1507
|
+
compteRenduByUid: compteRenduByUid
|
|
1201
1508
|
};
|
|
1202
1509
|
}
|
|
1203
1510
|
|
|
1204
1511
|
/// Load data from big monolytic files.
|
|
1205
1512
|
/// Deprecated: Assemblée nationale open data no more uses monolytic files.
|
|
1206
1513
|
function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
1207
|
-
var
|
|
1208
|
-
|
|
1209
|
-
log =
|
|
1514
|
+
var _ref11 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
1515
|
+
_ref11$log = _ref11.log,
|
|
1516
|
+
log = _ref11$log === void 0 ? false : _ref11$log;
|
|
1210
1517
|
var acteurByUid = {};
|
|
1211
1518
|
var organeByUid = {};
|
|
1212
1519
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
1213
|
-
var
|
|
1214
|
-
|
|
1520
|
+
var _iterator37 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
1521
|
+
_step37;
|
|
1215
1522
|
try {
|
|
1216
|
-
for (
|
|
1217
|
-
var dataset =
|
|
1523
|
+
for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {
|
|
1524
|
+
var dataset = _step37.value;
|
|
1218
1525
|
if (dataset.ignoreForWeb) {
|
|
1219
1526
|
continue;
|
|
1220
1527
|
}
|
|
@@ -1229,59 +1536,59 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1229
1536
|
encoding: "utf8"
|
|
1230
1537
|
});
|
|
1231
1538
|
var acteursEtOrganes = _acteurs_et_organes.Convert.toActeursEtOrganes(json);
|
|
1232
|
-
var
|
|
1233
|
-
|
|
1539
|
+
var _iterator38 = _createForOfIteratorHelper(acteursEtOrganes.acteurs),
|
|
1540
|
+
_step38;
|
|
1234
1541
|
try {
|
|
1235
|
-
for (
|
|
1236
|
-
var acteur =
|
|
1542
|
+
for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) {
|
|
1543
|
+
var acteur = _step38.value;
|
|
1237
1544
|
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
1238
1545
|
if (acteurByUid[acteur.uid] === undefined) {
|
|
1239
1546
|
acteurByUid[acteur.uid] = acteur;
|
|
1240
1547
|
}
|
|
1241
1548
|
}
|
|
1242
1549
|
} catch (err) {
|
|
1243
|
-
|
|
1550
|
+
_iterator38.e(err);
|
|
1244
1551
|
} finally {
|
|
1245
|
-
|
|
1552
|
+
_iterator38.f();
|
|
1246
1553
|
}
|
|
1247
|
-
var
|
|
1248
|
-
|
|
1554
|
+
var _iterator39 = _createForOfIteratorHelper(acteursEtOrganes.organes),
|
|
1555
|
+
_step39;
|
|
1249
1556
|
try {
|
|
1250
|
-
for (
|
|
1251
|
-
var organe =
|
|
1557
|
+
for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) {
|
|
1558
|
+
var organe = _step39.value;
|
|
1252
1559
|
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
1253
1560
|
if (organeByUid[organe.uid] === undefined) {
|
|
1254
1561
|
organeByUid[organe.uid] = organe;
|
|
1255
1562
|
}
|
|
1256
1563
|
}
|
|
1257
1564
|
} catch (err) {
|
|
1258
|
-
|
|
1565
|
+
_iterator39.e(err);
|
|
1259
1566
|
} finally {
|
|
1260
|
-
|
|
1567
|
+
_iterator39.f();
|
|
1261
1568
|
}
|
|
1262
1569
|
}
|
|
1263
1570
|
} catch (err) {
|
|
1264
|
-
|
|
1571
|
+
_iterator37.e(err);
|
|
1265
1572
|
} finally {
|
|
1266
|
-
|
|
1573
|
+
_iterator37.f();
|
|
1267
1574
|
}
|
|
1268
1575
|
}
|
|
1269
1576
|
var reunionByUid = {};
|
|
1270
1577
|
var reunionsByDay = {};
|
|
1271
1578
|
var reunionsByDossierUid = {};
|
|
1272
1579
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
1273
|
-
var
|
|
1274
|
-
|
|
1580
|
+
var _iterator40 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
1581
|
+
_step40;
|
|
1275
1582
|
try {
|
|
1276
|
-
for (
|
|
1277
|
-
var
|
|
1278
|
-
if (
|
|
1583
|
+
for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
|
|
1584
|
+
var _dataset7 = _step40.value;
|
|
1585
|
+
if (_dataset7.ignoreForWeb) {
|
|
1279
1586
|
continue;
|
|
1280
1587
|
}
|
|
1281
|
-
if (legislature !== _legislatures.Legislature.All &&
|
|
1588
|
+
if (legislature !== _legislatures.Legislature.All && _dataset7.legislature !== _legislatures.Legislature.All && legislature !== _dataset7.legislature) {
|
|
1282
1589
|
continue;
|
|
1283
1590
|
}
|
|
1284
|
-
var _jsonFilePath2 = _path["default"].join(dataDir,
|
|
1591
|
+
var _jsonFilePath2 = _path["default"].join(dataDir, _dataset7.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1285
1592
|
if (log) {
|
|
1286
1593
|
console.log("Loading file: ".concat(_jsonFilePath2));
|
|
1287
1594
|
}
|
|
@@ -1289,11 +1596,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1289
1596
|
encoding: "utf8"
|
|
1290
1597
|
});
|
|
1291
1598
|
var agendas = _agendas.Convert.toAgendas(_json2);
|
|
1292
|
-
var
|
|
1293
|
-
|
|
1599
|
+
var _iterator41 = _createForOfIteratorHelper(agendas.reunions),
|
|
1600
|
+
_step41;
|
|
1294
1601
|
try {
|
|
1295
|
-
for (
|
|
1296
|
-
var reunion =
|
|
1602
|
+
for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) {
|
|
1603
|
+
var reunion = _step41.value;
|
|
1297
1604
|
if (reunionByUid[reunion.uid] === undefined) {
|
|
1298
1605
|
reunionByUid[reunion.uid] = reunion;
|
|
1299
1606
|
}
|
|
@@ -1305,16 +1612,16 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1305
1612
|
reunionsAtDay.push(reunion);
|
|
1306
1613
|
var odj = reunion.odj;
|
|
1307
1614
|
if (odj !== undefined) {
|
|
1308
|
-
var
|
|
1309
|
-
|
|
1615
|
+
var _iterator42 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
1616
|
+
_step42;
|
|
1310
1617
|
try {
|
|
1311
|
-
for (
|
|
1312
|
-
var pointOdj =
|
|
1313
|
-
var
|
|
1314
|
-
|
|
1618
|
+
for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
|
|
1619
|
+
var pointOdj = _step42.value;
|
|
1620
|
+
var _iterator43 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
1621
|
+
_step43;
|
|
1315
1622
|
try {
|
|
1316
|
-
for (
|
|
1317
|
-
var dossierLegislatifRef =
|
|
1623
|
+
for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {
|
|
1624
|
+
var dossierLegislatifRef = _step43.value;
|
|
1318
1625
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
1319
1626
|
if (reunionsAtDossierUid === undefined) {
|
|
1320
1627
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -1322,44 +1629,44 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1322
1629
|
reunionsAtDossierUid.push(reunion);
|
|
1323
1630
|
}
|
|
1324
1631
|
} catch (err) {
|
|
1325
|
-
|
|
1632
|
+
_iterator43.e(err);
|
|
1326
1633
|
} finally {
|
|
1327
|
-
|
|
1634
|
+
_iterator43.f();
|
|
1328
1635
|
}
|
|
1329
1636
|
}
|
|
1330
1637
|
} catch (err) {
|
|
1331
|
-
|
|
1638
|
+
_iterator42.e(err);
|
|
1332
1639
|
} finally {
|
|
1333
|
-
|
|
1640
|
+
_iterator42.f();
|
|
1334
1641
|
}
|
|
1335
1642
|
}
|
|
1336
1643
|
}
|
|
1337
1644
|
} catch (err) {
|
|
1338
|
-
|
|
1645
|
+
_iterator41.e(err);
|
|
1339
1646
|
} finally {
|
|
1340
|
-
|
|
1647
|
+
_iterator41.f();
|
|
1341
1648
|
}
|
|
1342
1649
|
}
|
|
1343
1650
|
} catch (err) {
|
|
1344
|
-
|
|
1651
|
+
_iterator40.e(err);
|
|
1345
1652
|
} finally {
|
|
1346
|
-
|
|
1653
|
+
_iterator40.f();
|
|
1347
1654
|
}
|
|
1348
1655
|
}
|
|
1349
1656
|
var amendementByUid = {};
|
|
1350
1657
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
1351
|
-
var
|
|
1352
|
-
|
|
1658
|
+
var _iterator44 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
1659
|
+
_step44;
|
|
1353
1660
|
try {
|
|
1354
|
-
for (
|
|
1355
|
-
var
|
|
1356
|
-
if (
|
|
1661
|
+
for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) {
|
|
1662
|
+
var _dataset8 = _step44.value;
|
|
1663
|
+
if (_dataset8.ignoreForWeb) {
|
|
1357
1664
|
continue;
|
|
1358
1665
|
}
|
|
1359
|
-
if (legislature !== _legislatures.Legislature.All &&
|
|
1666
|
+
if (legislature !== _legislatures.Legislature.All && _dataset8.legislature !== _legislatures.Legislature.All && legislature !== _dataset8.legislature) {
|
|
1360
1667
|
continue;
|
|
1361
1668
|
}
|
|
1362
|
-
var _jsonFilePath3 = _path["default"].join(dataDir,
|
|
1669
|
+
var _jsonFilePath3 = _path["default"].join(dataDir, _dataset8.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1363
1670
|
if (log) {
|
|
1364
1671
|
console.log("Loading file: ".concat(_jsonFilePath3));
|
|
1365
1672
|
}
|
|
@@ -1367,36 +1674,36 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1367
1674
|
encoding: "utf8"
|
|
1368
1675
|
});
|
|
1369
1676
|
var amendements = _amendements.Convert.toAmendements(_json3);
|
|
1370
|
-
var
|
|
1371
|
-
|
|
1677
|
+
var _iterator45 = _createForOfIteratorHelper(amendements.textesLegislatifs),
|
|
1678
|
+
_step45;
|
|
1372
1679
|
try {
|
|
1373
|
-
for (
|
|
1374
|
-
var texteLegislatif =
|
|
1375
|
-
var
|
|
1376
|
-
|
|
1680
|
+
for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) {
|
|
1681
|
+
var texteLegislatif = _step45.value;
|
|
1682
|
+
var _iterator46 = _createForOfIteratorHelper(texteLegislatif.amendements),
|
|
1683
|
+
_step46;
|
|
1377
1684
|
try {
|
|
1378
|
-
for (
|
|
1379
|
-
var amendement =
|
|
1685
|
+
for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
|
|
1686
|
+
var amendement = _step46.value;
|
|
1380
1687
|
if (amendementByUid[amendement.uid] === undefined) {
|
|
1381
1688
|
amendementByUid[amendement.uid] = amendement;
|
|
1382
1689
|
}
|
|
1383
1690
|
}
|
|
1384
1691
|
} catch (err) {
|
|
1385
|
-
|
|
1692
|
+
_iterator46.e(err);
|
|
1386
1693
|
} finally {
|
|
1387
|
-
|
|
1694
|
+
_iterator46.f();
|
|
1388
1695
|
}
|
|
1389
1696
|
}
|
|
1390
1697
|
} catch (err) {
|
|
1391
|
-
|
|
1698
|
+
_iterator45.e(err);
|
|
1392
1699
|
} finally {
|
|
1393
|
-
|
|
1700
|
+
_iterator45.f();
|
|
1394
1701
|
}
|
|
1395
1702
|
}
|
|
1396
1703
|
} catch (err) {
|
|
1397
|
-
|
|
1704
|
+
_iterator44.e(err);
|
|
1398
1705
|
} finally {
|
|
1399
|
-
|
|
1706
|
+
_iterator44.f();
|
|
1400
1707
|
}
|
|
1401
1708
|
}
|
|
1402
1709
|
var documentByUid = {};
|
|
@@ -1404,18 +1711,18 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1404
1711
|
var dossierParlementaireByTitreChemin = {};
|
|
1405
1712
|
var dossierParlementaireByUid = {};
|
|
1406
1713
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
1407
|
-
var
|
|
1408
|
-
|
|
1714
|
+
var _iterator47 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1715
|
+
_step47;
|
|
1409
1716
|
try {
|
|
1410
|
-
for (
|
|
1411
|
-
var
|
|
1412
|
-
if (
|
|
1717
|
+
for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) {
|
|
1718
|
+
var _dataset9 = _step47.value;
|
|
1719
|
+
if (_dataset9.ignoreForWeb) {
|
|
1413
1720
|
continue;
|
|
1414
1721
|
}
|
|
1415
|
-
if (legislature !== _legislatures.Legislature.All &&
|
|
1722
|
+
if (legislature !== _legislatures.Legislature.All && _dataset9.legislature !== _legislatures.Legislature.All && legislature !== _dataset9.legislature) {
|
|
1416
1723
|
continue;
|
|
1417
1724
|
}
|
|
1418
|
-
var _jsonFilePath4 = _path["default"].join(dataDir,
|
|
1725
|
+
var _jsonFilePath4 = _path["default"].join(dataDir, _dataset9.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1419
1726
|
if (log) {
|
|
1420
1727
|
console.log("Loading file: ".concat(_jsonFilePath4));
|
|
1421
1728
|
}
|
|
@@ -1423,25 +1730,25 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1423
1730
|
encoding: "utf8"
|
|
1424
1731
|
});
|
|
1425
1732
|
var dossiersLegislatifs = _dossiers_legislatifs.Convert.toDossiersLegislatifs(_json4);
|
|
1426
|
-
var
|
|
1427
|
-
|
|
1733
|
+
var _iterator48 = _createForOfIteratorHelper(dossiersLegislatifs.textesLegislatifs),
|
|
1734
|
+
_step48;
|
|
1428
1735
|
try {
|
|
1429
|
-
for (
|
|
1430
|
-
var document =
|
|
1736
|
+
for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) {
|
|
1737
|
+
var document = _step48.value;
|
|
1431
1738
|
if (documentByUid[document.uid] === undefined) {
|
|
1432
1739
|
documentByUid[document.uid] = document;
|
|
1433
1740
|
}
|
|
1434
1741
|
}
|
|
1435
1742
|
} catch (err) {
|
|
1436
|
-
|
|
1743
|
+
_iterator48.e(err);
|
|
1437
1744
|
} finally {
|
|
1438
|
-
|
|
1745
|
+
_iterator48.f();
|
|
1439
1746
|
}
|
|
1440
|
-
var
|
|
1441
|
-
|
|
1747
|
+
var _iterator49 = _createForOfIteratorHelper(dossiersLegislatifs.dossiersParlementaires),
|
|
1748
|
+
_step49;
|
|
1442
1749
|
try {
|
|
1443
|
-
for (
|
|
1444
|
-
var dossier =
|
|
1750
|
+
for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) {
|
|
1751
|
+
var dossier = _step49.value;
|
|
1445
1752
|
var titreDossier = dossier.titreDossier;
|
|
1446
1753
|
if (titreDossier.senatChemin && dossierParlementaireBySenatChemin[titreDossier.senatChemin] === undefined) {
|
|
1447
1754
|
dossierParlementaireBySenatChemin[titreDossier.senatChemin] = dossier;
|
|
@@ -1454,15 +1761,15 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1454
1761
|
}
|
|
1455
1762
|
}
|
|
1456
1763
|
} catch (err) {
|
|
1457
|
-
|
|
1764
|
+
_iterator49.e(err);
|
|
1458
1765
|
} finally {
|
|
1459
|
-
|
|
1766
|
+
_iterator49.f();
|
|
1460
1767
|
}
|
|
1461
1768
|
}
|
|
1462
1769
|
} catch (err) {
|
|
1463
|
-
|
|
1770
|
+
_iterator47.e(err);
|
|
1464
1771
|
} finally {
|
|
1465
|
-
|
|
1772
|
+
_iterator47.f();
|
|
1466
1773
|
}
|
|
1467
1774
|
}
|
|
1468
1775
|
var photoByUid = {};
|
|
@@ -1501,18 +1808,18 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1501
1808
|
}
|
|
1502
1809
|
var scrutinByUid = {};
|
|
1503
1810
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
1504
|
-
var
|
|
1505
|
-
|
|
1811
|
+
var _iterator50 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1812
|
+
_step50;
|
|
1506
1813
|
try {
|
|
1507
|
-
for (
|
|
1508
|
-
var
|
|
1509
|
-
if (
|
|
1814
|
+
for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) {
|
|
1815
|
+
var _dataset10 = _step50.value;
|
|
1816
|
+
if (_dataset10.ignoreForWeb) {
|
|
1510
1817
|
continue;
|
|
1511
1818
|
}
|
|
1512
|
-
if (legislature !== _legislatures.Legislature.All &&
|
|
1819
|
+
if (legislature !== _legislatures.Legislature.All && _dataset10.legislature !== _legislatures.Legislature.All && legislature !== _dataset10.legislature) {
|
|
1513
1820
|
continue;
|
|
1514
1821
|
}
|
|
1515
|
-
var _jsonFilePath7 = _path["default"].join(dataDir,
|
|
1822
|
+
var _jsonFilePath7 = _path["default"].join(dataDir, _dataset10.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1516
1823
|
if (log) {
|
|
1517
1824
|
console.log("Loading file: ".concat(_jsonFilePath7));
|
|
1518
1825
|
}
|
|
@@ -1520,25 +1827,109 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1520
1827
|
encoding: "utf8"
|
|
1521
1828
|
});
|
|
1522
1829
|
var scrutins = _scrutins.Convert.toScrutins(_json7);
|
|
1523
|
-
var
|
|
1524
|
-
|
|
1830
|
+
var _iterator51 = _createForOfIteratorHelper(scrutins.scrutins),
|
|
1831
|
+
_step51;
|
|
1525
1832
|
try {
|
|
1526
|
-
for (
|
|
1527
|
-
var scrutin =
|
|
1833
|
+
for (_iterator51.s(); !(_step51 = _iterator51.n()).done;) {
|
|
1834
|
+
var scrutin = _step51.value;
|
|
1528
1835
|
if (scrutinByUid[scrutin.uid] === undefined) {
|
|
1529
1836
|
scrutinByUid[scrutin.uid] = scrutin;
|
|
1530
1837
|
}
|
|
1531
1838
|
}
|
|
1532
1839
|
} catch (err) {
|
|
1533
|
-
|
|
1840
|
+
_iterator51.e(err);
|
|
1841
|
+
} finally {
|
|
1842
|
+
_iterator51.f();
|
|
1843
|
+
}
|
|
1844
|
+
}
|
|
1845
|
+
} catch (err) {
|
|
1846
|
+
_iterator50.e(err);
|
|
1847
|
+
} finally {
|
|
1848
|
+
_iterator50.f();
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1851
|
+
var questionByUid = {};
|
|
1852
|
+
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
1853
|
+
var _iterator52 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
1854
|
+
_step52;
|
|
1855
|
+
try {
|
|
1856
|
+
for (_iterator52.s(); !(_step52 = _iterator52.n()).done;) {
|
|
1857
|
+
var _dataset11 = _step52.value;
|
|
1858
|
+
if (_dataset11.ignoreForWeb) {
|
|
1859
|
+
continue;
|
|
1860
|
+
}
|
|
1861
|
+
if (legislature !== _legislatures.Legislature.All && _dataset11.legislature !== _legislatures.Legislature.All && legislature !== _dataset11.legislature) {
|
|
1862
|
+
continue;
|
|
1863
|
+
}
|
|
1864
|
+
var _jsonFilePath8 = _path["default"].join(dataDir, _dataset11.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1865
|
+
if (log) {
|
|
1866
|
+
console.log("Loading file: ".concat(_jsonFilePath8));
|
|
1867
|
+
}
|
|
1868
|
+
var _json8 = _fsExtra["default"].readFileSync(_jsonFilePath8, {
|
|
1869
|
+
encoding: "utf8"
|
|
1870
|
+
});
|
|
1871
|
+
var questions = _questions.Convert.toQuestions(_json8);
|
|
1872
|
+
var _iterator53 = _createForOfIteratorHelper(questions.questions),
|
|
1873
|
+
_step53;
|
|
1874
|
+
try {
|
|
1875
|
+
for (_iterator53.s(); !(_step53 = _iterator53.n()).done;) {
|
|
1876
|
+
var question = _step53.value;
|
|
1877
|
+
if (questionByUid[question.uid] === undefined) {
|
|
1878
|
+
questionByUid[question.uid] = question;
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
} catch (err) {
|
|
1882
|
+
_iterator53.e(err);
|
|
1534
1883
|
} finally {
|
|
1535
|
-
|
|
1884
|
+
_iterator53.f();
|
|
1536
1885
|
}
|
|
1537
1886
|
}
|
|
1538
1887
|
} catch (err) {
|
|
1539
|
-
|
|
1888
|
+
_iterator52.e(err);
|
|
1540
1889
|
} finally {
|
|
1541
|
-
|
|
1890
|
+
_iterator52.f();
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
var compteRenduByUid = {};
|
|
1894
|
+
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1895
|
+
var _iterator54 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1896
|
+
_step54;
|
|
1897
|
+
try {
|
|
1898
|
+
for (_iterator54.s(); !(_step54 = _iterator54.n()).done;) {
|
|
1899
|
+
var _dataset12 = _step54.value;
|
|
1900
|
+
if (_dataset12.ignoreForWeb) {
|
|
1901
|
+
continue;
|
|
1902
|
+
}
|
|
1903
|
+
if (legislature !== _legislatures.Legislature.All && _dataset12.legislature !== _legislatures.Legislature.All && legislature !== _dataset12.legislature) {
|
|
1904
|
+
continue;
|
|
1905
|
+
}
|
|
1906
|
+
var _jsonFilePath9 = _path["default"].join(dataDir, _dataset12.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1907
|
+
if (log) {
|
|
1908
|
+
console.log("Loading file: ".concat(_jsonFilePath9));
|
|
1909
|
+
}
|
|
1910
|
+
var _json9 = _fsExtra["default"].readFileSync(_jsonFilePath9, {
|
|
1911
|
+
encoding: "utf8"
|
|
1912
|
+
});
|
|
1913
|
+
var comptesRendus = _debats.Convert.toComptesRendus(_json9);
|
|
1914
|
+
var _iterator55 = _createForOfIteratorHelper(comptesRendus.comptesRendus),
|
|
1915
|
+
_step55;
|
|
1916
|
+
try {
|
|
1917
|
+
for (_iterator55.s(); !(_step55 = _iterator55.n()).done;) {
|
|
1918
|
+
var compteRendu = _step55.value;
|
|
1919
|
+
if (compteRenduByUid[compteRendu.uid] === undefined) {
|
|
1920
|
+
compteRenduByUid[compteRendu.uid] = compteRendu;
|
|
1921
|
+
}
|
|
1922
|
+
}
|
|
1923
|
+
} catch (err) {
|
|
1924
|
+
_iterator55.e(err);
|
|
1925
|
+
} finally {
|
|
1926
|
+
_iterator55.f();
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
} catch (err) {
|
|
1930
|
+
_iterator54.e(err);
|
|
1931
|
+
} finally {
|
|
1932
|
+
_iterator54.f();
|
|
1542
1933
|
}
|
|
1543
1934
|
}
|
|
1544
1935
|
return {
|
|
@@ -1553,13 +1944,15 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
1553
1944
|
reunionByUid: reunionByUid,
|
|
1554
1945
|
reunionsByDay: reunionsByDay,
|
|
1555
1946
|
reunionsByDossierUid: reunionsByDossierUid,
|
|
1556
|
-
scrutinByUid: scrutinByUid
|
|
1947
|
+
scrutinByUid: scrutinByUid,
|
|
1948
|
+
questionByUid: questionByUid,
|
|
1949
|
+
compteRenduByUid: compteRenduByUid
|
|
1557
1950
|
};
|
|
1558
1951
|
}
|
|
1559
1952
|
function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
1560
|
-
var
|
|
1561
|
-
|
|
1562
|
-
log =
|
|
1953
|
+
var _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
1954
|
+
_ref12$log = _ref12.log,
|
|
1955
|
+
log = _ref12$log === void 0 ? false : _ref12$log;
|
|
1563
1956
|
var jsonFilePath = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
1564
1957
|
// TODO: Handle Legislature.All.
|
|
1565
1958
|
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.Seize : legislature), "deputes.json");
|
|
@@ -1572,9 +1965,9 @@ function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
|
1572
1965
|
return JSON.parse(json);
|
|
1573
1966
|
}
|
|
1574
1967
|
function loadAssembleePhotosSenateurs(dataDir) {
|
|
1575
|
-
var
|
|
1576
|
-
|
|
1577
|
-
log =
|
|
1968
|
+
var _ref13 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1969
|
+
_ref13$log = _ref13.log,
|
|
1970
|
+
log = _ref13$log === void 0 ? false : _ref13$log;
|
|
1578
1971
|
var jsonFilePath = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
1579
1972
|
if (log) {
|
|
1580
1973
|
console.log("Loading file: ".concat(jsonFilePath));
|
|
@@ -1635,4 +2028,17 @@ function pathFromScrutinUid(scrutinsDir, uid) {
|
|
|
1635
2028
|
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
1636
2029
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
1637
2030
|
}
|
|
1638
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJkZXNjIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsInN0YXRlIiwiRXJyb3IiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwibGVuZ3RoIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkYiLCJzIiwibiIsImUiLCJfZSIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsInRvU3RyaW5nIiwidGVzdCIsImxlbiIsImFycjIiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwiaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzIiwiZGF0YURpciIsImxlZ2lzbGF0dXJlIiwiX3JlZiIsImFyZ3VtZW50cyIsIl9yZWYkbG9nIiwibG9nIiwiX2NhbGxlZSIsImFjdGV1cnNVaWQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImRhdGFzZXQiLCJkYXRhc2V0RGlyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyRmlsZVBhdGgiLCJhY3RldXJKc29uIiwiYWN0ZXVyIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIlNldCIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInJlcGxhY2UiLCJ3YWxrRGlyIiwiZW5kc1dpdGgiLCJhcHBseSIsImNvbmNhdCIsImNvbnNvbGUiLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImhhcyIsInVpZCIsImFkZCIsImRhdGFzZXRMZWdpc2xhdHVyZSIsInQwIiwidDEiLCJpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzIiwiX3JlZjIiLCJfcmVmMiRsb2ciLCJfY2FsbGVlMiIsImFtZW5kZW1lbnRzVWlkIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYW1lbmRlbWVudHMiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsIl9yZWYzIiwiX3JlZjMkbG9nIiwiX2NhbGxlZTMiLCJkb2N1bWVudHNVaWQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfcmVmNCIsIl9yZWY0JGxvZyIsIl9jYWxsZWU0IiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlc1VpZCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIml0ZXJMb2FkQXNzZW1ibGVlT3JnYW5lcyIsIl9yZWY1IiwiX3JlZjUkbG9nIiwiX2NhbGxlZTUiLCJvcmdhbmVzVWlkIiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwidG9PcmdhbmUiLCJpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zIiwiX3JlZjYiLCJfcmVmNiRsb2ciLCJfY2FsbGVlNiIsInJldW5pb25zVWlkIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25GaWxlUGF0aCIsInJldW5pb25Kc29uIiwicmV1bmlvbiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFnZW5kYXMiLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMiLCJfcmVmNyIsIl9yZWY3JGxvZyIsIl9jYWxsZWU3Iiwic2NydXRpbnNVaWQiLCJfaXRlcmF0b3IxMyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3Iiwic2NydXRpbnMiLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJsb2FkQXNzZW1ibGVlRGF0YSIsImVuYWJsZWREYXRhc2V0cyIsIl9yZWY4IiwiX3JlZjgkbG9nIiwiYWN0ZXVyQnlVaWQiLCJvcmdhbmVCeVVpZCIsIkVuYWJsZWREYXRhc2V0cyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJfaXRlcmF0b3IxNyIsIl9zdGVwMTciLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yMTgiLCJfc3RlcDE4IiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsIm9kaiIsIl9pdGVyYXRvcjIwIiwicG9pbnRzT2RqIiwiX3N0ZXAyMCIsInBvaW50T2RqIiwiX2l0ZXJhdG9yMjEiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsIl9zdGVwMjEiLCJkb3NzaWVyTGVnaXNsYXRpZlJlZiIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IyMiIsIl9zdGVwMjIiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IyNCIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJfaXRlcmF0b3IyNiIsIl9zdGVwMjYiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiYXNzaWduIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJfaXRlcmF0b3IyOCIsIl9zdGVwMjgiLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWY5IiwiX3JlZjkkbG9nIiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMzAiLCJhY3RldXJzIiwiX3N0ZXAzMCIsIl9pdGVyYXRvcjMxIiwib3JnYW5lcyIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMiIsIl9zdGVwMzIiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IzMyIsInJldW5pb25zIiwiX3N0ZXAzMyIsIl9pdGVyYXRvcjM0IiwiX3N0ZXAzNCIsIl9pdGVyYXRvcjM1IiwiX3N0ZXAzNSIsIl9pdGVyYXRvcjM2IiwiX3N0ZXAzNiIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IzNyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiX3N0ZXAzNyIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjM4IiwiX3N0ZXAzOCIsIl9pdGVyYXRvcjM5IiwiX3N0ZXAzOSIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjQwIiwiX3N0ZXA0MCIsIl9pdGVyYXRvcjQxIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9zdGVwNDEiLCJfaXRlcmF0b3I0MiIsIl9zdGVwNDIiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yNDMiLCJfc3RlcDQzIiwibG9hZEFzc2VtYmxlZVBob3Rvc0RlcHV0ZXMiLCJfcmVmMTAiLCJfcmVmMTAkbG9nIiwibG9hZEFzc2VtYmxlZVBob3Rvc1NlbmF0ZXVycyIsIl9yZWYxMSIsIl9yZWYxMSRsb2ciLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkZ8UklPTikoQU58U04pKFJcXGQrKVtMU10oXFxkKykoQnxCVEF8QlRDfFRBUCkoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPVxuICAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgYWN0ZXVyOiBBY3RldXI7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGFjdGV1cnNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgaWYgKGFjdGV1cnNVaWQuaGFzKGFjdGV1ci51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhY3RldXJzVWlkLmFkZChhY3RldXIudWlkKVxuICAgICAgeWllbGQgeyBhY3RldXIsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBbWVuZGVtZW50cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQ7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGFtZW5kZW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgaWYgKGFtZW5kZW1lbnRzVWlkLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFtZW5kZW1lbnRzVWlkLmFkZChhbWVuZGVtZW50LnVpZClcbiAgICAgIHlpZWxkIHsgYW1lbmRlbWVudCwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGRvY3VtZW50OiBEb2N1bWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgZG9jdW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9jdW1lbnRTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgIGlmIChkb2N1bWVudHNVaWQuaGFzKGRvY3VtZW50LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50c1VpZC5hZGQoZG9jdW1lbnQudWlkKVxuICAgICAgeWllbGQgeyBkb2N1bWVudCwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAge1xuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1xuICAgICAgXCJkb3NzaWVyc1wiLFxuICAgIF0pKSB7XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhc2V0RGlyLFxuICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCxcbiAgICAgICAge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUpzb24sXG4gICAgICAgIClcbiAgICAgIGlmIChkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkLmhhcyhkb3NzaWVyUGFybGVtZW50YWlyZS51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkLmFkZChkb3NzaWVyUGFybGVtZW50YWlyZS51aWQpXG4gICAgICB5aWVsZCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlT3JnYW5lcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IG9yZ2FuZTogT3JnYW5lOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBvcmdhbmVzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZ2FuZUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgIGlmIChvcmdhbmVzVWlkLmhhcyhvcmdhbmUudWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgb3JnYW5lc1VpZC5hZGQob3JnYW5lLnVpZClcbiAgICAgIHlpZWxkIHsgb3JnYW5lLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlUmV1bmlvbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyByZXVuaW9uOiBSZXVuaW9uOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCByZXVuaW9uc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICBpZiAocmV1bmlvbnNVaWQuaGFzKHJldW5pb24udWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcmV1bmlvbnNVaWQuYWRkKHJldW5pb24udWlkKVxuICAgICAgeWllbGQgeyByZXVuaW9uLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBzY3J1dGluOiBTY3J1dGluOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBzY3J1dGluc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtzY3J1dGluRmlsZVBhdGh94oCmYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgIGlmIChzY3J1dGluc1VpZC5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBzY3J1dGluc1VpZC5hZGQoc2NydXRpbi51aWQpXG4gICAgICB5aWVsZCB7IHNjcnV0aW4sIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy5cbi8vLyBEZXByZWNhdGVkOiBVc2UgaXRlckxvYWQuLi4gaXRlcmF0b3JzIGluc3RlYWQuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLlxuLy8vIERlcHJlY2F0ZWQ6IEFzc2VtYmzDqWUgbmF0aW9uYWxlIG9wZW4gZGF0YSBubyBtb3JlIHVzZXMgbW9ub2x5dGljIGZpbGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3Qgc2NydXRpbnMgPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGlucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIHNjcnV0aW5zLnNjcnV0aW5zKSB7XG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgfWAsXG4gICAgXCJkZXB1dGVzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudFVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvY3VtZW50IFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBkb2N1bWVudFR5cGUgPSBwYXRoLmpvaW4oZG9jdW1lbnRzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oZG9jdW1lbnRUeXBlLCBtYXRjaCFbMl0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGV0YXREaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4oZXRhdERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZChcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgdWlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvc3NpZXJVaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb3NzaWVyIHBhcmxlbWVudGFpcmUgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oZG9zc2llcnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21SZXVuaW9uVWlkKHJldW5pb25zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSByZXVuaW9uVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgcmV1bmlvbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihyZXVuaW9uc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVsyXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBzZXNzaW9uRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGlkRGlyID0gcGF0aC5qb2luKHNlc3Npb25EaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gOSlcbiAgY29uc3QgbnVtZXJvTWlsbGlvbnNEaXIgPSBwYXRoLmpvaW4oaWREaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKG51bWVyb01pbGxpb25zRGlyLCBudW1lcm8uc3Vic3RyKDMsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHNjcnV0aW5VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBzY3J1dGluIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKHNjcnV0aW5zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLG1CQUFBLEdBQUFMLE9BQUE7QUFNQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxxQkFBQSxHQUFBUixPQUFBO0FBS0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQXNFLFNBQUFELHVCQUFBWSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBRSxvQkFBQSxrQkF2QnRFLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxPQUFBLFNBQUFBLE9BQUEsT0FBQUMsRUFBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsTUFBQSxHQUFBSCxFQUFBLENBQUFJLGNBQUEsRUFBQUMsY0FBQSxHQUFBSixNQUFBLENBQUFJLGNBQUEsY0FBQVQsR0FBQSxFQUFBVSxHQUFBLEVBQUFDLElBQUEsSUFBQVgsR0FBQSxDQUFBVSxH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
|
|
2031
|
+
|
|
2032
|
+
// Get standard path for object with uid : republique > legislature > group objects by thousands
|
|
2033
|
+
function pathFromUid(dataDir, uid, dataRegexp) {
|
|
2034
|
+
var match = dataRegexp.exec(uid);
|
|
2035
|
+
_assert["default"].notStrictEqual(match, null, "Unexpected structure for object with UID: ".concat(uid));
|
|
2036
|
+
var republiqueDir = _path["default"].join(dataDir, match[1]);
|
|
2037
|
+
var legislatureDir = _path["default"].join(republiqueDir, match[2]);
|
|
2038
|
+
var numero = "000000" + match[3];
|
|
2039
|
+
numero = numero.substr(numero.length - 6);
|
|
2040
|
+
var numeroMilliersDir = _path["default"].join(legislatureDir, numero.substr(0, 3));
|
|
2041
|
+
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
2042
|
+
return _path["default"].join(numeroMilliersDir, uid);
|
|
2043
|
+
}
|
|
2044
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsImtleSIsImRlc2MiLCJ2YWx1ZSIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInRoZW4iLCJ1bndyYXBwZWQiLCJlcnJvciIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIm1ldGhvZE5hbWUiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiRiIsInMiLCJuIiwiZSIsIl9lIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJpdGVyTG9hZEFzc2VtYmxlZUFjdGV1cnMiLCJkYXRhRGlyIiwibGVnaXNsYXR1cmUiLCJfcmVmIiwiYXJndW1lbnRzIiwiX3JlZiRsb2ciLCJsb2ciLCJfY2FsbGVlIiwiYWN0ZXVyc1VpZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZGF0YXNldCIsImRhdGFzZXREaXIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJhY3RldXJGaWxlUGF0aCIsImFjdGV1ckpzb24iLCJhY3RldXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiU2V0IiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiaWdub3JlRm9yV2ViIiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsIndhbGtEaXIiLCJlbmRzV2l0aCIsImFwcGx5IiwiY29uY2F0IiwiY29uc29sZSIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwiaGFzIiwidWlkIiwiYWRkIiwiZGF0YXNldExlZ2lzbGF0dXJlIiwidDAiLCJ0MSIsIml0ZXJMb2FkQXNzZW1ibGVlQW1lbmRlbWVudHMiLCJfcmVmMiIsIl9yZWYyJGxvZyIsIl9jYWxsZWUyIiwiYW1lbmRlbWVudHNVaWQiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJhbWVuZGVtZW50cyIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsIml0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzIiwiX3JlZjMiLCJfcmVmMyRsb2ciLCJfY2FsbGVlMyIsImRvY3VtZW50c1VpZCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsIml0ZXJMb2FkQXNzZW1ibGVlRG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9yZWY0IiwiX3JlZjQkbG9nIiwiX2NhbGxlZTQiLCJkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmUiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzIiwiX3JlZjUiLCJfcmVmNSRsb2ciLCJfY2FsbGVlNSIsIm9yZ2FuZXNVaWQiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVGaWxlUGF0aCIsIm9yZ2FuZUpzb24iLCJvcmdhbmUiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJ0b09yZ2FuZSIsIml0ZXJMb2FkQXNzZW1ibGVlUmV1bmlvbnMiLCJfcmVmNiIsIl9yZWY2JGxvZyIsIl9jYWxsZWU2IiwicmV1bmlvbnNVaWQiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJfaXRlcmF0b3IxMiIsIl9zdGVwMTIiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uIiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiYWdlbmRhcyIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwiaXRlckxvYWRBc3NlbWJsZWVTY3J1dGlucyIsIl9yZWY3IiwiX3JlZjckbG9nIiwiX2NhbGxlZTciLCJzY3J1dGluc1VpZCIsIl9pdGVyYXRvcjEzIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluRmlsZVBhdGgiLCJzY3J1dGluSnNvbiIsInNjcnV0aW4iLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJzY3J1dGlucyIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsIml0ZXJMb2FkQXNzZW1ibGVlUXVlc3Rpb25zIiwiX3JlZjgiLCJfcmVmOCRsb2ciLCJfY2FsbGVlOCIsInF1ZXN0aW9uc1VpZCIsIl9pdGVyYXRvcjE1IiwiX3N0ZXAxNSIsIl9pdGVyYXRvcjE2IiwiX3N0ZXAxNiIsInF1ZXN0aW9uU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uRmlsZVBhdGgiLCJxdWVzdGlvbkpzb24iLCJxdWVzdGlvbiIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsInF1ZXN0aW9ucyIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJ0b1F1ZXN0aW9uIiwiaXRlckxvYWRBc3NlbWJsZWVDb21wdGVzUmVuZHVzIiwiX3JlZjkiLCJfcmVmOSRsb2ciLCJfY2FsbGVlOSIsImNvbXB0ZXNSZW5kdXNVaWQiLCJfaXRlcmF0b3IxNyIsIl9zdGVwMTciLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJjb21wdGVSZW5kdVNwbGl0UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdUZpbGVQYXRoIiwiY29tcHRlUmVuZHVKc29uIiwiY29tcHRlUmVuZHUiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwidG9Db21wdGVSZW5kdSIsImxvYWRBc3NlbWJsZWVEYXRhIiwiZW5hYmxlZERhdGFzZXRzIiwiX3JlZjEwIiwiX3JlZjEwJGxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiX2l0ZXJhdG9yMjAiLCJfc3RlcDIwIiwiX2l0ZXJhdG9yMjEiLCJfc3RlcDIxIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvbnNCeURheSIsInJldW5pb25zQnlEb3NzaWVyVWlkIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsIl9pdGVyYXRvcjIzIiwiX3N0ZXAyMyIsImRheSIsInRpbWVzdGFtcERlYnV0IiwidG9JU09TdHJpbmciLCJzcGxpdCIsInJldW5pb25zQXREYXkiLCJvZGoiLCJfaXRlcmF0b3IyNCIsInBvaW50c09kaiIsIl9zdGVwMjQiLCJwb2ludE9kaiIsIl9pdGVyYXRvcjI1IiwiZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMiLCJfc3RlcDI1IiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJyZXVuaW9uc0F0RG9zc2llclVpZCIsImFtZW5kZW1lbnRCeVVpZCIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMjYiLCJfc3RlcDI2IiwiX2l0ZXJhdG9yMjciLCJfc3RlcDI3IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMjgiLCJfc3RlcDI4IiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwiX2l0ZXJhdG9yMzAiLCJfc3RlcDMwIiwiZG9zc2llclNwbGl0UGF0aCIsImRvc3NpZXJGaWxlbmFtZSIsImRvc3NpZXJGaWxlUGF0aCIsImRvc3NpZXJKc29uIiwiZG9zc2llciIsInRpdHJlRG9zc2llciIsInNlbmF0Q2hlbWluIiwidGl0cmVDaGVtaW4iLCJwaG90b0J5VWlkIiwiUGhvdG9zIiwianNvbkZpbGVQYXRoIiwiU2VpemUiLCJleGlzdHNTeW5jIiwianNvbiIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMzEiLCJfc3RlcDMxIiwiX2l0ZXJhdG9yMzIiLCJfc3RlcDMyIiwicXVlc3Rpb25CeVVpZCIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjMzIiwiX3N0ZXAzMyIsIl9pdGVyYXRvcjM0IiwiX3N0ZXAzNCIsImNvbXB0ZVJlbmR1QnlVaWQiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjM1IiwiX3N0ZXAzNSIsIl9pdGVyYXRvcjM2IiwiX3N0ZXAzNiIsImNvbXB0ZVJlbmR1UGF0aCIsImxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzIiwiX3JlZjExIiwiX3JlZjExJGxvZyIsIl9pdGVyYXRvcjM3IiwiX3N0ZXAzNyIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvcjM4IiwiYWN0ZXVycyIsIl9zdGVwMzgiLCJfaXRlcmF0b3IzOSIsIm9yZ2FuZXMiLCJfc3RlcDM5IiwiX2l0ZXJhdG9yNDAiLCJfc3RlcDQwIiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yNDEiLCJyZXVuaW9ucyIsIl9zdGVwNDEiLCJfaXRlcmF0b3I0MiIsIl9zdGVwNDIiLCJfaXRlcmF0b3I0MyIsIl9zdGVwNDMiLCJfaXRlcmF0b3I0NCIsIl9zdGVwNDQiLCJ0b0FtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yNDUiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsIl9zdGVwNDUiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3I0NiIsIl9zdGVwNDYiLCJfaXRlcmF0b3I0NyIsIl9zdGVwNDciLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3I0OCIsIl9zdGVwNDgiLCJfaXRlcmF0b3I0OSIsImRvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfc3RlcDQ5IiwiX2l0ZXJhdG9yNTAiLCJfc3RlcDUwIiwidG9TY3J1dGlucyIsIl9pdGVyYXRvcjUxIiwiX3N0ZXA1MSIsIl9pdGVyYXRvcjUyIiwiX3N0ZXA1MiIsInRvUXVlc3Rpb25zIiwiX2l0ZXJhdG9yNTMiLCJfc3RlcDUzIiwiX2l0ZXJhdG9yNTQiLCJfc3RlcDU0IiwiY29tcHRlc1JlbmR1cyIsInRvQ29tcHRlc1JlbmR1cyIsIl9pdGVyYXRvcjU1IiwiX3N0ZXA1NSIsImxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzIiwiX3JlZjEyIiwiX3JlZjEyJGxvZyIsImxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMiLCJfcmVmMTMiLCJfcmVmMTMkbG9nIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsImRvY3VtZW50c0RpciIsIm1hdGNoIiwiZXhlYyIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImV0YXREaXIiLCJudW1lcm8iLCJzdWJzdHIiLCJudW1lcm9NaWxsaWVyc0RpciIsImVuc3VyZURpclN5bmMiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiLCJwYXRoRnJvbVVpZCIsImRhdGFSZWdleHAiXSwic291cmNlcyI6WyIuLi9zcmMvbG9hZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuZXhwb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxuICBQaG90byxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi90eXBlcy9kZWJhdHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbiAgcmVhZG9ubHkgcXVlc3Rpb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBRdWVzdGlvbiB9XG4gIHJlYWRvbmx5IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBTENOfEFWQ0V8QVZJU3xERUNMfEVUREl8TEVUVHxNRVNTfFBJT058UE5SRXxQUkpMfFJBUFB8UklORnxSSU9OKShBTnxTTikoUlxcZCspW0xTXShcXGQrKShCfEJUQXxCVEN8VEFQKShcXGQrKSgtLiopPyQvXG5jb25zdCBkb3NzaWVyVWlkUmVnZXggPSAvXkRMKFJcXGQrKShMXFxkKylOKFxcZCspJC9cbmNvbnN0IHJldW5pb25VaWRSZWdleCA9XG4gIC9eUlUoQU58Q0d8U04pKFJcXGQrKShMXFxkKykoW0FTXVxcZHs0fSkoSURDfElERkw/fElEUykoXFxkKykkL1xuY29uc3Qgc2NydXRpblVpZFJlZ2V4ID0gL15WVEFOKFJcXGQrKShMXFxkKylWKFxcZCspJC9cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUFjdGV1cnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBhY3RldXI6IEFjdGV1cjsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgYWN0ZXVyc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YWN0ZXVyRmlsZVBhdGh94oCmYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICBpZiAoYWN0ZXVyc1VpZC5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFjdGV1cnNVaWQuYWRkKGFjdGV1ci51aWQpXG4gICAgICB5aWVsZCB7IGFjdGV1ciwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgYW1lbmRlbWVudDogQW1lbmRlbWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgYW1lbmRlbWVudHNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFtZW5kZW1lbnRGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICBpZiAoYW1lbmRlbWVudHNVaWQuaGFzKGFtZW5kZW1lbnQudWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgYW1lbmRlbWVudHNVaWQuYWRkKGFtZW5kZW1lbnQudWlkKVxuICAgICAgeWllbGQgeyBhbWVuZGVtZW50LCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgZG9jdW1lbnQ6IERvY3VtZW50OyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBkb2N1bWVudHNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBkb2N1bWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudEZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBjb25zdCBkb2N1bWVudCA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgaWYgKGRvY3VtZW50c1VpZC5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgZG9jdW1lbnRzVWlkLmFkZChkb2N1bWVudC51aWQpXG4gICAgICB5aWVsZCB7IGRvY3VtZW50LCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlRG9zc2llcnNQYXJsZW1lbnRhaXJlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7XG4gICAgZG9zc2llclBhcmxlbWVudGFpcmU6IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZVxuICB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgZG9zc2llcnNQYXJsZW1lbnRhaXJlc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXG4gICAgICBcImRvc3NpZXJzXCIsXG4gICAgXSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aFtkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFzZXREaXIsXG4gICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2Rvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZVBhdGh94oCmYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRoLFxuICAgICAgICB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbixcbiAgICAgICAgKVxuICAgICAgaWYgKGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQuaGFzKGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQuYWRkKGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZClcbiAgICAgIHlpZWxkIHsgZG9zc2llclBhcmxlbWVudGFpcmUsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgb3JnYW5lOiBPcmdhbmU7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IG9yZ2FuZXNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZUpzb24pXG4gICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgaWYgKG9yZ2FuZXNVaWQuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBvcmdhbmVzVWlkLmFkZChvcmdhbmUudWlkKVxuICAgICAgeWllbGQgeyBvcmdhbmUsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVSZXVuaW9ucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHJldW5pb246IFJldW5pb247IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IHJldW5pb25zVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cmV1bmlvbkZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgIGlmIChyZXVuaW9uc1VpZC5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICByZXVuaW9uc1VpZC5hZGQocmV1bmlvbi51aWQpXG4gICAgICB5aWVsZCB7IHJldW5pb24sIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVTY3J1dGlucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHNjcnV0aW46IFNjcnV0aW47IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IHNjcnV0aW5zVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcnV0aW5GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgaWYgKHNjcnV0aW5zVWlkLmhhcyhzY3J1dGluLnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHNjcnV0aW5zVWlkLmFkZChzY3J1dGluLnVpZClcbiAgICAgIHlpZWxkIHsgc2NydXRpbiwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZVF1ZXN0aW9ucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHF1ZXN0aW9uOiBRdWVzdGlvbjsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgcXVlc3Rpb25zVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPSBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ucXVlc3Rpb25TcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cXVlc3Rpb25GaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25GaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgcXVlc3Rpb24gPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgaWYgKHF1ZXN0aW9uc1VpZC5oYXMocXVlc3Rpb24udWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcXVlc3Rpb25zVWlkLmFkZChxdWVzdGlvbi51aWQpXG4gICAgICB5aWVsZCB7IHF1ZXN0aW9uLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlQ29tcHRlc1JlbmR1cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGNvbXB0ZVJlbmR1OiBDb21wdGVSZW5kdTsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgY29tcHRlc1JlbmR1c1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICBjb21wdGVSZW5kdVNwbGl0UGF0aFtjb21wdGVSZW5kdVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFjb21wdGVSZW5kdUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uY29tcHRlUmVuZHVTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoY29tcHRlUmVuZHVGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgY29tcHRlUmVuZHUgPSBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1SnNvbilcbiAgICAgIGlmIChjb21wdGVzUmVuZHVzVWlkLmhhcyhjb21wdGVSZW5kdS51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb21wdGVzUmVuZHVzVWlkLmFkZChjb21wdGVSZW5kdS51aWQpXG4gICAgICB5aWVsZCB7IGNvbXB0ZVJlbmR1LCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuXG4vLy8gRGVwcmVjYXRlZDogVXNlIGl0ZXJMb2FkLi4uIGl0ZXJhdG9ycyBpbnN0ZWFkLlxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YWN0ZXVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7b3JnYW5lRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZUpzb24pXG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cmV1bmlvbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthbWVuZGVtZW50RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFtZW5kZW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9jdW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2RvY3VtZW50RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2Rvc3NpZXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXJKc29uKVxuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuU2VpemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPSBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5xdWVzdGlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cXVlc3Rpb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgICAgaWYgKHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID0gcXVlc3Rpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVuYW1lID0gY29tcHRlUmVuZHVQYXRoW2NvbXB0ZVJlbmR1UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5jb21wdGVSZW5kdVBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2NvbXB0ZVJlbmR1RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhjb21wdGVSZW5kdUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdSA9IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBpZiAoY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPSBjb21wdGVSZW5kdVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gICAgcXVlc3Rpb25CeVVpZCxcbiAgICBjb21wdGVSZW5kdUJ5VWlkLFxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLlxuLy8vIERlcHJlY2F0ZWQ6IEFzc2VtYmzDqWUgbmF0aW9uYWxlIG9wZW4gZGF0YSBubyBtb3JlIHVzZXMgbW9ub2x5dGljIGZpbGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3Qgc2NydXRpbnMgPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGlucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIHNjcnV0aW5zLnNjcnV0aW5zKSB7XG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcXVlc3Rpb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBRdWVzdGlvbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgcXVlc3Rpb25zID0gUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9ucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBxdWVzdGlvbnMucXVlc3Rpb25zKSB7XG4gICAgICAgIGlmIChxdWVzdGlvbkJ5VWlkW3F1ZXN0aW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9IHF1ZXN0aW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBjb21wdGVSZW5kdUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IENvbXB0ZVJlbmR1IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgY29tcHRlc1JlbmR1cyA9IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlc1JlbmR1cyhqc29uKVxuICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdSBvZiBjb21wdGVzUmVuZHVzLmNvbXB0ZXNSZW5kdXMpIHtcbiAgICAgICAgaWYgKGNvbXB0ZVJlbmR1QnlVaWRbY29tcHRlUmVuZHUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID0gY29tcHRlUmVuZHVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICAgIHF1ZXN0aW9uQnlVaWQsXG4gICAgY29tcHRlUmVuZHVCeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZVBob3Rvc0RlcHV0ZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSB7XG4gIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgIGRhdGFEaXIsXG4gICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICB9YCxcbiAgICBcImRlcHV0ZXMuanNvblwiLFxuICApXG4gIGlmIChsb2cpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICB9XG4gIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24pIGFzIHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZVBob3Rvc1NlbmF0ZXVycyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSB7XG4gIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgIGRhdGFEaXIsXG4gICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICApXG4gIGlmIChsb2cpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICB9XG4gIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24pIGFzIHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG4vLyBHZXQgc3RhbmRhcmQgcGF0aCBmb3Igb2JqZWN0IHdpdGggdWlkIDogcmVwdWJsaXF1ZSA+IGxlZ2lzbGF0dXJlID4gZ3JvdXAgb2JqZWN0cyBieSB0aG91c2FuZHNcbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVVpZChcbiAgZGF0YURpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbiAgZGF0YVJlZ2V4cDogUmVnRXhwLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkYXRhUmVnZXhwLmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIG9iamVjdCB3aXRoIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFB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
|