tango-app-ui-analyse-trax 3.9.66 → 3.9.68
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/esm2022/lib/components/flags-new/flags-new.component.mjs +165 -17
- package/esm2022/lib/components/gallery/gallery.component.mjs +3 -3
- package/esm2022/lib/services/trax.service.mjs +14 -1
- package/fesm2022/tango-app-ui-analyse-trax.mjs +179 -18
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
- package/lib/components/add-checklist/add-checklist.component.d.ts +1 -1
- package/lib/components/flags-new/flags-new.component.d.ts +10 -0
- package/lib/services/trax.service.d.ts +3 -0
- package/package.json +1 -1
|
@@ -37,6 +37,27 @@ export class FlagsNewComponent {
|
|
|
37
37
|
dayjs = dayjs;
|
|
38
38
|
flagsTableApiState = new BehaviorSubject('initial');
|
|
39
39
|
flagsTableData = [];
|
|
40
|
+
// Full Mongo-only result set from flagTablesV2 (client paginates/sorts from this).
|
|
41
|
+
allFlagsTableData = [];
|
|
42
|
+
// Detection (slow Lambda) hydration is now a second, separate call per section.
|
|
43
|
+
// These sequence tokens drop stale detection responses when the user changes
|
|
44
|
+
// date / filter / search before the previous detection call returns.
|
|
45
|
+
flagsTableSeq = 0;
|
|
46
|
+
cardMetricsSeq = 0;
|
|
47
|
+
cardComparisonSeq = 0;
|
|
48
|
+
flagsDetectionLoading = false;
|
|
49
|
+
// Mirrors the flagTablesV2 backend sort: UI column labels -> data fields.
|
|
50
|
+
sortFieldMap = {
|
|
51
|
+
'Compliance': 'complianceRate',
|
|
52
|
+
'Checklist Name': 'checkListName',
|
|
53
|
+
'Coverage': 'coverage',
|
|
54
|
+
'Assigned Stores': 'assignedStores',
|
|
55
|
+
'Flagged Stores': 'flaggedStores',
|
|
56
|
+
'Question Flags': 'customQuestionFlagCount',
|
|
57
|
+
'Not Submitted Flags': 'customTimeFlagCount',
|
|
58
|
+
'Detection Flags': 'flagCount',
|
|
59
|
+
'Flags': 'flagCount',
|
|
60
|
+
};
|
|
40
61
|
cardMetricsApiState = new BehaviorSubject('initial');
|
|
41
62
|
cardMetricsData;
|
|
42
63
|
cardMetricsComparisonData;
|
|
@@ -112,6 +133,7 @@ export class FlagsNewComponent {
|
|
|
112
133
|
}
|
|
113
134
|
this.checklistCountByType();
|
|
114
135
|
this.getChecklistFlagMetrics();
|
|
136
|
+
this.getFlagsTable();
|
|
115
137
|
this.getChecklistFlagMetricsComparison();
|
|
116
138
|
}
|
|
117
139
|
});
|
|
@@ -132,6 +154,7 @@ export class FlagsNewComponent {
|
|
|
132
154
|
getChecklistFlagMetrics() {
|
|
133
155
|
this.flagsTableData = [];
|
|
134
156
|
this.cardMetricsApiState.next('loading');
|
|
157
|
+
const seq = ++this.cardMetricsSeq;
|
|
135
158
|
const data = {
|
|
136
159
|
"clientId": this.headerData?.client,
|
|
137
160
|
"fromDate": this.headerData?.date.startDate,
|
|
@@ -141,10 +164,13 @@ export class FlagsNewComponent {
|
|
|
141
164
|
};
|
|
142
165
|
this.traxService.overallFlagMetrics(data).pipe(takeUntil(this.destroy$)).subscribe({
|
|
143
166
|
next: (res) => {
|
|
167
|
+
if (seq !== this.cardMetricsSeq)
|
|
168
|
+
return;
|
|
144
169
|
this.cardMetricsApiState.next('loaded');
|
|
145
170
|
if (res?.data) {
|
|
146
171
|
this.cardMetricsData = res.data;
|
|
147
|
-
|
|
172
|
+
// Fetch the slow detection values separately and merge them in.
|
|
173
|
+
this.getChecklistFlagMetricsDetection(data, seq);
|
|
148
174
|
}
|
|
149
175
|
else {
|
|
150
176
|
this.cardMetricsData = null;
|
|
@@ -155,7 +181,34 @@ export class FlagsNewComponent {
|
|
|
155
181
|
}
|
|
156
182
|
});
|
|
157
183
|
}
|
|
184
|
+
// Detection-only card values (detectionFlag, runAIFlag, and the detection portion
|
|
185
|
+
// of totalFlag) fetched after the fast card metrics and merged into cardMetricsData.
|
|
186
|
+
getChecklistFlagMetricsDetection(baseData, seq) {
|
|
187
|
+
this.traxService.overallFlagMetricsDetection(baseData).pipe(takeUntil(this.destroy$)).subscribe({
|
|
188
|
+
next: (res) => {
|
|
189
|
+
// Drop stale responses and only merge when the base cards are present.
|
|
190
|
+
if (seq !== this.cardMetricsSeq)
|
|
191
|
+
return;
|
|
192
|
+
const detection = res?.data?.flagCards;
|
|
193
|
+
const cards = this.cardMetricsData?.flagCards;
|
|
194
|
+
if (!detection || !cards)
|
|
195
|
+
return;
|
|
196
|
+
if (detection.detectionFlag) {
|
|
197
|
+
cards.detectionFlag = detection.detectionFlag;
|
|
198
|
+
}
|
|
199
|
+
if (detection.runAIFlag) {
|
|
200
|
+
cards.runAIFlag = detection.runAIFlag;
|
|
201
|
+
}
|
|
202
|
+
cards.totalFlag = (cards.totalFlag || 0) + (detection.detectionTotalFlag || 0);
|
|
203
|
+
this.changeDetector.detectChanges();
|
|
204
|
+
},
|
|
205
|
+
error: (e) => {
|
|
206
|
+
console.log(e);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
158
210
|
getChecklistFlagMetricsComparison() {
|
|
211
|
+
const seq = ++this.cardComparisonSeq;
|
|
159
212
|
const data = {
|
|
160
213
|
"clientId": this.headerData?.client,
|
|
161
214
|
"fromDate": this.headerData?.date.startDate,
|
|
@@ -166,11 +219,15 @@ export class FlagsNewComponent {
|
|
|
166
219
|
};
|
|
167
220
|
this.traxService.overallFlagMetricsComparison(data).pipe(takeUntil(this.destroy$)).subscribe({
|
|
168
221
|
next: (res) => {
|
|
222
|
+
if (seq !== this.cardComparisonSeq)
|
|
223
|
+
return;
|
|
169
224
|
if (res?.data) {
|
|
170
225
|
this.cardMetricsComparisonData = res.data;
|
|
171
226
|
if (this.traxMonthlyComparisonData == '') {
|
|
172
227
|
this.traxMonthlyComparisonData = this.cardMetricsComparisonData?.flagComparisonCards.traxMonthlyComparison;
|
|
173
228
|
}
|
|
229
|
+
// Fetch the detection-inclusive comparisons separately and overwrite.
|
|
230
|
+
this.getChecklistFlagMetricsComparisonDetection(data, seq);
|
|
174
231
|
}
|
|
175
232
|
else {
|
|
176
233
|
this.cardMetricsComparisonData = null;
|
|
@@ -181,10 +238,40 @@ export class FlagsNewComponent {
|
|
|
181
238
|
}
|
|
182
239
|
});
|
|
183
240
|
}
|
|
241
|
+
// The total / detection / runAI comparisons depend on the slow Lambda. They are
|
|
242
|
+
// fetched after the fast (question/delay) comparisons and overwrite those keys.
|
|
243
|
+
getChecklistFlagMetricsComparisonDetection(baseData, seq) {
|
|
244
|
+
this.traxService.overallFlagMetricsComparisonDetection(baseData).pipe(takeUntil(this.destroy$)).subscribe({
|
|
245
|
+
next: (res) => {
|
|
246
|
+
if (seq !== this.cardComparisonSeq)
|
|
247
|
+
return;
|
|
248
|
+
const detection = res?.data?.flagComparisonCards;
|
|
249
|
+
const cmp = this.cardMetricsComparisonData?.flagComparisonCards;
|
|
250
|
+
if (!detection || !cmp)
|
|
251
|
+
return;
|
|
252
|
+
if (detection.totalComparisonFlag) {
|
|
253
|
+
cmp.totalComparisonFlag = detection.totalComparisonFlag;
|
|
254
|
+
}
|
|
255
|
+
if (detection.detectionComparisonFlag) {
|
|
256
|
+
cmp.detectionComparisonFlag = detection.detectionComparisonFlag;
|
|
257
|
+
}
|
|
258
|
+
if (detection.runAIComparisonFlag) {
|
|
259
|
+
cmp.runAIComparisonFlag = detection.runAIComparisonFlag;
|
|
260
|
+
}
|
|
261
|
+
this.changeDetector.detectChanges();
|
|
262
|
+
},
|
|
263
|
+
error: (e) => {
|
|
264
|
+
console.log(e);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
184
268
|
getFlagsTable() {
|
|
185
269
|
this.flagsTableData = [];
|
|
270
|
+
this.allFlagsTableData = [];
|
|
186
271
|
this.totalItems = 0;
|
|
272
|
+
this.flagsDetectionLoading = false;
|
|
187
273
|
this.flagsTableApiState.next('loading');
|
|
274
|
+
const seq = ++this.flagsTableSeq;
|
|
188
275
|
const data = {
|
|
189
276
|
clientId: this.headerData?.client,
|
|
190
277
|
storeId: this.headerData?.stores.map((val) => val.storeId),
|
|
@@ -201,27 +288,83 @@ export class FlagsNewComponent {
|
|
|
201
288
|
runAIChecklistName: this.cardMetricsData?.flagCards.runAIFlag.list.map((ele) => ele?.checkListName),
|
|
202
289
|
}),
|
|
203
290
|
};
|
|
291
|
+
// Fast (Mongo-only) load. flagTablesV2 now returns the FULL row set; the client
|
|
292
|
+
// sorts + paginates locally so it can re-sort once detection values arrive.
|
|
204
293
|
this.traxService.flagsTableV2(data).pipe(takeUntil(this.destroy$)).subscribe({
|
|
205
294
|
next: (res) => {
|
|
295
|
+
if (seq !== this.flagsTableSeq)
|
|
296
|
+
return;
|
|
206
297
|
this.flagsTableApiState.next('loaded');
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
if (res?.data?.checklistPerformance) {
|
|
214
|
-
this.flagsTableData = res.data.checklistPerformance;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
this.flagsTableData = [];
|
|
218
|
-
}
|
|
298
|
+
this.allFlagsTableData = res?.data?.checklistPerformance ?? [];
|
|
299
|
+
this.totalItems = res?.data?.totalCount ?? this.allFlagsTableData.length;
|
|
300
|
+
this.applyTableSortAndPagination();
|
|
301
|
+
// Hydrate the slow detection values in a second call and merge them in.
|
|
302
|
+
this.getFlagsTableDetection(data, seq);
|
|
219
303
|
},
|
|
220
304
|
error: (e) => {
|
|
305
|
+
if (seq !== this.flagsTableSeq)
|
|
306
|
+
return;
|
|
221
307
|
this.flagsTableApiState.next('loaded');
|
|
222
308
|
}
|
|
223
309
|
});
|
|
224
310
|
}
|
|
311
|
+
// Fetches detection values (keyed by sourceCheckList_id) and patches them onto the
|
|
312
|
+
// full row set, then re-sorts / re-paginates so detection columns order correctly.
|
|
313
|
+
getFlagsTableDetection(baseData, seq) {
|
|
314
|
+
// 'question' / 'time' filters are custom-only — no detection data to fetch.
|
|
315
|
+
if (['question', 'time'].includes(this.selectedFlag)) {
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
this.flagsDetectionLoading = true;
|
|
319
|
+
this.traxService.flagsTableDetectionV2(baseData).pipe(takeUntil(this.destroy$)).subscribe({
|
|
320
|
+
next: (res) => {
|
|
321
|
+
if (seq !== this.flagsTableSeq)
|
|
322
|
+
return;
|
|
323
|
+
this.flagsDetectionLoading = false;
|
|
324
|
+
const detection = res?.data?.detection;
|
|
325
|
+
if (!detection) {
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
this.allFlagsTableData = this.allFlagsTableData.map((row) => {
|
|
329
|
+
const patch = detection[row?.sourceCheckList_id];
|
|
330
|
+
return patch ? { ...row, ...patch } : row;
|
|
331
|
+
});
|
|
332
|
+
this.applyTableSortAndPagination();
|
|
333
|
+
this.changeDetector.detectChanges();
|
|
334
|
+
},
|
|
335
|
+
error: (e) => {
|
|
336
|
+
if (seq !== this.flagsTableSeq)
|
|
337
|
+
return;
|
|
338
|
+
this.flagsDetectionLoading = false;
|
|
339
|
+
console.log(e);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
// Sorts the full set (mirrors the flagTablesV2 backend sort) and slices the current
|
|
344
|
+
// page into flagsTableData, which the template iterates.
|
|
345
|
+
applyTableSortAndPagination() {
|
|
346
|
+
const rows = [...this.allFlagsTableData];
|
|
347
|
+
const column = this.sortFieldMap[this.sortColumName] || this.sortColumName;
|
|
348
|
+
if (column && this.sortColumName && this.sortDirection) {
|
|
349
|
+
const dir = this.sortDirection === -1 ? -1 : 1;
|
|
350
|
+
rows.sort((a, b) => {
|
|
351
|
+
const av = a?.[column];
|
|
352
|
+
const bv = b?.[column];
|
|
353
|
+
const an = typeof av === 'number' ? av : parseFloat(av);
|
|
354
|
+
const bn = typeof bv === 'number' ? bv : parseFloat(bv);
|
|
355
|
+
if (!Number.isNaN(an) && !Number.isNaN(bn))
|
|
356
|
+
return (an - bn) * dir;
|
|
357
|
+
return String(av ?? '').localeCompare(String(bv ?? '')) * dir;
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
rows.sort((a, b) => (b?.submittedChecklist || 0) - (a?.submittedChecklist || 0));
|
|
362
|
+
}
|
|
363
|
+
this.totalItems = rows.length;
|
|
364
|
+
const pageIndex = this.currentPage > 0 ? this.currentPage - 1 : 0;
|
|
365
|
+
const start = pageIndex * this.pageSize;
|
|
366
|
+
this.flagsTableData = rows.slice(start, start + this.pageSize);
|
|
367
|
+
}
|
|
225
368
|
onFlagsTableExport() {
|
|
226
369
|
// this.flagsTableApiState.next('loading')
|
|
227
370
|
const data = {
|
|
@@ -257,19 +400,24 @@ export class FlagsNewComponent {
|
|
|
257
400
|
this.sortColumName = column;
|
|
258
401
|
this.sortDirection = 1;
|
|
259
402
|
}
|
|
403
|
+
// Sort locally on the cached full set (incl. hydrated detection values) — no
|
|
404
|
+
// server round-trip needed.
|
|
405
|
+
this.applyTableSortAndPagination();
|
|
260
406
|
this.changeDetector.detectChanges();
|
|
261
|
-
this.getFlagsTable();
|
|
262
407
|
}
|
|
263
408
|
onPageSizeChange(pageSize) {
|
|
264
409
|
this.currentPage = 1;
|
|
265
410
|
this.itemsPerPage = pageSize;
|
|
266
411
|
this.pageSize = pageSize;
|
|
412
|
+
// Re-slice the cached full set client-side.
|
|
413
|
+
this.applyTableSortAndPagination();
|
|
267
414
|
this.changeDetector.detectChanges();
|
|
268
|
-
this.getFlagsTable();
|
|
269
415
|
}
|
|
270
416
|
onPageChange(pageOffset) {
|
|
271
417
|
this.currentPage = pageOffset;
|
|
272
|
-
|
|
418
|
+
// Re-slice the cached full set client-side.
|
|
419
|
+
this.applyTableSortAndPagination();
|
|
420
|
+
this.changeDetector.detectChanges();
|
|
273
421
|
}
|
|
274
422
|
viewInDetail(checklistId, type) {
|
|
275
423
|
if (!checklistId) {
|
|
@@ -332,4 +480,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
332
480
|
type: Component,
|
|
333
481
|
args: [{ selector: 'lib-flags-new', template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '11'\" class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- *ngIf=\"!['runAI'].includes(selectedFlag)\" -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.aiStoreList || data?.aiStoreList?.length) ?\r\n data?.aiStoreList?.length : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question',''].includes(selectedFlag)\" class=\"table-title\" >{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <!-- -->\r\n <td *ngIf=\"['all','detection', 'runAI'].includes(selectedFlag)\" class=\"table-title\">\r\n <!-- {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}} -->\r\n {{data?.flagCount ?? '0'}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\" *ngIf=\"!['activitymonitoring','queuealert','customerunattended'].includes(data.checkListType)\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n <div *ngIf=\"['activitymonitoring','queuealert','customerunattended'].includes(data.checkListType)\">\r\n NA\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"] }]
|
|
334
482
|
}], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.TraxService }, { type: i3.Router }, { type: i1.PageInfoService }, { type: i3.ActivatedRoute }] });
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBT2hDLE1BQU0sT0FBTyxpQkFBaUI7SUE4QlQ7SUFBZ0M7SUFBMkM7SUFBa0M7SUFBd0I7SUFBa0M7SUE3QmxMLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNmLFVBQVUsR0FBRyxDQUFDLENB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QUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssU0FBUyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUU7b0JBQzdELElBQUksQ0FBQyxxQkFBcUIsR0FBRzt3QkFDekIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7d0JBQzNDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CO3dCQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTO3FCQUNoQyxDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7d0JBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2hDO29CQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBOVVZLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ3BCOUIsODczRUEwNEJNOzs0RkR0M0JPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgRmxhZ3NUYWJsZURhdGEsIElGbGFnQ2FyZHMsIElGbGFnQ29tcGFyaXNvbkNhcmRzLCBGbGFnQ2FyZHNCeVR5cGUgfSBmcm9tICcuL2ZsYWdzLW5ldy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yy5qcyc7XHJcbmltcG9ydCB0aW1lWm9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUuanMnO1xyXG5kYXlqcy5leHRlbmQodGltZVpvbmUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTsgXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mbGFncy1uZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGFnc05ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgc2VsZWN0ZWRGbGFnOiBhbnkgPSAnYWxsJztcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWUgPSAnY2hlY2tMaXN0TmFtZSc7XHJcbiAgc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICB0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhOiBhbnkgPSBcIlwiO1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgZmxhZ3NUYWJsZUFwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGZsYWdzVGFibGVEYXRhOiBGbGFnc1RhYmxlRGF0YVtdID0gW11cclxuICBjYXJkTWV0cmljc0FwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGNhcmRNZXRyaWNzRGF0YTogSUZsYWdDYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhOiBJRmxhZ0NvbXBhcmlzb25DYXJkcyB8IG51bGwgfCB1bmRlZmluZWRcclxuICBzZWFyY2hJbnB1dDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIGZpbHRlcklucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnYWxsJyk7XHJcbiAgY2FyZE1ldHJpY3NEYXRhQnlUeXBlOiBGbGFnQ2FyZHNCeVR5cGUgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgZmlsdGVyVmFsdWVzID0gW1xyXG4gICAge2xhYmVsOidBbGwnLCB2YWx1ZTonYWxsJ30sXHJcbiAgICB7bGFiZWw6J1F1ZXN0aW9uJywgdmFsdWU6J3F1ZXN0aW9uJ30sXHJcbiAgICB7bGFiZWw6J05vdCBTdWJtaXR0ZWQnLCB2YWx1ZTondGltZSd9LFxyXG4gICAge2xhYmVsOidEZXRlY3Rpb24nLCB2YWx1ZTonZGV0ZWN0aW9uJ30sXHJcbiAgXVxyXG4gIGRhdGVDb21wYXJpc29uVHlwZTogJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUpIHtcclxuICAgIHRoaXMudXNlckVtYWlsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlcnNFbWFpbC1pbmZvXCIpIHx8IFwiW11cIiApXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHRoaXMuZmlsdGVySW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IGRhdGVDb21wYXJpc29uVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScpXHJcbiAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUpe1xyXG4gICAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdkYWlseScgfHwgZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5Jyl7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSBkYXRlQ29tcGFyaXNvblR5cGVcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJywgJ2RhaWx5JylcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gJ2RhaWx5J1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtcz8uZGF0ZSkge1xyXG4gICAgICAgIGxldCBsb2NhbERldGFpbHMgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSA/PyBcInt9XCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobG9jYWxEZXRhaWxzKSB7XHJcbiAgICAgICAgICBsb2NhbERldGFpbHMuZGF0ZSA9IHsgc3RhcnREYXRlOiBwYXJhbXMuZGF0ZSwgZW5kRGF0ZTogcGFyYW1zLmRhdGUgfTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkobG9jYWxEZXRhaWxzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGEuc3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8uY2hlY2tlZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0Q291bnRCeVR5cGUoKVxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljcygpXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnNldFBhZ2VEYXRhKClcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIkZsYWdzXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIlwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIC8vIHsgdGl0bGU6IFwiQW5hbHl6ZVwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIlJlcG9ydHNcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlc1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhID0gcmVzLmRhdGFcclxuICAgICAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJ1c2VyRW1haWxlc1wiOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBcImRhdGVUeXBlXCI6IHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2Uub3ZlcmFsbEZsYWdNZXRyaWNzQ29tcGFyaXNvbihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICBpZiAodGhpcy50cmF4TW9udGhseUNvbXBhcmlzb25EYXRhID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJheE1vbnRobHlDb21wYXJpc29uRGF0YSA9IHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcy50cmF4TW9udGhseUNvbXBhcmlzb25cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RmxhZ3NUYWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSBbXTtcclxuICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKFxyXG4gICAgICAgICh2YWw6IHsgc3RvcmVJZDogc3RyaW5nOyBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZFxyXG4gICAgICApLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5zZWxlY3RlZEZsYWcsXHJcbiAgICAgIC4uLih0aGlzLnNlbGVjdGVkRmxhZyA9PT0gXCJydW5BSVwiICYmIHtcclxuICAgICAgICBydW5BSUNoZWNrbGlzdE5hbWU6IHRoaXMuY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHMucnVuQUlGbGFnLmxpc3QubWFwKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICApLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZmxhZ3NUYWJsZVYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy50b3RhbENvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8uY2hlY2tsaXN0UGVyZm9ybWFuY2UpIHtcclxuICAgICAgICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSByZXMuZGF0YS5jaGVja2xpc3RQZXJmb3JtYW5jZVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25GbGFnc1RhYmxlRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBcIm9mZnNldFwiOiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgXCJzb3J0Q29sdW1uTmFtZVwiOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIFwic29ydEJ5XCI6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgXCJzZWFyY2hWYWx1ZVwiOnRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIC8vIFwiZmlsdGVyXCI6dGhpcy5maWx0ZXJJbnB1dC52YWx1ZSxcclxuICAgICAgXCJmaWx0ZXJcIjp0aGlzLnNlbGVjdGVkRmxhZyxcclxuICAgICAgXCJleHBvcnRcIjp0cnVlLCAgICAgIFxyXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZEZsYWcgPT09IFwicnVuQUlcIiAmJiB7XHJcbiAgICAgICAgcnVuQUlDaGVja2xpc3ROYW1lOiB0aGlzLmNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzLnJ1bkFJRmxhZy5saXN0Lm1hcChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgKSxcclxuICAgICAgfSksXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZXhwb3J0RmxhZ3NUYWJsZXYyKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICB0aGlzLnRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIGAke3RoaXMuc2VsZWN0ZWRGbGFnLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGhpcy5zZWxlY3RlZEZsYWcuc2xpY2UoMSl9IGZsYWdfYClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZU9mZnNldFxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIHZpZXdJbkRldGFpbChjaGVja2xpc3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCB0eXBlPzogJ3F1ZXN0aW9uJyB8ICd0aW1lJyB8ICdydW5BSScgKSB7XHJcbiAgICBpZighY2hlY2tsaXN0SWQpe1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCByb3V0ZSAgPSBgL21hbmFnZS90cmF4L2ZsYWdzL2ZsYWdzaW5mbz9pZD0ke2NoZWNrbGlzdElkfWBcclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRGbGFnID09ICdydW5BSScpIHtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT1ydW5BSWA7XHJcbiAgICB9XHJcbiAgICBpZih0eXBlKXtcclxuICAgICAgcm91dGUgPSByb3V0ZSArIGAmdHlwZT0ke3R5cGV9YFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpXHJcbiAgfVxyXG5cclxuICBkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKHZhbDonZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgKXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScsIHZhbClcclxuICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gdmFsXHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGEgPSBudWxsXHJcbiAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgfVxyXG5cclxuICBzZWxlY3RUYWJzKGZsYWc6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGZsYWc7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICBjaGVja2xpc3RDb3VudEJ5VHlwZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmNoZWNrbGlzdENvdW50QnlUeXBlKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRlZCcpO1xyXG4gICAgICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDAgJiYgcmVzPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWlDaGVja2xpc3RDb3VudDogcmVzLmRhdGEuYWlDaGVja2xpc3RDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21DaGVja2xpc3RDb3VudDogcmVzLmRhdGEuY3VzdG9tQ2hlY2tsaXN0Q291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhcmRzOiByZXMuZGF0YS5zaG93Q2FyZHNcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUuc2hvd0NhcmRzID09PSAnYWlDYXJkcycpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJzKCdkZXRlY3Rpb24nKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YUJ5VHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDwhLS1hbGxDYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhbGxDYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMjUgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdydW5BSScpXCIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuIEFJIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygndGltZScpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDEgJiBhaUNoZWNrbGlzdENvdW50ID4gMCBzaG93IDMgY2FyZHMgLS0+XHJcbiAgICAgICAgPCEtLSBjdXN0b21DYXJkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdjdXN0b21DYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygnYWxsJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZyA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZykgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZz8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncnVuQUknKVwiICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biBBSSBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3RpbWUnKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAnY29sLTMnIDogJ2NvbC00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgU3VibWl0dGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FsbENhcmRzJyB8fCBjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2N1c3RvbUNhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICcxMSdcIiBjbGFzcz1cInctNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB0ZXh0LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtZS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdkYWlseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ2RhaWx5JylcIj4xRDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nd2Vla2x5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnd2Vla2x5JylcIj4xVzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICAqbmdJZj1cInRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGFcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdtb250aGx5JylcIj4xTTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCIgIFtuZ0NsYXNzXT1cImRhdGVUeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiICAoY2xpY2spPVwiZGF0ZVZhbHVlKCdtb250aGx5JylcIj4xTTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gY3VzdG9tQ2hlY2tsaXN0Q291bnQgPiAwICYgYWlDaGVja2xpc3RDb3VudCA+IDEgc2hvdyBzaW5nbGUgY2FyZHMgLS0+XHJcbiAgICA8IS0tIGFpQ2FyZHMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhaUNhcmRzJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdkZXRlY3Rpb24nKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRGV0ZWN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgY29sLTExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIiBzdHJva2U9XCIjRDkyRDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzExJ1wiIGNsYXNzPVwiY29sLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdkYWlseScpXCI+MUQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJ0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnbW9udGhseScpXCI+MU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+PHNwYW4gKm5nSWY9XCIhWyd0aW1lJywnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgIT09ICdydW5BSScgPyAgKHNlbGVjdGVkRmxhZyB8IHRpdGxlY2FzZSkgOiAnUnVuQUknfX0gRmxhZ3M8L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ3RpbWUnLCdhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdhbGwnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG90YWwgRmxhZ3MnIDogJ05vdCBTdW1iaXR0ZWQnfX08L3NwYW4+IDxzcGFuICpuZ0lmPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IFwiPnt7dG90YWxJdGVtc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj4gQmFzZWQgb24ge3sgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTogJ01NTSBkLCB5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXMtNCBtZS00IGZvb3RmYWxsc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZpbHRlcklucHV0XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmaWx0ZXJWYWx1ZXNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZsYWdzVGFibGVFeHBvcnQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHBvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCI+Q2hlY2tsaXN0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvdmVyYWdlJylcIj5Db3ZlcmFnZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjb3ZlcmFnZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgncnVuQUlRdWVzdGlvbkNvdW50JylcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+Tm8gb2YgUXVlc3Rpb25zPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlRdWVzdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSVF1ZXN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Fzc2lnbmVkU3RvcmVzJylcIj5Bc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlczxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdnZWRTdG9yZXMnKVwiPkZsYWdnZWQgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ2dlZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFncycpXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPkZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ3MnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCdxdWVzdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAncXVlc3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdGbGFncycgOiAnUXVlc3Rpb24gRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ3J1bkFJRmxhZycpXCI+UnVuIEFJIEZsYWdzPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSUZsYWcnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ3RpbWUnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2N1c3RvbVRpbWVGbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAndGltZScgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzJyA6ICdOb3QgU3VibWl0dGVkIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21UaW1lRmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tVGltZUZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywnZGV0ZWN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnQ291bnQnKVwiPnt7c2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJyA/ICdEZXRlY3Rpb25zJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGV0ZWN0aW9uIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGggc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ0NvdW50JylcIj5GbGFnZ2VkPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRoICpuZ0lmPVwic2VsZWN0ZWRGbGFnID09PSAnZGV0ZWN0aW9uJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RldGVjdGlvbkNvdW50JylcIj5EZXRlY3Rpb24gQ291bnQ8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RldGVjdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGV0ZWN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdDb21wbGlhbmNlJylcIj5Db21wbGlhbmNlICU8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdDb21wbGlhbmNlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgY2hlY2tsaXN0UGVyZm9ybWFuY2VcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZsYWdzVGFibGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5jaGVja0xpc3RDaGFyPy50b1VwcGVyQ2FzZSgpIHx8ICctLScgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48c3BhbiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+e3tkYXRhPy5jaGVja0xpc3ROYW1lID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmNoZWNrTGlzdE5hbWUgOiAnLS0nfX08L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJteC0yXCI+4pyoPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IGRhdGE/LmNvdmVyYWdlID8gZGF0YT8uY292ZXJhZ2UgOiAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nSWY9XCJbJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiPnt7IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA/IGRhdGE/LnJ1bkFJUXVlc3Rpb25Db3VudCA6IDAgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBkYXRhLmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGE/LmFzc2lnbmVkU3RvcmVzIHx8IGRhdGE/LmFzc2lnbmVkU3RvcmVzID09PSAwKSA/IGRhdGE/LmFzc2lnbmVkU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nKSA6ICgoZGF0YT8uYWlTdG9yZUxpc3QgfHwgZGF0YT8uYWlTdG9yZUxpc3Q/Lmxlbmd0aCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmFpU3RvcmVMaXN0Py5sZW5ndGggOiAnLS0nKX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgKGRhdGE/LmZsYWdnZWRTdG9yZXMgfHwgZGF0YT8uZmxhZ2dlZFN0b3JlcyA9PT0gMCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmZsYWdnZWRTdG9yZXMgOiAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCcsJ3F1ZXN0aW9uJywnJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwidGFibGUtdGl0bGVcIiA+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQgPz8gJy0tJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiWydhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LnJ1bkFJRmxhZyA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCcsJ3RpbWUnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgPz8gJy0tJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywnZGV0ZWN0aW9uJywgJ3J1bkFJJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7e2RhdGE/LmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nID8gMCA6IChkYXRhPy5mbGFnQ291bnQgPz8gJy0tJyl9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5mbGFnQ291bnQgPz8gJzAnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5XCI+IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5jaGVja0xpc3RUeXBlID09PSAnY3VzdG9tJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ2FsbCcgfHwgZmlsdGVySW5wdXQudmFsdWUgPT09ICdxdWVzdGlvbidcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkLCAncXVlc3Rpb24nKVwiID57eyhkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCB8fCBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCA9PT0gMCkgPyBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5RdWVzdGlvbnM8L3NwYW4+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlID09PSAnYWxsJyB8fCBmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ3RpbWUnXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQsICd0aW1lJylcIiA+e3soZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCB8fCBkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319IDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG14LTNcIiA+Tm90IFN1Ym1pdHRlZDwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YT8uY2hlY2tMaXN0VHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIiA+e3soZGF0YT8uZmxhZ0NvdW50IHx8IGRhdGE/LmZsYWdDb3VudCA9PT0gMCkgPyBkYXRhPy5mbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319IDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG14LTNcIiA+RGV0ZWN0aW9uczwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwiIVsnYWN0aXZpdHltb25pdG9yaW5nJywncXVldWVhbGVydCcsJ2N1c3RvbWVydW5hdHRlbmRlZCddLmluY2x1ZGVzKGRhdGEuY2hlY2tMaXN0VHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNXB4IHctMTAwIGJnLWxpZ2h0IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1wcmltYXJ5IHJvdW5kZWQgaC01cHggXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZGF0YT8uY29tcGxpYW5jZVJhdGUgKyAnJSdcIj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgdGFibGUtdGl0bGVcIj48c3BhbiBjbGFzcz1cIm15LTEgbXgtMSB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY29tcGxpYW5jZVJhdGU/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJbJ2FjdGl2aXR5bW9uaXRvcmluZycsJ3F1ZXVlYWxlcnQnLCdjdXN0b21lcnVuYXR0ZW5kZWQnXS5pbmNsdWRlcyhkYXRhLmNoZWNrTGlzdFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgY3Vyc29yLXBvaW50ZXJcIj5WaWV3PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkZWQnICYmIGZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGluZycgfHwgKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2luaXRpYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkZWQnICYmICFmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBGbGFncyBUYWJsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
483
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBT2hDLE1BQU0sT0FBTyxpQkFBaUI7SUFtRFQ7SUFBZ0M7SUFBMkM7SUFBa0M7SUFBd0I7SUFBa0M7SUFsRGxMLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNmLFVBQVUsR0FBRyxDQUFDLENB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UyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUU7b0JBQzdELElBQUksQ0FBQyxxQkFBcUIsR0FBRzt3QkFDekIsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7d0JBQzNDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CO3dCQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTO3FCQUNoQyxDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7d0JBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2hDO29CQUNDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBNWRZLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ3BCOUIsODczRUEwNEJNOzs0RkR0M0JPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgRmxhZ3NUYWJsZURhdGEsIElGbGFnQ2FyZHMsIElGbGFnQ29tcGFyaXNvbkNhcmRzLCBGbGFnQ2FyZHNCeVR5cGUgfSBmcm9tICcuL2ZsYWdzLW5ldy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yy5qcyc7XHJcbmltcG9ydCB0aW1lWm9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUuanMnO1xyXG5kYXlqcy5leHRlbmQodGltZVpvbmUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTsgXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mbGFncy1uZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGFnc05ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgc2VsZWN0ZWRGbGFnOiBhbnkgPSAnYWxsJztcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWUgPSAnY2hlY2tMaXN0TmFtZSc7XHJcbiAgc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICB0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhOiBhbnkgPSBcIlwiO1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgZmxhZ3NUYWJsZUFwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIGZsYWdzVGFibGVEYXRhOiBGbGFnc1RhYmxlRGF0YVtdID0gW11cclxuICAvLyBGdWxsIE1vbmdvLW9ubHkgcmVzdWx0IHNldCBmcm9tIGZsYWdUYWJsZXNWMiAoY2xpZW50IHBhZ2luYXRlcy9zb3J0cyBmcm9tIHRoaXMpLlxyXG4gIGFsbEZsYWdzVGFibGVEYXRhOiBGbGFnc1RhYmxlRGF0YVtdID0gW11cclxuICAvLyBEZXRlY3Rpb24gKHNsb3cgTGFtYmRhKSBoeWRyYXRpb24gaXMgbm93IGEgc2Vjb25kLCBzZXBhcmF0ZSBjYWxsIHBlciBzZWN0aW9uLlxyXG4gIC8vIFRoZXNlIHNlcXVlbmNlIHRva2VucyBkcm9wIHN0YWxlIGRldGVjdGlvbiByZXNwb25zZXMgd2hlbiB0aGUgdXNlciBjaGFuZ2VzXHJcbiAgLy8gZGF0ZSAvIGZpbHRlciAvIHNlYXJjaCBiZWZvcmUgdGhlIHByZXZpb3VzIGRldGVjdGlvbiBjYWxsIHJldHVybnMuXHJcbiAgZmxhZ3NUYWJsZVNlcSA9IDBcclxuICBjYXJkTWV0cmljc1NlcSA9IDBcclxuICBjYXJkQ29tcGFyaXNvblNlcSA9IDBcclxuICBmbGFnc0RldGVjdGlvbkxvYWRpbmcgPSBmYWxzZVxyXG4gIC8vIE1pcnJvcnMgdGhlIGZsYWdUYWJsZXNWMiBiYWNrZW5kIHNvcnQ6IFVJIGNvbHVtbiBsYWJlbHMgLT4gZGF0YSBmaWVsZHMuXHJcbiAgc29ydEZpZWxkTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgJ0NvbXBsaWFuY2UnOiAnY29tcGxpYW5jZVJhdGUnLFxyXG4gICAgJ0NoZWNrbGlzdCBOYW1lJzogJ2NoZWNrTGlzdE5hbWUnLFxyXG4gICAgJ0NvdmVyYWdlJzogJ2NvdmVyYWdlJyxcclxuICAgICdBc3NpZ25lZCBTdG9yZXMnOiAnYXNzaWduZWRTdG9yZXMnLFxyXG4gICAgJ0ZsYWdnZWQgU3RvcmVzJzogJ2ZsYWdnZWRTdG9yZXMnLFxyXG4gICAgJ1F1ZXN0aW9uIEZsYWdzJzogJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JyxcclxuICAgICdOb3QgU3VibWl0dGVkIEZsYWdzJzogJ2N1c3RvbVRpbWVGbGFnQ291bnQnLFxyXG4gICAgJ0RldGVjdGlvbiBGbGFncyc6ICdmbGFnQ291bnQnLFxyXG4gICAgJ0ZsYWdzJzogJ2ZsYWdDb3VudCcsXHJcbiAgfVxyXG4gIGNhcmRNZXRyaWNzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcbiAgY2FyZE1ldHJpY3NEYXRhOiBJRmxhZ0NhcmRzIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE6IElGbGFnQ29tcGFyaXNvbkNhcmRzIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gIHNlYXJjaElucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgZmlsdGVySW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCdhbGwnKTtcclxuICBjYXJkTWV0cmljc0RhdGFCeVR5cGU6IEZsYWdDYXJkc0J5VHlwZSB8IG51bGwgfCB1bmRlZmluZWRcclxuICBmaWx0ZXJWYWx1ZXMgPSBbXHJcbiAgICB7bGFiZWw6J0FsbCcsIHZhbHVlOidhbGwnfSxcclxuICAgIHtsYWJlbDonUXVlc3Rpb24nLCB2YWx1ZToncXVlc3Rpb24nfSxcclxuICAgIHtsYWJlbDonTm90IFN1Ym1pdHRlZCcsIHZhbHVlOid0aW1lJ30sXHJcbiAgICB7bGFiZWw6J0RldGVjdGlvbicsIHZhbHVlOidkZXRlY3Rpb24nfSxcclxuICBdXHJcbiAgZGF0ZUNvbXBhcmlzb25UeXBlOiAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSByb3V0ZTpBY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgdGhpcy51c2VyRW1haWxlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiIClcclxuICAgIHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgID0gMFxyXG4gICAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gICAgfSlcclxuXHJcblxyXG4gICAgdGhpcy5maWx0ZXJJbnB1dC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgZGF0ZUNvbXBhcmlzb25UeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJylcclxuICAgIGlmKGRhdGVDb21wYXJpc29uVHlwZSl7XHJcbiAgICAgIGlmKGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ2RhaWx5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknIHx8IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknKXtcclxuICAgICAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9IGRhdGVDb21wYXJpc29uVHlwZVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9ICdkYWlseSdcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScsICdkYWlseScpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocGFyYW1zPy5kYXRlKSB7XHJcbiAgICAgICAgbGV0IGxvY2FsRGV0YWlscyA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpID8/IFwie31cIixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChsb2NhbERldGFpbHMpIHtcclxuICAgICAgICAgIGxvY2FsRGV0YWlscy5kYXRlID0geyBzdGFydERhdGU6IHBhcmFtcy5kYXRlLCBlbmREYXRlOiBwYXJhbXMuZGF0ZSB9O1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShsb2NhbERldGFpbHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICAgIGlmICh0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMgPSB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhPy5jaGVja2VkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RDb3VudEJ5VHlwZSgpXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzKClcclxuICAgICAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb24oKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJGbGFnc1wiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgLy8geyB0aXRsZTogXCJBbmFseXplXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mbGFnc1RhYmxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3Qgc2VxID0gKyt0aGlzLmNhcmRNZXRyaWNzU2VxO1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXNcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5vdmVyYWxsRmxhZ01ldHJpY3MoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoc2VxICE9PSB0aGlzLmNhcmRNZXRyaWNzU2VxKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGEgPSByZXMuZGF0YVxyXG4gICAgICAgICAgLy8gRmV0Y2ggdGhlIHNsb3cgZGV0ZWN0aW9uIHZhbHVlcyBzZXBhcmF0ZWx5IGFuZCBtZXJnZSB0aGVtIGluLlxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljc0RldGVjdGlvbihkYXRhLCBzZXEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIERldGVjdGlvbi1vbmx5IGNhcmQgdmFsdWVzIChkZXRlY3Rpb25GbGFnLCBydW5BSUZsYWcsIGFuZCB0aGUgZGV0ZWN0aW9uIHBvcnRpb25cclxuICAvLyBvZiB0b3RhbEZsYWcpIGZldGNoZWQgYWZ0ZXIgdGhlIGZhc3QgY2FyZCBtZXRyaWNzIGFuZCBtZXJnZWQgaW50byBjYXJkTWV0cmljc0RhdGEuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3NEZXRlY3Rpb24oYmFzZURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNlcTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljc0RldGVjdGlvbihiYXNlRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAvLyBEcm9wIHN0YWxlIHJlc3BvbnNlcyBhbmQgb25seSBtZXJnZSB3aGVuIHRoZSBiYXNlIGNhcmRzIGFyZSBwcmVzZW50LlxyXG4gICAgICAgIGlmIChzZXEgIT09IHRoaXMuY2FyZE1ldHJpY3NTZXEpIHJldHVybjtcclxuICAgICAgICBjb25zdCBkZXRlY3Rpb24gPSByZXM/LmRhdGE/LmZsYWdDYXJkcztcclxuICAgICAgICBjb25zdCBjYXJkcyA9IHRoaXMuY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM7XHJcbiAgICAgICAgaWYgKCFkZXRlY3Rpb24gfHwgIWNhcmRzKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGRldGVjdGlvbi5kZXRlY3Rpb25GbGFnKSB7XHJcbiAgICAgICAgICBjYXJkcy5kZXRlY3Rpb25GbGFnID0gZGV0ZWN0aW9uLmRldGVjdGlvbkZsYWc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZXRlY3Rpb24ucnVuQUlGbGFnKSB7XHJcbiAgICAgICAgICBjYXJkcy5ydW5BSUZsYWcgPSBkZXRlY3Rpb24ucnVuQUlGbGFnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXJkcy50b3RhbEZsYWcgPSAoY2FyZHMudG90YWxGbGFnIHx8IDApICsgKGRldGVjdGlvbi5kZXRlY3Rpb25Ub3RhbEZsYWcgfHwgMCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3NDb21wYXJpc29uKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VxID0gKyt0aGlzLmNhcmRDb21wYXJpc29uU2VxO1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXMsXHJcbiAgICAgIFwiZGF0ZVR5cGVcIjogdGhpcy5kYXRlQ29tcGFyaXNvblR5cGVcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5vdmVyYWxsRmxhZ01ldHJpY3NDb21wYXJpc29uKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlcSAhPT0gdGhpcy5jYXJkQ29tcGFyaXNvblNlcSkgcmV0dXJuO1xyXG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICBpZiAodGhpcy50cmF4TW9udGhseUNvbXBhcmlzb25EYXRhID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJheE1vbnRobHlDb21wYXJpc29uRGF0YSA9IHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcy50cmF4TW9udGhseUNvbXBhcmlzb25cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIEZldGNoIHRoZSBkZXRlY3Rpb24taW5jbHVzaXZlIGNvbXBhcmlzb25zIHNlcGFyYXRlbHkgYW5kIG92ZXJ3cml0ZS5cclxuICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3NDb21wYXJpc29uRGV0ZWN0aW9uKGRhdGEsIHNlcSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFRoZSB0b3RhbCAvIGRldGVjdGlvbiAvIHJ1bkFJIGNvbXBhcmlzb25zIGRlcGVuZCBvbiB0aGUgc2xvdyBMYW1iZGEuIFRoZXkgYXJlXHJcbiAgLy8gZmV0Y2hlZCBhZnRlciB0aGUgZmFzdCAocXVlc3Rpb24vZGVsYXkpIGNvbXBhcmlzb25zIGFuZCBvdmVyd3JpdGUgdGhvc2Uga2V5cy5cclxuICBnZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb25EZXRlY3Rpb24oYmFzZURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNlcTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljc0NvbXBhcmlzb25EZXRlY3Rpb24oYmFzZURhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlcSAhPT0gdGhpcy5jYXJkQ29tcGFyaXNvblNlcSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGRldGVjdGlvbiA9IHJlcz8uZGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcztcclxuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM7XHJcbiAgICAgICAgaWYgKCFkZXRlY3Rpb24gfHwgIWNtcCkgcmV0dXJuO1xyXG4gICAgICAgIGlmIChkZXRlY3Rpb24udG90YWxDb21wYXJpc29uRmxhZykge1xyXG4gICAgICAgICAgY21wLnRvdGFsQ29tcGFyaXNvbkZsYWcgPSBkZXRlY3Rpb24udG90YWxDb21wYXJpc29uRmxhZztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRldGVjdGlvbi5kZXRlY3Rpb25Db21wYXJpc29uRmxhZykge1xyXG4gICAgICAgICAgY21wLmRldGVjdGlvbkNvbXBhcmlzb25GbGFnID0gZGV0ZWN0aW9uLmRldGVjdGlvbkNvbXBhcmlzb25GbGFnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGV0ZWN0aW9uLnJ1bkFJQ29tcGFyaXNvbkZsYWcpIHtcclxuICAgICAgICAgIGNtcC5ydW5BSUNvbXBhcmlzb25GbGFnID0gZGV0ZWN0aW9uLnJ1bkFJQ29tcGFyaXNvbkZsYWc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldEZsYWdzVGFibGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLmFsbEZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgdGhpcy5mbGFnc0RldGVjdGlvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3Qgc2VxID0gKyt0aGlzLmZsYWdzVGFibGVTZXE7XHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcChcclxuICAgICAgICAodmFsOiB7IHN0b3JlSWQ6IHN0cmluZzsgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWRcclxuICAgICAgKSxcclxuICAgICAgdXNlckVtYWlsZXM6IHRoaXMudXNlckVtYWlsZXMsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LnZhbHVlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuc2VsZWN0ZWRGbGFnLFxyXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZEZsYWcgPT09IFwicnVuQUlcIiAmJiB7XHJcbiAgICAgICAgcnVuQUlDaGVja2xpc3ROYW1lOiB0aGlzLmNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzLnJ1bkFJRmxhZy5saXN0Lm1hcChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgKSxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyBGYXN0IChNb25nby1vbmx5KSBsb2FkLiBmbGFnVGFibGVzVjIgbm93IHJldHVybnMgdGhlIEZVTEwgcm93IHNldDsgdGhlIGNsaWVudFxyXG4gICAgLy8gc29ydHMgKyBwYWdpbmF0ZXMgbG9jYWxseSBzbyBpdCBjYW4gcmUtc29ydCBvbmNlIGRldGVjdGlvbiB2YWx1ZXMgYXJyaXZlLlxyXG4gICAgdGhpcy50cmF4U2VydmljZS5mbGFnc1RhYmxlVjIoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoc2VxICE9PSB0aGlzLmZsYWdzVGFibGVTZXEpIHJldHVybjtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIHRoaXMuYWxsRmxhZ3NUYWJsZURhdGEgPSByZXM/LmRhdGE/LmNoZWNrbGlzdFBlcmZvcm1hbmNlID8/IFtdO1xyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcz8uZGF0YT8udG90YWxDb3VudCA/PyB0aGlzLmFsbEZsYWdzVGFibGVEYXRhLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmFwcGx5VGFibGVTb3J0QW5kUGFnaW5hdGlvbigpO1xyXG4gICAgICAgIC8vIEh5ZHJhdGUgdGhlIHNsb3cgZGV0ZWN0aW9uIHZhbHVlcyBpbiBhIHNlY29uZCBjYWxsIGFuZCBtZXJnZSB0aGVtIGluLlxyXG4gICAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZURldGVjdGlvbihkYXRhLCBzZXEpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICBpZiAoc2VxICE9PSB0aGlzLmZsYWdzVGFibGVTZXEpIHJldHVybjtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIEZldGNoZXMgZGV0ZWN0aW9uIHZhbHVlcyAoa2V5ZWQgYnkgc291cmNlQ2hlY2tMaXN0X2lkKSBhbmQgcGF0Y2hlcyB0aGVtIG9udG8gdGhlXHJcbiAgLy8gZnVsbCByb3cgc2V0LCB0aGVuIHJlLXNvcnRzIC8gcmUtcGFnaW5hdGVzIHNvIGRldGVjdGlvbiBjb2x1bW5zIG9yZGVyIGNvcnJlY3RseS5cclxuICBnZXRGbGFnc1RhYmxlRGV0ZWN0aW9uKGJhc2VEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzZXE6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy8gJ3F1ZXN0aW9uJyAvICd0aW1lJyBmaWx0ZXJzIGFyZSBjdXN0b20tb25seSDigJQgbm8gZGV0ZWN0aW9uIGRhdGEgdG8gZmV0Y2guXHJcbiAgICBpZiAoWydxdWVzdGlvbicsICd0aW1lJ10uaW5jbHVkZXModGhpcy5zZWxlY3RlZEZsYWcpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZmxhZ3NEZXRlY3Rpb25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZmxhZ3NUYWJsZURldGVjdGlvblYyKGJhc2VEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChzZXEgIT09IHRoaXMuZmxhZ3NUYWJsZVNlcSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZmxhZ3NEZXRlY3Rpb25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgZGV0ZWN0aW9uID0gcmVzPy5kYXRhPy5kZXRlY3Rpb247XHJcbiAgICAgICAgaWYgKCFkZXRlY3Rpb24pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hbGxGbGFnc1RhYmxlRGF0YSA9IHRoaXMuYWxsRmxhZ3NUYWJsZURhdGEubWFwKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcGF0Y2ggPSBkZXRlY3Rpb25bcm93Py5zb3VyY2VDaGVja0xpc3RfaWRdO1xyXG4gICAgICAgICAgcmV0dXJuIHBhdGNoID8geyAuLi5yb3csIC4uLnBhdGNoIH0gOiByb3c7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHBseVRhYmxlU29ydEFuZFBhZ2luYXRpb24oKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlcSAhPT0gdGhpcy5mbGFnc1RhYmxlU2VxKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5mbGFnc0RldGVjdGlvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFNvcnRzIHRoZSBmdWxsIHNldCAobWlycm9ycyB0aGUgZmxhZ1RhYmxlc1YyIGJhY2tlbmQgc29ydCkgYW5kIHNsaWNlcyB0aGUgY3VycmVudFxyXG4gIC8vIHBhZ2UgaW50byBmbGFnc1RhYmxlRGF0YSwgd2hpY2ggdGhlIHRlbXBsYXRlIGl0ZXJhdGVzLlxyXG4gIGFwcGx5VGFibGVTb3J0QW5kUGFnaW5hdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvd3MgPSBbLi4udGhpcy5hbGxGbGFnc1RhYmxlRGF0YV07XHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnNvcnRGaWVsZE1hcFt0aGlzLnNvcnRDb2x1bU5hbWVdIHx8IHRoaXMuc29ydENvbHVtTmFtZTtcclxuICAgIGlmIChjb2x1bW4gJiYgdGhpcy5zb3J0Q29sdW1OYW1lICYmIHRoaXMuc29ydERpcmVjdGlvbikge1xyXG4gICAgICBjb25zdCBkaXIgPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IC0xID8gLTEgOiAxO1xyXG4gICAgICByb3dzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXYgPSBhPy5bY29sdW1uXTtcclxuICAgICAgICBjb25zdCBidiA9IGI/Lltjb2x1bW5dO1xyXG4gICAgICAgIGNvbnN0IGFuID0gdHlwZW9mIGF2ID09PSAnbnVtYmVyJyA/IGF2IDogcGFyc2VGbG9hdChhdik7XHJcbiAgICAgICAgY29uc3QgYm4gPSB0eXBlb2YgYnYgPT09ICdudW1iZXInID8gYnYgOiBwYXJzZUZsb2F0KGJ2KTtcclxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihhbikgJiYgIU51bWJlci5pc05hTihibikpIHJldHVybiAoYW4gLSBibikgKiBkaXI7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyhhdiA/PyAnJykubG9jYWxlQ29tcGFyZShTdHJpbmcoYnYgPz8gJycpKSAqIGRpcjtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3dzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYj8uc3VibWl0dGVkQ2hlY2tsaXN0IHx8IDApIC0gKGE/LnN1Ym1pdHRlZENoZWNrbGlzdCB8fCAwKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSByb3dzLmxlbmd0aDtcclxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBwYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5mbGFnc1RhYmxlRGF0YSA9IHJvd3Muc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBvbkZsYWdzVGFibGVFeHBvcnQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJ1c2VyRW1haWxlc1wiOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcImxpbWl0XCI6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIFwib2Zmc2V0XCI6IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwLFxyXG4gICAgICBcInNvcnRDb2x1bW5OYW1lXCI6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgXCJzb3J0QnlcIjogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBcInNlYXJjaFZhbHVlXCI6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZSxcclxuICAgICAgLy8gXCJmaWx0ZXJcIjp0aGlzLmZpbHRlcklucHV0LnZhbHVlLFxyXG4gICAgICBcImZpbHRlclwiOnRoaXMuc2VsZWN0ZWRGbGFnLFxyXG4gICAgICBcImV4cG9ydFwiOnRydWUsICAgICAgXHJcbiAgICAgIC4uLih0aGlzLnNlbGVjdGVkRmxhZyA9PT0gXCJydW5BSVwiICYmIHtcclxuICAgICAgICBydW5BSUNoZWNrbGlzdE5hbWU6IHRoaXMuY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHMucnVuQUlGbGFnLmxpc3QubWFwKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNoZWNrTGlzdE5hbWVcclxuICAgICAgICApLFxyXG4gICAgICB9KSxcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5leHBvcnRGbGFnc1RhYmxldjIoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIHRoaXMudHJheFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgYCR7dGhpcy5zZWxlY3RlZEZsYWcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt0aGlzLnNlbGVjdGVkRmxhZy5zbGljZSgxKX0gZmxhZ19gKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydENvbHVtTmFtZSA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gMTtcclxuICAgIH1cclxuICAgIC8vIFNvcnQgbG9jYWxseSBvbiB0aGUgY2FjaGVkIGZ1bGwgc2V0IChpbmNsLiBoeWRyYXRlZCBkZXRlY3Rpb24gdmFsdWVzKSDigJQgbm9cclxuICAgIC8vIHNlcnZlciByb3VuZC10cmlwIG5lZWRlZC5cclxuICAgIHRoaXMuYXBwbHlUYWJsZVNvcnRBbmRQYWdpbmF0aW9uKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgLy8gUmUtc2xpY2UgdGhlIGNhY2hlZCBmdWxsIHNldCBjbGllbnQtc2lkZS5cclxuICAgIHRoaXMuYXBwbHlUYWJsZVNvcnRBbmRQYWdpbmF0aW9uKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0XHJcbiAgICAvLyBSZS1zbGljZSB0aGUgY2FjaGVkIGZ1bGwgc2V0IGNsaWVudC1zaWRlLlxyXG4gICAgdGhpcy5hcHBseVRhYmxlU29ydEFuZFBhZ2luYXRpb24oKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmlld0luRGV0YWlsKGNoZWNrbGlzdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHR5cGU/OiAncXVlc3Rpb24nIHwgJ3RpbWUnIHwgJ3J1bkFJJyApIHtcclxuICAgIGlmKCFjaGVja2xpc3RJZCl7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IHJvdXRlICA9IGAvbWFuYWdlL3RyYXgvZmxhZ3MvZmxhZ3NpbmZvP2lkPSR7Y2hlY2tsaXN0SWR9YFxyXG4gICAgaWYodGhpcy5zZWxlY3RlZEZsYWcgPT0gJ3J1bkFJJykge1xyXG4gICAgICByb3V0ZSA9IHJvdXRlICsgYCZ0eXBlPXJ1bkFJYDtcclxuICAgIH1cclxuICAgIGlmKHR5cGUpe1xyXG4gICAgICByb3V0ZSA9IHJvdXRlICsgYCZ0eXBlPSR7dHlwZX1gXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSlcclxuICB9XHJcblxyXG4gIGRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UodmFsOidkYWlseScgfCAnd2Vla2x5JyB8ICdtb250aGx5JyApe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJywgdmFsKVxyXG4gICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSB2YWxcclxuICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IG51bGxcclxuICAgIHRoaXMuZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3NDb21wYXJpc29uKClcclxuICB9XHJcblxyXG4gIHNlbGVjdFRhYnMoZmxhZzphbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGbGFnID0gZmxhZztcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgID0gMFxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIGNoZWNrbGlzdENvdW50QnlUeXBlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKTtcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgICAgXCJ0b0RhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuY2hlY2tsaXN0Q291bnRCeVR5cGUoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGVkJyk7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCAmJiByZXM/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIgJiYgcmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YUJ5VHlwZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBhaUNoZWNrbGlzdENvdW50OiByZXMuZGF0YS5haUNoZWNrbGlzdENvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUNoZWNrbGlzdENvdW50OiByZXMuZGF0YS5jdXN0b21DaGVja2xpc3RDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICBzaG93Q2FyZHM6IHJlcy5kYXRhLnNob3dDYXJkc1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcmRNZXRyaWNzRGF0YUJ5VHlwZS5zaG93Q2FyZHMgPT09ICdhaUNhcmRzJykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRhYnMoJ2RldGVjdGlvbicpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhQnlUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPCEtLWFsbENhcmRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FsbENhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTk1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2FsbCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWc/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcGUtM1wiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAndy0yNScgOiAndy01MCdcIiAoY2xpY2spPVwic2VsZWN0VGFicygncXVlc3Rpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbXktMiBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIG1lLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yNSBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3J1bkFJJylcIiAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncnVuQUknID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncnVuQUknID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gQUkgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCd0aW1lJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBTdWJtaXR0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygnZGV0ZWN0aW9uJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ3ctMjUnIDogJ3ctNTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIGN1c3RvbUNoZWNrbGlzdENvdW50ID4gMSAmIGFpQ2hlY2tsaXN0Q291bnQgPiAwIHNob3cgMyBjYXJkcyAtLT5cclxuICAgICAgICA8IS0tIGN1c3RvbUNhcmRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2N1c3RvbUNhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTk1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdhbGwnKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAnY29sLTMnIDogJ2NvbC00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncXVlc3Rpb24nKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAnY29sLTMnIDogJ2NvbC00J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbXktMiBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIG1lLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdydW5BSScpXCIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3J1bkFJJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuIEFJIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygndGltZScpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICdjb2wtMycgOiAnY29sLTQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3RpbWUnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBTdWJtaXR0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZWxheUluU3VibWlzc2lvbj8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YUJ5VHlwZT8uc2hvd0NhcmRzID09PSAnYWxsQ2FyZHMnIHx8IGNhcmRNZXRyaWNzRGF0YUJ5VHlwZT8uc2hvd0NhcmRzID09PSAnY3VzdG9tQ2FyZHMnXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzExJ1wiIGNsYXNzPVwidy01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHRleHQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1lLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J2RhaWx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwidHJheE1vbnRobHlDb21wYXJpc29uRGF0YVwiIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ21vbnRobHknKVwiPjFNPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDAgJiBhaUNoZWNrbGlzdENvdW50ID4gMSBzaG93IHNpbmdsZSBjYXJkcyAtLT5cclxuICAgIDwhLS0gYWlDYXJkcyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FpQ2FyZHMnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBjb2wtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ICE9PSAnMTEnXCIgY2xhc3M9XCJjb2wtMSBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdkYWlseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ2RhaWx5JylcIj4xRDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTUgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J3dlZWtseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ3dlZWtseScpXCI+MVc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICAqbmdJZj1cInRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGFcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdtb250aGx5JylcIj4xTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiICBbbmdDbGFzc109XCJkYXRlVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIiAgKGNsaWNrKT1cImRhdGVWYWx1ZSgnbW9udGhseScpXCI+MU08L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj48c3BhbiAqbmdJZj1cIiFbJ3RpbWUnLCdhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTNcIj57e3NlbGVjdGVkRmxhZyAhPT0gJ3J1bkFJJyA/ICAoc2VsZWN0ZWRGbGFnIHwgdGl0bGVjYXNlKSA6ICdSdW5BSSd9fSBGbGFnczwvc3Bhbj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlsndGltZScsJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cIm1lLTNcIj57e3NlbGVjdGVkRmxhZyA9PT0gJ2FsbCcgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb3RhbCBGbGFncycgOiAnTm90IFN1bWJpdHRlZCd9fTwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgXCI+e3t0b3RhbEl0ZW1zfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPiBCYXNlZCBvbiB7eyBoZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOiAnTU1NIGQnIH19IC0ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOiAnTU1NIGQsIHknIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBmb290ZmFsbHNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtcy00IG1lLTQgZm9vdGZhbGxzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGliLXJlYWN0aXZlLXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiZmlsdGVySW5wdXRcIiBbaWRGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImZpbHRlclZhbHVlc1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGluZydcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmxhZ3NUYWJsZUV4cG9ydCgpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXIgbXMtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEV4cG9ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj48L3NwYW4+IEV4cG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiBmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRleHQtbm93cmFwIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdjaGVja0xpc3ROYW1lJylcIj5DaGVja2xpc3QgTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NoZWNrTGlzdE5hbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NoZWNrTGlzdE5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY292ZXJhZ2UnKVwiPkNvdmVyYWdlPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnY292ZXJhZ2UnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdydW5BSVF1ZXN0aW9uQ291bnQnKVwiICpuZ0lmPVwiWydydW5BSSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIj5ObyBvZiBRdWVzdGlvbnM8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSVF1ZXN0aW9uQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3J1bkFJUXVlc3Rpb25Db3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnYXNzaWduZWRTdG9yZXMnKVwiPkFzc2lnbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmVzPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnYXNzaWduZWRTdG9yZXMnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiIVsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ2dlZFN0b3JlcycpXCI+RmxhZ2dlZCBTdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnZ2VkU3RvcmVzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFnZ2VkU3RvcmVzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdzJylcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+RmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFncycgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ3MnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ3F1ZXN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdjdXN0b21RdWVzdGlvbkZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdxdWVzdGlvbidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0ZsYWdzJyA6ICdRdWVzdGlvbiBGbGFncyd9fTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21RdWVzdGlvbkZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgncnVuQUlGbGFnJylcIj5SdW4gQUkgRmxhZ3M8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3J1bkFJRmxhZycgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3J1bkFJRmxhZycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnY3VzdG9tVGltZUZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICd0aW1lJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmxhZ3MnIDogJ05vdCBTdWJtaXR0ZWQgRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVRpbWVGbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21UaW1lRmxhZ0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCdkZXRlY3Rpb24nXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdkZXRlY3Rpb24nID8gJ0RldGVjdGlvbnMnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXRlY3Rpb24gRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aCBzdHlsZT1cIndpZHRoOiAyMDBweDtcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnQ291bnQnKVwiPkZsYWdnZWQ8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGggKm5nSWY9XCJzZWxlY3RlZEZsYWcgPT09ICdkZXRlY3Rpb24nXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGV0ZWN0aW9uQ291bnQnKVwiPkRldGVjdGlvbiBDb3VudDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGV0ZWN0aW9uQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkZXRlY3Rpb25Db3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ0NvbXBsaWFuY2UnKVwiPkNvbXBsaWFuY2UgJTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ0NvbXBsaWFuY2UnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ0NvbXBsaWFuY2UnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBjaGVja2xpc3RQZXJmb3JtYW5jZVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmxhZ3NUYWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmNoZWNrTGlzdENoYXI/LnRvVXBwZXJDYXNlKCkgfHwgJy0tJyB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxzcGFuIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgY3Vyc29yLXBvaW50ZXJcIj57e2RhdGE/LmNoZWNrTGlzdE5hbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY2hlY2tMaXN0TmFtZSA6ICctLSd9fTwvc3Bhbj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uY2hlY2tMaXN0VHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cIm14LTJcIj7inKg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgZGF0YT8uY292ZXJhZ2UgPyBkYXRhPy5jb3ZlcmFnZSA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+e3sgZGF0YT8ucnVuQUlRdWVzdGlvbkNvdW50ID8gZGF0YT8ucnVuQUlRdWVzdGlvbkNvdW50IDogMCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7IGRhdGEuY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGF0YT8uYXNzaWduZWRTdG9yZXMgfHwgZGF0YT8uYXNzaWduZWRTdG9yZXMgPT09IDApID8gZGF0YT8uYXNzaWduZWRTdG9yZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLScpIDogKChkYXRhPy5haVN0b3JlTGlzdCB8fCBkYXRhPy5haVN0b3JlTGlzdD8ubGVuZ3RoKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYWlTdG9yZUxpc3Q/Lmxlbmd0aCA6ICctLScpfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyAoZGF0YT8uZmxhZ2dlZFN0b3JlcyB8fCBkYXRhPy5mbGFnZ2VkU3RvcmVzID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uZmxhZ2dlZFN0b3JlcyA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywncXVlc3Rpb24nLCcnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucnVuQUlGbGFnID8/ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiWydhbGwnLCdkZXRlY3Rpb24nLCAncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7ZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgPyAwIDogKGRhdGE/LmZsYWdDb3VudCA/PyAnLS0nKX19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmZsYWdDb3VudCA/PyAnMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnlcIj4gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlID09PSAnYWxsJyB8fCBmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ3F1ZXN0aW9uJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQsICdxdWVzdGlvbicpXCIgPnt7KGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPlF1ZXN0aW9uczwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVySW5wdXQudmFsdWUgPT09ICdhbGwnIHx8IGZpbHRlcklucHV0LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZCwgJ3RpbWUnKVwiID57eyhkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50IHx8IGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgPT09IDApID8gZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5Ob3QgU3VibWl0dGVkPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5jaGVja0xpc3RUeXBlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiID57eyhkYXRhPy5mbGFnQ291bnQgfHwgZGF0YT8uZmxhZ0NvdW50ID09PSAwKSA/IGRhdGE/LmZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX0gPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtM1wiID5EZXRlY3Rpb25zPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCIhWydhY3Rpdml0eW1vbml0b3JpbmcnLCdxdWV1ZWFsZXJ0JywnY3VzdG9tZXJ1bmF0dGVuZGVkJ10uaW5jbHVkZXMoZGF0YS5jaGVja0xpc3RUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC01cHggdy0xMDAgYmctbGlnaHQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbWluPVwiMjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXByaW1hcnkgcm91bmRlZCBoLTVweCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJkYXRhPy5jb21wbGlhbmNlUmF0ZSArICclJ1wiPiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCB0YWJsZS10aXRsZVwiPjxzcGFuIGNsYXNzPVwibXktMSBteC0xIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5jb21wbGlhbmNlUmF0ZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fSU8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlsnYWN0aXZpdHltb25pdG9yaW5nJywncXVldWVhbGVydCcsJ2N1c3RvbWVydW5hdHRlbmRlZCddLmluY2x1ZGVzKGRhdGEuY2hlY2tMaXN0VHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlZpZXc8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkaW5nJyB8fCAoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnaW5pdGlhbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgIWZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEZsYWdzIFRhYmxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|