@tricoteuses/assemblee 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/datasets.d.ts +1 -0
- package/lib/datasets.js +28 -2
- package/lib/datasets.mjs +14 -2
- package/lib/dossiers_legislatifs.js +1 -1
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +30 -24
- package/lib/file_systems.mjs +4 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/loaders.js +2 -2
- package/lib/loaders.mjs +2 -2
- package/lib/raw_types/debats.d.ts +5 -4
- package/lib/raw_types/debats.js +9 -5
- package/lib/raw_types/debats.mjs +9 -5
- package/lib/raw_types/dossiers_legislatifs.d.ts +2 -0
- package/lib/raw_types/dossiers_legislatifs.js +5 -3
- package/lib/raw_types/dossiers_legislatifs.mjs +5 -3
- package/lib/raw_types/questions.d.ts +1 -1
- package/lib/raw_types/questions.js +2 -2
- package/lib/raw_types/questions.mjs +2 -2
- package/lib/scripts/clean_reorganized_data.js +13 -42
- package/lib/scripts/clean_reorganized_data.mjs +8 -18
- package/lib/scripts/reorganize_data.js +17 -46
- package/lib/scripts/reorganize_data.mjs +8 -18
- package/lib/scripts/retrieve_open_data.js +5 -5
- package/lib/scripts/retrieve_open_data.mjs +4 -4
- package/lib/shared_types/codes_actes.d.ts +129 -342
- package/lib/shared_types/codes_actes.js +212 -243
- package/lib/shared_types/codes_actes.mjs +211 -224
- package/lib/types/debats.d.ts +5 -4
- package/lib/types/debats.js +9 -5
- package/lib/types/debats.mjs +9 -5
- package/lib/types/dossiers_legislatifs.d.ts +2 -0
- package/lib/types/dossiers_legislatifs.js +7 -8
- package/lib/types/dossiers_legislatifs.mjs +8 -9
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +2 -2
- package/lib/types/questions.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
require("core-js/modules/es.array.
|
|
4
|
+
require("core-js/modules/es.array.slice.js");
|
|
5
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
6
|
+
require("core-js/modules/es.function.name.js");
|
|
7
|
+
require("core-js/modules/es.array.from.js");
|
|
8
|
+
require("core-js/modules/es.string.iterator.js");
|
|
5
9
|
require("core-js/modules/es.symbol.js");
|
|
6
10
|
require("core-js/modules/es.symbol.description.js");
|
|
7
11
|
require("core-js/modules/es.symbol.iterator.js");
|
|
8
12
|
require("core-js/modules/es.array.iterator.js");
|
|
9
|
-
require("core-js/modules/es.string.iterator.js");
|
|
10
13
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
require("core-js/modules/es.array.
|
|
12
|
-
require("core-js/modules/es.function.name.js");
|
|
13
|
-
require("core-js/modules/es.array.from.js");
|
|
14
|
+
require("core-js/modules/es.array.is-array.js");
|
|
14
15
|
require("core-js/modules/es.weak-map.js");
|
|
15
16
|
require("core-js/modules/es.object.define-property.js");
|
|
16
17
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
@@ -24,12 +25,6 @@ require("core-js/modules/es.string.trim.js");
|
|
|
24
25
|
require("core-js/modules/es.array.map.js");
|
|
25
26
|
require("core-js/modules/es.array.reduce.js");
|
|
26
27
|
require("core-js/modules/es.object.to-string.js");
|
|
27
|
-
require("core-js/modules/es.array.some.js");
|
|
28
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
29
|
-
require("core-js/modules/es.object.entries.js");
|
|
30
|
-
require("core-js/modules/es.array.filter.js");
|
|
31
|
-
require("core-js/modules/es.array.includes.js");
|
|
32
|
-
require("core-js/modules/es.string.includes.js");
|
|
33
28
|
require("core-js/modules/es.array.join.js");
|
|
34
29
|
require("core-js/modules/es.array.concat.js");
|
|
35
30
|
require("core-js/modules/es.object.keys.js");
|
|
@@ -53,7 +48,6 @@ var _dossiers_legislatifs = require("../raw_types/dossiers_legislatifs");
|
|
|
53
48
|
var _scrutins = require("../raw_types/scrutins");
|
|
54
49
|
var _questions = require("../raw_types/questions");
|
|
55
50
|
var _debats = require("../raw_types/debats");
|
|
56
|
-
var _legislatures = require("../types/legislatures");
|
|
57
51
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
58
52
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
59
53
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -62,12 +56,8 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
62
56
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
63
57
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
64
58
|
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; } } }; }
|
|
65
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
66
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
67
59
|
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); }
|
|
68
60
|
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; }
|
|
69
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
70
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
71
61
|
var optionsDefinitions = [{
|
|
72
62
|
alias: "C",
|
|
73
63
|
help: "clone repositories from given group (or organization) git URL",
|
|
@@ -124,7 +114,6 @@ var optionsDefinitions = [{
|
|
|
124
114
|
type: String
|
|
125
115
|
}];
|
|
126
116
|
function reorganizeData(options) {
|
|
127
|
-
var _options$legislature;
|
|
128
117
|
var dataDir = options.dataDir;
|
|
129
118
|
Date.prototype.toJSON = _dates.patchedDateToJson;
|
|
130
119
|
var exitCode = 10; // Nothing to commit
|
|
@@ -136,27 +125,9 @@ function reorganizeData(options) {
|
|
|
136
125
|
var enabledDatasets = options.categories.reduce(function (enabledDatasets, datasetName) {
|
|
137
126
|
return enabledDatasets | _datasets.EnabledDatasets[datasetName];
|
|
138
127
|
}, _datasets.EnabledDatasets.None);
|
|
139
|
-
var
|
|
140
|
-
// When a given legislature is 0, it is the same as giving no legislature:
|
|
141
|
-
// It means "every legislatures".
|
|
142
|
-
var legislatures = (_options$legislature = options.legislature) !== null && _options$legislature !== void 0 && _options$legislature.some(function (legislature) {
|
|
143
|
-
return legislature === 0;
|
|
144
|
-
}) ? undefined : options.legislature;
|
|
145
|
-
if (legislatures !== undefined) {
|
|
146
|
-
var enabledLegislatures = legislatures.map(function (legislature) {
|
|
147
|
-
return legislature.toString();
|
|
148
|
-
});
|
|
149
|
-
for (var _i = 0, _Object$entries = Object.entries(choosenDatasets); _i < _Object$entries.length; _i++) {
|
|
150
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
151
|
-
key = _Object$entries$_i[0],
|
|
152
|
-
value = _Object$entries$_i[1];
|
|
153
|
-
choosenDatasets[key] = value.filter(function (dataset) {
|
|
154
|
-
return dataset.legislature === _legislatures.Legislature.All || enabledLegislatures.includes(dataset.legislature);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
}
|
|
128
|
+
var chosenDatasets = (0, _datasets.filterByLegislature)(_datasets.datasets, options.legislature);
|
|
158
129
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
159
|
-
var _iterator = _createForOfIteratorHelper(
|
|
130
|
+
var _iterator = _createForOfIteratorHelper(chosenDatasets.acteursEtOrganes),
|
|
160
131
|
_step;
|
|
161
132
|
try {
|
|
162
133
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -281,8 +252,8 @@ function reorganizeData(options) {
|
|
|
281
252
|
} finally {
|
|
282
253
|
_iterator5.f();
|
|
283
254
|
}
|
|
284
|
-
for (var
|
|
285
|
-
var deports = _Object$values[
|
|
255
|
+
for (var _i = 0, _Object$values = Object.values(deportsByActeurUid); _i < _Object$values.length; _i++) {
|
|
256
|
+
var deports = _Object$values[_i];
|
|
286
257
|
deports.sort(function (a, b) {
|
|
287
258
|
return a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length;
|
|
288
259
|
});
|
|
@@ -319,8 +290,8 @@ function reorganizeData(options) {
|
|
|
319
290
|
} finally {
|
|
320
291
|
_iterator6.f();
|
|
321
292
|
}
|
|
322
|
-
for (var
|
|
323
|
-
var mandats = _Object$values2[
|
|
293
|
+
for (var _i2 = 0, _Object$values2 = Object.values(mandatsByActeurUid); _i2 < _Object$values2.length; _i2++) {
|
|
294
|
+
var mandats = _Object$values2[_i2];
|
|
324
295
|
mandats.sort(function (a, b) {
|
|
325
296
|
return a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length;
|
|
326
297
|
});
|
|
@@ -414,7 +385,7 @@ function reorganizeData(options) {
|
|
|
414
385
|
}
|
|
415
386
|
}
|
|
416
387
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
417
|
-
var _iterator9 = _createForOfIteratorHelper(
|
|
388
|
+
var _iterator9 = _createForOfIteratorHelper(chosenDatasets.agendas),
|
|
418
389
|
_step9;
|
|
419
390
|
try {
|
|
420
391
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
@@ -514,7 +485,7 @@ function reorganizeData(options) {
|
|
|
514
485
|
}
|
|
515
486
|
}
|
|
516
487
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
517
|
-
var _iterator13 = _createForOfIteratorHelper(
|
|
488
|
+
var _iterator13 = _createForOfIteratorHelper(chosenDatasets.amendements),
|
|
518
489
|
_step13;
|
|
519
490
|
try {
|
|
520
491
|
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
@@ -625,7 +596,7 @@ function reorganizeData(options) {
|
|
|
625
596
|
}
|
|
626
597
|
}
|
|
627
598
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
628
|
-
var _iterator18 = _createForOfIteratorHelper(
|
|
599
|
+
var _iterator18 = _createForOfIteratorHelper(chosenDatasets.dossiersLegislatifs),
|
|
629
600
|
_step18;
|
|
630
601
|
try {
|
|
631
602
|
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
@@ -766,7 +737,7 @@ function reorganizeData(options) {
|
|
|
766
737
|
}
|
|
767
738
|
}
|
|
768
739
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
769
|
-
var _iterator24 = _createForOfIteratorHelper(
|
|
740
|
+
var _iterator24 = _createForOfIteratorHelper(chosenDatasets.scrutins),
|
|
770
741
|
_step24;
|
|
771
742
|
try {
|
|
772
743
|
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
@@ -1084,4 +1055,4 @@ if (process.argv[1].endsWith("reorganize_data.ts")) {
|
|
|
1084
1055
|
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
1085
1056
|
process.exit(reorganizeData(options));
|
|
1086
1057
|
}
|
|
1087
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZmlsZV9zeXN0ZW1zIiwiX2xvYWRlcnMiLCJfYWN0ZXVyc19ldF9vcmdhbmVzIiwiX2FnZW5kYXMiLCJfYW1lbmRlbWVudHMiLCJfZG9zc2llcnNfbGVnaXNsYXRpZnMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIl9sZWdpc2xhdHVyZXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInB1c2giLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiTnVtYmVyIiwiZGVmYXVsdE9wdGlvbiIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsIl9vcHRpb25zJGxlZ2lzbGF0dXJlIiwiZGF0YURpciIsIkRhdGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwidmFsaWRhdGVSYXdEYXRhIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiY2hvb3NlbkRhdGFzZXRzIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZXMiLCJsZWdpc2xhdHVyZSIsInNvbWUiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwia2V5IiwiZmlsdGVyIiwiZGF0YXNldCIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiaW5jbHVkZXMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIl9zdGVwIiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiYmFzZW5hbWUiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwicHVsbCIsImZzIiwiZW5zdXJlRGlyU3luYyIsIl9pdGVyYXRvcjIiLCJyZWFkZGlyU3luYyIsIl9zdGVwMiIsInJlbW92ZVN5bmMiLCJhY3RldXJzUmVvcmdhbml6ZWREaXIiLCJta2RpclN5bmMiLCJvcmdhbmVzUmVvcmdhbml6ZWREaXIiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2luZ2xlRmlsZSIsIm9yaWdpbmFsSnNvbiIsInJlYWRGaWxlU3luYyIsIm9yaWdpbmFsRGF0YSIsIkFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiSlNPTiIsInBhcnNlIiwiX2l0ZXJhdG9yMyIsImFjdGV1cnMiLCJhY3RldXIiLCJfc3RlcDMiLCJyZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsInVpZCIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJfaXRlcmF0b3I0Iiwib3JnYW5lcyIsIm9yZ2FuZSIsIl9zdGVwNCIsIlNlZ21lbnRlZEZpbGVzIiwiZGVwb3J0c0J5QWN0ZXVyVWlkIiwiZXhpc3RzU3luYyIsIl9pdGVyYXRvcjUiLCJ3YWxrRGlyIiwiX3N0ZXA1IiwiZGVwb3J0U3BsaXRQYXRoIiwiZGVwb3J0RmlsZW5hbWUiLCJlbmRzV2l0aCIsImRlcG9ydE9yaWdpbmFsRmlsZVBhdGgiLCJhcHBseSIsInZlcmJvc2UiLCJkZXBvcnRPcmlnaW5hbEpzb24iLCJkZXBvcnRPcmlnaW5hbCIsInRvRGVwb3J0IiwiZGVwb3J0IiwiZGVwb3J0cyIsImFjdGV1clJlZiIsIl9pMiIsIl9PYmplY3QkdmFsdWVzIiwidmFsdWVzIiwic29ydCIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFuZGF0c0J5QWN0ZXVyVWlkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIm1hbmRhdFNwbGl0UGF0aCIsIm1hbmRhdEZpbGVuYW1lIiwibWFuZGF0T3JpZ2luYWxGaWxlUGF0aCIsIm1hbmRhdE9yaWdpbmFsSnNvbiIsIm1hbmRhdE9yaWdpbmFsIiwidG9NYW5kYXRXcmFwcGVyIiwibWFuZGF0IiwibWFuZGF0cyIsIl9pMyIsIl9PYmplY3QkdmFsdWVzMiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgiLCJvcmdhbmVPcmlnaW5hbEpzb24iLCJvcmdhbmVPcmlnaW5hbCIsInRvT3JnYW5lIiwib3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjkiLCJhZ2VuZGFzIiwiX3N0ZXA5IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IxMSIsInJldW5pb25zIiwicmV1bmlvbiIsIl9zdGVwMTEiLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IxMiIsIl9zdGVwMTIiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMyIsImFtZW5kZW1lbnRzIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxNSIsInRleHRlc0V0QW1lbmRlbWVudHMiLCJ0ZXh0ZWxlZyIsIl9zdGVwMTUiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTciLCJfc3RlcDE3IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTgiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxOCIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IyMCIsInRleHRlc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJfc3RlcDIwIiwid3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjIxIiwiZG9zc2llciIsIl9zdGVwMjEiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIndyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IyMiIsIl9zdGVwMjIiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiX2l0ZXJhdG9yMjMiLCJfc3RlcDIzIiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMjQiLCJzY3J1dGlucyIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjYiLCJzY3J1dGluIiwiX3N0ZXAyNiIsIndyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjgiLCJxdWVzdGlvbnMiLCJfc3RlcDI4IiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwiX2l0ZXJhdG9yMzAiLCJfc3RlcDMwIiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoIiwicXVlc3Rpb25PcmlnaW5hbEpzb24iLCJxdWVzdGlvbk9yaWdpbmFsIiwiUXVlc3Rpb25zUmF3Q29udmVydCIsInRvUXVlc3Rpb25XcmFwcGVyIiwicXVlc3Rpb24iLCJ3cml0ZVF1ZXN0aW9uc1Jlb3JnYW5pemVkSnNvbiIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMzEiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMiIsIl9zdGVwMzIiLCJfaXRlcmF0b3IzMyIsIl9zdGVwMzMiLCJjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbiIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwiLCJDb21wdGVzUmVuZHVzUmF3Q29udmVydCIsInRvQ29tcHRlUmVuZHVXcmFwcGVyIiwiY29tcHRlUmVuZHVTZWFuY2UiLCJjb21wdGVSZW5kdSIsIndyaXRlQ29tcHRlc1JlbmR1c1Jlb3JnYW5pemVkSnNvbiIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsInRleHRlTGVnaXNsYXRpZkRpciIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwicmV1bmlvbnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJzY3J1dGluc0RpciIsInBhdGhGcm9tU2NydXRpblVpZCIsInF1ZXN0aW9uc0RpciIsInF1ZXN0aW9uVWlkUmVnZXgiLCJwYXRoRnJvbVVpZCIsImNvbXB0ZXNSZW5kdXNEaXIiLCJjb21wdGVSZW5kdVVpZFJlZ2V4IiwiYXJndiIsImNvbW1hbmRMaW5lQXJncyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBwYXRoRnJvbURvY3VtZW50VWlkLFxuICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICBwYXRoRnJvbVJldW5pb25VaWQsXG4gIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgcGF0aEZyb21VaWQsXG59IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQW1lbmRlbWVudHNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHNwbGl0IGZpbGVzXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwia1wiLFxuICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJjYXRlZ29yaWVzXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgdHlwZTogTnVtYmVyLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwicHVsbCByZXBvc2l0b3JpZXMgYmVmb3JlIHByb2NlZWRpbmdcIixcbiAgICBuYW1lOiBcInB1bGxcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiclwiLFxuICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJWXCIsXG4gICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob29zZW5EYXRhc2V0cyA9IGRhdGFzZXRzXG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IG9wdGlvbnMubGVnaXNsYXR1cmU/LnNvbWUoXG4gICAgKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+IGxlZ2lzbGF0dXJlID09PSAwLFxuICApXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IG9wdGlvbnMubGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY2hvb3NlbkRhdGFzZXRzKSkge1xuICAgICAgY2hvb3NlbkRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgY2hvb3NlbkRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcihcbiAgICAgICAgKGRhdGFzZXQ6IHsgbGVnaXNsYXR1cmU6IGFueSB9KSA9PlxuICAgICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICAgIGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJhY3RldXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoYWN0ZXVyc1Jlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3Qgb3JnYW5lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJvcmdhbmVzXCIpXG4gICAgICBmcy5ta2RpclN5bmMob3JnYW5lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LmFjdGV1cnMuYWN0ZXVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1ci51aWRbXCIjdGV4dFwiXSArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5vcmdhbmVzLm9yZ2FuZSkge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZGVwb3J0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJkZXBvcnRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wiZGVwb3J0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgZGVwb3J0U3BsaXRQYXRoW2RlcG9ydFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghZGVwb3J0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5kZXBvcnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwiZGVwb3J0XCIgZmlsZTogJHtkZXBvcnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0RlcG9ydChkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydCA9IGRlcG9ydE9yaWdpbmFsLmRlcG9ydFxuICAgICAgICAgICAgICAgIGxldCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlcG9ydHMucHVzaChkZXBvcnQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydHMgb2YgT2JqZWN0LnZhbHVlcyhkZXBvcnRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFuZGF0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wibWFuZGF0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgbWFuZGF0U3BsaXRQYXRoW21hbmRhdFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghbWFuZGF0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5tYW5kYXRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwibWFuZGF0XCIgZmlsZTogJHttYW5kYXRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b01hbmRhdFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9BZ2VuZGFzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIG9yaWdpbmFsRGF0YS5yZXVuaW9ucy5yZXVuaW9uKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wicmV1bmlvblwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInJldW5pb25cIiBmaWxlOiAke3JldW5pb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb24gPSByZXVuaW9uT3JpZ2luYWwucmV1bmlvblxuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvY3VtZW50c1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgICAgIGNvbnN0IGRvc3NpZXJzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb3NzaWVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvc3NpZXJzRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIG9yaWdpbmFsRGF0YS5leHBvcnQudGV4dGVzTGVnaXNsYXRpZnNcbiAgICAgICAgICAgICAgLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGxldCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGlucyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpbiBvZiBvcmlnaW5hbERhdGEuc2NydXRpbnMuc2NydXRpbikge1xuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25TcGxpdFBhdGhbcXVlc3Rpb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnF1ZXN0aW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInF1ZXN0aW9uXCIgZmlsZTogJHtxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFF1ZXN0aW9uc1Jhd0NvbnZlcnQudG9RdWVzdGlvbldyYXBwZXIocXVlc3Rpb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbiA9IHF1ZXN0aW9uT3JpZ2luYWwucXVlc3Rpb25cbiAgICAgICAgICAgICAgd3JpdGVRdWVzdGlvbnNSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBxdWVzdGlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiLnhtbFwiKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiY29tcHRlUmVuZHVTZWFuY2VcIiBmaWxlOiAke2NvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0LnRvQ29tcHRlUmVuZHVXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2UgPSBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsLmNvbXB0ZVJlbmR1XG4gICAgICAgICAgICAgIHdyaXRlQ29tcHRlc1JlbmR1c1Jlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2UsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZyxcbiAgYW1lbmRlbWVudDoge1xuICAgIHVpZDogc3RyaW5nXG4gICAgdGV4dGVMZWdpc2xhdGlmUmVmOiBzdHJpbmdcbiAgfSxcbik6IHZvaWQge1xuICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPSBhbWVuZGVtZW50LnRleHRlTGVnaXNsYXRpZlJlZlxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwodWlkVGV4dGVMZWdpc2xhdGlmLCB1bmRlZmluZWQpXG4gIGNvbnN0IHRleHRlTGVnaXNsYXRpZkRpciA9IHBhdGguam9pbihcbiAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgdWlkVGV4dGVMZWdpc2xhdGlmLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVMZWdpc2xhdGlmRGlyKVxuICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZEaXIsXG4gICAgYW1lbmRlbWVudC51aWQgKyBcIi5qc29uXCIsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkb2N1bWVudHNEaXI6IHN0cmluZyxcbiAgZG9jdW1lbnQ6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICAgIGRvc3NpZXJzRGlyLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCxcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIGAke2Jhc2VuYW1lfS5qc29uYCxcbiAgICBKU09OLnN0cmluZ2lmeShkb3NzaWVyUGFybGVtZW50YWlyZSwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKFxuICByZXVuaW9uc0Rpcjogc3RyaW5nLFxuICByZXVuaW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXIsIHJldW5pb24udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihcbiAgc2NydXRpbnNEaXI6IHN0cmluZyxcbiAgc2NydXRpbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyLCBzY3J1dGluLnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZVF1ZXN0aW9uc1Jlb3JnYW5pemVkSnNvbihcbiAgcXVlc3Rpb25zRGlyOiBzdHJpbmcsXG4gIHF1ZXN0aW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgcXVlc3Rpb25VaWRSZWdleDogUmVnRXhwID0gL15RQU4oUlxcZCspKExcXGQrKVEoRXxHfE9TRCkoXFxkKykkL1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tVWlkKHF1ZXN0aW9uc0RpciwgcXVlc3Rpb24udWlkLCBxdWVzdGlvblVpZFJlZ2V4KVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZUNvbXB0ZXNSZW5kdXNSZW9yZ2FuaXplZEpzb24oXG4gIGNvbXB0ZXNSZW5kdXNEaXI6IHN0cmluZyxcbiAgY29tcHRlUmVuZHU6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBjb21wdGVSZW5kdVVpZFJlZ2V4OiBSZWdFeHAgPVxuICAgIC9eQ1JTQU4oUlxcZCspKExcXGQrKShTXFxkKykoT3xFKShcXGQrKShOXFxkKykkL1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tVWlkKFxuICAgIGNvbXB0ZXNSZW5kdXNEaXIsXG4gICAgY29tcHRlUmVuZHUudWlkLFxuICAgIGNvbXB0ZVJlbmR1VWlkUmVnZXgsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KGNvbXB0ZVJlbmR1LCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwicmVvcmdhbml6ZV9kYXRhLnRzXCIpKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG4gIHByb2Nlc3MuZXhpdChyZW9yZ2FuaXplRGF0YShvcHRpb25zKSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sR0FBQSxHQUFBQyx1QkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBT0EsSUFBQVcsbUJBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFlBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLHFCQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxTQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsVUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixPQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLGFBQUEsR0FBQWxCLE9BQUE7QUFBbUQsU0FBQW1CLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxD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
|
|
1058
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZmlsZV9zeXN0ZW1zIiwiX2xvYWRlcnMiLCJfYWN0ZXVyc19ldF9vcmdhbmVzIiwiX2FnZW5kYXMiLCJfYW1lbmRlbWVudHMiLCJfZG9zc2llcnNfbGVnaXNsYXRpZnMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwibGVuZ3RoIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJfZSIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwic3RlcCIsIm5leHQiLCJfZTIiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiTnVtYmVyIiwiZGVmYXVsdE9wdGlvbiIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsImRhdGFEaXIiLCJEYXRlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJleGl0Q29kZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsInZhbGlkYXRlUmF3RGF0YSIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiRW5hYmxlZERhdGFzZXRzIiwiY29uY2F0IiwiZW5hYmxlZERhdGFzZXRzIiwicmVkdWNlIiwiTm9uZSIsImNob3NlbkRhdGFzZXRzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIl9zdGVwIiwiZGF0YXNldCIsIm9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImJhc2VuYW1lIiwiZXhlY1N5bmMiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImRhdGFzZXRSZW9yZ2FuaXplZERpciIsInB1bGwiLCJmcyIsImVuc3VyZURpclN5bmMiLCJfaXRlcmF0b3IyIiwicmVhZGRpclN5bmMiLCJfc3RlcDIiLCJyZW1vdmVTeW5jIiwiYWN0ZXVyc1Jlb3JnYW5pemVkRGlyIiwibWtkaXJTeW5jIiwib3JnYW5lc1Jlb3JnYW5pemVkRGlyIiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJvcmlnaW5hbERhdGEiLCJBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIkpTT04iLCJwYXJzZSIsIl9pdGVyYXRvcjMiLCJhY3RldXJzIiwiYWN0ZXVyIiwiX3N0ZXAzIiwicmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJ1aWQiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5IiwiX2l0ZXJhdG9yNCIsIm9yZ2FuZXMiLCJvcmdhbmUiLCJfc3RlcDQiLCJTZWdtZW50ZWRGaWxlcyIsImRlcG9ydHNCeUFjdGV1clVpZCIsImV4aXN0c1N5bmMiLCJfaXRlcmF0b3I1Iiwid2Fsa0RpciIsIl9zdGVwNSIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwiYXBwbHkiLCJ2ZXJib3NlIiwiZGVwb3J0T3JpZ2luYWxKc29uIiwiZGVwb3J0T3JpZ2luYWwiLCJ0b0RlcG9ydCIsImRlcG9ydCIsImRlcG9ydHMiLCJhY3RldXJSZWYiLCJwdXNoIiwiX2kiLCJfT2JqZWN0JHZhbHVlcyIsInZhbHVlcyIsInNvcnQiLCJiIiwibG9jYWxlQ29tcGFyZSIsIm1hbmRhdHNCeUFjdGV1clVpZCIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0V3JhcHBlciIsIm1hbmRhdCIsIm1hbmRhdHMiLCJfaTIiLCJfT2JqZWN0JHZhbHVlczIiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJhY3RldXJPcmlnaW5hbEZpbGVQYXRoIiwiYWN0ZXVyT3JpZ2luYWxKc29uIiwiYWN0ZXVyT3JpZ2luYWwiLCJ0b0FjdGV1ciIsImFjdGV1clVpZCIsInN0cmljdEVxdWFsIiwiYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJfaXRlcmF0b3I4IiwiX3N0ZXA4Iiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVPcmlnaW5hbEZpbGVQYXRoIiwib3JnYW5lT3JpZ2luYWxKc29uIiwib3JnYW5lT3JpZ2luYWwiLCJ0b09yZ2FuZSIsIm9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiY29tbWl0IiwiZXJyb3JDb2RlIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsIkFnZW5kYXMiLCJfaXRlcmF0b3I5IiwiYWdlbmRhcyIsIl9zdGVwOSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIkFnZW5kYXNSYXdDb252ZXJ0IiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yMTEiLCJyZXVuaW9ucyIsInJldW5pb24iLCJfc3RlcDExIiwid3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25PcmlnaW5hbEZpbGVQYXRoIiwicmV1bmlvbk9yaWdpbmFsSnNvbiIsInJldW5pb25PcmlnaW5hbCIsInRvUmV1bmlvbiIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTMiLCJhbWVuZGVtZW50cyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJBbWVuZGVtZW50c1Jhd0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTUiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJfc3RlcDE1IiwidGV4dGVMZWdpc2xhdGlmIiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2IiwiYW1lbmRlbWVudCIsIndyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjE3IiwiX3N0ZXAxNyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJhbWVuZGVtZW50T3JpZ2luYWwiLCJ0b0FtZW5kZW1lbnRXcmFwcGVyIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjE4IiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIl9zdGVwMTgiLCJfaXRlcmF0b3IxOSIsIl9zdGVwMTkiLCJkb2N1bWVudHNEaXIiLCJkb3NzaWVyc0RpciIsIkRvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMjAiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsImRvY3VtZW50IiwiX3N0ZXAyMCIsIndyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IyMSIsImRvc3NpZXIiLCJfc3RlcDIxIiwiZG9zc2llclBhcmxlbWVudGFpcmUiLCJ3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMjIiLCJfc3RlcDIyIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiZG9jdW1lbnRPcmlnaW5hbEpzb24iLCJkb2N1bWVudE9yaWdpbmFsIiwidG9Eb2N1bWVudCIsIl9pdGVyYXRvcjIzIiwiX3N0ZXAyMyIsImRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbCIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjI0Iiwic2NydXRpbnMiLCJfc3RlcDI0IiwiX2l0ZXJhdG9yMjUiLCJfc3RlcDI1IiwiU2NydXRpbnNSYXdDb252ZXJ0IiwidG9TY3J1dGlucyIsIl9pdGVyYXRvcjI2Iiwic2NydXRpbiIsIl9zdGVwMjYiLCJ3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwic2NydXRpbk9yaWdpbmFsIiwidG9TY3J1dGluV3JhcHBlciIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjI4IiwicXVlc3Rpb25zIiwiX3N0ZXAyOCIsIl9pdGVyYXRvcjI5IiwiX3N0ZXAyOSIsIl9pdGVyYXRvcjMwIiwiX3N0ZXAzMCIsInF1ZXN0aW9uU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCIsInF1ZXN0aW9uT3JpZ2luYWxKc29uIiwicXVlc3Rpb25PcmlnaW5hbCIsIlF1ZXN0aW9uc1Jhd0NvbnZlcnQiLCJ0b1F1ZXN0aW9uV3JhcHBlciIsInF1ZXN0aW9uIiwid3JpdGVRdWVzdGlvbnNSZW9yZ2FuaXplZEpzb24iLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjMxIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfc3RlcDMxIiwiX2l0ZXJhdG9yMzIiLCJfc3RlcDMyIiwiX2l0ZXJhdG9yMzMiLCJfc3RlcDMzIiwiY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24iLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsIiwiQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1V3JhcHBlciIsImNvbXB0ZVJlbmR1U2VhbmNlIiwiY29tcHRlUmVuZHUiLCJ3cml0ZUNvbXB0ZXNSZW5kdXNSZW9yZ2FuaXplZEpzb24iLCJleGlzdGluZ0RhdGVUb0pzb24iLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWZSZWYiLCJ0ZXh0ZUxlZ2lzbGF0aWZEaXIiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwicGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCIsInJldW5pb25zRGlyIiwicGF0aEZyb21SZXVuaW9uVWlkIiwic2NydXRpbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJxdWVzdGlvbnNEaXIiLCJxdWVzdGlvblVpZFJlZ2V4IiwicGF0aEZyb21VaWQiLCJjb21wdGVzUmVuZHVzRGlyIiwiY29tcHRlUmVuZHVVaWRSZWdleCIsImFyZ3YiLCJjb21tYW5kTGluZUFyZ3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmVvcmdhbml6ZV9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSwgRW5hYmxlZERhdGFzZXRzLCBmaWx0ZXJCeUxlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgcGF0aEZyb21Eb2N1bWVudFVpZCxcbiAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICBwYXRoRnJvbVNjcnV0aW5VaWQsXG4gIHBhdGhGcm9tVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2RlYmF0c1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHNwbGl0IGZpbGVzXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwia1wiLFxuICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJjYXRlZ29yaWVzXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgdHlwZTogTnVtYmVyLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwicHVsbCByZXBvc2l0b3JpZXMgYmVmb3JlIHByb2NlZWRpbmdcIixcbiAgICBuYW1lOiBcInB1bGxcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiclwiLFxuICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJWXCIsXG4gICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSk7XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImFjdGV1cnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhhY3RldXJzUmVvcmdhbml6ZWREaXIpXG4gICAgICBjb25zdCBvcmdhbmVzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcIm9yZ2FuZXNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhvcmdhbmVzUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQuYWN0ZXVycy5hY3RldXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0Lm9yZ2FuZXMub3JnYW5lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBkZXBvcnRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcImRlcG9ydFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJkZXBvcnRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBkZXBvcnRTcGxpdFBhdGhbZGVwb3J0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFkZXBvcnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLmRlcG9ydFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJkZXBvcnRcIiBmaWxlOiAke2RlcG9ydE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvRGVwb3J0KGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0ID0gZGVwb3J0T3JpZ2luYWwuZGVwb3J0XG4gICAgICAgICAgICAgICAgbGV0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAoZGVwb3J0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5wdXNoKGRlcG9ydClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0cyBvZiBPYmplY3QudmFsdWVzKGRlcG9ydHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBkZXBvcnRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYW5kYXRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJtYW5kYXRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBtYW5kYXRTcGxpdFBhdGhbbWFuZGF0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFtYW5kYXRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLm1hbmRhdFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJtYW5kYXRcIiBmaWxlOiAke21hbmRhdE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvTWFuZGF0V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0ID0gbWFuZGF0T3JpZ2luYWwubWFuZGF0XG4gICAgICAgICAgICAgICAgbGV0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAobWFuZGF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5wdXNoKG1hbmRhdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0cyBvZiBPYmplY3QudmFsdWVzKG1hbmRhdHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBtYW5kYXRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJhY3RldXJcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYWN0ZXVyXCIgZmlsZTogJHthY3RldXJPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1ck9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXIoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGFjdGV1ck9yaWdpbmFsLmFjdGV1clxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJVaWQgPSBhY3RldXIudWlkW1wiI3RleHRcIl1cbiAgICAgICAgICAgICAgY29uc3QgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChkZXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLmRlcG9ydHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIuZGVwb3J0cyA9IHsgZGVwb3J0OiBkZXBvcnRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIubWFuZGF0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5tYW5kYXRzID0geyBtYW5kYXQ6IG1hbmRhdHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1clVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wib3JnYW5lXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcIm9yZ2FuZVwiIGZpbGU6ICR7b3JnYW5lT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmUgPSBvcmdhbmVPcmlnaW5hbC5vcmdhbmVcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcInJldW5pb25cIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJyZXVuaW9uXCIgZmlsZTogJHtyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uID0gcmV1bmlvbk9yaWdpbmFsLnJldW5pb25cbiAgICAgICAgICAgICAgd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgZG9zc2llclBhcmxlbWVudGFpcmUgfSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0XG4gICAgICAgICAgICAgIC5kb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXIpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvY3VtZW50XCIgZmlsZTogJHtkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0RvY3VtZW50KGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudE9yaWdpbmFsLmRvY3VtZW50XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9zc2llclBhcmxlbWVudGFpcmVcIiBmaWxlOiAke2Rvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwuZG9zc2llclBhcmxlbWVudGFpcmVcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwic2NydXRpblwiIGZpbGU6ICR7c2NydXRpbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGluV3JhcHBlcihzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluID0gc2NydXRpbk9yaWdpbmFsLnNjcnV0aW5cbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5xdWVzdGlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJxdWVzdGlvblwiIGZpbGU6ICR7cXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBRdWVzdGlvbnNSYXdDb252ZXJ0LnRvUXVlc3Rpb25XcmFwcGVyKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbk9yaWdpbmFsLnF1ZXN0aW9uXG4gICAgICAgICAgICAgIHdyaXRlUXVlc3Rpb25zUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcXVlc3Rpb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIi54bWxcIilcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImNvbXB0ZVJlbmR1U2VhbmNlXCIgZmlsZTogJHtjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBDb21wdGVzUmVuZHVzUmF3Q29udmVydC50b0NvbXB0ZVJlbmR1V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlID0gY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbC5jb21wdGVSZW5kdVxuICAgICAgICAgICAgICB3cml0ZUNvbXB0ZXNSZW5kdXNSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsXG4gIGFtZW5kZW1lbnQ6IHtcbiAgICB1aWQ6IHN0cmluZ1xuICAgIHRleHRlTGVnaXNsYXRpZlJlZjogc3RyaW5nXG4gIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID0gYW1lbmRlbWVudC50ZXh0ZUxlZ2lzbGF0aWZSZWZcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVpZFRleHRlTGVnaXNsYXRpZiwgdW5kZWZpbmVkKVxuICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWZEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgIHVpZFRleHRlTGVnaXNsYXRpZixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlTGVnaXNsYXRpZkRpcilcbiAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgdGV4dGVMZWdpc2xhdGlmRGlyLFxuICAgIGFtZW5kZW1lbnQudWlkICsgXCIuanNvblwiLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbihcbiAgZG9jdW1lbnRzRGlyOiBzdHJpbmcsXG4gIGRvY3VtZW50OiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0RpciwgZG9jdW1lbnQudWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQsIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICBkb3NzaWVyUGFybGVtZW50YWlyZTogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZChcbiAgICBkb3NzaWVyc0RpcixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZS51aWQsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBgJHtiYXNlbmFtZX0uanNvbmAsXG4gICAgSlNPTi5zdHJpbmdpZnkoZG9zc2llclBhcmxlbWVudGFpcmUsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihcbiAgcmV1bmlvbnNEaXI6IHN0cmluZyxcbiAgcmV1bmlvbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21SZXVuaW9uVWlkKHJldW5pb25zRGlyLCByZXVuaW9uLnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oXG4gIHNjcnV0aW5zRGlyOiBzdHJpbmcsXG4gIHNjcnV0aW46IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpciwgc2NydXRpbi51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShzY3J1dGluLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVRdWVzdGlvbnNSZW9yZ2FuaXplZEpzb24oXG4gIHF1ZXN0aW9uc0Rpcjogc3RyaW5nLFxuICBxdWVzdGlvbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHF1ZXN0aW9uVWlkUmVnZXg6IFJlZ0V4cCA9IC9eUUFOKFJcXGQrKShMXFxkKylRKEV8R3xPU0QpKFxcZCspJC9cbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChxdWVzdGlvbnNEaXIsIHF1ZXN0aW9uLnVpZCwgcXVlc3Rpb25VaWRSZWdleClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHF1ZXN0aW9uLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVDb21wdGVzUmVuZHVzUmVvcmdhbml6ZWRKc29uKFxuICBjb21wdGVzUmVuZHVzRGlyOiBzdHJpbmcsXG4gIGNvbXB0ZVJlbmR1OiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgY29tcHRlUmVuZHVVaWRSZWdleDogUmVnRXhwID1cbiAgICAvXkNSU0FOKFJcXGQrKShMXFxkKykoU1xcZCspKE98RSkoXFxkKykoTlxcZCspJC9cbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChcbiAgICBjb21wdGVzUmVuZHVzRGlyLFxuICAgIGNvbXB0ZVJlbmR1LnVpZCxcbiAgICBjb21wdGVSZW5kdVVpZFJlZ2V4LFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShjb21wdGVSZW5kdSwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSkge1xuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuICBwcm9jZXNzLmV4aXQocmVvcmdhbml6ZURhdGEob3B0aW9ucykpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxHQUFBLEdBQUFDLHVCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFPQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMscUJBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixVQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLE9BQUEsR0FBQWpCLE9BQUE7QUFBd0UsU0FBQWtCLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWCx3QkFBQVcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFB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
|