@tricoteuses/assemblee 1.0.7 → 1.1.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/lib/api.js +3 -9
- package/lib/api.mjs +4 -5
- package/lib/bugs/acteur-00010/plugin.test.js +3 -50
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +2 -57
- package/lib/bugs/acteur-00010.mjs +1 -6
- package/lib/bugs/agenda-00002/plugin.test.js +3 -53
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
- package/lib/bugs/agenda-00002.js +3 -148
- package/lib/bugs/agenda-00002.mjs +1 -28
- package/lib/bugs/agenda-00008/plugin.test.js +3 -52
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -61
- package/lib/bugs/agenda-00008.mjs +1 -5
- package/lib/bugs/agenda-00011/plugin.test.js +5 -99
- package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
- package/lib/bugs/agenda-00011.js +4 -105
- package/lib/bugs/agenda-00011.mjs +3 -29
- package/lib/bugs.js +3 -164
- package/lib/bugs.mjs +1 -26
- package/lib/cleaners/actes_legislatifs.js +11 -115
- package/lib/cleaners/actes_legislatifs.mjs +7 -82
- package/lib/cleaners/acteurs.js +12 -92
- package/lib/cleaners/acteurs.mjs +7 -38
- package/lib/cleaners/amendements.js +10 -103
- package/lib/cleaners/amendements.mjs +4 -58
- package/lib/cleaners/documents.js +5 -67
- package/lib/cleaners/documents.mjs +1 -37
- package/lib/cleaners/dossiers_legislatifs.js +5 -61
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
- package/lib/cleaners/index.js +1 -9
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -33
- package/lib/cleaners/organes.mjs +1 -17
- package/lib/cleaners/reunions.js +4 -119
- package/lib/cleaners/reunions.mjs +1 -64
- package/lib/cleaners/scrutins.js +10 -102
- package/lib/cleaners/scrutins.mjs +1 -48
- package/lib/cleaners/xml.js +8 -42
- package/lib/cleaners/xml.mjs +6 -8
- package/lib/datasets.js +14 -113
- package/lib/datasets.mjs +6 -46
- package/lib/dates.js +7 -37
- package/lib/dates.mjs +9 -14
- package/lib/dossiers_legislatifs.js +6 -68
- package/lib/dossiers_legislatifs.mjs +5 -36
- package/lib/file_systems.js +56 -139
- package/lib/file_systems.mjs +1 -9
- package/lib/git.js +4 -53
- package/lib/git.mjs +1 -12
- package/lib/index.js +1 -15
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +23 -146
- package/lib/inserters.mjs +6 -87
- package/lib/loaders.js +44 -316
- package/lib/loaders.mjs +12 -135
- package/lib/organes.js +1 -7
- package/lib/organes.mjs +1 -4
- package/lib/parsers/documents.js +22 -151
- package/lib/parsers/documents.mjs +19 -81
- package/lib/parsers/index.js +1 -4
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +302 -527
- package/lib/parsers/recherche_amendements.mjs +8 -31
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
- package/lib/raw_types/acteurs_et_organes.js +5 -124
- package/lib/raw_types/acteurs_et_organes.mjs +5 -105
- package/lib/raw_types/agendas.js +6 -89
- package/lib/raw_types/agendas.mjs +9 -65
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +10 -90
- package/lib/raw_types/amendements.mjs +11 -69
- package/lib/raw_types/dossiers_legislatifs.js +6 -96
- package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
- package/lib/raw_types/scrutins.js +6 -81
- package/lib/raw_types/scrutins.mjs +9 -57
- package/lib/scripts/bugs_helper.js +2 -181
- package/lib/scripts/bugs_helper.mjs +2 -39
- package/lib/scripts/clean_data.js +27 -143
- package/lib/scripts/clean_data.mjs +15 -34
- package/lib/scripts/clean_reorganized_data.js +76 -240
- package/lib/scripts/clean_reorganized_data.mjs +36 -99
- package/lib/scripts/diff_amendements.js +19 -79
- package/lib/scripts/diff_amendements.mjs +17 -35
- package/lib/scripts/document_dossiers_legislatifs.js +17 -142
- package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
- package/lib/scripts/get_today_reunions.js +4 -22
- package/lib/scripts/get_today_reunions.mjs +1 -7
- package/lib/scripts/merge_scrutins.js +3 -47
- package/lib/scripts/merge_scrutins.mjs +1 -9
- package/lib/scripts/parse_textes_lois.js +15 -44
- package/lib/scripts/parse_textes_lois.mjs +18 -19
- package/lib/scripts/raw_types_from_amendements.js +3 -95
- package/lib/scripts/raw_types_from_amendements.mjs +1 -16
- package/lib/scripts/reorganize_data.js +74 -294
- package/lib/scripts/reorganize_data.mjs +22 -133
- package/lib/scripts/retrieve_deputes_photos.js +6 -119
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
- package/lib/scripts/retrieve_documents.js +4 -192
- package/lib/scripts/retrieve_documents.mjs +2 -50
- package/lib/scripts/retrieve_open_data.js +44 -116
- package/lib/scripts/retrieve_open_data.mjs +14 -19
- package/lib/scripts/retrieve_pending_amendments.js +4 -98
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
- package/lib/scripts/retrieve_senateurs_photos.js +18 -114
- package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
- package/lib/scripts/retrieve_textes_lois.js +3 -122
- package/lib/scripts/retrieve_textes_lois.mjs +3 -21
- package/lib/scripts/test_load.js +2 -10
- package/lib/scripts/test_load.mjs +2 -1
- package/lib/scripts/test_load_big_files.js +2 -10
- package/lib/scripts/test_load_big_files.mjs +2 -1
- package/lib/scripts/validate_json.js +4 -119
- package/lib/scripts/validate_json.mjs +2 -36
- package/lib/shared_types/codes_actes.js +1 -24
- package/lib/shared_types/codes_actes.mjs +3 -10
- package/lib/strings.js +1 -5
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -84
- package/lib/types/acteurs_et_organes.mjs +10 -63
- package/lib/types/agendas.js +8 -90
- package/lib/types/agendas.mjs +11 -66
- package/lib/types/amendements.d.ts +2 -0
- package/lib/types/amendements.js +12 -92
- package/lib/types/amendements.mjs +15 -70
- package/lib/types/dossiers_legislatifs.js +8 -96
- package/lib/types/dossiers_legislatifs.mjs +10 -72
- package/lib/types/legislatures.js +1 -3
- package/lib/types/legislatures.mjs +1 -2
- package/lib/types/scrutins.js +8 -82
- package/lib/types/scrutins.mjs +11 -58
- package/lib/urls.js +3 -27
- package/lib/urls.mjs +3 -21
- package/package.json +1 -1
package/lib/inserters.js
CHANGED
|
@@ -1,31 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.array.slice.js");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.object.to-string.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.function.name.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.array.from.js");
|
|
10
|
-
|
|
11
7
|
require("core-js/modules/es.string.iterator.js");
|
|
12
|
-
|
|
13
8
|
require("core-js/modules/es.regexp.exec.js");
|
|
14
|
-
|
|
15
9
|
require("core-js/modules/es.symbol.js");
|
|
16
|
-
|
|
17
10
|
require("core-js/modules/es.symbol.description.js");
|
|
18
|
-
|
|
19
11
|
require("core-js/modules/es.symbol.iterator.js");
|
|
20
|
-
|
|
21
12
|
require("core-js/modules/es.array.iterator.js");
|
|
22
|
-
|
|
23
13
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
24
|
-
|
|
25
14
|
require("core-js/modules/es.array.is-array.js");
|
|
26
|
-
|
|
27
15
|
require("core-js/modules/es.object.define-property.js");
|
|
28
|
-
|
|
29
16
|
Object.defineProperty(exports, "__esModule", {
|
|
30
17
|
value: true
|
|
31
18
|
});
|
|
@@ -36,53 +23,40 @@ exports.insertDossierReferences = insertDossierReferences;
|
|
|
36
23
|
exports.insertOrganeReferences = insertOrganeReferences;
|
|
37
24
|
exports.insertReunionReferences = insertReunionReferences;
|
|
38
25
|
exports.insertScrutinReferences = insertScrutinReferences;
|
|
39
|
-
|
|
40
26
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
41
|
-
|
|
42
27
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
43
|
-
|
|
44
28
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
45
|
-
|
|
46
29
|
function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
47
30
|
if (!visitedUids.has(acte.uid)) {
|
|
48
31
|
visitedUids.add(acte.uid);
|
|
49
|
-
|
|
50
32
|
if (data.documentByUid !== undefined && acte.depotInitialLectureDefinitiveRef !== undefined) {
|
|
51
33
|
var document = data.documentByUid[acte.depotInitialLectureDefinitiveRef];
|
|
52
|
-
|
|
53
34
|
if (document !== undefined) {
|
|
54
35
|
acte.depotInitialLectureDefinitive = document;
|
|
55
36
|
insertDocumentReferences(document, data, visitedUids);
|
|
56
37
|
}
|
|
57
38
|
}
|
|
58
|
-
|
|
59
39
|
if (data.organeByUid !== undefined && acte.organeRef !== undefined) {
|
|
60
40
|
var organe = data.organeByUid[acte.organeRef];
|
|
61
|
-
|
|
62
41
|
if (organe !== undefined) {
|
|
63
42
|
acte.organe = organe;
|
|
64
43
|
insertOrganeReferences(organe, data, visitedUids);
|
|
65
44
|
}
|
|
66
45
|
}
|
|
67
|
-
|
|
68
46
|
if (data.organeByUid !== undefined && acte.provenanceRef !== undefined) {
|
|
69
47
|
var _organe = data.organeByUid[acte.provenanceRef];
|
|
70
|
-
|
|
71
48
|
if (_organe !== undefined) {
|
|
72
49
|
acte.provenance = _organe;
|
|
73
50
|
insertOrganeReferences(_organe, data, visitedUids);
|
|
74
51
|
}
|
|
75
52
|
}
|
|
76
|
-
|
|
77
53
|
if (data.acteurByUid !== undefined && acte.rapporteurs !== undefined) {
|
|
78
54
|
var _iterator = _createForOfIteratorHelper(acte.rapporteurs),
|
|
79
|
-
|
|
80
|
-
|
|
55
|
+
_step;
|
|
81
56
|
try {
|
|
82
57
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
83
58
|
var rapporteur = _step.value;
|
|
84
59
|
var acteur = data.acteurByUid[rapporteur.acteurRef];
|
|
85
|
-
|
|
86
60
|
if (acteur !== undefined) {
|
|
87
61
|
rapporteur.acteur = acteur;
|
|
88
62
|
insertActeurReferences(acteur, data, visitedUids);
|
|
@@ -94,25 +68,19 @@ function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
|
94
68
|
_iterator.f();
|
|
95
69
|
}
|
|
96
70
|
}
|
|
97
|
-
|
|
98
71
|
if (data.reunionByUid !== undefined && acte.reunionRef !== undefined) {
|
|
99
72
|
var reunion = data.reunionByUid[acte.reunionRef];
|
|
100
|
-
|
|
101
73
|
if (reunion !== undefined) {
|
|
102
74
|
acte.reunion = reunion;
|
|
103
75
|
insertReunionReferences(reunion, data, visitedUids);
|
|
104
|
-
|
|
105
76
|
if (acte.odjRef !== undefined) {
|
|
106
77
|
var odj = reunion.odj;
|
|
107
|
-
|
|
108
78
|
if (odj !== undefined && odj.pointsOdj !== undefined) {
|
|
109
79
|
var _iterator2 = _createForOfIteratorHelper(odj.pointsOdj),
|
|
110
|
-
|
|
111
|
-
|
|
80
|
+
_step2;
|
|
112
81
|
try {
|
|
113
82
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
114
83
|
var pointOdj = _step2.value;
|
|
115
|
-
|
|
116
84
|
if (pointOdj.uid === acte.odjRef) {
|
|
117
85
|
acte.odj = pointOdj;
|
|
118
86
|
break;
|
|
@@ -127,34 +95,27 @@ function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
|
127
95
|
}
|
|
128
96
|
}
|
|
129
97
|
}
|
|
130
|
-
|
|
131
98
|
if (data.documentByUid !== undefined && acte.texteAdopteRef !== undefined) {
|
|
132
99
|
var _document = data.documentByUid[acte.texteAdopteRef];
|
|
133
|
-
|
|
134
100
|
if (_document !== undefined) {
|
|
135
101
|
acte.texteAdopte = _document;
|
|
136
102
|
insertDocumentReferences(_document, data, visitedUids);
|
|
137
103
|
}
|
|
138
104
|
}
|
|
139
|
-
|
|
140
105
|
if (data.documentByUid !== undefined && acte.texteAssocieRef !== undefined) {
|
|
141
106
|
var _document2 = data.documentByUid[acte.texteAssocieRef];
|
|
142
|
-
|
|
143
107
|
if (_document2 !== undefined) {
|
|
144
108
|
acte.texteAssocie = _document2;
|
|
145
109
|
insertDocumentReferences(_document2, data, visitedUids);
|
|
146
110
|
}
|
|
147
111
|
}
|
|
148
|
-
|
|
149
112
|
if (data.documentByUid !== undefined && acte.textesAssocies !== undefined) {
|
|
150
113
|
var _iterator3 = _createForOfIteratorHelper(acte.textesAssocies),
|
|
151
|
-
|
|
152
|
-
|
|
114
|
+
_step3;
|
|
153
115
|
try {
|
|
154
116
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
155
117
|
var texteAssocie = _step3.value;
|
|
156
118
|
var _document3 = data.documentByUid[texteAssocie.texteAssocieRef];
|
|
157
|
-
|
|
158
119
|
if (_document3 !== undefined) {
|
|
159
120
|
texteAssocie.texteAssocie = _document3;
|
|
160
121
|
insertDocumentReferences(_document3, data, visitedUids);
|
|
@@ -166,18 +127,14 @@ function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
|
166
127
|
_iterator3.f();
|
|
167
128
|
}
|
|
168
129
|
}
|
|
169
|
-
|
|
170
130
|
if (data.scrutinByUid !== undefined && acte.voteRefs !== undefined) {
|
|
171
131
|
var scrutins = [];
|
|
172
|
-
|
|
173
132
|
var _iterator4 = _createForOfIteratorHelper(acte.voteRefs),
|
|
174
|
-
|
|
175
|
-
|
|
133
|
+
_step4;
|
|
176
134
|
try {
|
|
177
135
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
178
136
|
var voteRef = _step4.value;
|
|
179
137
|
var scrutin = data.scrutinByUid[voteRef];
|
|
180
|
-
|
|
181
138
|
if (scrutin !== undefined) {
|
|
182
139
|
scrutins.push(scrutin);
|
|
183
140
|
insertScrutinReferences(scrutin, data, visitedUids);
|
|
@@ -188,13 +145,10 @@ function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
|
188
145
|
} finally {
|
|
189
146
|
_iterator4.f();
|
|
190
147
|
}
|
|
191
|
-
|
|
192
148
|
acte.votes = scrutins;
|
|
193
149
|
}
|
|
194
|
-
|
|
195
150
|
var _iterator5 = _createForOfIteratorHelper(acte.actesLegislatifs || []),
|
|
196
|
-
|
|
197
|
-
|
|
151
|
+
_step5;
|
|
198
152
|
try {
|
|
199
153
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
200
154
|
var childActe = _step5.value;
|
|
@@ -206,31 +160,24 @@ function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
|
206
160
|
_iterator5.f();
|
|
207
161
|
}
|
|
208
162
|
}
|
|
209
|
-
|
|
210
163
|
return acte;
|
|
211
164
|
}
|
|
212
|
-
|
|
213
165
|
function insertActeurReferences(acteur, data, visitedUids) {
|
|
214
166
|
if (!visitedUids.has(acteur.uid)) {
|
|
215
167
|
visitedUids.add(acteur.uid);
|
|
216
|
-
|
|
217
168
|
if (data.organeByUid !== undefined) {
|
|
218
169
|
var _iterator6 = _createForOfIteratorHelper(acteur.mandats || []),
|
|
219
|
-
|
|
220
|
-
|
|
170
|
+
_step6;
|
|
221
171
|
try {
|
|
222
172
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
223
173
|
var mandat = _step6.value;
|
|
224
174
|
var organes = [];
|
|
225
|
-
|
|
226
175
|
var _iterator7 = _createForOfIteratorHelper(mandat.organesRefs),
|
|
227
|
-
|
|
228
|
-
|
|
176
|
+
_step7;
|
|
229
177
|
try {
|
|
230
178
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
231
179
|
var organeRef = _step7.value;
|
|
232
180
|
var organe = data.organeByUid[organeRef];
|
|
233
|
-
|
|
234
181
|
if (organe !== undefined) {
|
|
235
182
|
organes.push(organe);
|
|
236
183
|
insertOrganeReferences(organe, data, visitedUids);
|
|
@@ -241,7 +188,6 @@ function insertActeurReferences(acteur, data, visitedUids) {
|
|
|
241
188
|
} finally {
|
|
242
189
|
_iterator7.f();
|
|
243
190
|
}
|
|
244
|
-
|
|
245
191
|
mandat.organes = organes;
|
|
246
192
|
}
|
|
247
193
|
} catch (err) {
|
|
@@ -251,66 +197,51 @@ function insertActeurReferences(acteur, data, visitedUids) {
|
|
|
251
197
|
}
|
|
252
198
|
}
|
|
253
199
|
}
|
|
254
|
-
|
|
255
200
|
return acteur;
|
|
256
201
|
}
|
|
257
|
-
|
|
258
202
|
function insertAmendementReferences(amendement, data, visitedUids) {
|
|
259
203
|
if (!visitedUids.has(amendement.uid)) {
|
|
260
204
|
visitedUids.add(amendement.uid);
|
|
261
205
|
var signataires = amendement.signataires;
|
|
262
206
|
var auteur = signataires.auteur;
|
|
263
|
-
|
|
264
207
|
if (data.acteurByUid !== undefined && auteur.acteurRef !== undefined) {
|
|
265
208
|
var acteur = data.acteurByUid[auteur.acteurRef];
|
|
266
|
-
|
|
267
209
|
if (acteur !== undefined) {
|
|
268
210
|
auteur.acteur = acteur;
|
|
269
211
|
insertActeurReferences(acteur, data, visitedUids);
|
|
270
212
|
}
|
|
271
213
|
}
|
|
272
|
-
|
|
273
214
|
if (data.organeByUid !== undefined && auteur.auteurRapporteurOrganeRef !== undefined) {
|
|
274
215
|
var auteurRapporteurOrgane = data.organeByUid[auteur.auteurRapporteurOrganeRef];
|
|
275
|
-
|
|
276
216
|
if (auteurRapporteurOrgane !== undefined) {
|
|
277
217
|
auteur.auteurRapporteurOrgane = auteurRapporteurOrgane;
|
|
278
218
|
insertOrganeReferences(auteurRapporteurOrgane, data, visitedUids);
|
|
279
219
|
}
|
|
280
220
|
}
|
|
281
|
-
|
|
282
221
|
if (data.organeByUid !== undefined && auteur.gouvernementRef !== undefined) {
|
|
283
222
|
var gouvernement = data.organeByUid[auteur.gouvernementRef];
|
|
284
|
-
|
|
285
223
|
if (gouvernement !== undefined) {
|
|
286
224
|
auteur.gouvernement = gouvernement;
|
|
287
225
|
insertOrganeReferences(gouvernement, data, visitedUids);
|
|
288
226
|
}
|
|
289
227
|
}
|
|
290
|
-
|
|
291
228
|
if (data.organeByUid !== undefined && auteur.groupePolitiqueRef !== undefined) {
|
|
292
229
|
var organe = data.organeByUid[auteur.groupePolitiqueRef];
|
|
293
|
-
|
|
294
230
|
if (organe !== undefined) {
|
|
295
231
|
auteur.groupePolitique = organe;
|
|
296
232
|
insertOrganeReferences(organe, data, visitedUids);
|
|
297
233
|
}
|
|
298
234
|
}
|
|
299
|
-
|
|
300
235
|
if (data.acteurByUid !== undefined) {
|
|
301
236
|
var cosignatairesRefs = signataires.cosignatairesRefs;
|
|
302
|
-
|
|
303
237
|
if (cosignatairesRefs !== undefined) {
|
|
304
238
|
var cosignataires = [];
|
|
305
|
-
|
|
306
239
|
var _iterator8 = _createForOfIteratorHelper(signataires.cosignatairesRefs || []),
|
|
307
|
-
|
|
308
|
-
|
|
240
|
+
_step8;
|
|
309
241
|
try {
|
|
310
242
|
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
311
243
|
var cosignataireRef = _step8.value;
|
|
312
244
|
var cosignataire = data.acteurByUid[cosignataireRef];
|
|
313
|
-
|
|
314
245
|
if (cosignataire !== undefined) {
|
|
315
246
|
cosignataires.push(cosignataire);
|
|
316
247
|
insertActeurReferences(cosignataire, data, visitedUids);
|
|
@@ -321,36 +252,28 @@ function insertAmendementReferences(amendement, data, visitedUids) {
|
|
|
321
252
|
} finally {
|
|
322
253
|
_iterator8.f();
|
|
323
254
|
}
|
|
324
|
-
|
|
325
255
|
signataires.cosignataires = cosignataires;
|
|
326
256
|
}
|
|
327
257
|
}
|
|
328
258
|
}
|
|
329
|
-
|
|
330
259
|
return amendement;
|
|
331
260
|
}
|
|
332
|
-
|
|
333
261
|
function insertDivisionReferences(division, data, visitedUids) {
|
|
334
262
|
var _iterator9 = _createForOfIteratorHelper(division.auteurs),
|
|
335
|
-
|
|
336
|
-
|
|
263
|
+
_step9;
|
|
337
264
|
try {
|
|
338
265
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
339
266
|
var auteur = _step9.value;
|
|
340
267
|
var acteurSummary = auteur.acteur;
|
|
341
|
-
|
|
342
268
|
if (data.acteurByUid !== undefined && acteurSummary !== undefined) {
|
|
343
269
|
var acteur = data.acteurByUid[acteurSummary.acteurRef];
|
|
344
|
-
|
|
345
270
|
if (acteur !== undefined) {
|
|
346
271
|
acteurSummary.acteur = acteur;
|
|
347
272
|
insertActeurReferences(acteur, data, visitedUids);
|
|
348
273
|
}
|
|
349
274
|
}
|
|
350
|
-
|
|
351
275
|
if (data.organeByUid !== undefined && auteur.organeRef !== undefined) {
|
|
352
276
|
var organe = data.organeByUid[auteur.organeRef];
|
|
353
|
-
|
|
354
277
|
if (organe !== undefined) {
|
|
355
278
|
auteur.organe = organe;
|
|
356
279
|
insertOrganeReferences(organe, data, visitedUids);
|
|
@@ -362,19 +285,15 @@ function insertDivisionReferences(division, data, visitedUids) {
|
|
|
362
285
|
} finally {
|
|
363
286
|
_iterator9.f();
|
|
364
287
|
}
|
|
365
|
-
|
|
366
288
|
if (data.dossierByUid !== undefined) {
|
|
367
289
|
var dossier = data.dossierByUid[division.dossierRef];
|
|
368
|
-
|
|
369
290
|
if (dossier !== undefined) {
|
|
370
291
|
division.dossier = dossier;
|
|
371
292
|
insertDossierReferences(dossier, data, visitedUids);
|
|
372
293
|
}
|
|
373
294
|
}
|
|
374
|
-
|
|
375
295
|
var _iterator10 = _createForOfIteratorHelper(division.divisions || []),
|
|
376
|
-
|
|
377
|
-
|
|
296
|
+
_step10;
|
|
378
297
|
try {
|
|
379
298
|
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
380
299
|
var childDivision = _step10.value;
|
|
@@ -385,34 +304,26 @@ function insertDivisionReferences(division, data, visitedUids) {
|
|
|
385
304
|
} finally {
|
|
386
305
|
_iterator10.f();
|
|
387
306
|
}
|
|
388
|
-
|
|
389
307
|
return division;
|
|
390
308
|
}
|
|
391
|
-
|
|
392
309
|
function insertDocumentReferences(document, data, visitedUids) {
|
|
393
310
|
if (!visitedUids.has(document.uid)) {
|
|
394
311
|
visitedUids.add(document.uid);
|
|
395
|
-
|
|
396
312
|
var _iterator11 = _createForOfIteratorHelper(document.auteurs),
|
|
397
|
-
|
|
398
|
-
|
|
313
|
+
_step11;
|
|
399
314
|
try {
|
|
400
315
|
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
401
316
|
var auteur = _step11.value;
|
|
402
317
|
var acteurSummary = auteur.acteur;
|
|
403
|
-
|
|
404
318
|
if (data.acteurByUid !== undefined && acteurSummary !== undefined) {
|
|
405
319
|
var acteur = data.acteurByUid[acteurSummary.acteurRef];
|
|
406
|
-
|
|
407
320
|
if (acteur !== undefined) {
|
|
408
321
|
acteurSummary.acteur = acteur;
|
|
409
322
|
insertActeurReferences(acteur, data, visitedUids);
|
|
410
323
|
}
|
|
411
324
|
}
|
|
412
|
-
|
|
413
325
|
if (data.organeByUid !== undefined && auteur.organeRef !== undefined) {
|
|
414
326
|
var organe = data.organeByUid[auteur.organeRef];
|
|
415
|
-
|
|
416
327
|
if (organe !== undefined) {
|
|
417
328
|
auteur.organe = organe;
|
|
418
329
|
insertOrganeReferences(organe, data, visitedUids);
|
|
@@ -424,19 +335,15 @@ function insertDocumentReferences(document, data, visitedUids) {
|
|
|
424
335
|
} finally {
|
|
425
336
|
_iterator11.f();
|
|
426
337
|
}
|
|
427
|
-
|
|
428
338
|
if (data.dossierByUid !== undefined) {
|
|
429
339
|
var dossier = data.dossierByUid[document.dossierRef];
|
|
430
|
-
|
|
431
340
|
if (dossier !== undefined) {
|
|
432
341
|
document.dossier = dossier;
|
|
433
342
|
insertDossierReferences(dossier, data, visitedUids);
|
|
434
343
|
}
|
|
435
344
|
}
|
|
436
|
-
|
|
437
345
|
var _iterator12 = _createForOfIteratorHelper(document.divisions || []),
|
|
438
|
-
|
|
439
|
-
|
|
346
|
+
_step12;
|
|
440
347
|
try {
|
|
441
348
|
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
442
349
|
var division = _step12.value;
|
|
@@ -448,19 +355,14 @@ function insertDocumentReferences(document, data, visitedUids) {
|
|
|
448
355
|
_iterator12.f();
|
|
449
356
|
}
|
|
450
357
|
}
|
|
451
|
-
|
|
452
358
|
return document;
|
|
453
359
|
}
|
|
454
|
-
|
|
455
360
|
function insertDossierReferences(dossier, data, visitedUids) {
|
|
456
361
|
if (!visitedUids.has(dossier.uid)) {
|
|
457
362
|
var _dossier$actesLegisla;
|
|
458
|
-
|
|
459
363
|
visitedUids.add(dossier.uid);
|
|
460
|
-
|
|
461
364
|
var _iterator13 = _createForOfIteratorHelper((_dossier$actesLegisla = dossier.actesLegislatifs) !== null && _dossier$actesLegisla !== void 0 ? _dossier$actesLegisla : []),
|
|
462
|
-
|
|
463
|
-
|
|
365
|
+
_step13;
|
|
464
366
|
try {
|
|
465
367
|
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
466
368
|
var acte = _step13.value;
|
|
@@ -471,32 +373,25 @@ function insertDossierReferences(dossier, data, visitedUids) {
|
|
|
471
373
|
} finally {
|
|
472
374
|
_iterator13.f();
|
|
473
375
|
}
|
|
474
|
-
|
|
475
376
|
var initiateur = dossier.initiateur;
|
|
476
|
-
|
|
477
377
|
if (initiateur !== undefined) {
|
|
478
378
|
if (data.acteurByUid !== undefined) {
|
|
479
379
|
var _iterator14 = _createForOfIteratorHelper(initiateur.acteurs || []),
|
|
480
|
-
|
|
481
|
-
|
|
380
|
+
_step14;
|
|
482
381
|
try {
|
|
483
382
|
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
484
383
|
var acteurSummary = _step14.value;
|
|
485
384
|
var acteur = data.acteurByUid[acteurSummary.acteurRef];
|
|
486
|
-
|
|
487
385
|
if (acteur !== undefined) {
|
|
488
386
|
acteurSummary.acteur = acteur;
|
|
489
387
|
insertActeurReferences(acteur, data, visitedUids);
|
|
490
388
|
}
|
|
491
|
-
|
|
492
389
|
if (acteur !== undefined && acteurSummary.mandatRef !== undefined) {
|
|
493
390
|
var _iterator15 = _createForOfIteratorHelper(acteur.mandats || []),
|
|
494
|
-
|
|
495
|
-
|
|
391
|
+
_step15;
|
|
496
392
|
try {
|
|
497
393
|
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
498
394
|
var mandat = _step15.value;
|
|
499
|
-
|
|
500
395
|
if (mandat.uid === acteurSummary.mandatRef) {
|
|
501
396
|
acteurSummary.mandat = mandat;
|
|
502
397
|
break;
|
|
@@ -515,10 +410,8 @@ function insertDossierReferences(dossier, data, visitedUids) {
|
|
|
515
410
|
_iterator14.f();
|
|
516
411
|
}
|
|
517
412
|
}
|
|
518
|
-
|
|
519
413
|
if (data.organeByUid !== undefined && initiateur.organeRef !== undefined) {
|
|
520
414
|
var organe = data.organeByUid[initiateur.organeRef];
|
|
521
|
-
|
|
522
415
|
if (organe !== undefined) {
|
|
523
416
|
initiateur.organe = organe;
|
|
524
417
|
insertOrganeReferences(organe, data, visitedUids);
|
|
@@ -526,43 +419,36 @@ function insertDossierReferences(dossier, data, visitedUids) {
|
|
|
526
419
|
}
|
|
527
420
|
}
|
|
528
421
|
}
|
|
529
|
-
|
|
530
422
|
return dossier;
|
|
531
423
|
}
|
|
532
|
-
|
|
533
424
|
function insertOrganeReferences(organe, data, visitedUids) {
|
|
534
425
|
if (!visitedUids.has(organe.uid)) {
|
|
535
426
|
visitedUids.add(organe.uid);
|
|
536
|
-
|
|
537
427
|
if (data.organeByUid !== undefined && organe.organeParentRef !== undefined) {
|
|
538
428
|
var organeParent = data.organeByUid[organe.organeParentRef];
|
|
539
|
-
|
|
540
429
|
if (organeParent !== undefined) {
|
|
541
430
|
organe.organeParent = organeParent;
|
|
542
431
|
insertOrganeReferences(organeParent, data, visitedUids);
|
|
543
432
|
}
|
|
544
|
-
}
|
|
433
|
+
}
|
|
545
434
|
|
|
435
|
+
// TODO
|
|
546
436
|
}
|
|
547
437
|
|
|
548
438
|
return organe;
|
|
549
439
|
}
|
|
550
|
-
|
|
551
440
|
function insertReunionReferences(reunion, data, visitedUids) {
|
|
552
441
|
if (!visitedUids.has(reunion.uid)) {
|
|
553
442
|
visitedUids.add(reunion.uid);
|
|
554
443
|
var demandeurs = reunion.demandeurs;
|
|
555
|
-
|
|
556
444
|
if (demandeurs !== undefined) {
|
|
557
445
|
if (data.acteurByUid !== undefined) {
|
|
558
446
|
var _iterator16 = _createForOfIteratorHelper(demandeurs.acteurs || []),
|
|
559
|
-
|
|
560
|
-
|
|
447
|
+
_step16;
|
|
561
448
|
try {
|
|
562
449
|
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
563
450
|
var acteurSummary = _step16.value;
|
|
564
451
|
var acteur = data.acteurByUid[acteurSummary.acteurRef];
|
|
565
|
-
|
|
566
452
|
if (acteur !== undefined) {
|
|
567
453
|
acteurSummary.acteur = acteur;
|
|
568
454
|
insertActeurReferences(acteur, data, visitedUids);
|
|
@@ -574,13 +460,10 @@ function insertReunionReferences(reunion, data, visitedUids) {
|
|
|
574
460
|
_iterator16.f();
|
|
575
461
|
}
|
|
576
462
|
}
|
|
577
|
-
|
|
578
463
|
if (data.organeByUid !== undefined) {
|
|
579
464
|
var organeSummary = demandeurs.organe;
|
|
580
|
-
|
|
581
465
|
if (organeSummary !== undefined) {
|
|
582
466
|
var organe = data.organeByUid[organeSummary.organeRef];
|
|
583
|
-
|
|
584
467
|
if (organe !== undefined) {
|
|
585
468
|
organeSummary.organe = organe;
|
|
586
469
|
insertOrganeReferences(organe, data, visitedUids);
|
|
@@ -588,28 +471,22 @@ function insertReunionReferences(reunion, data, visitedUids) {
|
|
|
588
471
|
}
|
|
589
472
|
}
|
|
590
473
|
}
|
|
591
|
-
|
|
592
474
|
if (data.organeByUid !== undefined && reunion.organeReuniRef !== undefined) {
|
|
593
475
|
var organeReuni = data.organeByUid[reunion.organeReuniRef];
|
|
594
|
-
|
|
595
476
|
if (organeReuni !== undefined) {
|
|
596
477
|
reunion.organeReuni = organeReuni;
|
|
597
478
|
insertOrganeReferences(organeReuni, data, visitedUids);
|
|
598
479
|
}
|
|
599
480
|
}
|
|
600
|
-
|
|
601
481
|
if (data.acteurByUid !== undefined) {
|
|
602
482
|
var participants = reunion.participants;
|
|
603
|
-
|
|
604
483
|
if (participants !== undefined) {
|
|
605
484
|
var _iterator17 = _createForOfIteratorHelper(participants.participantsInternes || []),
|
|
606
|
-
|
|
607
|
-
|
|
485
|
+
_step17;
|
|
608
486
|
try {
|
|
609
487
|
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
610
488
|
var participantInterne = _step17.value;
|
|
611
489
|
var _acteur = data.acteurByUid[participantInterne.acteurRef];
|
|
612
|
-
|
|
613
490
|
if (_acteur !== undefined) {
|
|
614
491
|
participantInterne.acteur = _acteur;
|
|
615
492
|
insertActeurReferences(_acteur, data, visitedUids);
|
|
@@ -623,15 +500,15 @@ function insertReunionReferences(reunion, data, visitedUids) {
|
|
|
623
500
|
}
|
|
624
501
|
}
|
|
625
502
|
}
|
|
626
|
-
|
|
627
503
|
return reunion;
|
|
628
504
|
}
|
|
629
|
-
|
|
630
505
|
function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
631
506
|
if (!visitedUids.has(scrutin.uid)) {
|
|
632
|
-
visitedUids.add(scrutin.uid);
|
|
507
|
+
visitedUids.add(scrutin.uid);
|
|
508
|
+
|
|
509
|
+
// TODO
|
|
633
510
|
}
|
|
634
511
|
|
|
635
512
|
return scrutin;
|
|
636
513
|
}
|
|
637
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY2hpbGRBY3RlIiwibWFuZGF0cyIsIm1hbmRhdCIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImRpdmlzaW9ucyIsImNoaWxkRGl2aXNpb24iLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwicGFydGljaXBhbnRJbnRlcm5lIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLFNBQVNBLDhCQUFULENBQ0VDLElBREYsRUFFRUMsSUFGRixFQUdFQyxXQUhGLEVBSUU7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQkgsSUFBSSxDQUFDSSxHQUFyQixDQUFMLEVBQWdDO0lBQzlCRixXQUFXLENBQUNHLEdBQVosQ0FBZ0JMLElBQUksQ0FBQ0ksR0FBckI7O0lBRUEsSUFDRUgsSUFBSSxDQUFDSyxhQUFMLEtBQXVCQyxTQUF2QixJQUNBUCxJQUFJLENBQUNRLGdDQUFMLEtBQTBDRCxTQUY1QyxFQUdFO01BQ0EsSUFBTUUsUUFBUSxHQUFHUixJQUFJLENBQUNLLGFBQUwsQ0FBbUJOLElBQUksQ0FBQ1EsZ0NBQXhCLENBQWpCOztNQUNBLElBQUlDLFFBQVEsS0FBS0YsU0FBakIsRUFBNEI7UUFDMUJQLElBQUksQ0FBQ1UsNkJBQUwsR0FBcUNELFFBQXJDO1FBQ0FFLHdCQUF3QixDQUFDRixRQUFELEVBQVdSLElBQVgsRUFBaUJDLFdBQWpCLENBQXhCO01BQ0Q7SUFDRjs7SUFDRCxJQUFJRCxJQUFJLENBQUNXLFdBQUwsS0FBcUJMLFNBQXJCLElBQWtDUCxJQUFJLENBQUNhLFNBQUwsS0FBbUJOLFNBQXpELEVBQW9FO01BQ2xFLElBQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFMLENBQWlCWixJQUFJLENBQUNhLFNBQXRCLENBQWY7O01BQ0EsSUFBSUMsTUFBTSxLQUFLUCxTQUFmLEVBQTBCO1FBQ3hCUCxJQUFJLENBQUNjLE1BQUwsR0FBY0EsTUFBZDtRQUNBQyxzQkFBc0IsQ0FBQ0QsTUFBRCxFQUFTYixJQUFULEVBQWVDLFdBQWYsQ0FBdEI7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
|
|
514
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY2hpbGRBY3RlIiwibWFuZGF0cyIsIm1hbmRhdCIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImRpdmlzaW9ucyIsImNoaWxkRGl2aXNpb24iLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwicGFydGljaXBhbnRJbnRlcm5lIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxTQUFTQSw4QkFBOEIsQ0FDckNDLElBQW9CLEVBQ3BCQyxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDSCxJQUFJLENBQUNJLEdBQUcsQ0FBQyxFQUFFO0lBQzlCRixXQUFXLENBQUNHLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDSSxHQUFHLENBQUM7SUFFekIsSUFDRUgsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFDaENQLElBQUksQ0FBQ1EsZ0NBQWdDLEtBQUtELFNBQVMsRUFDbkQ7TUFDQSxJQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNRLGdDQUFnQyxDQUFDO01BQzFFLElBQUlDLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNVLDZCQUE2QixHQUFHRCxRQUFRO1FBQzdDRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFBSVAsSUFBSSxDQUFDYSxTQUFTLEtBQUtOLFNBQVMsRUFBRTtNQUNsRSxJQUFNTyxNQUFNLEdBQUdiLElBQUksQ0FBQ1csV0FBVyxDQUFDWixJQUFJLENBQUNhLFNBQVMsQ0FBQztNQUMvQyxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtRQUN4QlAsSUFBSSxDQUFDYyxNQUFNLEdBQUdBLE1BQU07UUFDcEJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ25EO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJ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
|