@tricoteuses/assemblee 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -27
- package/lib/bugs/acteur-00010/plugin.test.js +4 -4
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +15 -16
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +4 -4
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +27 -28
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +4 -4
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +15 -16
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +5 -5
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +21 -22
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +17 -19
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +2 -2
- package/lib/datasets.js +53 -132
- package/lib/datasets.mjs +40 -118
- package/lib/dates.js +1 -2
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.d.ts +1 -0
- package/lib/git.js +21 -5
- package/lib/git.mjs +16 -1
- package/lib/inserters.js +3 -3
- package/lib/loaders.d.ts +14 -40
- package/lib/loaders.js +580 -1086
- package/lib/loaders.mjs +110 -353
- package/lib/parsers/documents.js +10 -10
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +9 -9
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.d.ts +26 -78
- package/lib/raw_types/debats.js +49 -242
- package/lib/raw_types/debats.mjs +41 -234
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +17 -18
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +183 -561
- package/lib/scripts/clean_reorganized_data.mjs +111 -410
- package/lib/scripts/diff_amendements.js +11 -24
- package/lib/scripts/diff_amendements.mjs +3 -17
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +5 -8
- package/lib/scripts/get_today_reunions.mjs +3 -7
- package/lib/scripts/merge_scrutins.js +11 -24
- package/lib/scripts/merge_scrutins.mjs +3 -17
- package/lib/scripts/parse_textes_lois.js +8 -38
- package/lib/scripts/parse_textes_lois.mjs +3 -33
- package/lib/scripts/raw_types_from_amendements.js +14 -27
- package/lib/scripts/raw_types_from_amendements.mjs +3 -17
- package/lib/scripts/reorganize_data.js +204 -456
- package/lib/scripts/reorganize_data.mjs +68 -260
- package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
- package/lib/scripts/retrieve_deputes_photos.js +146 -172
- package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
- package/lib/scripts/retrieve_documents.js +207 -156
- package/lib/scripts/retrieve_documents.mjs +116 -128
- package/lib/scripts/retrieve_open_data.js +272 -249
- package/lib/scripts/retrieve_open_data.mjs +109 -123
- package/lib/scripts/retrieve_pending_amendments.js +16 -67
- package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
- package/lib/scripts/retrieve_senateurs_photos.js +20 -77
- package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
- package/lib/scripts/retrieve_textes_lois.js +18 -46
- package/lib/scripts/retrieve_textes_lois.mjs +3 -33
- package/lib/scripts/shared/cli_helpers.d.ts +66 -0
- package/lib/scripts/shared/cli_helpers.js +90 -0
- package/lib/scripts/shared/cli_helpers.mjs +72 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +154 -0
- package/lib/scripts/test_iter_load.mjs +71 -0
- package/lib/scripts/test_load.js +4 -15
- package/lib/scripts/test_load.mjs +3 -14
- package/lib/scripts/test_load_big_files.js +4 -15
- package/lib/scripts/test_load_big_files.mjs +3 -14
- package/lib/scripts/validate_json.js +15 -16
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +9 -9
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.d.ts +27 -79
- package/lib/types/debats.js +48 -241
- package/lib/types/debats.mjs +40 -233
- package/lib/types/dossiers_legislatifs.js +9 -9
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/lib/types/legislatures.d.ts +4 -4
- package/lib/types/legislatures.js +5 -5
- package/lib/types/legislatures.mjs +5 -5
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +9 -7
package/lib/datasets.js
CHANGED
|
@@ -21,6 +21,7 @@ exports.diffUpstream = diffUpstream;
|
|
|
21
21
|
exports.fileDatasetUrl = fileDatasetUrl;
|
|
22
22
|
exports.filterByLegislature = filterByLegislature;
|
|
23
23
|
exports.getDatasets = getDatasets;
|
|
24
|
+
exports.getEnabledDatasets = getEnabledDatasets;
|
|
24
25
|
exports.getSchemas = getSchemas;
|
|
25
26
|
exports.masterUrl = masterUrl;
|
|
26
27
|
exports.validDataset = validDataset;
|
|
@@ -29,7 +30,7 @@ require("core-js/modules/es.array.filter.js");
|
|
|
29
30
|
require("core-js/modules/es.array.includes.js");
|
|
30
31
|
require("core-js/modules/es.array.join.js");
|
|
31
32
|
require("core-js/modules/es.array.map.js");
|
|
32
|
-
require("core-js/modules/es.array.
|
|
33
|
+
require("core-js/modules/es.array.reduce.js");
|
|
33
34
|
require("core-js/modules/es.date.to-string.js");
|
|
34
35
|
require("core-js/modules/es.object.entries.js");
|
|
35
36
|
require("core-js/modules/es.object.keys.js");
|
|
@@ -40,17 +41,18 @@ require("core-js/modules/es.regexp.exec.js");
|
|
|
40
41
|
require("core-js/modules/es.regexp.to-string.js");
|
|
41
42
|
require("core-js/modules/es.string.includes.js");
|
|
42
43
|
var _crypto = require("crypto");
|
|
44
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
43
45
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
44
46
|
var _path = _interopRequireDefault(require("path"));
|
|
45
47
|
var _legislatures = require("./types/legislatures");
|
|
46
|
-
function _interopRequireDefault(
|
|
47
|
-
function _slicedToArray(
|
|
48
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
49
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
48
50
|
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."); }
|
|
49
51
|
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; } }
|
|
50
|
-
function _arrayWithHoles(
|
|
51
|
-
function _createForOfIteratorHelper(
|
|
52
|
-
function _unsupportedIterableToArray(
|
|
53
|
-
function _arrayLikeToArray(
|
|
52
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
53
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
54
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
55
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
54
56
|
var DatasetStructure = exports.DatasetStructure = /*#__PURE__*/function (DatasetStructure) {
|
|
55
57
|
DatasetStructure[DatasetStructure["SingleFile"] = 0] = "SingleFile";
|
|
56
58
|
DatasetStructure[DatasetStructure["SegmentedFiles"] = 1] = "SegmentedFiles";
|
|
@@ -68,7 +70,16 @@ var EnabledDatasets = exports.EnabledDatasets = /*#__PURE__*/function (EnabledDa
|
|
|
68
70
|
EnabledDatasets[EnabledDatasets["ComptesRendusSeances"] = 128] = "ComptesRendusSeances";
|
|
69
71
|
EnabledDatasets[EnabledDatasets["All"] = 255] = "All";
|
|
70
72
|
return EnabledDatasets;
|
|
71
|
-
}({});
|
|
73
|
+
}({}); // The zip files (named NAME.json.zip) usually contain a single subfolder named "json"
|
|
74
|
+
// containing the actual contents
|
|
75
|
+
// We'd rather rename the folder NAME.json
|
|
76
|
+
function repairForJsonSubdirectory(dataset, dataDir) {
|
|
77
|
+
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
78
|
+
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
79
|
+
_fsExtra["default"].removeSync(targetDir);
|
|
80
|
+
}
|
|
81
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
82
|
+
}
|
|
72
83
|
var datasets = exports.datasets = {
|
|
73
84
|
acteursEtOrganes: [{
|
|
74
85
|
// AMO10 (XVI)
|
|
@@ -94,13 +105,7 @@ var datasets = exports.datasets = {
|
|
|
94
105
|
filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVI.json",
|
|
95
106
|
ignoreForWeb: true,
|
|
96
107
|
legislature: _legislatures.Legislature.Seize,
|
|
97
|
-
repairZip:
|
|
98
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
99
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
100
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
101
|
-
}
|
|
102
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
103
|
-
},
|
|
108
|
+
repairZip: repairForJsonSubdirectory,
|
|
104
109
|
structure: DatasetStructure.SegmentedFiles,
|
|
105
110
|
title: "Députés actifs et organes de la XVIème législature",
|
|
106
111
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip"
|
|
@@ -128,13 +133,7 @@ var datasets = exports.datasets = {
|
|
|
128
133
|
filename: "AMO10_deputes_actifs_mandats_actifs_organes_XV.json",
|
|
129
134
|
ignoreForWeb: true,
|
|
130
135
|
legislature: _legislatures.Legislature.Quinze,
|
|
131
|
-
repairZip:
|
|
132
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
133
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
134
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
135
|
-
}
|
|
136
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
137
|
-
},
|
|
136
|
+
repairZip: repairForJsonSubdirectory,
|
|
138
137
|
structure: DatasetStructure.SegmentedFiles,
|
|
139
138
|
title: "Députés actifs et organes de la XVème législature",
|
|
140
139
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes_XV.json.zip"
|
|
@@ -162,13 +161,7 @@ var datasets = exports.datasets = {
|
|
|
162
161
|
filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVI.json",
|
|
163
162
|
ignoreForWeb: true,
|
|
164
163
|
legislature: _legislatures.Legislature.Seize,
|
|
165
|
-
repairZip:
|
|
166
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
167
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
168
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
169
|
-
}
|
|
170
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
171
|
-
},
|
|
164
|
+
repairZip: repairForJsonSubdirectory,
|
|
172
165
|
structure: DatasetStructure.SegmentedFiles,
|
|
173
166
|
title: "Acteurs et organes de la XVIème législature",
|
|
174
167
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes.json.zip"
|
|
@@ -196,13 +189,7 @@ var datasets = exports.datasets = {
|
|
|
196
189
|
filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XV.json",
|
|
197
190
|
ignoreForWeb: true,
|
|
198
191
|
legislature: _legislatures.Legislature.Quinze,
|
|
199
|
-
repairZip:
|
|
200
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
201
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
202
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
203
|
-
}
|
|
204
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
205
|
-
},
|
|
192
|
+
repairZip: repairForJsonSubdirectory,
|
|
206
193
|
structure: DatasetStructure.SegmentedFiles,
|
|
207
194
|
title: "Acteurs et organes de la XVème législature",
|
|
208
195
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes_XV.json.zip"
|
|
@@ -230,13 +217,7 @@ var datasets = exports.datasets = {
|
|
|
230
217
|
// C'est un sur-ensemble des fichiers AMO20.
|
|
231
218
|
filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
|
|
232
219
|
legislature: _legislatures.Legislature.All,
|
|
233
|
-
repairZip:
|
|
234
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
235
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
236
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
237
|
-
}
|
|
238
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
239
|
-
},
|
|
220
|
+
repairZip: repairForJsonSubdirectory,
|
|
240
221
|
structure: DatasetStructure.SegmentedFiles,
|
|
241
222
|
title: "Historique de tous les acteurs et organes depuis la XIème législature",
|
|
242
223
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip"
|
|
@@ -294,7 +275,11 @@ var datasets = exports.datasets = {
|
|
|
294
275
|
_fsExtra["default"].removeSync(targetDir);
|
|
295
276
|
}
|
|
296
277
|
_fsExtra["default"].mkdirSync(targetDir);
|
|
297
|
-
_fsExtra["default"].
|
|
278
|
+
if (_fsExtra["default"].pathExistsSync(_path["default"].join(dataDir, "acteur"))) {
|
|
279
|
+
// Note; Le répertoire acteur peut disparaître en fin de législature
|
|
280
|
+
// quand les mandats des députés s'interrompent.
|
|
281
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "acteur"), _path["default"].join(targetDir, "acteur"));
|
|
282
|
+
}
|
|
298
283
|
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "organe"), _path["default"].join(targetDir, "organe"));
|
|
299
284
|
},
|
|
300
285
|
structure: DatasetStructure.SegmentedFiles,
|
|
@@ -406,26 +391,14 @@ var datasets = exports.datasets = {
|
|
|
406
391
|
agendas: [{
|
|
407
392
|
filename: "Agenda_XVI.json",
|
|
408
393
|
legislature: _legislatures.Legislature.Seize,
|
|
409
|
-
repairZip:
|
|
410
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
411
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
412
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
413
|
-
}
|
|
414
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
415
|
-
},
|
|
394
|
+
repairZip: repairForJsonSubdirectory,
|
|
416
395
|
structure: DatasetStructure.SegmentedFiles,
|
|
417
396
|
title: "Agenda de la XVIème législature",
|
|
418
397
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/vp/reunions/Agenda.json.zip"
|
|
419
398
|
}, {
|
|
420
399
|
filename: "Agenda_XV.json",
|
|
421
400
|
legislature: _legislatures.Legislature.Quinze,
|
|
422
|
-
repairZip:
|
|
423
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
424
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
425
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
426
|
-
}
|
|
427
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
428
|
-
},
|
|
401
|
+
repairZip: repairForJsonSubdirectory,
|
|
429
402
|
structure: DatasetStructure.SegmentedFiles,
|
|
430
403
|
title: "Agenda de la XVème législature",
|
|
431
404
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/vp/reunions/Agenda_XV.json.zip"
|
|
@@ -439,26 +412,14 @@ var datasets = exports.datasets = {
|
|
|
439
412
|
amendements: [{
|
|
440
413
|
filename: "Amendements_XVI.json",
|
|
441
414
|
legislature: _legislatures.Legislature.Seize,
|
|
442
|
-
repairZip:
|
|
443
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
444
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
445
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
446
|
-
}
|
|
447
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
448
|
-
},
|
|
415
|
+
repairZip: repairForJsonSubdirectory,
|
|
449
416
|
structure: DatasetStructure.SegmentedFiles,
|
|
450
417
|
title: "Amendements de la XVIème législature",
|
|
451
418
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/amendements_div_legis/Amendements.json.zip"
|
|
452
419
|
}, {
|
|
453
420
|
filename: "Amendements_XV.json",
|
|
454
421
|
legislature: _legislatures.Legislature.Quinze,
|
|
455
|
-
repairZip:
|
|
456
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
457
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
458
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
459
|
-
}
|
|
460
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
461
|
-
},
|
|
422
|
+
repairZip: repairForJsonSubdirectory,
|
|
462
423
|
structure: DatasetStructure.SegmentedFiles,
|
|
463
424
|
title: "Amendements de la XVème législature",
|
|
464
425
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/amendements_legis/Amendements_XV.json.zip"
|
|
@@ -476,26 +437,14 @@ var datasets = exports.datasets = {
|
|
|
476
437
|
dossiersLegislatifs: [{
|
|
477
438
|
filename: "Dossiers_Legislatifs_XVI.json",
|
|
478
439
|
legislature: _legislatures.Legislature.Seize,
|
|
479
|
-
repairZip:
|
|
480
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
481
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
482
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
483
|
-
}
|
|
484
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
485
|
-
},
|
|
440
|
+
repairZip: repairForJsonSubdirectory,
|
|
486
441
|
structure: DatasetStructure.SegmentedFiles,
|
|
487
442
|
title: "Dossiers législatifs de la XVIème législature",
|
|
488
443
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip"
|
|
489
444
|
}, {
|
|
490
445
|
filename: "Dossiers_Legislatifs_XV.json",
|
|
491
446
|
legislature: _legislatures.Legislature.Quinze,
|
|
492
|
-
repairZip:
|
|
493
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
494
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
495
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
496
|
-
}
|
|
497
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
498
|
-
},
|
|
447
|
+
repairZip: repairForJsonSubdirectory,
|
|
499
448
|
structure: DatasetStructure.SegmentedFiles,
|
|
500
449
|
title: "Dossiers législatifs de la XVème législature",
|
|
501
450
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/dossiers_legislatifs/Dossiers_Legislatifs_XV.json.zip"
|
|
@@ -509,26 +458,14 @@ var datasets = exports.datasets = {
|
|
|
509
458
|
scrutins: [{
|
|
510
459
|
filename: "Scrutins_XVI.json",
|
|
511
460
|
legislature: _legislatures.Legislature.Seize,
|
|
512
|
-
repairZip:
|
|
513
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
514
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
515
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
516
|
-
}
|
|
517
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
518
|
-
},
|
|
461
|
+
repairZip: repairForJsonSubdirectory,
|
|
519
462
|
structure: DatasetStructure.SegmentedFiles,
|
|
520
463
|
title: "Scrutins de la XVIème législature",
|
|
521
464
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip"
|
|
522
465
|
}, {
|
|
523
466
|
filename: "Scrutins_XV.json",
|
|
524
467
|
legislature: _legislatures.Legislature.Quinze,
|
|
525
|
-
repairZip:
|
|
526
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
527
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
528
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
529
|
-
}
|
|
530
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
531
|
-
},
|
|
468
|
+
repairZip: repairForJsonSubdirectory,
|
|
532
469
|
structure: DatasetStructure.SegmentedFiles,
|
|
533
470
|
title: "Scrutins de la XVème législature",
|
|
534
471
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/scrutins/Scrutins_XV.json.zip"
|
|
@@ -542,39 +479,21 @@ var datasets = exports.datasets = {
|
|
|
542
479
|
questions: [{
|
|
543
480
|
filename: "Questions_ecrites_XVI.json",
|
|
544
481
|
legislature: _legislatures.Legislature.Seize,
|
|
545
|
-
repairZip:
|
|
546
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
547
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
548
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
549
|
-
}
|
|
550
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
551
|
-
},
|
|
482
|
+
repairZip: repairForJsonSubdirectory,
|
|
552
483
|
structure: DatasetStructure.SegmentedFiles,
|
|
553
484
|
title: "Questions écrites de la XVIème législature",
|
|
554
485
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_ecrites/Questions_ecrites.json.zip"
|
|
555
486
|
}, {
|
|
556
487
|
filename: "Questions_gouvernement_XVI.json",
|
|
557
488
|
legislature: _legislatures.Legislature.Seize,
|
|
558
|
-
repairZip:
|
|
559
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
560
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
561
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
562
|
-
}
|
|
563
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
564
|
-
},
|
|
489
|
+
repairZip: repairForJsonSubdirectory,
|
|
565
490
|
structure: DatasetStructure.SegmentedFiles,
|
|
566
491
|
title: "Questions au gouvernement de la XVIème législature",
|
|
567
492
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_gouvernement/Questions_gouvernement.json.zip"
|
|
568
493
|
}, {
|
|
569
494
|
filename: "Questions_orales_XVI.json",
|
|
570
495
|
legislature: _legislatures.Legislature.Seize,
|
|
571
|
-
repairZip:
|
|
572
|
-
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
573
|
-
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
574
|
-
_fsExtra["default"].removeSync(targetDir);
|
|
575
|
-
}
|
|
576
|
-
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
577
|
-
},
|
|
496
|
+
repairZip: repairForJsonSubdirectory,
|
|
578
497
|
structure: DatasetStructure.SegmentedFiles,
|
|
579
498
|
title: "Questions orales sans débats de la XVIème législature",
|
|
580
499
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
|
|
@@ -615,8 +534,8 @@ function validDataset(dir) {
|
|
|
615
534
|
_step;
|
|
616
535
|
try {
|
|
617
536
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
618
|
-
var
|
|
619
|
-
if (dir.includes(
|
|
537
|
+
var dataset = _step.value;
|
|
538
|
+
if (dir.includes(dataset)) return true;
|
|
620
539
|
}
|
|
621
540
|
} catch (err) {
|
|
622
541
|
_iterator.e(err);
|
|
@@ -685,22 +604,24 @@ function masterUrl(filename) {
|
|
|
685
604
|
function filterByLegislature(datasets, legislature) {
|
|
686
605
|
// When a given legislature is 0, it is the same as giving no legislature:
|
|
687
606
|
// It means "every legislatures".
|
|
688
|
-
|
|
689
|
-
return legislature === 0;
|
|
690
|
-
}) ? undefined : legislature;
|
|
691
|
-
if (legislatures !== undefined) {
|
|
692
|
-
var enabledLegislatures = legislatures.map(function (legislature) {
|
|
693
|
-
return legislature.toString();
|
|
694
|
-
});
|
|
607
|
+
if (legislature !== 0 && legislature !== undefined) {
|
|
695
608
|
for (var _i2 = 0, _Object$entries = Object.entries(datasets); _i2 < _Object$entries.length; _i2++) {
|
|
696
609
|
var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
|
|
697
610
|
key = _Object$entries$_i[0],
|
|
698
611
|
value = _Object$entries$_i[1];
|
|
699
612
|
datasets[key] = value.filter(function (dataset) {
|
|
700
|
-
return dataset.legislature === _legislatures.Legislature.All ||
|
|
613
|
+
return dataset.legislature === _legislatures.Legislature.All || legislature === dataset.legislature;
|
|
701
614
|
});
|
|
702
615
|
}
|
|
703
616
|
}
|
|
704
617
|
return datasets;
|
|
705
618
|
}
|
|
706
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9mc0V4dHJhIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9wYXRoIiwiX2xlZ2lzbGF0dXJlcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwibiIsInUiLCJhIiwiZiIsIm8iLCJjYWxsIiwibmV4dCIsIk9iamVjdCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJGIiwicyIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJEYXRhc2V0U3RydWN0dXJlIiwiZXhwb3J0cyIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImZpbGVuYW1lIiwiaWdub3JlRm9yV2ViIiwibGVnaXNsYXR1cmUiLCJMZWdpc2xhdHVyZSIsIlNlaXplIiwicmVwYWlyWmlwIiwiZGF0YXNldCIsImRhdGFEaXIiLCJ0YXJnZXREaXIiLCJwYXRoIiwiam9pbiIsImZzIiwiZXhpc3RzU3luYyIsInJlbW92ZVN5bmMiLCJtb3ZlU3luYyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwidGl0bGUiLCJ1cmwiLCJRdWluemUiLCJRdWF0b3J6ZSIsIlNpbmdsZUZpbGUiLCJBbGwiLCJta2RpclN5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJxdWVzdGlvbnMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaW5jbHVkZXMiLCJnZXRTY2hlbWFzIiwidmFsdWVzIiwiZGF0YXNldERpcmVjdG9yeVNjaGVtYSIsImRpcmVjdG9yaWVzIiwiY29uY2F0IiwicmVzdWx0cyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkaXJlY3RvcnkiLCJfaSIsIl9PYmplY3Qka2V5cyIsImtleXMiLCJyZSIsIlJlZ0V4cCIsImV4ZWMiLCJmaWxlRGF0YXNldFVybCIsIm1hdGNoIiwiX3JlZiIsImZpbGUiLCJkaWZmVXBzdHJlYW0iLCJkYXRhc2V0VXJsIiwiX2RhdGFzZXRVcmwiLCJzdW0iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwibWFzdGVyVXJsIiwiX2RhdGFzZXRVcmwyIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImxlZ2lzbGF0dXJlcyIsInNvbWUiLCJ1bmRlZmluZWQiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwibWFwIiwiX2kyIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImtleSIsImZpbHRlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5pbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG4gIHF1ZXN0aW9uczogRGF0YXNldFtdXG4gIGNvbXB0ZXNSZW5kdXNTZWFuY2VzOiBEYXRhc2V0W11cbn1cblxuZXhwb3J0IGVudW0gRGF0YXNldFN0cnVjdHVyZSB7XG4gIFNpbmdsZUZpbGUsXG4gIFNlZ21lbnRlZEZpbGVzLFxufVxuXG5leHBvcnQgZW51bSBFbmFibGVkRGF0YXNldHMge1xuICBOb25lID0gMCxcbiAgQWN0ZXVyc0V0T3JnYW5lcyA9IDEgPDwgMCxcbiAgQWdlbmRhcyA9IDEgPDwgMSxcbiAgQW1lbmRlbWVudHMgPSAxIDw8IDIsXG4gIERvc3NpZXJzTGVnaXNsYXRpZnMgPSAxIDw8IDMsXG4gIFBob3RvcyA9IDEgPDwgNCxcbiAgU2NydXRpbnMgPSAxIDw8IDUsXG4gIFF1ZXN0aW9ucyA9IDEgPDwgNixcbiAgQ29tcHRlc1JlbmR1c1NlYW5jZXMgPSAxIDw8IDcsXG4gIEFsbCA9IEFjdGV1cnNFdE9yZ2FuZXMgfFxuICAgIEFnZW5kYXMgfFxuICAgIEFtZW5kZW1lbnRzIHxcbiAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzIHxcbiAgICBQaG90b3MgfFxuICAgIFNjcnV0aW5zIHxcbiAgICBRdWVzdGlvbnMgfFxuICAgIENvbXB0ZXNSZW5kdXNTZWFuY2VzLFxufVxuXG5leHBvcnQgY29uc3QgZGF0YXNldHM6IERhdGFzZXRzID0ge1xuICBhY3RldXJzRXRPcmdhbmVzOiBbXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmc1xuICAgICAgLy8gKiBhdmVjIHRvdXMgbGVzIG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogeSBjb21wcmlzIGF2ZWMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBhY2hldsOpcyAoeSBjb21wcmlzIGRhbnMgY2V0dGUgbMOpZ2lzbGF0dXJlKVxuICAgICAgLy9cbiAgICAgIC8vIE9yZ2FuZXMgOlxuICAgICAgLy8gKiBDb250aWVudCBzZXVsZW1lbnQgbGVzIG9yZ2FuZXMgY29ycmVzcG9uZGFudHMgYXV4IG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMjBcbiAgICAgIC8vIChxdWkgZXN0IGx1aSBtw6ptZSB1biBzb3VzLWVuc2VtYmxlIGRlIGwnQU1PMzApLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIEFNTzIwIG91IGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgZGUgbGEgbMOpZ2lzbGF0dXJlLCBhY3RpZnMgb3Ugbm9uIChpbnZhbGlkw6lzLCBldGMpLCBsZXMgc8OpbmF0ZXVycyBhY3R1ZWxzXG4gICAgICAvLyBQb3VyIGxlcyBkw6lwdXTDqXMgOlxuICAgICAgLy8gKiBhdmVjIHRvdXMgbGV1cnMgbWFuZGF0cyBkZSBsYSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyAgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzIChxdWkgc29udCBkYW5zIEFNTzQwKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IHRvdXMgbGVzIG9yZ2FuZXMgcsOpZsOpcmVuY8OpcyBwYXIgbGVzIG1hbmRhdHNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvYW1lbmRlbWVudHNfZGl2X2xlZ2lzL0FtZW5kZW1lbnRzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgc2NydXRpbnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHF1ZXN0aW9uczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19lY3JpdGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIMOpY3JpdGVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9xdWVzdGlvbnMvcXVlc3Rpb25zX2Vjcml0ZXMvUXVlc3Rpb25zX2Vjcml0ZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19nb3V2ZXJuZW1lbnRfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgYXUgZ291dmVybmVtZW50IGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9xdWVzdGlvbnMvcXVlc3Rpb25zX2dvdXZlcm5lbWVudC9RdWVzdGlvbnNfZ291dmVybmVtZW50Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfb3JhbGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIG9yYWxlcyBzYW5zIGTDqWJhdHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQvUXVlc3Rpb25zX29yYWxlc19zYW5zX2RlYmF0Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgY29tcHRlc1JlbmR1c1NlYW5jZXM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJDb21wdGVzX1JlbmR1c19TZWFuY2VzX1hWSS54bWxcIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcInhtbFwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkNvbXB0ZXMgcmVuZHVzIGRlcyBzw6lhbmNlcyBwdWJsaXF1ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwczovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi92cC9zeWNlcm9uYnJ1dC9zeXNlcm9uLnhtbC56aXBcIixcbiAgICB9LFxuICBdLFxufVxuXG5jb25zdCBkaXJlY3Rvcnkyc2NoZW1hOiBhbnkgPSB7XG4gIFwiLipBZ2VuZGFfLipcIjogXCJhZ2VuZGFcIixcbiAgXCIuKlNjcnV0aW5zXy4qXCI6IFwic2NydXRpblwiLFxuICBcIi4qUXVlc3Rpb25zXy4qXCI6IFwicXVlc3Rpb25cIixcbiAgXCIuKkFtZW5kZW1lbnRzXy4qXCI6IFwiYW1lbmRlbWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9jdW1lbnRzXCI6IFwiZG9jdW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2Rvc3NpZXJzXCI6IFwiZG9zc2llclwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvb3JnYW5lc1wiOiBcIm9yZ2FuZVwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvYWN0ZXVyc1wiOiBcImFjdGV1clwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL29yZ2FuZXNcIjpcbiAgICBcIm9yZ2FuZVwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL2FjdGV1cnNcIjpcbiAgICBcImFjdGV1clwiLFxuICBcIi4qQ29tcHRlc19SZW5kdXNfU2VhbmNlc18uKlwiOiBcImRlYmF0XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0cygpOiBhbnkge1xuICByZXR1cm4gW1xuICAgIFwiQWdlbmRhX1hJVlwiLFxuICAgIFwiQWdlbmRhX1hWXCIsXG4gICAgXCJBZ2VuZGFfWFZJXCIsXG4gICAgXCJTY3J1dGluc19YSVZcIixcbiAgICBcIlNjcnV0aW5zX1hWXCIsXG4gICAgXCJTY3J1dGluc19YVklcIixcbiAgICBcIlF1ZXN0aW9uc19FY3JpdGVzX1hWSVwiLFxuICAgIFwiUXVlc3Rpb25zX0dvdXZlcm5lbWVudF9YVklcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hJVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hWSVwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVlwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFZJXCIsXG4gICAgXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIsXG4gICAgXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiLFxuICAgIFwiQ29tcHRlc19SZW5kdXNfU2VhbmNlc19YVklcIixcbiAgXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWREYXRhc2V0KGRpcjogYW55KTogYW55IHtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGdldERhdGFzZXRzKCkpIHtcbiAgICBpZiAoZGlyLmluY2x1ZGVzKGRhdGFzZXQpKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NoZW1hcygpOiBhbnkge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkaXJlY3Rvcnkyc2NoZW1hKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0YXNldERpcmVjdG9yeVNjaGVtYShkYXRhc2V0OiBzdHJpbmcpOiBhbnkge1xuICBsZXQgZGlyZWN0b3JpZXM6IGFueVxuICBpZiAoZGF0YXNldC5pbmNsdWRlcyhcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1wiKSkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L2RvY3VtZW50c2AsIGAke2RhdGFzZXR9L2Rvc3NpZXJzYF1cbiAgfSBlbHNlIGlmIChcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIikgfHxcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICApIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9vcmdhbmVzYCwgYCR7ZGF0YXNldH0vYWN0ZXVyc2BdXG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbZGF0YXNldF1cbiAgfVxuXG4gIGxldCByZXN1bHRzID0gW11cbiAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgZGlyZWN0b3JpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHJlIG9mIE9iamVjdC5rZXlzKGRpcmVjdG9yeTJzY2hlbWEpKSB7XG4gICAgICBpZiAobmV3IFJlZ0V4cChyZSkuZXhlYyhkaXJlY3RvcnkpKVxuICAgICAgICByZXN1bHRzLnB1c2goW2Ake2RpcmVjdG9yeX0vKiovKi5qc29uYCwgZGlyZWN0b3J5MnNjaGVtYVtyZV1dKVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgcmUgPSBcIl4uKi8oLiopX25ldHRveWUvKC4qKVwiXG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChyZSkuZXhlYyhmaWxlbmFtZSlcbiAgaWYgKG1hdGNoID09IG51bGwpIHJldHVybiBudWxsXG4gIGxldCBbZGF0YXNldCwgZmlsZV0gPSBbbWF0Y2hbMV0sIG1hdGNoWzJdXVxuICBpZiAoZGF0YXNldCA9PSBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgICBkYXRhc2V0ID0gXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiXG4gIHJldHVybiBbZGF0YXNldCwgZmlsZV1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZVcHN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICBjb25zdCBzdW0gPSBjcmVhdGVIYXNoKFwic2hhMVwiKS51cGRhdGUoZmlsZSkuZGlnZXN0KFwiaGV4XCIpLnRvU3RyaW5nKClcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vY29tcGFyZS91cHN0cmVhbS4uLm1hc3RlciMke3N1bX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFzdGVyVXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL3RyZWUvbWFzdGVyLyR7ZmlsZX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlMZWdpc2xhdHVyZShcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogYW55LFxuKTogRGF0YXNldHMge1xuICAvLyBXaGVuIGEgZ2l2ZW4gbGVnaXNsYXR1cmUgaXMgMCwgaXQgaXMgdGhlIHNhbWUgYXMgZ2l2aW5nIG5vIGxlZ2lzbGF0dXJlOlxuICAvLyBJdCBtZWFucyBcImV2ZXJ5IGxlZ2lzbGF0dXJlc1wiLlxuICBjb25zdCBsZWdpc2xhdHVyZXMgPSBsZWdpc2xhdHVyZT8uc29tZShcbiAgICAobGVnaXNsYXR1cmU6IG51bWJlcikgPT4gbGVnaXNsYXR1cmUgPT09IDAsXG4gIClcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogbGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YXNldHMpKSB7XG4gICAgICBkYXRhc2V0c1trZXkgYXMga2V5b2YgdHlwZW9mIGRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcihcbiAgICAgICAgKGRhdGFzZXQ6IHsgbGVnaXNsYXR1cmU6IGFueSB9KSA9PlxuICAgICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICAgIGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSksXG4gICAgICApXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhc2V0c1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUFrRCxTQUFBRSx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBQUEsU0FBQUUsZUFBQUMsR0FBQSxFQUFBQyxDQUFBLFdBQUFDLGVBQUEsQ0FBQUYsR0FBQSxLQUFBRyxxQkFBQSxDQUFBSCxHQUFBLEVBQUFDLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUosR0FBQSxFQUFBQyxDQUFBLEtBQUFJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILHNCQUFBSSxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxXQUFBRixDQUFBLGdDQUFBRyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEsNEJBQUFFLENBQUEsUUFBQUcsQ0FBQSxFQUFBQyxDQUFBLEVBQUFaLENBQUEsRUFBQWEsQ0FBQSxFQUFBQyxDQUFBLE9BQUFDLENBQUEsT0FBQUMsQ0FBQSxpQkFBQWhCLENBQUEsSUFBQVEsQ0FBQSxHQUFBQSxDQUFBLENBQUFTLElBQUEsQ0FBQVgsQ0FBQSxHQUFBWSxJQUFBLFFBQUFYLENBQUEsUUFBQVksTUFBQSxDQUFBWCxDQUFBLE1BQUFBLENBQUEsVUFBQU8sQ0FBQSx1QkFB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
|
|
619
|
+
function getEnabledDatasets(categories) {
|
|
620
|
+
categories.map(function (datasetName) {
|
|
621
|
+
return _assert["default"].notStrictEqual(EnabledDatasets[datasetName], undefined, "Unknown name of dataset: ".concat(datasetName));
|
|
622
|
+
});
|
|
623
|
+
return categories.reduce(function (enabledDatasets, datasetName) {
|
|
624
|
+
return enabledDatasets | EnabledDatasets[datasetName];
|
|
625
|
+
}, EnabledDatasets.None);
|
|
626
|
+
}
|
|
627
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9sZWdpc2xhdHVyZXMiLCJlIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibiIsImkiLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfbiIsIkYiLCJzIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJEYXRhc2V0U3RydWN0dXJlIiwiZXhwb3J0cyIsIkVuYWJsZWREYXRhc2V0cyIsInJlcGFpckZvckpzb25TdWJkaXJlY3RvcnkiLCJkYXRhc2V0IiwiZGF0YURpciIsInRhcmdldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJmcyIsImV4aXN0c1N5bmMiLCJyZW1vdmVTeW5jIiwibW92ZVN5bmMiLCJkYXRhc2V0cyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIkxlZ2lzbGF0dXJlIiwiU2VpemUiLCJyZXBhaXJaaXAiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsInRpdGxlIiwidXJsIiwiUXVpbnplIiwiUXVhdG9yemUiLCJTaW5nbGVGaWxlIiwiQWxsIiwibWtkaXJTeW5jIiwicGF0aEV4aXN0c1N5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJxdWVzdGlvbnMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaW5jbHVkZXMiLCJlcnIiLCJnZXRTY2hlbWFzIiwidmFsdWVzIiwiZGF0YXNldERpcmVjdG9yeVNjaGVtYSIsImRpcmVjdG9yaWVzIiwiY29uY2F0IiwicmVzdWx0cyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkaXJlY3RvcnkiLCJfaSIsIl9PYmplY3Qka2V5cyIsImtleXMiLCJyZSIsIlJlZ0V4cCIsImV4ZWMiLCJmaWxlRGF0YXNldFVybCIsIm1hdGNoIiwiX3JlZiIsImZpbGUiLCJkaWZmVXBzdHJlYW0iLCJkYXRhc2V0VXJsIiwiX2RhdGFzZXRVcmwiLCJzdW0iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwibWFzdGVyVXJsIiwiX2RhdGFzZXRVcmwyIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsInVuZGVmaW5lZCIsIl9pMiIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJrZXkiLCJmaWx0ZXIiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsInJlZHVjZSIsImVuYWJsZWREYXRhc2V0cyIsIk5vbmUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG4gIHF1ZXN0aW9uczogRGF0YXNldFtdXG4gIGNvbXB0ZXNSZW5kdXNTZWFuY2VzOiBEYXRhc2V0W11cbn1cblxuZXhwb3J0IGVudW0gRGF0YXNldFN0cnVjdHVyZSB7XG4gIFNpbmdsZUZpbGUsXG4gIFNlZ21lbnRlZEZpbGVzLFxufVxuXG5leHBvcnQgZW51bSBFbmFibGVkRGF0YXNldHMge1xuICBOb25lID0gMCxcbiAgQWN0ZXVyc0V0T3JnYW5lcyA9IDEgPDwgMCxcbiAgQWdlbmRhcyA9IDEgPDwgMSxcbiAgQW1lbmRlbWVudHMgPSAxIDw8IDIsXG4gIERvc3NpZXJzTGVnaXNsYXRpZnMgPSAxIDw8IDMsXG4gIFBob3RvcyA9IDEgPDwgNCxcbiAgU2NydXRpbnMgPSAxIDw8IDUsXG4gIFF1ZXN0aW9ucyA9IDEgPDwgNixcbiAgQ29tcHRlc1JlbmR1c1NlYW5jZXMgPSAxIDw8IDcsXG4gIEFsbCA9IEFjdGV1cnNFdE9yZ2FuZXMgfFxuICAgIEFnZW5kYXMgfFxuICAgIEFtZW5kZW1lbnRzIHxcbiAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzIHxcbiAgICBQaG90b3MgfFxuICAgIFNjcnV0aW5zIHxcbiAgICBRdWVzdGlvbnMgfFxuICAgIENvbXB0ZXNSZW5kdXNTZWFuY2VzLFxufVxuXG4vLyBUaGUgemlwIGZpbGVzIChuYW1lZCBOQU1FLmpzb24uemlwKSB1c3VhbGx5IGNvbnRhaW4gYSBzaW5nbGUgc3ViZm9sZGVyIG5hbWVkIFwianNvblwiXG4vLyBjb250YWluaW5nIHRoZSBhY3R1YWwgY29udGVudHNcbi8vIFdlJ2QgcmF0aGVyIHJlbmFtZSB0aGUgZm9sZGVyIE5BTUUuanNvblxuZnVuY3Rpb24gcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeShkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgfVxuICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG59XG5cbmV4cG9ydCBjb25zdCBkYXRhc2V0czogRGF0YXNldHMgPSB7XG4gIGFjdGV1cnNFdE9yZ2FuZXM6IFtcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgZGUgbGEgbMOpZ2lzbGF0dXJlLCBhY3RpZnMgb3Ugbm9uIChpbnZhbGlkw6lzLCBldGMpLCBsZXMgc8OpbmF0ZXVycyBhY3R1ZWxzXG4gICAgICAvLyBQb3VyIGxlcyBkw6lwdXTDqXMgOlxuICAgICAgLy8gKiBhdmVjIHRvdXMgbGV1cnMgbWFuZGF0cyBkZSBsYSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyAgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzIChxdWkgc29udCBkYW5zIEFNTzQwKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IHRvdXMgbGVzIG9yZ2FuZXMgcsOpZsOpcmVuY8OpcyBwYXIgbGVzIG1hbmRhdHNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmUvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmUvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYSVYpXG4gICAgICAvL1xuICAgICAgLy8gQ29tbWUgQU1PMjAgKFhWKSBtYWlzIHBvdXIgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vIFRvdXMgbGVzIGFjdGV1cnMgc2F1ZiB1biAoUEE0Mjk4OTIpIHNvbnQgcHLDqXNlbnRzIGVuIHBsdXMgw6Agam91ciBkYW5zIEFNTzMwLlxuICAgICAgLy8gQ2V0IGFjdGV1ciBQQTQyOTg5MiAoYW5jaWVubmUgU8OpbmF0cmljZSkgbidlc3QgcHLDqXNlbnQgZGFucyBhdWN1biBkZXMgYXV0cmVzXG4gICAgICAvLyBmaWNoaWVycyBBTU8uXG4gICAgICAvLyBUb3VzIGxlcyBvcmdhbmVzIHNvbnQgcHLDqXNlbnRzIGVuIHBsdXMgY29tcGxldHMgZGFucyBBTU8zMC5cbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCBkb25jIMOgIHVuIGTDqXRhaWwgcHLDqnQgKFBBNDI5ODkyKSB1biBzb3VzLWVuc2VtYmxlIGQnQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBxdWFzaW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlc19YSVYvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8zMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgY29udGllbnQgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzLlxuICAgICAgLy8gQydlc3QgdW4gc3VyLWVuc2VtYmxlIGRlcyBmaWNoaWVycyBBTU8yMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkFsbCxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIikpKSB7XG4gICAgICAgICAgLy8gTm90ZTsgTGUgcsOpcGVydG9pcmUgYWN0ZXVyIHBldXQgZGlzcGFyYcOudHJlIGVuIGZpbiBkZSBsw6lnaXNsYXR1cmVcbiAgICAgICAgICAvLyBxdWFuZCBsZXMgbWFuZGF0cyBkZXMgZMOpcHV0w6lzIHMnaW50ZXJyb21wZW50LlxuICAgICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy9BTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmcyAobGVzIG3Dqm1lcyBxdSdBTU8yMClcbiAgICAgIC8vICogYXZlYyBwcmVzcXVlIHRvdXMgbGV1cnMgbWFuZGF0c1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgZXQgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyBwcsOpY8OpZGVudHNcbiAgICAgIC8vICogbWFpcyBzYW5zIGxldXIgcGFydGkgcG9saXRpcXVlIGFjdHVlbCAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBiZWF1Y291cCBkJ29yZ2FuZXMgcsOpZsOpcmVuY8OpcywgeSBjb21wcmlzIGNldXggZGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogbWFpcyBpbCBtYW5xdWUgbGUgeHNpVHlwZSBkZXMgb3JnYW5lc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG9yZ2FuZXMgc8OpbmF0b3JpYXV4XG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgbWluaXN0w6hyZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxhIFByw6lzaWRlbmNlIGRlIGxhIFLDqXB1YmxpcXVlXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMsIGNlIGTDqXDDtHQgZXN0IHVuIHNvdXMtZW5zZW1ibGUgc3RyaWN0IGRlIEFNTzMwIDpcbiAgICAgIC8vIElsIGEgbW9pbnMgZCdhY3RldXJzIGV0IGlsIHNvbnQgbW9pbnMgY29tcGxldHMuXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyBRdWFuZCBsJ29yZ2FuZSBlc3QgYXVzc2kgcHLDqXNlbnQgZGFucyBBTU8zMCwgaWwgdmF1dCBtaWV1eCBwcmVuZHJlIGNlbHVpXG4gICAgICAvLyBkJ0FNTzMwLCBjYXIgaWwgY29udGllbnQgbGUgeHNpVHlwZSAoYydlc3QgbGEgc2V1bGUgZGlmZsOpcmVuY2Ugc2VtYmxlLXQtaSkuXG4gICAgICAvLyBTaW5vbiwgaWwgZmF1dCBsZSBwcmVuZHJlIHNldWxlbWVudCBzaSBvbiBlc3QgaW50w6lyZXNzw6kgcGFyIGxlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIEF0dGVudGlvbiwgY2UgZmljaGllciBuJ2VzdCBwYXMgbWlzIMOgIGpvdXIgcsOpZ3VsacOocmVtZW50ICFcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGUgYXV4IG1hbmRhdHNcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGVcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLFxuICAgICAgLy8gZG9udCBpbCBlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUuXG4gICAgICBmaWxlbmFtZTogXCJBTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJtYW5kYXRcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkFjdGV1cnMsIG1hbmRhdHMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzUwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhZ2VuZGFzOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQWdlbmRhX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3ZwL3JldW5pb25zL0FnZW5kYS5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQWdlbmRhX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9hbWVuZGVtZW50c19kaXZfbGVnaXMvQW1lbmRlbWVudHMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvYW1lbmRlbWVudHNfbGVnaXMvQW1lbmRlbWVudHNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hJVi5qc29uXCIsXG4gICAgLy8gICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgLy8gICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAvLyAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6XG4gICAgLy8gICAgIFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvYW1lbmRlbWVudHNfbGVnaXNfWElWL0FtZW5kZW1lbnRzX1hJVi5qc29uLnppcFwiLFxuICAgIC8vIH0sXG4gIF0sXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBzY3J1dGluczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvbG9pL3NjcnV0aW5zL1NjcnV0aW5zLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHF1ZXN0aW9uczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19lY3JpdGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgw6ljcml0ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfZWNyaXRlcy9RdWVzdGlvbnNfZWNyaXRlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX2dvdXZlcm5lbWVudF9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIGF1IGdvdXZlcm5lbWVudCBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19nb3V2ZXJuZW1lbnQvUXVlc3Rpb25zX2dvdXZlcm5lbWVudC5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX29yYWxlc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIG9yYWxlcyBzYW5zIGTDqWJhdHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQvUXVlc3Rpb25zX29yYWxlc19zYW5zX2RlYmF0Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgY29tcHRlc1JlbmR1c1NlYW5jZXM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJDb21wdGVzX1JlbmR1c19TZWFuY2VzX1hWSS54bWxcIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcInhtbFwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkNvbXB0ZXMgcmVuZHVzIGRlcyBzw6lhbmNlcyBwdWJsaXF1ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwczovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi92cC9zeWNlcm9uYnJ1dC9zeXNlcm9uLnhtbC56aXBcIixcbiAgICB9LFxuICBdLFxufVxuXG5jb25zdCBkaXJlY3Rvcnkyc2NoZW1hOiBhbnkgPSB7XG4gIFwiLipBZ2VuZGFfLipcIjogXCJhZ2VuZGFcIixcbiAgXCIuKlNjcnV0aW5zXy4qXCI6IFwic2NydXRpblwiLFxuICBcIi4qUXVlc3Rpb25zXy4qXCI6IFwicXVlc3Rpb25cIixcbiAgXCIuKkFtZW5kZW1lbnRzXy4qXCI6IFwiYW1lbmRlbWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9jdW1lbnRzXCI6IFwiZG9jdW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2Rvc3NpZXJzXCI6IFwiZG9zc2llclwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvb3JnYW5lc1wiOiBcIm9yZ2FuZVwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvYWN0ZXVyc1wiOiBcImFjdGV1clwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL29yZ2FuZXNcIjpcbiAgICBcIm9yZ2FuZVwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL2FjdGV1cnNcIjpcbiAgICBcImFjdGV1clwiLFxuICBcIi4qQ29tcHRlc19SZW5kdXNfU2VhbmNlc18uKlwiOiBcImRlYmF0XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0cygpOiBhbnkge1xuICByZXR1cm4gW1xuICAgIFwiQWdlbmRhX1hJVlwiLFxuICAgIFwiQWdlbmRhX1hWXCIsXG4gICAgXCJBZ2VuZGFfWFZJXCIsXG4gICAgXCJTY3J1dGluc19YSVZcIixcbiAgICBcIlNjcnV0aW5zX1hWXCIsXG4gICAgXCJTY3J1dGluc19YVklcIixcbiAgICBcIlF1ZXN0aW9uc19FY3JpdGVzX1hWSVwiLFxuICAgIFwiUXVlc3Rpb25zX0dvdXZlcm5lbWVudF9YVklcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hJVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hWSVwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVlwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFZJXCIsXG4gICAgXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIsXG4gICAgXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiLFxuICAgIFwiQ29tcHRlc19SZW5kdXNfU2VhbmNlc19YVklcIixcbiAgXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWREYXRhc2V0KGRpcjogYW55KTogYW55IHtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGdldERhdGFzZXRzKCkpIHtcbiAgICBpZiAoZGlyLmluY2x1ZGVzKGRhdGFzZXQpKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NoZW1hcygpOiBhbnkge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkaXJlY3Rvcnkyc2NoZW1hKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0YXNldERpcmVjdG9yeVNjaGVtYShkYXRhc2V0OiBzdHJpbmcpOiBhbnkge1xuICBsZXQgZGlyZWN0b3JpZXM6IGFueVxuICBpZiAoZGF0YXNldC5pbmNsdWRlcyhcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1wiKSkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L2RvY3VtZW50c2AsIGAke2RhdGFzZXR9L2Rvc3NpZXJzYF1cbiAgfSBlbHNlIGlmIChcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIikgfHxcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICApIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9vcmdhbmVzYCwgYCR7ZGF0YXNldH0vYWN0ZXVyc2BdXG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbZGF0YXNldF1cbiAgfVxuXG4gIGxldCByZXN1bHRzID0gW11cbiAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgZGlyZWN0b3JpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHJlIG9mIE9iamVjdC5rZXlzKGRpcmVjdG9yeTJzY2hlbWEpKSB7XG4gICAgICBpZiAobmV3IFJlZ0V4cChyZSkuZXhlYyhkaXJlY3RvcnkpKVxuICAgICAgICByZXN1bHRzLnB1c2goW2Ake2RpcmVjdG9yeX0vKiovKi5qc29uYCwgZGlyZWN0b3J5MnNjaGVtYVtyZV1dKVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgcmUgPSBcIl4uKi8oLiopX25ldHRveWUvKC4qKVwiXG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChyZSkuZXhlYyhmaWxlbmFtZSlcbiAgaWYgKG1hdGNoID09IG51bGwpIHJldHVybiBudWxsXG4gIGxldCBbZGF0YXNldCwgZmlsZV0gPSBbbWF0Y2hbMV0sIG1hdGNoWzJdXVxuICBpZiAoZGF0YXNldCA9PSBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgICBkYXRhc2V0ID0gXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiXG4gIHJldHVybiBbZGF0YXNldCwgZmlsZV1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZVcHN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICBjb25zdCBzdW0gPSBjcmVhdGVIYXNoKFwic2hhMVwiKS51cGRhdGUoZmlsZSkuZGlnZXN0KFwiaGV4XCIpLnRvU3RyaW5nKClcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vY29tcGFyZS91cHN0cmVhbS4uLm1hc3RlciMke3N1bX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFzdGVyVXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL3RyZWUvbWFzdGVyLyR7ZmlsZX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlMZWdpc2xhdHVyZShcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogYW55LFxuKTogRGF0YXNldHMge1xuICAvLyBXaGVuIGEgZ2l2ZW4gbGVnaXNsYXR1cmUgaXMgMCwgaXQgaXMgdGhlIHNhbWUgYXMgZ2l2aW5nIG5vIGxlZ2lzbGF0dXJlOlxuICAvLyBJdCBtZWFucyBcImV2ZXJ5IGxlZ2lzbGF0dXJlc1wiLlxuICBpZiAobGVnaXNsYXR1cmUgIT09IDAgJiYgbGVnaXNsYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhc2V0cykpIHtcbiAgICAgIGRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgZGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsIHx8XG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IGRhdGFzZXQubGVnaXNsYXR1cmUsXG4gICAgICApXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhc2V0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZERhdGFzZXRzKGNhdGVnb3JpZXM6IGFueSk6IEVuYWJsZWREYXRhc2V0cyB7XG4gIGNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG5cbiAgcmV0dXJuIGNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQWtELFNBQUFFLHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxlQUFBQyxDQUFBLEVBQUFILENBQUEsV0FBQUksZUFBQSxDQUFBRCxDQUFBLEtBQUFFLHFCQUFBLENBQUFGLENBQUEsRUFBQUgsQ0FBQSxLQUFBTSwyQkFBQSxDQUFBSCxDQUFBLEVBQUFILENBQUEsS0FBQU8sZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUgsc0JBQUFGLENBQUEsRUFBQU0sQ0FBQSxRQUFBQyxDQUFBLFdBQUFQLENBQUEsZ0NBQUFRLE1BQUEsSUFBQVIsQ0FBQSxDQUFBUSxNQUFBLENBQUFDLFFBQUEsS0FBQVQsQ0FBQSw0QkFBQU8sQ0FBQSxRQUFBVixDQUFBLEVBQUFhLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsT0FBQUMsQ0FBQSxPQUFBQyxDQUFBLGlCQUFBSixDQUFBLElBQUFKLENBQUEsR0FBQUEsQ0FBQSxDQUFBUyxJQUFBLENBQUFoQixDQUFBLEdBQUFpQixJQUFBLFFBQUFYLENBQUEsUUFBQVksTUFBQSxDQUFBWCxDQUFBLE1BQUFBLENBQUEsVUFBQU8sQ0FB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
|