@tsi-developpement/tsi-shared-ui 1.11.6 → 1.11.7
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/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +7 -3
- package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +20 -1
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +25 -2
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/consts/app-providers.d.ts +1 -1
- package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
- package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +1 -0
- package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +11 -0
- package/package.json +1 -1
package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs
CHANGED
|
@@ -83,6 +83,7 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
83
83
|
items.forEach(el => el.translatedHeader = this._localizePipe.transform(el.header ?? ""));
|
|
84
84
|
this._columns = items;
|
|
85
85
|
this.selectedColumns = [...items];
|
|
86
|
+
this._reapplyRestoredColumnOrder();
|
|
86
87
|
if (isObservable) {
|
|
87
88
|
this._columnsChangedSubscription = value.changed.subscribe(event => {
|
|
88
89
|
console.log("event changed => ", event);
|
|
@@ -242,6 +243,7 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
242
243
|
}
|
|
243
244
|
restoreState(configuration) {
|
|
244
245
|
let state = JSON.parse(configuration);
|
|
246
|
+
this._restoredColumnOrder = state.columnOrder ?? this._restoredColumnOrder;
|
|
245
247
|
if (this.dt) {
|
|
246
248
|
this.columnWidth.setRemembered(state.columnWidths);
|
|
247
249
|
this.dt.columnWidthsState = state.columnWidths;
|
|
@@ -270,6 +272,7 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
270
272
|
}
|
|
271
273
|
resetSelectedColumns(configuration) {
|
|
272
274
|
let state = JSON.parse(configuration);
|
|
275
|
+
this._restoredColumnOrder = state.columnOrder ?? this._restoredColumnOrder;
|
|
273
276
|
if (this.dt) {
|
|
274
277
|
this.columnWidth.reset();
|
|
275
278
|
this.columnWidth.setRemembered(state.columnWidths);
|
|
@@ -335,6 +338,7 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
335
338
|
newColumns.splice(event.newStartingIndex, 0, ...event.newItems);
|
|
336
339
|
this._columns = newColumns;
|
|
337
340
|
this.selectedColumns = this._columns.filter(c => prevSelected.has(c) || event.newItems.includes(c));
|
|
341
|
+
this._reapplyRestoredColumnOrder();
|
|
338
342
|
}
|
|
339
343
|
break;
|
|
340
344
|
}
|
|
@@ -355,6 +359,7 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
355
359
|
newColumns.splice(event.newStartingIndex, event.oldItems.length, ...event.newItems);
|
|
356
360
|
this._columns = newColumns;
|
|
357
361
|
this.selectedColumns = this._columns.filter(c => (prevSelected.has(c) && !removedOld.has(c)) || event.newItems.includes(c));
|
|
362
|
+
this._reapplyRestoredColumnOrder();
|
|
358
363
|
}
|
|
359
364
|
break;
|
|
360
365
|
}
|
|
@@ -368,6 +373,20 @@ export class EditableGridComponent extends TsiInputBase {
|
|
|
368
373
|
this._verifyGridRequirements();
|
|
369
374
|
this._initCurrentRowNumberAndOrderByRowNumber();
|
|
370
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Re-applies the saved presentation after the columns changed, so only the saved columns render,
|
|
378
|
+
* in the saved order. No-op until a layout is restored, or while none of its keys resolve yet
|
|
379
|
+
* (keeps the default "all columns" instead of an empty grid). Widths need no re-apply: the
|
|
380
|
+
* positional style PrimeNG wrote in restoreState matches again once the saved order is back.
|
|
381
|
+
*/
|
|
382
|
+
_reapplyRestoredColumnOrder() {
|
|
383
|
+
if (!this._restoredColumnOrder)
|
|
384
|
+
return;
|
|
385
|
+
const reorderedColumns = this.getReorderedColumns(this._restoredColumnOrder);
|
|
386
|
+
if (reorderedColumns.length > 0) {
|
|
387
|
+
this.selectedColumns = reorderedColumns;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
371
390
|
saveItems() {
|
|
372
391
|
const clean = this._cleanGridDataForEmit();
|
|
373
392
|
this.saveDataEventEmitter.emit(clean);
|
|
@@ -904,4 +923,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
904
923
|
type: HostListener,
|
|
905
924
|
args: ['document:keydown', ['$event']]
|
|
906
925
|
}] } });
|
|
907
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy9lZGl0YWJsZS1ncmlkL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvZWRpdGFibGUtZ3JpZC9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdELE1BQU0sa0RBQWtELENBQUM7QUFDeEksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMs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QUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFNSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFFRyx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBR29DLEVBQUU7c0JBQTVDLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFekIsRUFBRTtzQkFBVixLQUFLO2dCQTZaTixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSwgU29ydEV2ZW50LCBUYWJsZVN0YXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSwgVGFibGVSb3dTZWxlY3RFdmVudCwgVGFibGVSb3dVblNlbGVjdEV2ZW50IH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBydGxNb2RlS2V5cyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9sb2NhbHMuY29uc3QnO1xyXG5pbXBvcnQgeyBCdXR0b25UeXBlLCBHcmlkU2VsZWN0aW9uTW9kZSwgSW5wdXRUeXBlcywgTW9kYWxTaXplRW51bSwgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBwcmVjaXNlQWRkLCBwcmVjaXNlU3VtIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ2VsbENoYW5nZWRSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgUm93QWRkZWRSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24sIENvbGxlY3Rpb25DaGFuZ2VkRXZlbnQsIE9ic2VydmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbGxlY3Rpb24vb2JzZXJ2YWJsZS1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgRW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi9lbnRpdHktdmFsaWRhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS9mb3JtLXN0YXRlJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uV2lkdGhDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWhlbHBlcnMvY29sdW1uLXdpZHRoLmNvbnRyb2xsZXInO1xyXG5pbXBvcnQgeyBHcmlkU2l6aW5nTW9kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2dyaWQtc2l6aW5nLW1vZGUnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbR2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0YWJsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBUc2lJbnB1dEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJzXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbG9jYWwgdmFyc1xyXG4gIHByaXZhdGUgc2F2ZUV2ZW50U3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2lzQXV0b1Jvd051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2F1dG9Sb3dOdW1iZXJGaWVsZDogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFJvd051bWJlcjogbnVtYmVyID0gMDtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcbiAgaXNBcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2dyaWREYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHJpdmF0ZSBfZXF1YXRhYmxlRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3N1bUF0RnVzaW9uRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2VxdWFsaXR5Q2hlY2tPbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Y2U291cmNlUm93OiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdDogUm93QWRkZWRSZXN1bHQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTRUFSQ0hfTEFCRUxfUFJFRklYID0gJ19fc2VhcmNoX2xhYmVsX18nO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIHRoZSBjdXN0b20gUHJpbWVORyBmaWx0ZXIgcmVnaXN0ZXJlZCBmb3IgZ2xvYmFsIHNlYXJjaC5cclxuICAgKiBFeHRlbmRzIHRoZSBidWlsdC1pbiAnY29udGFpbnMnIHdpdGggbG9jYWxlLWF3YXJlIGRlY2ltYWwgbWF0Y2hpbmdcclxuICAgKiAoY29tbWEgdnMgZG90IHNlcGFyYXRvcikgd2hpbGUga2VlcGluZyBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCBmYWxzZVxyXG4gICAqIHBvc2l0aXZlcyBvbiB0ZXh0IGNvbHVtbnMuXHJcbiAgICogQHNlZSBfcmVnaXN0ZXJHcmlkQ29udGFpbnNGaWx0ZXJcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUNJTUFMX0FXQVJFX0NPTlRBSU5TX0ZJTFRFUiA9ICdncmlkLWNvbnRhaW5zJztcclxuICBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlID0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGU7XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuICBpbnB1dFR5cGVzID0gSW5wdXRUeXBlcztcclxuICBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRhYmxlVGFibGVcIikgZWRpdGFibGVUYWJsZT86IFRhYmxlXHJcblxyXG4gIGJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICBASW5wdXQoJ2NvbmZpZ3VyYXRpb24nKSBjb25maWd1cmF0aW9uPzogSUdyaWRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgna2V5Jykga2V5OiBzdHJpbmcgPSAndWlkJztcclxuICBASW5wdXQoKSBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHNhdmVFdmVudD86IE9ic2VydmFibGU8dm9pZD47XHJcbiAgLyoqXHJcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGdsb2JhbCBzZWFyY2ggYmFyIGluIHRoZSBncmlkIGNhcHRpb24uXHJcbiAgICpcclxuICAgKiBXaGVuIGB0cnVlYCwgYSBzZWFyY2ggaW5wdXQgYW5kIGJ1dHRvbiBhcmUgZGlzcGxheWVkLCBhbGxvd2luZyB1c2VycyB0b1xyXG4gICAqIGZpbHRlciByb3dzIGFjcm9zcyBhbGwgdmlzaWJsZSBjb2x1bW5zIHNpbXVsdGFuZW91c2x5LiBTdXBwb3J0cyBwbGFpbiB0ZXh0LFxyXG4gICAqIGRyb3Bkb3duIGxhYmVscyAocmVzb2x2ZWQgdmlhIHNoYWRvdyBmaWVsZHMpLCBhbmQgZGVjaW1hbCB2YWx1ZXMgd2l0aFxyXG4gICAqIGxvY2FsZS1hd2FyZSBjb21tYS9kb3QgbWF0Y2hpbmcuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgIHRvIHByZXNlcnZlIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgZm9yIGFsbCBjb25zdW1lcnNcclxuICAgKiB0aGF0IGRvIG5vdCBleHBsaWNpdGx5IG9wdCBpbiDigJQgZW5hYmxpbmcgaXQgb24gYSBzcGVjaWZpYyBncmlkIGlzIGFzIHNpbXBsZVxyXG4gICAqIGFzIGFkZGluZyBgW3Nob3dHbG9iYWxTZWFyY2hdPVwidHJ1ZVwiYC5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSB0cnVlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93RWRpdEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93Um93U3VtbWFyeTogYm9vbGVhbiA9IGZhbHNlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcblxyXG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJzUwMHB4JztcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsbCAoZGVmYXVsdCk6IHRoZSB0YWJsZSBzdHJldGNoZXMgdG8gZmlsbCBpdHMgY29udGFpbmVyLiBIdWc6IHRoZSB0YWJsZSBzaHJpbmtzIHRvXHJcbiAgICogaXRzIGNvbHVtbnMnIHNpemUgKG5ldmVyIHdpZGVyIHRoYW4gdGhlIGNvbnRhaW5lciksIGxlYXZpbmcgbGVmdG92ZXIgd2lkdGggZW1wdHkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2l6aW5nTW9kZTogR3JpZFNpemluZ01vZGUgPSBHcmlkU2l6aW5nTW9kZS5GaWxsO1xyXG5cclxuICAvKipcclxuICAgKiBTaXppbmcgc3R5bGUgYm91bmQgdG8gdGhlIHAtdGFibGUncyBgW3RhYmxlU3R5bGVdYCDigJQgdGhlIHNpbmdsZSBsZXZlciB0aGF0IGRpc3Rpbmd1aXNoZXNcclxuICAgKiBGaWxsIGZyb20gSHVnIChzZWUgR3JpZFNpemluZ01vZGUpLiBBcHBsaWVkIGlubGluZSBvbiB0aGUgUHJpbWVORyB0YWJsZSwgc28gaXQgYmVhdHNcclxuICAgKiBQcmltZU5HJ3MgZGVmYXVsdCBgLnAtZGF0YXRhYmxlLXRhYmxlIHsgd2lkdGg6IDEwMCUgfWAgd2l0aCBubyBgIWltcG9ydGFudGAvYDo6bmctZGVlcGAuXHJcbiAgICogLSBGaWxsOiBkZWZhdWx0IChubyBmb3JjZWQgd2lkdGg7IFByaW1lTkcgZmlsbHMgdGhlIGNvbnRhaW5lcikuXHJcbiAgICogLSBIdWc6IGB3aWR0aDphdXRvYCBzaHJpbmtzIHRoZSB0YWJsZSB0byBpdHMgY29sdW1uczsgYG1heC13aWR0aDoxMDAlYCBrZWVwcyBpdCBpbnNpZGUgdGhlXHJcbiAgICogICBwYWdlIChvdmVyZmxvdyBzY3JvbGxzKTsgYG1pbi13aWR0aDowYCBhdm9pZHMgYW55IGluaGVyaXRlZCBmbG9vci5cclxuICAgKlxyXG4gICAqIEh1ZyArIGBjb2x1bW5SZXNpemVNb2RlPVwiZXhwYW5kXCJgOiBkcmFnZ2luZyBhIGNvbHVtbiByZXNpemVzIHRoYXQgY29sdW1uLCBidXQgYHdpZHRoOmF1dG9gXHJcbiAgICogaXMgcmUtYXNzZXJ0ZWQgb24gY2hhbmdlIGRldGVjdGlvbiwgc28gdGhlIHRhYmxlIGl0c2VsZiBzdGF5cyBodWdnZWQgYW5kIG5ldmVyIGV4cGFuZHMuXHJcbiAgICovXHJcbiAgZ2V0IHRhYmxlU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXppbmdNb2RlID09PSBHcmlkU2l6aW5nTW9kZS5IdWdcclxuICAgICAgPyB7ICd3aWR0aCc6ICdhdXRvJywgJ21pbi13aWR0aCc6ICcwJywgJ21heC13aWR0aCc6ICcxMDAlJyB9XHJcbiAgICAgIDoge307XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHJvd1BlclBhZ2U6IG51bWJlcltdID0gWzUsIDEwLCAyMF07XHJcbiAgLy8gQElucHV0KCkgaXNQYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSA1XHJcbiAgQElucHV0KCkgZW50aXR5UHJpbWFyeUtleU5hbWUgOiBzdHJpbmcgPSAndWlkJ1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZENvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcblxyXG4gIGdldCBzZWxlY3RlZENvbHVtbnMoKTogQXJyYXk8R3JpZENvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ29sdW1ucztcclxuICB9XHJcblxyXG4gIHNldCBzZWxlY3RlZENvbHVtbnModmFsdWU6IEFycmF5PEdyaWRDb2x1bW4+KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZENvbHVtbnMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3N5bmNHbG9iYWxGaWx0ZXJGaWVsZHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgcHJpdmF0ZSBfdGVtcENvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgcHJpdmF0ZSBfY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGdldCBjb2x1bW5zKCk6IEFycmF5PEdyaWRDb2x1bW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNvbHVtbnModmFsdWU6IEFycmF5PEdyaWRDb2x1bW4+IHwgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pIHtcclxuICAgIHRoaXMuX2NvbHVtbnNDaGFuZ2VkU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0IGlzT2JzZXJ2YWJsZSA9ICh2YWx1ZSBhcyBPYnNlcnZhYmxlQ29sbGVjdGlvbjxHcmlkQ29sdW1uPikuaXNPYnNlcnZhYmxlQ29sbGVjdGlvbiA9PT0gdHJ1ZTtcclxuICAgIGNvbnN0IGl0ZW1zID0gaXNPYnNlcnZhYmxlID8gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS50b0FycmF5KCkgOiB2YWx1ZSBhcyBBcnJheTxHcmlkQ29sdW1uPjtcclxuICAgIGl0ZW1zLmZvckVhY2goZWwgPT4gZWwudHJhbnNsYXRlZEhlYWRlciA9IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oZWwuaGVhZGVyID8/IFwiXCIpKTtcclxuICAgIHRoaXMuX2NvbHVtbnMgPSBpdGVtcztcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gWy4uLml0ZW1zXTtcclxuXHJcbiAgICBpZiAoaXNPYnNlcnZhYmxlKSB7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnNDaGFuZ2VkU3Vic2NyaXB0aW9uID0gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS5jaGFuZ2VkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJldmVudCBjaGFuZ2VkID0+IFwiLCBldmVudClcclxuICAgICAgICB0aGlzLl9vbkNvbHVtbnNDaGFuZ2VkKGV2ZW50KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGdyaWREYXRhKGRhdGE6IEFycmF5PGFueT4pIHtcclxuICAgIHRoaXMuX2dyaWREYXRhID0gZGF0YTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuICBnZXQgZ3JpZERhdGEoKSB7IHJldHVybiB0aGlzLl9ncmlkRGF0YTsgfVxyXG5cclxuICBASW5wdXQoKSBpc1RhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcblxyXG5cclxuICBASW5wdXQoKSBwYXJlbnQ6IGFueTtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NhdmVCdXR0b246IGJvb2xlYW4gPSB0cnVlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbkNvbHVtbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZVJvd0Rpc2FibGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByb3dTdW1tYXJ5Q29uZmlnOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgQElucHV0KCkgc2hvd0hhdmVTdW1hcnk/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1Jvd1N1bWFyeT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgfCBhbnkgPSBHcmlkU2VsZWN0aW9uTW9kZS5TaW5nbGU7XHJcbiAgQElucHV0KCkgc2hvd0NvbnN1bHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBnZXQgZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyhjbGFzc05hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyA9IGNsYXNzTmFtZTtcclxuICAgIHRoaXMuZ2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2U/LmxvYWRFbnRpdHlWYWxpZGF0aW9uSW5mb3ModGhpcy5fZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqb3JkZXIgKi9cclxuICBASW5wdXQoKSBvcmRlckNvbHVtbjogc3RyaW5nID0gJ3VpZCc7XHJcblxyXG4gIEBJbnB1dCgpIGRlbGV0ZUxpbmVCdXR0b25EaXNhYmxlZCE6IChpdGVtOiBhbnkpID0+IGFueVxyXG5cclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBPdXRwdXRzXHJcblxyXG4gIEBPdXRwdXQoKSByZWZyZXNoRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy9AT3V0cHV0KCkgYWN0aW9uRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8R3JpZEFjdGlvbkVtaXRSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxHcmlkQWN0aW9uRW1pdFJlc3VsdD4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVEYXRhRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHJvd0NoYW5nZWRFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkZWRSb3dFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PigpXHJcblxyXG4gIEBPdXRwdXQoKSBmb2N1c091dEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY2VsbENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDZWxsQ2hhbmdlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxDaGFuZ2VkUmVzdWx0PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcm93RGVsZXRlZEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0Um93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbnN1bHRDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSByb3dEdXBsaWNhdGVkRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Um93QWRkZWRSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZChcImR0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2tzIHJvd3MgYnkgdGhlaXIgYnVzaW5lc3Mga2V5IChga2V5YCBpbnB1dCkgc28gUHJpbWVORyByZXVzZXMgZXhpc3Rpbmcgcm93IHZpZXdzXHJcbiAgICogaW5zdGVhZCBvZiBkZXN0cm95aW5nL3JlY3JlYXRpbmcgdGhlbSB3aGVuIHRoZSByb3cgYXJyYXkgaXMgcmVwbGFjZWQgd2l0aCBvYmplY3RzIHNoYXJpbmdcclxuICAgKiB0aGUgc2FtZSBrZXkgKGUuZy4gYWZ0ZXIgYSByZWNhbGN1bGF0aW9uIHRoYXQgY2xvbmVzIHRoZSBkYXRhKS4gV2l0aG91dCB0aGlzLCBldmVyeSBjZWxsXHJcbiAgICogZWRpdG9yIOKAlCBpbmNsdWRpbmcgc2VydmVyLWJhY2tlZCBzZWFyY2ggY29tYm9zIOKAlCBpcyByZS1pbnN0YW50aWF0ZWQgYW5kIHJlLWZldGNoZXMgaXRzIGRhdGEuXHJcbiAgICogRmFsbHMgYmFjayB0byB0aGUgcm93IGluZGV4IHdoZW4gdGhlIGtleSBpcyBhYnNlbnQgKGUuZy4gYnJhbmQtbmV3IHJvd3MpLlxyXG4gICAqIEFycm93IHByb3BlcnR5IHNvIGB0aGlzYCBpcyBwcmVzZXJ2ZWQgd2hlbiBQcmltZU5HIGludm9rZXMgaXQuXHJcbiAgICovXHJcbiAgcm93VHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBhbnkgPT4gaXRlbT8uW3RoaXMua2V5XSA/PyBpbmRleDtcclxuXHJcbiAgcHJpdmF0ZSBfZW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlID0gaW5qZWN0KEVudGl0eVZhbGlkYXRpb25zU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfc3RyaXBlZFJvd3NMYXlvdXRIZWxwZXJTZXJ2aWNlID0gaW5qZWN0KExheW91dEhlbHBlclNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sb2NhbGl6ZVBpcGU6IExvY2FsaXplUGlwZSwgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX3JlZ2lzdGVyR3JpZENvbnRhaW5zRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RyaXBlZFJvd3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RyaXBlZFJvd3NMYXlvdXRIZWxwZXJTZXJ2aWNlLmxheW91dENvbmZpZ3VyYXRpb24uaXNTdHJpcGVkUm93c0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIHRoaXMuX2luaXRTYXZlRXZlbnRTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gICAgdGhpcy5faW5pdEVxdWF0YWJsZUZpZWxkcygpO1xyXG4gICAgdGhpcy5faW5pdFN1bUF0RnVzaW9uRmllbGRzKCk7XHJcbiAgICBcclxuICAgIGxldCBsYW5ndWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShydGxNb2RlS2V5cy5ydGxNb2RlRW5hYmxlZCk7XHJcbiAgICBcclxuICAgIGlmIChsYW5ndWUgJiYgSlNPTi5wYXJzZShsYW5ndWUpKSB7XHJcbiAgICAgIHRoaXMuaXNBciA9IHRydWVcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzQXIgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENvbHVtbnMgfHwgdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl90ZW1wQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcclxuICB9XHJcblxyXG4gIGZpbmRDb2x1bW5CeUtleShrZXk6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY29sdW1ucykge1xyXG4gICAgICBmb3IgKGxldCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5oZWFkZXIgPT09IGtleSB8fCBjb2wuZmllbGQgPT09IGtleSkgcmV0dXJuIGNvbDtcclxuICAgICAgICBlbHNlIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyByZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3RhdGU6IFRhYmxlU3RhdGUgPSBKU09OLnBhcnNlKGNvbmZpZ3VyYXRpb24pXHJcbiAgICBpZiAodGhpcy5kdCkge1xyXG4gICAgICB0aGlzLmNvbHVtbldpZHRoLnNldFJlbWVtYmVyZWQoc3RhdGUuY29sdW1uV2lkdGhzKTtcclxuICAgICAgdGhpcy5kdC5jb2x1bW5XaWR0aHNTdGF0ZSA9IHN0YXRlLmNvbHVtbldpZHRocztcclxuICAgICAgdGhpcy5kdC50YWJsZVdpZHRoU3RhdGUgPSBzdGF0ZS50YWJsZVdpZHRoO1xyXG5cclxuICAgICAgbGV0IGNvbHVtbk9yZGVyID0gc3RhdGUuY29sdW1uT3JkZXI7XHJcblxyXG4gICAgICBpZiAoY29sdW1uT3JkZXIpIHtcclxuICAgICAgICBsZXQgcmVvcmRlcmVkQ29sdW1ucyA9IHRoaXMuZ2V0UmVvcmRlcmVkQ29sdW1ucyhjb2x1bW5PcmRlcik7XHJcbiAgICAgICAgaWYgKHJlb3JkZXJlZENvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSByZW9yZGVyZWRDb2x1bW5zO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQXBwbHkgdGhlIHJlbWVtYmVyZWQgY29sdW1uIHdpZHRocyB0byB0aGUgRE9NLiBBc3NpZ25pbmcgY29sdW1uV2lkdGhzU3RhdGVcclxuICAgICAgLy8gYWxvbmUgaXMgYSBuby1vcCBoZXJlIGJlY2F1c2UgdGhlIGdyaWQgaXMgbm90IFByaW1lTkctXCJzdGF0ZWZ1bFwiIChubyBzdGF0ZUtleSkuXHJcbiAgICAgIHRoaXMuZHQucmVzdG9yZUNvbHVtbldpZHRocygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVvcmRlcmVkQ29sdW1ucyhjb2x1bW5PcmRlcjogc3RyaW5nW10pOiBhbnlbXSB7XHJcbiAgICBsZXQgcmVvcmRlcmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb2x1bW5PcmRlci5tYXAoKGtleSkgPT4ge1xyXG4gICAgICBsZXQgY29sID0gdGhpcy5maW5kQ29sdW1uQnlLZXkoa2V5KTtcclxuICAgICAgaWYgKGNvbCkge1xyXG4gICAgICAgIHJlb3JkZXJlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVvcmRlcmVkQ29sdW1ucztcclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRDb2x1bW5zKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uKVxyXG4gICAgaWYgKHRoaXMuZHQpIHtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5yZXNldCgpO1xyXG4gICAgICB0aGlzLmNvbHVtbldpZHRoLnNldFJlbWVtYmVyZWQoc3RhdGUuY29sdW1uV2lkdGhzKTtcclxuICAgICAgdGhpcy5kdC5jb2x1bW5XaWR0aHNTdGF0ZSA9IHN0YXRlLmNvbHVtbldpZHRocztcclxuICAgICAgdGhpcy5kdC50YWJsZVdpZHRoU3RhdGUgPSBzdGF0ZS50YWJsZVdpZHRoO1xyXG5cclxuICAgICAgbGV0IGNvbHVtbk9yZGVyID0gc3RhdGUuY29sdW1uT3JkZXI7XHJcblxyXG4gICAgICBpZiAoY29sdW1uT3JkZXIpIHtcclxuICAgICAgICBsZXQgcmVvcmRlcmVkQ29sdW1ucyA9IHRoaXMuZ2V0UmVvcmRlcmVkQ29sdW1ucyhjb2x1bW5PcmRlcik7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSByZW9yZGVyZWRDb2x1bW5zLmxlbmd0aCA+IDAgPyByZW9yZGVyZWRDb2x1bW5zIDogWy4uLnRoaXMuX2NvbHVtbnNdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmR0LnJlc3RvcmVDb2x1bW5XaWR0aHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXRlKCkge1xyXG4gICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0ge307XHJcblxyXG4gICAgaWYgKCF0aGlzLmR0KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmR0LnJlc2l6YWJsZUNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5kdC5zYXZlQ29sdW1uV2lkdGhzKHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmR0LnNhdmVDb2x1bW5PcmRlcihzdGF0ZSk7XHJcblxyXG4gICAgcmV0dXJuIHN0YXRlXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaGFyZWQgbW9kZWwgZm9yIHRoZSBkZXZlbG9wZXItd2lkdGggLyB3cmFwcGluZyAvIHJlc2l6ZS1wcmlvcml0eSBiZWhhdmlvci4gQWN0aW9uL2J1dHRvblxyXG4gICAqIGNvbHVtbnMgYW5kIGZyb3plbiBjb2x1bW5zIGFyZSBleGNsdWRlZCAoZnJvemVuIGNvbHVtbnMgbXVzdCBrZWVwIHRoZWlyIHN0aWNreS1vZmZzZXRcclxuICAgKiB3aWR0aCBvciBsYXRlciBmcm96ZW4gY29sdW1ucyBtaXNhbGlnbik7IGFsbCBvdGhlciBjb2x1bW5zIGFyZSBlbGlnaWJsZS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHVtbldpZHRoID0gbmV3IENvbHVtbldpZHRoQ29udHJvbGxlcigoY29sKSA9PiAhY29sLmlzQnV0dG9uICYmICFjb2wuaXNGcm96ZW4pO1xyXG5cclxuICAvKiogUmVtZW1iZXIgd2hpY2ggY29sdW1uIHRoZSB1c2VyIHJlc2l6ZWQgc28gaXRzIGRldmVsb3Blci1wcmVmZXJyZWQgd2lkdGggeWllbGRzLiAqL1xyXG4gIG9uQ29sUmVzaXplKGV2ZW50OiB7IGVsZW1lbnQ/OiBIVE1MRWxlbWVudDsgZGVsdGE/OiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5XaWR0aC5vblJlc2l6ZShldmVudD8uZWxlbWVudD8uZ2V0QXR0cmlidXRlKCdkYXRhLWZpZWxkJykpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgYSBjb2x1bW4ncyBjb250ZW50IHNob3VsZCB3cmFwIHRvIHN0YXkgaW5zaWRlIGl0cyBjb25zdHJhaW5lZCB3aWR0aC4gKi9cclxuICBzaG91bGRXcmFwQ29sdW1uKGNvbDogR3JpZENvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1uV2lkdGguc2hvdWxkV3JhcChjb2wpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV2ZWxvcGVyIHNpemUgc3R5bGUgb25seSwgYm91bmQgdmlhIGBbbmdTdHlsZV1gIG9uIHRoZSBoZWFkZXIvc3VtbWFyeSBjZWxscyBhbG9uZ3NpZGVcclxuICAgKiB0aGVpciB1bnRvdWNoZWQgYFtzdHlsZV09XCJjb2wuc3R5bGVcImAgKHNvIGEgc3RyaW5nIGBjb2wuc3R5bGVgIGlzIG5ldmVyIHNwcmVhZC9icm9rZW4pLlxyXG4gICAqL1xyXG4gIGdldENvbHVtblNpemVTdHlsZShjb2w6IEdyaWRDb2x1bW4pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbldpZHRoLnNpemVTdHlsZShjb2wpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEJvZHkgYDx0ZD5gIHN0eWxlOiBSVEwgYWxpZ25tZW50ICsgdG9wLWFsaWduIChlbGlnaWJsZSBjZWxscykgKyBkZXZlbG9wZXIgc2l6ZSBzdHlsZS4gKi9cclxuICBnZXRCb2R5Q29sdW1uU3R5bGUoY29sOiBHcmlkQ29sdW1uKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBjb25zdCBiYXNlID0gdGhpcy5pc0FyID8geyAndGV4dC1hbGlnbic6ICdzdGFydCcgfSA6IHt9O1xyXG4gICAgcmV0dXJuIHsgLi4uYmFzZSwgLi4udGhpcy5jb2x1bW5XaWR0aC52ZXJ0aWNhbEFsaWduKGNvbCksIC4uLnRoaXMuY29sdW1uV2lkdGguc2l6ZVN0eWxlKGNvbCkgfTtcclxuICB9XHJcblxyXG4gIGlzRGVsZXRlQnV0dG9uRGlzYWJsZWQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kZWxldGVMaW5lQnV0dG9uRGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlbGV0ZUxpbmVCdXR0b25EaXNhYmxlZChpdGVtKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXHJcbiAgICB0aGlzLnNhdmVFdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX2NhbmNlbFBlbmRpbmdEdXBsaWNhdGVFbWl0KCk7XHJcbiAgICB0aGlzLl9jb2x1bW5zQ2hhbmdlZFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uQ29sdW1uc0NoYW5nZWQoZXZlbnQ6IENvbGxlY3Rpb25DaGFuZ2VkRXZlbnQ8R3JpZENvbHVtbj4pOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5BZGQ6IHtcclxuICAgICAgICBpZiAoZXZlbnQubmV3SXRlbXMgJiYgZXZlbnQubmV3U3RhcnRpbmdJbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBldmVudC5uZXdJdGVtcy5mb3JFYWNoKGNvbCA9PlxyXG4gICAgICAgICAgICBjb2wudHJhbnNsYXRlZEhlYWRlciA9IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oY29sLmhlYWRlciA/PyBcIlwiKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xyXG4gICAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi50aGlzLl9jb2x1bW5zXTtcclxuICAgICAgICAgIG5ld0NvbHVtbnMuc3BsaWNlKGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXgsIDAsIC4uLmV2ZW50Lm5ld0l0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBuZXdDb2x1bW5zO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgICAgYyA9PiBwcmV2U2VsZWN0ZWQuaGFzKGMpIHx8IGV2ZW50Lm5ld0l0ZW1zIS5pbmNsdWRlcyhjKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLlJlbW92ZToge1xyXG4gICAgICAgIGlmIChldmVudC5vbGRJdGVtcykge1xyXG4gICAgICAgICAgY29uc3QgcmVtb3ZlZCA9IG5ldyBTZXQoZXZlbnQub2xkSXRlbXMpO1xyXG4gICAgICAgICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGMgPT4gIXJlbW92ZWQuaGFzKGMpKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKGMgPT4gIXJlbW92ZWQuaGFzKGMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLlJlcGxhY2U6IHtcclxuICAgICAgICBpZiAoZXZlbnQubmV3SXRlbXMgJiYgZXZlbnQub2xkSXRlbXMgJiYgZXZlbnQubmV3U3RhcnRpbmdJbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBldmVudC5uZXdJdGVtcy5mb3JFYWNoKGNvbCA9PlxyXG4gICAgICAgICAgICBjb2wudHJhbnNsYXRlZEhlYWRlciA9IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oY29sLmhlYWRlciA/PyBcIlwiKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHByZXZTZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xyXG4gICAgICAgICAgY29uc3QgcmVtb3ZlZE9sZCA9IG5ldyBTZXQoZXZlbnQub2xkSXRlbXMpO1xyXG4gICAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi50aGlzLl9jb2x1bW5zXTtcclxuICAgICAgICAgIG5ld0NvbHVtbnMuc3BsaWNlKGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXgsIGV2ZW50Lm9sZEl0ZW1zLmxlbmd0aCwgLi4uZXZlbnQubmV3SXRlbXMpO1xyXG4gICAgICAgICAgdGhpcy5fY29sdW1ucyA9IG5ld0NvbHVtbnM7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICBjID0+IChwcmV2U2VsZWN0ZWQuaGFzKGMpICYmICFyZW1vdmVkT2xkLmhhcyhjKSkgfHwgZXZlbnQubmV3SXRlbXMhLmluY2x1ZGVzKGMpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uUmVzZXQ6XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICB0aGlzLl9jb2x1bW5zID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW1zKCkge1xyXG4gICAgY29uc3QgY2xlYW4gPSB0aGlzLl9jbGVhbkdyaWREYXRhRm9yRW1pdCgpO1xyXG4gICAgdGhpcy5zYXZlRGF0YUV2ZW50RW1pdHRlci5lbWl0KGNsZWFuKTtcclxuICB9XHJcblxyXG4gIGFkZFJvdygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5ncmlkRGF0YSkge1xyXG4gICAgICB0aGlzLmdyaWREYXRhID0gW107XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3Um93ID0gdGhpcy5faW5pdFJvdygpXHJcbiAgICB0aGlzLmdyaWREYXRhLnB1c2gobmV3Um93KVxyXG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZVxyXG4gICAgbGV0IHJvd0FkZGVkUmVzdWx0OiBSb3dBZGRlZFJlc3VsdCA9IHtcclxuICAgICAgcm93TnVtYmVyOiB0aGlzLmdyaWREYXRhLmxlbmd0aCAtIDEsXHJcbiAgICAgIGRhdGE6IG5ld1Jvd1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVkaXRhYmxlVGFibGU/LnNvcnRGaWVsZCAmJiB0aGlzLmVkaXRhYmxlVGFibGUuc29ydE9yZGVyKSB7XHJcbiAgICAgIHRoaXMuZWRpdGFibGVUYWJsZT8udmFsdWUucHVzaChuZXdSb3cpXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hTb3J0KClcclxuICAgIHRoaXMuYWRkZWRSb3dFdmVudEVtaXR0ZXIuZW1pdChyb3dBZGRlZFJlc3VsdClcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVJvdyhpdGVtOiBhbnksIHVwZGF0ZVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWUsIHNraXBFbWl0OiBib29sZWFuID0gZmFsc2UpOiBSb3dBZGRlZFJlc3VsdCB8IG51bGwge1xyXG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBkdXBsaWNhdGVkUm93ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICBkdXBsaWNhdGVkUm93W3RoaXMuZW50aXR5UHJpbWFyeUtleU5hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbC5leGNsdWRlT25EdXBsaWNhdGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGR1cGxpY2F0ZWRSb3csIGNvbC5maWVsZCkpIHtcclxuICAgICAgICBkdXBsaWNhdGVkUm93W2NvbC5maWVsZF0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5faXNBdXRvUm93TnVtYmVyKSB7XHJcbiAgICAgIGR1cGxpY2F0ZWRSb3dbdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXSA9IHRoaXMuX25leHRSb3dOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICBjb25zdCB0YWJsZUluZGV4ID0gdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmICh0YWJsZUluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmVkaXRhYmxlVGFibGUudmFsdWUuc3BsaWNlKHRhYmxlSW5kZXggKyAxLCAwLCBkdXBsaWNhdGVkUm93KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVkaXRhYmxlVGFibGUudmFsdWUucHVzaChkdXBsaWNhdGVkUm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRhdGFJbmRleCA9IHRoaXMuZ3JpZERhdGEuaW5kZXhPZihpdGVtLCAwKTtcclxuICAgIGlmIChkYXRhSW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmdyaWREYXRhLnNwbGljZShkYXRhSW5kZXggKyAxLCAwLCBkdXBsaWNhdGVkUm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChkdXBsaWNhdGVkUm93KTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpO1xyXG5cclxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkdXBsaWNhdGVkUm93O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGVcclxuICAgICAgICA/IFtkdXBsaWNhdGVkUm93XVxyXG4gICAgICAgIDogZHVwbGljYXRlZFJvdztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IFJvd0FkZGVkUmVzdWx0ID0ge1xyXG4gICAgICByb3dOdW1iZXI6IHRoaXMuZ3JpZERhdGEuaW5kZXhPZihkdXBsaWNhdGVkUm93KSxcclxuICAgICAgZGF0YTogZHVwbGljYXRlZFJvd1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXNraXBFbWl0KSB7XHJcbiAgICAgIHRoaXMuYWRkZWRSb3dFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgICB0aGlzLnJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU29ydCgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRhYmxlVGFibGU/LnNvcnRGaWVsZCkge1xyXG4gICAgICBjb25zdCBzb3J0RmllbGQgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydEZpZWxkO1xyXG4gICAgICBjb25zdCBzb3J0T3JkZXIgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydE9yZGVyO1xyXG5cclxuICAgICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVBID0gYVtzb3J0RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQiA9IGJbc29ydEZpZWxkXTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWVBID4gdmFsdWVCKSByZXN1bHQgPSAxO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0ICogc29ydE9yZGVyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZ3JpZERhdGEgPSBbLi4udGhpcy5ncmlkRGF0YV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRNb2RlKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyaWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmdyaWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgICAgdGhpcy5fb25EZWxldGVSb3coaXRlbSk7XHJcbiAgICAgIHRoaXMucm93RGVsZXRlZEV2ZW50RW1pdHRlci5lbWl0KHRoaXMuX2NsZWFuR3JpZERhdGFGb3JFbWl0KCkpXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hTb3J0KClcclxuICB9XHJcblxyXG4gIGdldFN1bW1hcnkoY29sOiBHcmlkQ29sdW1uKTogbnVtYmVyIHtcclxuICAgIGlmIChjb2wuaGF2ZVN1bW1hcnkgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gcHJlY2lzZVN1bSgodGhpcy5ncmlkRGF0YSA/PyBbXSkubWFwKChyb3c6IGFueSkgPT4gcm93W2NvbC5maWVsZF0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgcm93U3VtbWFyeShyb3c6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gcHJlY2lzZVN1bSh0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wucm93U3VtbWFyeSA9PSB0cnVlKS5tYXAoY29sID0+IHJvd1tjb2wuZmllbGRdKSk7XHJcbiAgfVxyXG5cclxuICBvblJvd1NlbGVjdGVkKGV2ZW50OiBUYWJsZVJvd1NlbGVjdEV2ZW50KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGV2ZW50LmRhdGE7XHJcbiAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IG51bGw7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSA9PSB0cnVlKSB7XHJcbiAgICAgIGxldCBzZWxlY3Rpb25LZXk6IGFueTtcclxuICAgICAgc2VsZWN0aW9uS2V5ID0gdGhpcy5zZWxlY3RlZEl0ZW1bdGhpcy5rZXldO1xyXG4gICAgICB0aGlzLm9uUm93U2VsZWN0LmVtaXQoc2VsZWN0aW9uS2V5KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUm93VW5zZWxlY3QoZXZlbnQ6IFRhYmxlUm93VW5TZWxlY3RFdmVudCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IG51bGw7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBsZXQgc2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEtleU9ubHkpIHtcclxuICAgICAgICAgIGxldCBrZXlzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgodjogYW55KSA9PiB7IGtleXMucHVzaCh2W3RoaXMua2V5XSkgfSk7XHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBrZXlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSBHcmlkU2VsZWN0aW9uTW9kZS5TaW5nbGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSkge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcyA/IFt0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5rZXldXSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcyA/IFt0aGlzLnNlbGVjdGVkSXRlbXNdIDogW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQoc2VsZWN0aW9uKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVHcmlkS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Y2Jykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5fZjZTb3VyY2VSb3cgPz8gdGhpcy5zZWxlY3RlZEl0ZW07XHJcbiAgICAgIGlmICghc291cmNlKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBpc0ZpcnN0RHVwbGljYXRlID0gIXRoaXMuX2Y2U291cmNlUm93O1xyXG4gICAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IHNvdXJjZTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZHVwbGljYXRlUm93KHNvdXJjZSwgaXNGaXJzdER1cGxpY2F0ZSwgdHJ1ZSk7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ICYmICF0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCA9IHJlc3VsdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRlZFJvd0V2ZW50RW1pdHRlci5lbWl0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQpO1xyXG4gICAgICAgICAgdGhpcy5yb3dEdXBsaWNhdGVkRXZlbnRFbWl0dGVyLmVtaXQodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCk7XHJcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzT3V0Um93KGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5mb2N1c091dFJvdy5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tU29ydChldmVudDogU29ydEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSAhPSBudWxsICYmIGV2ZW50LmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGV2ZW50LmRhdGEuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmZpZWxkICE9IG51bGwgJiYgZXZlbnQuZmllbGQgIT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yZGVyKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUxID0gZGF0YTFbZXZlbnQuZmllbGRdO1xyXG4gICAgICAgICAgbGV0IHZhbHVlMiA9IGRhdGEyW2V2ZW50LmZpZWxkXTtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbClcclxuICAgICAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmVzdWx0ID0gMTtcclxuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xyXG5cclxuICAgICAgICAgIHJldHVybiAoZXZlbnQub3JkZXIgKiByZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdWx0KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ29uc3VsdENsaWNrZWQuZW1pdChrZXkpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsTGFiZWxSZXNvbHZlZChjb2w6IEdyaWRDb2x1bW4sIGxhYmVsOiBzdHJpbmcsIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaXRlbVt0aGlzLl9nZXRTaGFkb3dTZWFyY2hDb2x1bW5MYWJlbChjb2wpXSA9IGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsVmFsdWVDaGFuZ2VkKGNvbDogR3JpZENvbHVtbiwgbmV3VmFsdWU6IGFueSwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAvLyBNYXJrIHRoZSBncmlkIGl0c2VsZiBkaXJ0eSBvbiBhbnkgZ2VudWluZSBjZWxsIGVkaXQuIFRoZSBncmlkIGluc3RhbmNlIGxpdmVzXHJcbiAgICAvLyBmb3IgdGhlIHdob2xlIGZvcm0gbGlmZXRpbWUsIHNvIHRoaXMgZmxhZyBzdXJ2aXZlcyByb3ctZGF0YSByZWFzc2lnbm1lbnRcclxuICAgIC8vIGR1cmluZyByZWNhbGN1bGF0aW9uICh3aGVyZSB0cmFuc2llbnQgY2VsbCBpbnB1dHMgYXJlIHJlY3JlYXRlZCBhbmQgbG9zZVxyXG4gICAgLy8gdGhlaXIgb3duIGlzRGlydHkpLCBrZWVwaW5nIHRoZSBzYXZlLXRpbWUgY2hhbmdlIGRldGVjdGlvbiBhY2N1cmF0ZS5cclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XHJcbiAgICBpZiAoY29sLnR5cGUgPT09IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPICYmIG5ld1ZhbHVlID09IG51bGwpIHtcclxuICAgICAgZGVsZXRlIGl0ZW1bdGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKV07XHJcbiAgICB9XHJcbiAgICAvLyBzZW5kIGV2ZW50c1xyXG4gICAgaWYgKGNvbC53YXRjaEZvckNoYW5nZXMgPT09IHRydWUpIHtcclxuXHJcbiAgICAgIGxldCBjZWxsQ2hhbmdlZFJlc3VsdDogQ2VsbENoYW5nZWRSZXN1bHQgPSB7XHJcbiAgICAgICAga2V5OiBpdGVtW3RoaXMua2V5XSxcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2VsbENoYW5nZWQuZW1pdChjZWxsQ2hhbmdlZFJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVjYWxjdWxhdGUgY3VycmVudFJvd051bWJlclxyXG4gICAgaWYgKGNvbC5maWVsZCA9PT0gdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkKSB7XHJcbiAgICAgIHRoaXMuX29yZGVyQnlSb3dOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBmb3IgZHVwbGljYXRlZCByb3dzXHJcbiAgICAvLyBpZih0aGlzLl9lcXVhbGl0eUNoZWNrT24gJiYgY29sLmlzRXF1YXRhYmxlQ3JpdGVyaWEpe1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnZm91bmQgZXF1YXRhYmxlIDogY29sOicsIGNvbCwgJ3JvdyA6ICcsIGl0ZW0pO1xyXG4gICAgLy8gICB0aGlzLl90cnlGaW5kRXF1YXRhYmxlKGl0ZW0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUZvcm1TdGF0ZShmb3JtU3RhdGU6IEZvcm1TdGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlLnVwZGF0ZUZvcm1TdGF0ZShmb3JtU3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlHbG9iYWxTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwodGhpcy5zZWFyY2hWYWx1ZSwgRWRpdGFibGVHcmlkQ29tcG9uZW50LkRFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJvdygpIHtcclxuICAgIGxldCBuZXdSb3c6IGFueSA9IHt9O1xyXG4gICAgaWYgKHRoaXMuY29sdW1ucykge1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVRcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuUkFURV9JTlBVVFxyXG4gICAgICAgICAgfHwgY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5JTlRFR0VSXHJcbiAgICAgICAgICB8fCBjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVRcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQpIHtcclxuICAgICAgICAgIG5ld1Jvd1tjb2wuZmllbGRdID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5DSEVDS0JPWCkge1xyXG4gICAgICAgICAgbmV3Um93W2NvbC5maWVsZF0gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBuZXdSb3dbY29sLmZpZWxkXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIG5ld1Jvd1t0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdID0gdGhpcy5fbmV4dFJvd051bWJlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdSb3dcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdSb3c7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0U2F2ZUV2ZW50U3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5zYXZlRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnNhdmVFdmVudD8uc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB0aGlzLnNhdmVJdGVtcygpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmVyaWZ5R3JpZFJlcXVpcmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgPT0gbnVsbFxyXG4gICAgICB8fCB0aGlzLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ3JpZCBjb2x1bW5zIGNhblxcJ3QgYmUgbnVsbCcpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGxldCByb3dOdW1iZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+IGMuaXNBdXRvUm93TnVtYmVyQ29sdW1uID09PSB0cnVlKTtcclxuXHJcbiAgICBpZiAocm93TnVtYmVyQ29sdW1ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ3JpZCBjb2x1bW5zIGNhblxcJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIFJvd051bWJlckNvbHVtbicpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChyb3dOdW1iZXJDb2x1bW5zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuX2lzQXV0b1Jvd051bWJlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCA9IHJvd051bWJlckNvbHVtbnNbMF0uZmllbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNBdXRvUm93TnVtYmVyID09PSB0cnVlXHJcbiAgICAgICYmIHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCAhPSB1bmRlZmluZWRcclxuICAgICAgJiYgdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkICE9IG51bGxcclxuICAgICAgJiYgdGhpcy5ncmlkRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuX29yZGVyQnlSb3dOdW1iZXIoKTtcclxuXHJcbiAgICAgIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIgPSB0aGlzLmdyaWREYXRhW3RoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMV1bdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX25leHRSb3dOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIgPSB0aGlzLmdyaWREYXRhLmxlbmd0aCArIDE7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvd051bWJlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uRGVsZXRlUm93KHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAocm93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPT09IHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIpIHtcclxuICAgICAgdGhpcy5fY3VycmVudFJvd051bWJlci0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3JkZXJCeVJvd051bWJlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JpZERhdGEuc29ydCgoYSwgYikgPT4geyByZXR1cm4gYVt0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdIC0gYlt0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRFcXVhdGFibGVGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBsZXQgZXF1YXRhYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlzRXF1YXRhYmxlQ3JpdGVyaWEgPT0gdHJ1ZSk7XHJcbiAgICBpZiAoZXF1YXRhYmxlQ29sdW1ucykge1xyXG4gICAgICB0aGlzLl9lcXVhbGl0eUNoZWNrT24gPSB0cnVlO1xyXG4gICAgICB0aGlzLl9lcXVhdGFibGVGaWVsZHMgPSBlcXVhdGFibGVDb2x1bW5zLm1hcChjID0+IGMuZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFN1bUF0RnVzaW9uRmllbGRzKCk6IHZvaWQge1xyXG4gICAgbGV0IHN1bUF0RnVzaW9uQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlzU3VtQXRGdXNpb24gPT0gdHJ1ZSk7XHJcbiAgICBpZiAoc3VtQXRGdXNpb25Db2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2VxdWFsaXR5Q2hlY2tPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuX3N1bUF0RnVzaW9uRmllbGRzID0gc3VtQXRGdXNpb25Db2x1bW5zLm1hcChjID0+IGMuZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdHJ5RmluZEVxdWF0YWJsZShyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGZvdW5kRXF1YWxSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdwcm9jIHJvdyA6ICcsIHRoaXMuZ3JpZERhdGFbaV0pO1xyXG4gICAgICBsZXQgaXNDdXJyZW50Um93RXF1YWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLl9lcXVhdGFibGVGaWVsZHM/LmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Byb2MgZmllbGQgOiAnLCBmKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkRGF0YVtpXVtmXSAhPSByb3dbZl0pIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgZXF1YWwgJywgcm93LCB0aGlzLmdyaWREYXRhW2ldKTtcclxuICAgICAgICAgIGlzQ3VycmVudFJvd0VxdWFsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGlzQ3VycmVudFJvd0VxdWFsKSB7XHJcbiAgICAgICAgdGhpcy5fZnVzaW9uUm93cyh0aGlzLmdyaWREYXRhW2ldLCByb3cpO1xyXG4gICAgICAgIGZvdW5kRXF1YWxSb3cgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZm91bmRFcXVhbFJvdykge1xyXG4gICAgICBjb25zb2xlLmxvZygnZGVsZXRpbmcgOiAnLCByb3cpO1xyXG4gICAgICB0aGlzLmRlbGV0ZShyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnVzaW9uUm93cyhyb3cxOiBhbnksIHJvdzI6IGFueSkge1xyXG4gICAgdGhpcy5fc3VtQXRGdXNpb25GaWVsZHM/LmZvckVhY2goZiA9PiB7XHJcbiAgICAgIHJvdzFbZl0gPSBwcmVjaXNlQWRkKHJvdzFbZl0sIHJvdzJbZl0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N5bmNHbG9iYWxGaWx0ZXJGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLnNlbGVjdGVkQ29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPKSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2godGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2goY29sLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBmaWVsZHM7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgX3JlZ2lzdGVyR3JpZENvbnRhaW5zRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgLy8gQ3VzdG9tIFByaW1lTkcgZmlsdGVyIHVzZWQgYnkgYXBwbHlHbG9iYWxTZWFyY2goKSBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiAnY29udGFpbnMnLlxyXG4gICAgLy8gRXh0ZW5kcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgd2l0aCBsb2NhbGUtYXdhcmUgZGVjaW1hbCBtYXRjaGluZzpcclxuICAgIC8vIGEgdXNlciBpbiBGUi9BUiBsb2NhbGUgdHlwZXMgXCIxMSwyNVwiIGJ1dCB0aGUgc3RvcmVkIEpTIG51bWJlciBzdHJpbmdpZmllcyBhcyBcIjExLjI1XCIsXHJcbiAgICAvLyBzbyBhIHBsYWluICdjb250YWlucycgY2hlY2sgd291bGQgbWlzcyBpdC5cclxuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UucmVnaXN0ZXIoRWRpdGFibGVHcmlkQ29tcG9uZW50LkRFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSLCAodmFsdWU6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT09ICcnKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHN0clZhbHVlID0gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBzdHJGaWx0ZXIgPSBmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAvLyBTdGVwIDEg4oCUIGRpcmVjdCBtYXRjaCAoaGFuZGxlcyBhbGwgdGV4dCBjb2x1bW5zIGFuZCBleGFjdCBudW1lcmljIG1hdGNoZXMpXHJcbiAgICAgIGlmIChzdHJWYWx1ZS5pbmNsdWRlcyhzdHJGaWx0ZXIpKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIFN0ZXAgMiDigJQgZGVjaW1hbCBjb21tYeKGlGRvdCBub3JtYWxpemF0aW9uLlxyXG4gICAgICAvLyBUd28gZ3VhcmRzIG11c3QgYm90aCBwYXNzIGJlZm9yZSBub3JtYWxpemluZzpcclxuICAgICAgLy8gICDigKIgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAg4oaSIG9ubHkgcnVuIG9uIGFjdHVhbCBudW1lcmljIHZhbHVlczsgdGV4dCBjb2x1bW5zXHJcbiAgICAgIC8vICAgICBjb250YWluaW5nIGRvdHMgKGUuZy4gcHJvZHVjdCBjb2RlcyBsaWtlIFwiSFAuWFlaXCIpIGFyZSBuZXZlciB0b3VjaGVkLlxyXG4gICAgICAvLyAgIOKAoiAvXlxcZCtbLC5dXFxkKyQvICAgICAgICAgICAg4oaSIGZpbHRlciBtdXN0IGxvb2sgbGlrZSBhIGRlY2ltYWwgbnVtYmVyOlxyXG4gICAgICAvLyAgICAgICBeXFxkKyAgIG9uZSBvciBtb3JlIGRpZ2l0cyBiZWZvcmUgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgICBbLC5dICAgZXhhY3RseSBvbmUgc2VwYXJhdG9yLCBjb21tYSBvciBkb3RcclxuICAgICAgLy8gICAgICAgXFxkKyQgICBvbmUgb3IgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgVGhpcyByZWplY3RzIGZyZWUtdGV4dCBmaWx0ZXJzIHRoYXQgaGFwcGVuIHRvIGNvbnRhaW4gYSBjb21tYSAoXCJDYWlzc2UsIEZyYW5jZVwiKVxyXG4gICAgICAvLyAgICAgYW5kIGluY29tcGxldGUgaW5wdXRzIChcIjExLFwiIC8gXCIsMjVcIikuXHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIC9eXFxkK1ssLl1cXGQrJC8udGVzdChzdHJGaWx0ZXIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0clZhbHVlLmluY2x1ZGVzKHN0ckZpbHRlci5yZXBsYWNlKCcsJywgJy4nKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW5HcmlkRGF0YUZvckVtaXQoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZERhdGEubWFwKHJvdyA9PiB7XHJcbiAgICAgIGNvbnN0IGNsZWFuOiBhbnkgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93KSkge1xyXG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoRWRpdGFibGVHcmlkQ29tcG9uZW50LlNFQVJDSF9MQUJFTF9QUkVGSVgpKSB7XHJcbiAgICAgICAgICBjbGVhbltrZXldID0gcm93W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjbGVhbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sdW1uOiBHcmlkQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtFZGl0YWJsZUdyaWRDb21wb25lbnQuU0VBUkNIX0xBQkVMX1BSRUZJWH0ke2NvbHVtbi5maWVsZH1gO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxwLXRhYmxlICNkdCBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIiBlZGl0TW9kZT1cInJvd1wiXHJcbiAgICBbcGFnaW5hdG9yXT1cImdyaWREYXRhLmxlbmd0aCA+IHBhZ2VTaXplXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dQZXJQYWdlXCIgW3Jvd3NdPVwicGFnZVNpemVcIlxyXG4gICAgKG9uUm93U2VsZWN0KT1cIm9uUm93U2VsZWN0ZWQoJGV2ZW50KVwiIChvblJvd1Vuc2VsZWN0KT1cIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgKG9uQ29sUmVzaXplKT1cIm9uQ29sUmVzaXplKCRldmVudClcIlxyXG4gICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiIGNvbHVtblJlc2l6ZU1vZGU9XCJleHBhbmRcIiBhcHBlbmRUbz1cImJvZHlcIiBbdmFsdWVdPVwiZ3JpZERhdGFcIlxyXG4gICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCIgW2RhdGFLZXldPVwia2V5XCIgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIiBbc3R5bGVDbGFzc109XCIncC1kYXRhdGFibGUtc20gcC1kYXRhdGFibGUtZ3JpZGxpbmVzJyArIChzdHJpcGVkUm93cyA/ICcgcC1kYXRhdGFibGUtc3RyaXBlZCcgOiAnJylcIlxyXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiICNlZGl0YWJsZVRhYmxlIFt0b3RhbFJlY29yZHNdPVwiZ3JpZERhdGEubGVuZ3RoXCJcclxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCIgW3Jvd1RyYWNrQnldPVwicm93VHJhY2tCeVwiIFt0YWJsZVN0eWxlXT1cInRhYmxlU3R5bGVcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTUgZmxleC1yb3dcIj5cclxuICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJjb2x1bW5zXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbHVtbnNcIlxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHt7ICdjb2x1bW5zX3NlbGVjdGVkJyB8IGxvY2FsaXplIH19XCIgb3B0aW9uTGFiZWw9XCJ0cmFuc2xhdGVkSGVhZGVyXCJcclxuICAgICAgICAgIFtzdHlsZV09XCJ7J21pbi13aWR0aCc6ICcxODBweCd9XCIgcGxhY2Vob2xkZXI9XCJ7eyAnY2hvb3NlX2NvbHVtbnMnIHwgbG9jYWxpemUgfX1cIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgb3B0aW9uLmhlYWRlciB8IGxvY2FsaXplIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0dsb2JhbFNlYXJjaFwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdy04XCI+XHJcbiAgICAgICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cImdsb2JhbF9zZWFyY2hcIiBjbGFzcz1cInAtaW5wdXRncm91cCBydGwtbW9kZSBoLTJyZW0gbm8tcGFkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIlwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHBJbnB1dFRleHQgY2xhc3M9XCJib3JkZXItcm91bmQtbGdcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2hhcmVkX2VkaXR0YWJsZV9zZWFyY2hfcGxhY2Vob2xkZXInIHwgbG9jYWxpemVcIiAoa2V5ZG93bi5lbnRlcik9XCJhcHBseUdsb2JhbFNlYXJjaCgpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2VhcmNoX2J1dHRvblwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBzdHlsZUNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCIgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1zZWFyY2hcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9zZWFyY2hcIlxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImFwcGx5R2xvYmFsU2VhcmNoKClcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PiBcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlICE9IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIj5cclxuICAgICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+PC90aD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiPlxyXG4gICAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiBzdHlsZT1cIm1pbi13aWR0aDoycmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjJyZW0gIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAjdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90aD5cclxuXHJcbiAgICAgICAgPCEtLSA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPiAtLT5cclxuICAgICAgICBcclxuICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0R1cGxpY2F0ZUJ1dHRvblwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dDb25zdWx0QnV0dG9uXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90aD5cclxuICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcblxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiBbc3R5bGVdPVwiY29sLnN0eWxlXCIgW25nU3R5bGVdPVwiZ2V0Q29sdW1uU2l6ZVN0eWxlKGNvbClcIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtO1wiIHBTb3J0YWJsZUNvbHVtbj1cInt7Y29sLmZpZWxkfX1cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgcFRvb2x0aXA9XCJ7e2NvbC50b29sVGlwVGV4dCB8IGxvY2FsaXplIH19XCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgcFJlb3JkZXJhYmxlQ29sdW1uPnt7IGNvbC5oZWFkZXIgfCBsb2NhbGl6ZVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwie3tjb2wuZmllbGR9fVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgIDxUc2ktQnViYmxlLUluZm8gW2luZm9UZXh0XT1cImNvbC5pbmZvVGV4dCB8IGxvY2FsaXplXCI+PC9Uc2ktQnViYmxlLUluZm8+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGggc3R5bGU9XCJtaW4td2lkdGg6M3JlbVwiICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBzY29wZT1cImNvbFwiPnt7J1Jvd1N1bW1hcnknIHwgbG9jYWxpemV9fTwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0gbGV0LWVkaXRpbmc9XCJlZGl0aW5nXCIgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgXHJcbiAgICAgIDx0ciBbcEVkaXRhYmxlUm93XT1cIml0ZW1cIlxyXG4gICAgICAgICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlIHx8IHNlbGVjdGlvbk1vZGUgPT0gdW5kZWZpbmVkOyBlbHNlIHNlbGVjdGlvbk1vZGVCbG9ja1wiXHJcbiAgICAgICAgKGZvY3VzT3V0KT1cIm9uRm9jdXNPdXRSb3coaXRlbSlcIj5cclxuICAgICAgICBcclxuICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJpdGVtXCIgPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPiAtLT5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICA8L3RkPiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcEluaXRFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktcGVuY2lsXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBTYXZlRWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIC1tbC0xXCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcENhbmNlbEVkaXRhYmxlUm93IGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyIC1tbC0yXCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD4gLS0+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RkPlxyXG5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEdXBsaWNhdGVCdXR0b25cIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWNvcHlcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9kdXBsaXF1ZXJcIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mb1wiIChjbGljayk9XCJkdXBsaWNhdGVSb3coaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dDb25zdWx0QnV0dG9uXCIgc3R5bGU9XCJsZWZ0OiAtMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xIGJ0bi1jb25zdWx0LXN0eWxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtidXR0b25UeXBlXT1cImJ1dHRvblR5cGUuQnV0dG9uXCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktZXllXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfY29uc3VsdGVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9XCJjb25zdWx0KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RGVsZXRlQnV0dG9uXCJcclxuICAgICAgICAgIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xIGJ0bi1kZWxldGUtc3R5bGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gW2Rpc2FibGVkXT1cImlzRGVsZXRlQnV0dG9uRGlzYWJsZWQoaXRlbSlcIiB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktdHJhc2hcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9zdXBwcmltZXJcIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuXHJcbiAgICAgICAgPHRkIGNsYXNzPVwidWktcmVzaXphYmxlLWNvbHVtblwiIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgW2NsYXNzLnRzaS1jb2wtd3JhcF09XCJzaG91bGRXcmFwQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Qm9keUNvbHVtblN0eWxlKGNvbClcIj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLmRpc3BsYXlPbmx5IHx8IGRpc2FibGVkOyBlbHNlIG9yZGluYXJ5QmxvY1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVNlYXJjaC1Db21ibyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlNFQVJDSF9DT01CTzsgZWxzZSBjdXJyZW5jeVNvY2lldGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtlbGVtZW50U291cmNlVXJsXT1cImNvbC5lbGVtZW50U291cmNlVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJjb2wuYnVzaW5lc3NDbGFzc1wiIFtjdXJyZW50Um93SXRlbV09XCJpdGVtXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCIgW2xpc3RTb3VyY2VVcmxdPVwiY29sLmxpc3RTb3VyY2VVcmxcIiBsYWJlbC1maWVsZD1cInt7Y29sLmxhYmVsRmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwiY29sLmlzRmlsdGVyZWRcIiBbZGF0YXNvdXJjZV09XCJjb2wuZGF0YXNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VXBkYXRlQnV0dG9uXT1cImNvbC5zaG93VXBkYXRlQnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwib25DZWxsTGFiZWxSZXNvbHZlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUOyBlbHNlIGRhdGVQaWNrZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSBbY3VycmVuY3ldPVwiY29sLmN1cnJlbmN5T3RoZXJDb2RlXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRBVEU7IGVsc2UgY2hlY2tCb3hPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1EaXNwbGF5IFtzaG93VGltZV09XCJjb2wuc2hvd1RpbWVcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94LURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrQm94T3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tib3gtRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrYm94LURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREVDSU1BTF9JTlBVVDsgZWxzZSBpbnRlZ2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbZm9ybWF0RGVjaW1hbF09XCJjb2wuZm9ybWF0RGVjaW1hbFwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURlY2ltYWwtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUludGVnZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlJBVEVfSU5QVVQ7IGVsc2UgdGltZU91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLURpc3BsYXkgW2lzRnJhY3Rpb25dPVwiY29sLmlzRnJhY3Rpb25cIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLVJhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FOyBlbHNlIGZvcm11bGFPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0c2ktdGltZS1kaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+PC90c2ktdGltZS1kaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRm9ybXVsYS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkZPUk1VTEFfVEVYVF9CT1g7IGVsc2UgZGVmYXVsdFRleHRPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRm9ybXVsYS1Cb3ggW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgWyh2YWx1ZSldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZXh0T3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW1bY29sLmZpZWxkXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI29yZGluYXJ5QmxvYz5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVNlYXJjaC1Db21ibyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuU0VBUkNIX0NPTUJPOyBlbHNlIGN1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJjb2wuYnVzaW5lc3NDbGFzc1wiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgaWQtZmllbGQ9XCJ7e2NvbC5pZEZpZWxkfX1cIiBsYWJlbC1maWVsZD1cInt7Y29sLmxhYmVsRmllbGR9fVwiIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCJcclxuICAgICAgICAgICAgICAgIFtjdXJyZW50Um93SXRlbV09XCJpdGVtXCIgKGJpbmRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIiBbc2hvd1NlYXJjaEJ1dHRvbl09XCJjb2wuc2hvd1NlYXJjaEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIiBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfU09DSUVURV9JTlBVVDsgZWxzZSBjdXJyZW5jeU90aGVySW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VySW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwiY29sLmN1cnJlbmN5T3RoZXJDb2RlXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1EYXRlLVBpY2tlciAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ0hFQ0tCT1g7IGVsc2UgZGVjaW1hbElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tCb3ggW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiIFxyXG4gICAgICAgICAgICAgICAgICBbaXNCaW5hcnldPVwiY29sLmlzQmluYXJ5ID8/IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLURlY2ltYWwtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVjaW1hbElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREVDSU1BTF9JTlBVVDsgZWxzZSBpbnRlZ2VySW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLURlY2ltYWwtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyIC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLklOVEVHRVI7IGVsc2UgcmF0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVJbnB1dEJsb2NcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktVGltZS1waWNrZXIgYmxvYyAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aW1lSW5wdXRCbG9jPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlRJTUU7IGVsc2UgZm9ybXVsYUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDx0c2ktdGltZS1waWNrZXIgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC90c2ktdGltZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm11bGFJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkZPUk1VTEFfVEVYVF9CT1g7IGVsc2UgZGVmYXVsdFRleHRJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tPFRzaS1CdWJibGUtSW5mb1xyXG4gICAgICAgICAgICAgICAgICBbaW5mb1RleHRdPVwiWydmb3JtdWxhX2V4cGxpY2F0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgXVwiPjwvVHNpLUJ1YmJsZS1JbmZvPiAtLT5cclxuICAgICAgICAgICAgICAgIDxUc2ktRm9ybXVsYS1Cb3ggW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgWyh2YWx1ZSldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+PC9Uc2ktRm9ybXVsYS1Cb3g+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1UZXh0LUJveCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzaG93Um93U3VtbWFyeVwiIGNsYXNzPVwiZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICB7e3Jvd1N1bW1hcnkoaXRlbSl9fVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGlvbk1vZGVCbG9jaz5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPHRyIFtwRWRpdGFibGVSb3ddPVwiaXRlbVwiIFtwU2VsZWN0YWJsZVJvd109XCJpdGVtXCIgW3BTZWxlY3RhYmxlUm93SW5kZXhdPVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICAoZm9jdXNPdXQpPVwib25Gb2N1c091dFJvdyhpdGVtKVwiPlxyXG5cclxuICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPHRkICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCIgc3R5bGU9XCJ3aWR0aDogMnJlbTtcIj5cclxuICAgICAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94ICN0YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L3RkPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RWRpdEJ1dHRvblwiIHN0eWxlPVwibWluLXdpZHRoOjNyZW07bGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFlZGl0aW5nXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBwSW5pdEVkaXRhYmxlUm93IGljb249XCJwaSBwaS1wZW5jaWxcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcFNhdmVFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIC1tbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0aW5nXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBwQ2FuY2VsRWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyIC1tbC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD4gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dIYXZlU3VtYXJ5XCIgc2NvcGU9XCJjb2xcIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gcFJlc2l6YWJsZUNvbHVtbiAqbmdJZj1cInNob3dEdXBsaWNhdGVCdXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWNvcHlcIlxyXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfZHVwbGlxdWVyXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1pbmZvXCIgKGNsaWNrKT1cImR1cGxpY2F0ZVJvdyhpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIHBSZXNpemFibGVDb2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMSBidG4tY29uc3VsdC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtidXR0b25UeXBlXT1cImJ1dHRvblR5cGUuQnV0dG9uXCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktZXllXCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2NvbnN1bHRlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNvbnN1bHQoaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBwUmVzaXphYmxlQ29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInAtMSBidG4tZGVsZXRlLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gdHlwZT1cImJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXRyYXNoXCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCJcclxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX3N1cHByaW1lclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidWktcmVzaXphYmxlLWNvbHVtblwiIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy50c2ktY29sLXdyYXBdPVwic2hvdWxkV3JhcENvbHVtbihjb2wpXCIgW25nU3R5bGVdPVwiZ2V0Qm9keUNvbHVtblN0eWxlKGNvbClcIj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5kaXNwbGF5T25seSB8fCBkaXNhYmxlZDsgZWxzZSBvcmRpbmFyeUJsb2NcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVNlYXJjaC1Db21ibyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlNFQVJDSF9DT01CTzsgZWxzZSBjdXJyZW5jeVNvY2lldGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGlzYWJsZWRdPVwidHJ1ZVwiIFtlbGVtZW50U291cmNlVXJsXT1cImNvbC5lbGVtZW50U291cmNlVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJjb2wuYnVzaW5lc3NDbGFzc1wiIFtjdXJyZW50Um93SXRlbV09XCJpdGVtXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCIgW2xpc3RTb3VyY2VVcmxdPVwiY29sLmxpc3RTb3VyY2VVcmxcIiBsYWJlbC1maWVsZD1cInt7Y29sLmxhYmVsRmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwiY29sLmlzRmlsdGVyZWRcIiBbZGF0YXNvdXJjZV09XCJjb2wuZGF0YXNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VXBkYXRlQnV0dG9uXT1cImNvbC5zaG93VXBkYXRlQnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwib25DZWxsTGFiZWxSZXNvbHZlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUOyBlbHNlIGRhdGVQaWNrZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSBbY3VycmVuY3ldPVwiY29sLmN1cnJlbmN5T3RoZXJDb2RlXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRBVEU7IGVsc2UgY2hlY2tCb3hPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1EaXNwbGF5IFtzaG93VGltZV09XCJjb2wuc2hvd1RpbWVcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94LURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrQm94T3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ2hlY2tib3gtRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrYm94LURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREVDSU1BTF9JTlBVVDsgZWxzZSBpbnRlZ2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbZm9ybWF0RGVjaW1hbF09XCJjb2wuZm9ybWF0RGVjaW1hbFwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURlY2ltYWwtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUludGVnZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlJBVEVfSU5QVVQ7IGVsc2UgdGltZU91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLURpc3BsYXkgW2lzRnJhY3Rpb25dPVwiY29sLmlzRnJhY3Rpb25cIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLVJhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FOyBlbHNlIGZvcm11bGFPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0c2ktdGltZS1kaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+PC90c2ktdGltZS1kaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRm9ybXVsYS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkZPUk1VTEFfVEVYVF9CT1g7IGVsc2UgZGVmYXVsdFRleHRPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRm9ybXVsYS1Cb3ggW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgWyh2YWx1ZSldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZXh0T3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW1bY29sLmZpZWxkXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvcmRpbmFyeUJsb2M+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlSW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xpc3RTb3VyY2VVcmxdPVwiY29sLmxpc3RTb3VyY2VVcmxcIiBbKGJpbmQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbC1maWVsZD1cInt7Y29sLmxhYmVsRmllbGR9fVwiIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChiaW5kQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1NlYXJjaEJ1dHRvbl09XCJjb2wuc2hvd1NlYXJjaEJ1dHRvbiA/PyB0cnVlXCIgW3Nob3dBZGRCdXR0b25dPVwiY29sLnNob3dBZGRCdXR0b24gPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dVcGRhdGVCdXR0b25dPVwiY29sLnNob3dVcGRhdGVCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnN1bHRCdXR0b25dPVwiY29sLnNob3dDb25zdWx0QnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRMYWJlbENoYW5nZSk9XCJvbkNlbGxMYWJlbFJlc29sdmVkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lTb2NpZXRlSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfU09DSUVURV9JTlBVVDsgZWxzZSBjdXJyZW5jeU90aGVySW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGF0ZVBpY2tlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLUlucHV0IFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIiBbY3VycmVuY3ldPVwiY29sLmN1cnJlbmN5T3RoZXJDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1EYXRlLVBpY2tlciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRBVEU7IGVsc2UgY2hlY2tCb3hJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EYXRlLVBpY2tlciBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ2hlY2tCb3ggLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrQm94SW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ0hFQ0tCT1g7IGVsc2UgZGVjaW1hbElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lzQmluYXJ5XT1cImNvbC5pc0JpbmFyeSA/PyBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVjaW1hbElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLURlY2ltYWwtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlSW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbY2xhc3NdPVwiJ21heC13LTRyZW0nXCIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1SYXRlLUlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSB0aW1lSW5wdXRCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktVGltZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVJbnB1dEJsb2M+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlRJTUUgZWxzZSBmb3JtdWxhSW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0c2ktdGltZS1waWNrZXIgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90c2ktdGltZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm11bGFJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRm9ybXVsYS1Cb3ggW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgWyh2YWx1ZSldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZXh0SW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Um93U3VtbWFyeVwiIGNsYXNzPVwiZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAge3tyb3dTdW1tYXJ5KGl0ZW0pfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHBUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1jb2x1bW5zPlxyXG5cclxuICAgICAgPHRyIGNsYXNzPVwidGZvb3RlclwiPlxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gc2NvcGU9XCJjb2xcIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGQ+IC0tPlxyXG4gICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDoycmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjJyZW0gIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggI3RhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzY29wZT1cImNvbFwiIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPlRvdGFsPC90ZD5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgICAgPCEtLTx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLTFcIj4gLS0+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dDb25zdWx0QnV0dG9uXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBbZnJvemVuXT1cImNvbC5pc0Zyb3plblwiIFtzdHlsZV09XCJjb2wuc3R5bGVcIiBbbmdTdHlsZV09XCJnZXRDb2x1bW5TaXplU3R5bGUoY29sKVwiIHNjb3BlPVwiY29sXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIFtjbGFzcy50c2ktY29sLXdyYXBdPVwic2hvdWxkV3JhcENvbHVtbihjb2wpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLmhhdmVTdW1tYXJ5XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfU09DSUVURV9JTlBVVDsgZWxzZSBjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheSBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiPlxyXG4gICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtRGlzcGxheT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5T3RoZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSBbY3VycmVuY3ldPVwiY29sLmN1cnJlbmN5T3RoZXJDb2RlXCIgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVjaW1hbE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbZm9ybWF0RGVjaW1hbF09XCJjb2wuZm9ybWF0RGVjaW1hbFwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLklOVEVHRVI7IGVsc2UgcmF0ZU91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JhdGVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVJhdGUtRGlzcGxheT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRGVmYXVsdCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3tnZXRTdW1tYXJ5KGNvbCl9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIHt7J1RvdGFsUmVjb3Jkc0NvdW50JyB8IGxvY2FsaXplIH19IHt7Z3JpZERhdGEubGVuZ3RofX1cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRhYmxlPlxyXG4gIDxkaXY+XHJcbiAgICA8VHNpLUJ1dHRvbiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBzdHlsZT1cImhlaWdodDogMjBweDt3aWR0aDogMjBweDtcIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1wbHVzXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9ham91dGVyXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1zdWNjZXNzIHAtYnV0dG9uLXRleHQgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAoY2xpY2spPVwiYWRkUm93KClcIj48L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
926
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy9lZGl0YWJsZS1ncmlkL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvZWRpdGFibGUtZ3JpZC9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdELE1BQU0sa0RBQWtELENBQUM7QUFDeEksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMs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ekIsRUFBRTtzQkFBVixLQUFLO2dCQWdiTixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSwgU29ydEV2ZW50LCBUYWJsZVN0YXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSwgVGFibGVSb3dTZWxlY3RFdmVudCwgVGFibGVSb3dVblNlbGVjdEV2ZW50IH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBydGxNb2RlS2V5cyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9sb2NhbHMuY29uc3QnO1xyXG5pbXBvcnQgeyBCdXR0b25UeXBlLCBHcmlkU2VsZWN0aW9uTW9kZSwgSW5wdXRUeXBlcywgTW9kYWxTaXplRW51bSwgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBwcmVjaXNlQWRkLCBwcmVjaXNlU3VtIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ2VsbENoYW5nZWRSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgUm93QWRkZWRSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24sIENvbGxlY3Rpb25DaGFuZ2VkRXZlbnQsIE9ic2VydmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbGxlY3Rpb24vb2JzZXJ2YWJsZS1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgRW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi9lbnRpdHktdmFsaWRhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS9mb3JtLXN0YXRlJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uV2lkdGhDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWhlbHBlcnMvY29sdW1uLXdpZHRoLmNvbnRyb2xsZXInO1xyXG5pbXBvcnQgeyBHcmlkU2l6aW5nTW9kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2dyaWQtc2l6aW5nLW1vZGUnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbR2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0YWJsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBUc2lJbnB1dEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJzXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbG9jYWwgdmFyc1xyXG4gIHByaXZhdGUgc2F2ZUV2ZW50U3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2lzQXV0b1Jvd051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2F1dG9Sb3dOdW1iZXJGaWVsZDogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFJvd051bWJlcjogbnVtYmVyID0gMDtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcbiAgaXNBcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2dyaWREYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHJpdmF0ZSBfZXF1YXRhYmxlRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3N1bUF0RnVzaW9uRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2VxdWFsaXR5Q2hlY2tPbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Y2U291cmNlUm93OiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdDogUm93QWRkZWRSZXN1bHQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTRUFSQ0hfTEFCRUxfUFJFRklYID0gJ19fc2VhcmNoX2xhYmVsX18nO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIHRoZSBjdXN0b20gUHJpbWVORyBmaWx0ZXIgcmVnaXN0ZXJlZCBmb3IgZ2xvYmFsIHNlYXJjaC5cclxuICAgKiBFeHRlbmRzIHRoZSBidWlsdC1pbiAnY29udGFpbnMnIHdpdGggbG9jYWxlLWF3YXJlIGRlY2ltYWwgbWF0Y2hpbmdcclxuICAgKiAoY29tbWEgdnMgZG90IHNlcGFyYXRvcikgd2hpbGUga2VlcGluZyBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCBmYWxzZVxyXG4gICAqIHBvc2l0aXZlcyBvbiB0ZXh0IGNvbHVtbnMuXHJcbiAgICogQHNlZSBfcmVnaXN0ZXJHcmlkQ29udGFpbnNGaWx0ZXJcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUNJTUFMX0FXQVJFX0NPTlRBSU5TX0ZJTFRFUiA9ICdncmlkLWNvbnRhaW5zJztcclxuICBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlID0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGU7XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuICBpbnB1dFR5cGVzID0gSW5wdXRUeXBlcztcclxuICBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRhYmxlVGFibGVcIikgZWRpdGFibGVUYWJsZT86IFRhYmxlXHJcblxyXG4gIGJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICBASW5wdXQoJ2NvbmZpZ3VyYXRpb24nKSBjb25maWd1cmF0aW9uPzogSUdyaWRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgna2V5Jykga2V5OiBzdHJpbmcgPSAndWlkJztcclxuICBASW5wdXQoKSBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHNhdmVFdmVudD86IE9ic2VydmFibGU8dm9pZD47XHJcbiAgLyoqXHJcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGdsb2JhbCBzZWFyY2ggYmFyIGluIHRoZSBncmlkIGNhcHRpb24uXHJcbiAgICpcclxuICAgKiBXaGVuIGB0cnVlYCwgYSBzZWFyY2ggaW5wdXQgYW5kIGJ1dHRvbiBhcmUgZGlzcGxheWVkLCBhbGxvd2luZyB1c2VycyB0b1xyXG4gICAqIGZpbHRlciByb3dzIGFjcm9zcyBhbGwgdmlzaWJsZSBjb2x1bW5zIHNpbXVsdGFuZW91c2x5LiBTdXBwb3J0cyBwbGFpbiB0ZXh0LFxyXG4gICAqIGRyb3Bkb3duIGxhYmVscyAocmVzb2x2ZWQgdmlhIHNoYWRvdyBmaWVsZHMpLCBhbmQgZGVjaW1hbCB2YWx1ZXMgd2l0aFxyXG4gICAqIGxvY2FsZS1hd2FyZSBjb21tYS9kb3QgbWF0Y2hpbmcuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgIHRvIHByZXNlcnZlIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgZm9yIGFsbCBjb25zdW1lcnNcclxuICAgKiB0aGF0IGRvIG5vdCBleHBsaWNpdGx5IG9wdCBpbiDigJQgZW5hYmxpbmcgaXQgb24gYSBzcGVjaWZpYyBncmlkIGlzIGFzIHNpbXBsZVxyXG4gICAqIGFzIGFkZGluZyBgW3Nob3dHbG9iYWxTZWFyY2hdPVwidHJ1ZVwiYC5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSB0cnVlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93RWRpdEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93Um93U3VtbWFyeTogYm9vbGVhbiA9IGZhbHNlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcblxyXG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJzUwMHB4JztcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsbCAoZGVmYXVsdCk6IHRoZSB0YWJsZSBzdHJldGNoZXMgdG8gZmlsbCBpdHMgY29udGFpbmVyLiBIdWc6IHRoZSB0YWJsZSBzaHJpbmtzIHRvXHJcbiAgICogaXRzIGNvbHVtbnMnIHNpemUgKG5ldmVyIHdpZGVyIHRoYW4gdGhlIGNvbnRhaW5lciksIGxlYXZpbmcgbGVmdG92ZXIgd2lkdGggZW1wdHkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2l6aW5nTW9kZTogR3JpZFNpemluZ01vZGUgPSBHcmlkU2l6aW5nTW9kZS5GaWxsO1xyXG5cclxuICAvKipcclxuICAgKiBTaXppbmcgc3R5bGUgYm91bmQgdG8gdGhlIHAtdGFibGUncyBgW3RhYmxlU3R5bGVdYCDigJQgdGhlIHNpbmdsZSBsZXZlciB0aGF0IGRpc3Rpbmd1aXNoZXNcclxuICAgKiBGaWxsIGZyb20gSHVnIChzZWUgR3JpZFNpemluZ01vZGUpLiBBcHBsaWVkIGlubGluZSBvbiB0aGUgUHJpbWVORyB0YWJsZSwgc28gaXQgYmVhdHNcclxuICAgKiBQcmltZU5HJ3MgZGVmYXVsdCBgLnAtZGF0YXRhYmxlLXRhYmxlIHsgd2lkdGg6IDEwMCUgfWAgd2l0aCBubyBgIWltcG9ydGFudGAvYDo6bmctZGVlcGAuXHJcbiAgICogLSBGaWxsOiBkZWZhdWx0IChubyBmb3JjZWQgd2lkdGg7IFByaW1lTkcgZmlsbHMgdGhlIGNvbnRhaW5lcikuXHJcbiAgICogLSBIdWc6IGB3aWR0aDphdXRvYCBzaHJpbmtzIHRoZSB0YWJsZSB0byBpdHMgY29sdW1uczsgYG1heC13aWR0aDoxMDAlYCBrZWVwcyBpdCBpbnNpZGUgdGhlXHJcbiAgICogICBwYWdlIChvdmVyZmxvdyBzY3JvbGxzKTsgYG1pbi13aWR0aDowYCBhdm9pZHMgYW55IGluaGVyaXRlZCBmbG9vci5cclxuICAgKlxyXG4gICAqIEh1ZyArIGBjb2x1bW5SZXNpemVNb2RlPVwiZXhwYW5kXCJgOiBkcmFnZ2luZyBhIGNvbHVtbiByZXNpemVzIHRoYXQgY29sdW1uLCBidXQgYHdpZHRoOmF1dG9gXHJcbiAgICogaXMgcmUtYXNzZXJ0ZWQgb24gY2hhbmdlIGRldGVjdGlvbiwgc28gdGhlIHRhYmxlIGl0c2VsZiBzdGF5cyBodWdnZWQgYW5kIG5ldmVyIGV4cGFuZHMuXHJcbiAgICovXHJcbiAgZ2V0IHRhYmxlU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXppbmdNb2RlID09PSBHcmlkU2l6aW5nTW9kZS5IdWdcclxuICAgICAgPyB7ICd3aWR0aCc6ICdhdXRvJywgJ21pbi13aWR0aCc6ICcwJywgJ21heC13aWR0aCc6ICcxMDAlJyB9XHJcbiAgICAgIDoge307XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHJvd1BlclBhZ2U6IG51bWJlcltdID0gWzUsIDEwLCAyMF07XHJcbiAgLy8gQElucHV0KCkgaXNQYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSA1XHJcbiAgQElucHV0KCkgZW50aXR5UHJpbWFyeUtleU5hbWUgOiBzdHJpbmcgPSAndWlkJ1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZENvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcblxyXG4gIGdldCBzZWxlY3RlZENvbHVtbnMoKTogQXJyYXk8R3JpZENvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ29sdW1ucztcclxuICB9XHJcblxyXG4gIHNldCBzZWxlY3RlZENvbHVtbnModmFsdWU6IEFycmF5PEdyaWRDb2x1bW4+KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZENvbHVtbnMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3N5bmNHbG9iYWxGaWx0ZXJGaWVsZHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgcHJpdmF0ZSBfdGVtcENvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgcHJpdmF0ZSBfY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgLyoqIENvbHVtbiBvcmRlciBvZiB0aGUgcHJlc2VudGF0aW9uIGxhc3QgcmVzdG9yZWQuIEtlcHQgc28gY29sdW1ucyB0aGF0IG9ubHkgYXJyaXZlIGFmdGVyd2FyZHNcclxuICAgKiAg4oCUIHRoZSBvd25lciBidWlsZHMgb3IgaW5zZXJ0cyB0aGVtIG9uIGFzeW5jIHJlc3BvbnNlcyDigJQgYXJlIGxhaWQgb3V0IHBlciB0aGF0IHNhdmVkIGxheW91dFxyXG4gICAqICBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byBcImV2ZXJ5IGNvbHVtbiwgZGVmYXVsdCBvcmRlclwiLiAqL1xyXG4gIHByaXZhdGUgX3Jlc3RvcmVkQ29sdW1uT3JkZXI/OiBzdHJpbmdbXTtcclxuXHJcbiAgZ2V0IGNvbHVtbnMoKTogQXJyYXk8R3JpZENvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29sdW1ucyh2YWx1ZTogQXJyYXk8R3JpZENvbHVtbj4gfCBPYnNlcnZhYmxlQ29sbGVjdGlvbjxHcmlkQ29sdW1uPikge1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgaXNPYnNlcnZhYmxlID0gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS5pc09ic2VydmFibGVDb2xsZWN0aW9uID09PSB0cnVlO1xyXG4gICAgY29uc3QgaXRlbXMgPSBpc09ic2VydmFibGUgPyAodmFsdWUgYXMgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pLnRvQXJyYXkoKSA6IHZhbHVlIGFzIEFycmF5PEdyaWRDb2x1bW4+O1xyXG4gICAgaXRlbXMuZm9yRWFjaChlbCA9PiBlbC50cmFuc2xhdGVkSGVhZGVyID0gdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybShlbC5oZWFkZXIgPz8gXCJcIikpO1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbLi4uaXRlbXNdO1xyXG4gICAgdGhpcy5fcmVhcHBseVJlc3RvcmVkQ29sdW1uT3JkZXIoKTtcclxuXHJcbiAgICBpZiAoaXNPYnNlcnZhYmxlKSB7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnNDaGFuZ2VkU3Vic2NyaXB0aW9uID0gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS5jaGFuZ2VkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJldmVudCBjaGFuZ2VkID0+IFwiLCBldmVudClcclxuICAgICAgICB0aGlzLl9vbkNvbHVtbnNDaGFuZ2VkKGV2ZW50KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGdyaWREYXRhKGRhdGE6IEFycmF5PGFueT4pIHtcclxuICAgIHRoaXMuX2dyaWREYXRhID0gZGF0YTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuICBnZXQgZ3JpZERhdGEoKSB7IHJldHVybiB0aGlzLl9ncmlkRGF0YTsgfVxyXG5cclxuICBASW5wdXQoKSBpc1RhYmxlTG9hZGluZz86IGJvb2xlYW47XHJcblxyXG5cclxuICBASW5wdXQoKSBwYXJlbnQ6IGFueTtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NhdmVCdXR0b246IGJvb2xlYW4gPSB0cnVlOy8vVE8gRE8gU2F2ZSBCdXR0b24gT3B0aW9uXHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbkNvbHVtbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZVJvd0Rpc2FibGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByb3dTdW1tYXJ5Q29uZmlnOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgQElucHV0KCkgc2hvd0hhdmVTdW1hcnk/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1Jvd1N1bWFyeT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgfCBhbnkgPSBHcmlkU2VsZWN0aW9uTW9kZS5TaW5nbGU7XHJcbiAgQElucHV0KCkgc2hvd0NvbnN1bHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBnZXQgZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyhjbGFzc05hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyA9IGNsYXNzTmFtZTtcclxuICAgIHRoaXMuZ2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2U/LmxvYWRFbnRpdHlWYWxpZGF0aW9uSW5mb3ModGhpcy5fZWRpdGFibGVHcmlkQnVzaW5lc3NDbGFzcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqb3JkZXIgKi9cclxuICBASW5wdXQoKSBvcmRlckNvbHVtbjogc3RyaW5nID0gJ3VpZCc7XHJcblxyXG4gIEBJbnB1dCgpIGRlbGV0ZUxpbmVCdXR0b25EaXNhYmxlZCE6IChpdGVtOiBhbnkpID0+IGFueVxyXG5cclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBPdXRwdXRzXHJcblxyXG4gIEBPdXRwdXQoKSByZWZyZXNoRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy9AT3V0cHV0KCkgYWN0aW9uRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8R3JpZEFjdGlvbkVtaXRSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxHcmlkQWN0aW9uRW1pdFJlc3VsdD4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVEYXRhRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHJvd0NoYW5nZWRFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkZWRSb3dFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PigpXHJcblxyXG4gIEBPdXRwdXQoKSBmb2N1c091dEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY2VsbENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDZWxsQ2hhbmdlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxDaGFuZ2VkUmVzdWx0PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcm93RGVsZXRlZEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0Um93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbnN1bHRDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSByb3dEdXBsaWNhdGVkRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Um93QWRkZWRSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZChcImR0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgZHQ6IFRhYmxlIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2tzIHJvd3MgYnkgdGhlaXIgYnVzaW5lc3Mga2V5IChga2V5YCBpbnB1dCkgc28gUHJpbWVORyByZXVzZXMgZXhpc3Rpbmcgcm93IHZpZXdzXHJcbiAgICogaW5zdGVhZCBvZiBkZXN0cm95aW5nL3JlY3JlYXRpbmcgdGhlbSB3aGVuIHRoZSByb3cgYXJyYXkgaXMgcmVwbGFjZWQgd2l0aCBvYmplY3RzIHNoYXJpbmdcclxuICAgKiB0aGUgc2FtZSBrZXkgKGUuZy4gYWZ0ZXIgYSByZWNhbGN1bGF0aW9uIHRoYXQgY2xvbmVzIHRoZSBkYXRhKS4gV2l0aG91dCB0aGlzLCBldmVyeSBjZWxsXHJcbiAgICogZWRpdG9yIOKAlCBpbmNsdWRpbmcgc2VydmVyLWJhY2tlZCBzZWFyY2ggY29tYm9zIOKAlCBpcyByZS1pbnN0YW50aWF0ZWQgYW5kIHJlLWZldGNoZXMgaXRzIGRhdGEuXHJcbiAgICogRmFsbHMgYmFjayB0byB0aGUgcm93IGluZGV4IHdoZW4gdGhlIGtleSBpcyBhYnNlbnQgKGUuZy4gYnJhbmQtbmV3IHJvd3MpLlxyXG4gICAqIEFycm93IHByb3BlcnR5IHNvIGB0aGlzYCBpcyBwcmVzZXJ2ZWQgd2hlbiBQcmltZU5HIGludm9rZXMgaXQuXHJcbiAgICovXHJcbiAgcm93VHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBhbnkgPT4gaXRlbT8uW3RoaXMua2V5XSA/PyBpbmRleDtcclxuXHJcbiAgcHJpdmF0ZSBfZW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlID0gaW5qZWN0KEVudGl0eVZhbGlkYXRpb25zU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfc3RyaXBlZFJvd3NMYXlvdXRIZWxwZXJTZXJ2aWNlID0gaW5qZWN0KExheW91dEhlbHBlclNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sb2NhbGl6ZVBpcGU6IExvY2FsaXplUGlwZSwgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX3JlZ2lzdGVyR3JpZENvbnRhaW5zRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RyaXBlZFJvd3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RyaXBlZFJvd3NMYXlvdXRIZWxwZXJTZXJ2aWNlLmxheW91dENvbmZpZ3VyYXRpb24uaXNTdHJpcGVkUm93c0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIHRoaXMuX2luaXRTYXZlRXZlbnRTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gICAgdGhpcy5faW5pdEVxdWF0YWJsZUZpZWxkcygpO1xyXG4gICAgdGhpcy5faW5pdFN1bUF0RnVzaW9uRmllbGRzKCk7XHJcbiAgICBcclxuICAgIGxldCBsYW5ndWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShydGxNb2RlS2V5cy5ydGxNb2RlRW5hYmxlZCk7XHJcbiAgICBcclxuICAgIGlmIChsYW5ndWUgJiYgSlNPTi5wYXJzZShsYW5ndWUpKSB7XHJcbiAgICAgIHRoaXMuaXNBciA9IHRydWVcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzQXIgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENvbHVtbnMgfHwgdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl90ZW1wQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcclxuICB9XHJcblxyXG4gIGZpbmRDb2x1bW5CeUtleShrZXk6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY29sdW1ucykge1xyXG4gICAgICBmb3IgKGxldCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5oZWFkZXIgPT09IGtleSB8fCBjb2wuZmllbGQgPT09IGtleSkgcmV0dXJuIGNvbDtcclxuICAgICAgICBlbHNlIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyByZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3RhdGU6IFRhYmxlU3RhdGUgPSBKU09OLnBhcnNlKGNvbmZpZ3VyYXRpb24pXHJcbiAgICB0aGlzLl9yZXN0b3JlZENvbHVtbk9yZGVyID0gc3RhdGUuY29sdW1uT3JkZXIgPz8gdGhpcy5fcmVzdG9yZWRDb2x1bW5PcmRlcjtcclxuICAgIGlmICh0aGlzLmR0KSB7XHJcbiAgICAgIHRoaXMuY29sdW1uV2lkdGguc2V0UmVtZW1iZXJlZChzdGF0ZS5jb2x1bW5XaWR0aHMpO1xyXG4gICAgICB0aGlzLmR0LmNvbHVtbldpZHRoc1N0YXRlID0gc3RhdGUuY29sdW1uV2lkdGhzO1xyXG4gICAgICB0aGlzLmR0LnRhYmxlV2lkdGhTdGF0ZSA9IHN0YXRlLnRhYmxlV2lkdGg7XHJcblxyXG4gICAgICBsZXQgY29sdW1uT3JkZXIgPSBzdGF0ZS5jb2x1bW5PcmRlcjtcclxuXHJcbiAgICAgIGlmIChjb2x1bW5PcmRlcikge1xyXG4gICAgICAgIGxldCByZW9yZGVyZWRDb2x1bW5zID0gdGhpcy5nZXRSZW9yZGVyZWRDb2x1bW5zKGNvbHVtbk9yZGVyKTtcclxuICAgICAgICBpZiAocmVvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHJlb3JkZXJlZENvbHVtbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBcHBseSB0aGUgcmVtZW1iZXJlZCBjb2x1bW4gd2lkdGhzIHRvIHRoZSBET00uIEFzc2lnbmluZyBjb2x1bW5XaWR0aHNTdGF0ZVxyXG4gICAgICAvLyBhbG9uZSBpcyBhIG5vLW9wIGhlcmUgYmVjYXVzZSB0aGUgZ3JpZCBpcyBub3QgUHJpbWVORy1cInN0YXRlZnVsXCIgKG5vIHN0YXRlS2V5KS5cclxuICAgICAgdGhpcy5kdC5yZXN0b3JlQ29sdW1uV2lkdGhzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZW9yZGVyZWRDb2x1bW5zKGNvbHVtbk9yZGVyOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCByZW9yZGVyZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbHVtbk9yZGVyLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgIGxldCBjb2wgPSB0aGlzLmZpbmRDb2x1bW5CeUtleShrZXkpO1xyXG4gICAgICBpZiAoY29sKSB7XHJcbiAgICAgICAgcmVvcmRlcmVkQ29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZW9yZGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3RhdGU6IFRhYmxlU3RhdGUgPSBKU09OLnBhcnNlKGNvbmZpZ3VyYXRpb24pXHJcbiAgICB0aGlzLl9yZXN0b3JlZENvbHVtbk9yZGVyID0gc3RhdGUuY29sdW1uT3JkZXIgPz8gdGhpcy5fcmVzdG9yZWRDb2x1bW5PcmRlcjtcclxuICAgIGlmICh0aGlzLmR0KSB7XHJcbiAgICAgIHRoaXMuY29sdW1uV2lkdGgucmVzZXQoKTtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5zZXRSZW1lbWJlcmVkKHN0YXRlLmNvbHVtbldpZHRocyk7XHJcbiAgICAgIHRoaXMuZHQuY29sdW1uV2lkdGhzU3RhdGUgPSBzdGF0ZS5jb2x1bW5XaWR0aHM7XHJcbiAgICAgIHRoaXMuZHQudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcclxuXHJcbiAgICAgIGxldCBjb2x1bW5PcmRlciA9IHN0YXRlLmNvbHVtbk9yZGVyO1xyXG5cclxuICAgICAgaWYgKGNvbHVtbk9yZGVyKSB7XHJcbiAgICAgICAgbGV0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwID8gcmVvcmRlcmVkQ29sdW1ucyA6IFsuLi50aGlzLl9jb2x1bW5zXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kdC5yZXN0b3JlQ29sdW1uV2lkdGhzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHt9O1xyXG5cclxuICAgIGlmICghdGhpcy5kdCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kdC5yZXNpemFibGVDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuZHQuc2F2ZUNvbHVtbldpZHRocyhzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kdC5zYXZlQ29sdW1uT3JkZXIoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hhcmVkIG1vZGVsIGZvciB0aGUgZGV2ZWxvcGVyLXdpZHRoIC8gd3JhcHBpbmcgLyByZXNpemUtcHJpb3JpdHkgYmVoYXZpb3IuIEFjdGlvbi9idXR0b25cclxuICAgKiBjb2x1bW5zIGFuZCBmcm96ZW4gY29sdW1ucyBhcmUgZXhjbHVkZWQgKGZyb3plbiBjb2x1bW5zIG11c3Qga2VlcCB0aGVpciBzdGlja3ktb2Zmc2V0XHJcbiAgICogd2lkdGggb3IgbGF0ZXIgZnJvemVuIGNvbHVtbnMgbWlzYWxpZ24pOyBhbGwgb3RoZXIgY29sdW1ucyBhcmUgZWxpZ2libGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5XaWR0aCA9IG5ldyBDb2x1bW5XaWR0aENvbnRyb2xsZXIoKGNvbCkgPT4gIWNvbC5pc0J1dHRvbiAmJiAhY29sLmlzRnJvemVuKTtcclxuXHJcbiAgLyoqIFJlbWVtYmVyIHdoaWNoIGNvbHVtbiB0aGUgdXNlciByZXNpemVkIHNvIGl0cyBkZXZlbG9wZXItcHJlZmVycmVkIHdpZHRoIHlpZWxkcy4gKi9cclxuICBvbkNvbFJlc2l6ZShldmVudDogeyBlbGVtZW50PzogSFRNTEVsZW1lbnQ7IGRlbHRhPzogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uV2lkdGgub25SZXNpemUoZXZlbnQ/LmVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1maWVsZCcpKTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGV0aGVyIGEgY29sdW1uJ3MgY29udGVudCBzaG91bGQgd3JhcCB0byBzdGF5IGluc2lkZSBpdHMgY29uc3RyYWluZWQgd2lkdGguICovXHJcbiAgc2hvdWxkV3JhcENvbHVtbihjb2w6IEdyaWRDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbldpZHRoLnNob3VsZFdyYXAoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldmVsb3BlciBzaXplIHN0eWxlIG9ubHksIGJvdW5kIHZpYSBgW25nU3R5bGVdYCBvbiB0aGUgaGVhZGVyL3N1bW1hcnkgY2VsbHMgYWxvbmdzaWRlXHJcbiAgICogdGhlaXIgdW50b3VjaGVkIGBbc3R5bGVdPVwiY29sLnN0eWxlXCJgIChzbyBhIHN0cmluZyBgY29sLnN0eWxlYCBpcyBuZXZlciBzcHJlYWQvYnJva2VuKS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5TaXplU3R5bGUoY29sOiBHcmlkQ29sdW1uKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5XaWR0aC5zaXplU3R5bGUoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKiBCb2R5IGA8dGQ+YCBzdHlsZTogUlRMIGFsaWdubWVudCArIHRvcC1hbGlnbiAoZWxpZ2libGUgY2VsbHMpICsgZGV2ZWxvcGVyIHNpemUgc3R5bGUuICovXHJcbiAgZ2V0Qm9keUNvbHVtblN0eWxlKGNvbDogR3JpZENvbHVtbik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgY29uc3QgYmFzZSA9IHRoaXMuaXNBciA/IHsgJ3RleHQtYWxpZ24nOiAnc3RhcnQnIH0gOiB7fTtcclxuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLnRoaXMuY29sdW1uV2lkdGgudmVydGljYWxBbGlnbihjb2wpLCAuLi50aGlzLmNvbHVtbldpZHRoLnNpemVTdHlsZShjb2wpIH07XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGVsZXRlTGluZUJ1dHRvbkRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWxldGVMaW5lQnV0dG9uRGlzYWJsZWQoaXRlbSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKVxyXG4gICAgdGhpcy5zYXZlRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vbkNvbHVtbnNDaGFuZ2VkKGV2ZW50OiBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50PEdyaWRDb2x1bW4+KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uQWRkOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm5ld0l0ZW1zICYmIGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZXZlbnQubmV3SXRlbXMuZm9yRWFjaChjb2wgPT5cclxuICAgICAgICAgICAgY29sLnRyYW5zbGF0ZWRIZWFkZXIgPSB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGNvbC5oZWFkZXIgPz8gXCJcIilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1uc107XHJcbiAgICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShldmVudC5uZXdTdGFydGluZ0luZGV4LCAwLCAuLi5ldmVudC5uZXdJdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gbmV3Q29sdW1ucztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGMgPT4gcHJldlNlbGVjdGVkLmhhcyhjKSB8fCBldmVudC5uZXdJdGVtcyEuaW5jbHVkZXMoYylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLl9yZWFwcGx5UmVzdG9yZWRDb2x1bW5PcmRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uUmVtb3ZlOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm9sZEl0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCByZW1vdmVkID0gbmV3IFNldChldmVudC5vbGRJdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoYyA9PiAhcmVtb3ZlZC5oYXMoYykpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5maWx0ZXIoYyA9PiAhcmVtb3ZlZC5oYXMoYykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uUmVwbGFjZToge1xyXG4gICAgICAgIGlmIChldmVudC5uZXdJdGVtcyAmJiBldmVudC5vbGRJdGVtcyAmJiBldmVudC5uZXdTdGFydGluZ0luZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGV2ZW50Lm5ld0l0ZW1zLmZvckVhY2goY29sID0+XHJcbiAgICAgICAgICAgIGNvbC50cmFuc2xhdGVkSGVhZGVyID0gdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybShjb2wuaGVhZGVyID8/IFwiXCIpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgcHJldlNlbGVjdGVkID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkQ29sdW1ucyk7XHJcbiAgICAgICAgICBjb25zdCByZW1vdmVkT2xkID0gbmV3IFNldChldmVudC5vbGRJdGVtcyk7XHJcbiAgICAgICAgICBjb25zdCBuZXdDb2x1bW5zID0gWy4uLnRoaXMuX2NvbHVtbnNdO1xyXG4gICAgICAgICAgbmV3Q29sdW1ucy5zcGxpY2UoZXZlbnQubmV3U3RhcnRpbmdJbmRleCwgZXZlbnQub2xkSXRlbXMubGVuZ3RoLCAuLi5ldmVudC5uZXdJdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gbmV3Q29sdW1ucztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGMgPT4gKHByZXZTZWxlY3RlZC5oYXMoYykgJiYgIXJlbW92ZWRPbGQuaGFzKGMpKSB8fCBldmVudC5uZXdJdGVtcyEuaW5jbHVkZXMoYylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLl9yZWFwcGx5UmVzdG9yZWRDb2x1bW5PcmRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uUmVzZXQ6XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICB0aGlzLl9jb2x1bW5zID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmUtYXBwbGllcyB0aGUgc2F2ZWQgcHJlc2VudGF0aW9uIGFmdGVyIHRoZSBjb2x1bW5zIGNoYW5nZWQsIHNvIG9ubHkgdGhlIHNhdmVkIGNvbHVtbnMgcmVuZGVyLFxyXG4gICAqIGluIHRoZSBzYXZlZCBvcmRlci4gTm8tb3AgdW50aWwgYSBsYXlvdXQgaXMgcmVzdG9yZWQsIG9yIHdoaWxlIG5vbmUgb2YgaXRzIGtleXMgcmVzb2x2ZSB5ZXRcclxuICAgKiAoa2VlcHMgdGhlIGRlZmF1bHQgXCJhbGwgY29sdW1uc1wiIGluc3RlYWQgb2YgYW4gZW1wdHkgZ3JpZCkuIFdpZHRocyBuZWVkIG5vIHJlLWFwcGx5OiB0aGVcclxuICAgKiBwb3NpdGlvbmFsIHN0eWxlIFByaW1lTkcgd3JvdGUgaW4gcmVzdG9yZVN0YXRlIG1hdGNoZXMgYWdhaW4gb25jZSB0aGUgc2F2ZWQgb3JkZXIgaXMgYmFjay5cclxuICAgKi9cclxuICBwcml2YXRlIF9yZWFwcGx5UmVzdG9yZWRDb2x1bW5PcmRlcigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fcmVzdG9yZWRDb2x1bW5PcmRlcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnModGhpcy5fcmVzdG9yZWRDb2x1bW5PcmRlcik7XHJcbiAgICBpZiAocmVvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVJdGVtcygpIHtcclxuICAgIGNvbnN0IGNsZWFuID0gdGhpcy5fY2xlYW5HcmlkRGF0YUZvckVtaXQoKTtcclxuICAgIHRoaXMuc2F2ZURhdGFFdmVudEVtaXR0ZXIuZW1pdChjbGVhbik7XHJcbiAgfVxyXG5cclxuICBhZGRSb3coKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZERhdGEpIHtcclxuICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld1JvdyA9IHRoaXMuX2luaXRSb3coKVxyXG4gICAgdGhpcy5ncmlkRGF0YS5wdXNoKG5ld1JvdylcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgIGxldCByb3dBZGRlZFJlc3VsdDogUm93QWRkZWRSZXN1bHQgPSB7XHJcbiAgICAgIHJvd051bWJlcjogdGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxLFxyXG4gICAgICBkYXRhOiBuZXdSb3dcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlVGFibGU/LnZhbHVlLnB1c2gobmV3Um93KVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpXHJcbiAgICB0aGlzLmFkZGVkUm93RXZlbnRFbWl0dGVyLmVtaXQocm93QWRkZWRSZXN1bHQpXHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVSb3coaXRlbTogYW55LCB1cGRhdGVTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlLCBza2lwRW1pdDogYm9vbGVhbiA9IGZhbHNlKTogUm93QWRkZWRSZXN1bHQgfCBudWxsIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgZHVwbGljYXRlZFJvdyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgZHVwbGljYXRlZFJvd1t0aGlzLmVudGl0eVByaW1hcnlLZXlOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wuZXhjbHVkZU9uRHVwbGljYXRlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkdXBsaWNhdGVkUm93LCBjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgZHVwbGljYXRlZFJvd1tjb2wuZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlcikge1xyXG4gICAgICBkdXBsaWNhdGVkUm93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPSB0aGlzLl9uZXh0Um93TnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdGFibGVUYWJsZT8uc29ydEZpZWxkICYmIHRoaXMuZWRpdGFibGVUYWJsZS5zb3J0T3JkZXIpIHtcclxuICAgICAgY29uc3QgdGFibGVJbmRleCA9IHRoaXMuZWRpdGFibGVUYWJsZS52YWx1ZS5pbmRleE9mKGl0ZW0sIDApO1xyXG4gICAgICBpZiAodGFibGVJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLnNwbGljZSh0YWJsZUluZGV4ICsgMSwgMCwgZHVwbGljYXRlZFJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLnB1c2goZHVwbGljYXRlZFJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRhSW5kZXggPSB0aGlzLmdyaWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICBpZiAoZGF0YUluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5ncmlkRGF0YS5zcGxpY2UoZGF0YUluZGV4ICsgMSwgMCwgZHVwbGljYXRlZFJvdyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWREYXRhLnB1c2goZHVwbGljYXRlZFJvdyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaFNvcnQoKTtcclxuXHJcbiAgICBpZiAodXBkYXRlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZHVwbGljYXRlZFJvdztcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25Nb2RlID09IEdyaWRTZWxlY3Rpb25Nb2RlLk11bHRpcGxlXHJcbiAgICAgICAgPyBbZHVwbGljYXRlZFJvd11cclxuICAgICAgICA6IGR1cGxpY2F0ZWRSb3c7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzdWx0OiBSb3dBZGRlZFJlc3VsdCA9IHtcclxuICAgICAgcm93TnVtYmVyOiB0aGlzLmdyaWREYXRhLmluZGV4T2YoZHVwbGljYXRlZFJvdyksXHJcbiAgICAgIGRhdGE6IGR1cGxpY2F0ZWRSb3dcclxuICAgIH07XHJcblxyXG4gICAgaWYgKCFza2lwRW1pdCkge1xyXG4gICAgICB0aGlzLmFkZGVkUm93RXZlbnRFbWl0dGVyLmVtaXQocmVzdWx0KTtcclxuICAgICAgdGhpcy5yb3dEdXBsaWNhdGVkRXZlbnRFbWl0dGVyLmVtaXQocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFNvcnQoKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQpIHtcclxuICAgICAgY29uc3Qgc29ydEZpZWxkID0gdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRGaWVsZDtcclxuICAgICAgY29uc3Qgc29ydE9yZGVyID0gdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcjtcclxuXHJcbiAgICAgIHRoaXMuZ3JpZERhdGEuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQSA9IGFbc29ydEZpZWxkXTtcclxuICAgICAgICBjb25zdCB2YWx1ZUIgPSBiW3NvcnRGaWVsZF07XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlQSA+IHZhbHVlQikgcmVzdWx0ID0gMTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAqIHNvcnRPcmRlcjtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmdyaWREYXRhID0gWy4uLnRoaXMuZ3JpZERhdGFdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZWRpdGFibGVUYWJsZT8uc29ydEZpZWxkICYmIHRoaXMuZWRpdGFibGVUYWJsZS5zb3J0TW9kZSkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZWRpdGFibGVUYWJsZS52YWx1ZS5pbmRleE9mKGl0ZW0sIDApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuZWRpdGFibGVUYWJsZS52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncmlkRGF0YS5pbmRleE9mKGl0ZW0sIDApO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5ncmlkRGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmlzRGlydHkgPSB0cnVlXHJcbiAgICAgIHRoaXMuX29uRGVsZXRlUm93KGl0ZW0pO1xyXG4gICAgICB0aGlzLnJvd0RlbGV0ZWRFdmVudEVtaXR0ZXIuZW1pdCh0aGlzLl9jbGVhbkdyaWREYXRhRm9yRW1pdCgpKVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpXHJcbiAgfVxyXG5cclxuICBnZXRTdW1tYXJ5KGNvbDogR3JpZENvbHVtbik6IG51bWJlciB7XHJcbiAgICBpZiAoY29sLmhhdmVTdW1tYXJ5ID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHByZWNpc2VTdW0oKHRoaXMuZ3JpZERhdGEgPz8gW10pLm1hcCgocm93OiBhbnkpID0+IHJvd1tjb2wuZmllbGRdKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIHJvd1N1bW1hcnkocm93OiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHByZWNpc2VTdW0odGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnJvd1N1bW1hcnkgPT0gdHJ1ZSkubWFwKGNvbCA9PiByb3dbY29sLmZpZWxkXSkpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dTZWxlY3RlZChldmVudDogVGFibGVSb3dTZWxlY3RFdmVudCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBldmVudC5kYXRhO1xyXG4gICAgdGhpcy5fZjZTb3VyY2VSb3cgPSBudWxsO1xyXG4gICAgdGhpcy5fY2FuY2VsUGVuZGluZ0R1cGxpY2F0ZUVtaXQoKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdEtleU9ubHkgPT0gdHJ1ZSkge1xyXG4gICAgICBsZXQgc2VsZWN0aW9uS2V5OiBhbnk7XHJcbiAgICAgIHNlbGVjdGlvbktleSA9IHRoaXMuc2VsZWN0ZWRJdGVtW3RoaXMua2V5XTtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHNlbGVjdGlvbktleSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJvd1Vuc2VsZWN0KGV2ZW50OiBUYWJsZVJvd1VuU2VsZWN0RXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fZjZTb3VyY2VSb3cgPSBudWxsO1xyXG4gICAgdGhpcy5fY2FuY2VsUGVuZGluZ0R1cGxpY2F0ZUVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGlvbkNoYW5nZShldmVudDogYW55KSB7XHJcblxyXG4gICAgbGV0IHNlbGVjdGlvbjogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09IEdyaWRTZWxlY3Rpb25Nb2RlLk11bHRpcGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RLZXlPbmx5KSB7XHJcbiAgICAgICAgICBsZXQga2V5czogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKHY6IGFueSkgPT4geyBrZXlzLnB1c2godlt0aGlzLmtleV0pIH0pO1xyXG4gICAgICAgICAgc2VsZWN0aW9uID0ga2V5cztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuU2luZ2xlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdEtleU9ubHkpIHtcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkSXRlbXMgPyBbdGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMua2V5XV0gOiBbXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkSXRlbXMgPyBbdGhpcy5zZWxlY3RlZEl0ZW1zXSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHNlbGVjdGlvbilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlR3JpZEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdGNicpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuX2Y2U291cmNlUm93ID8/IHRoaXMuc2VsZWN0ZWRJdGVtO1xyXG4gICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgaXNGaXJzdER1cGxpY2F0ZSA9ICF0aGlzLl9mNlNvdXJjZVJvdztcclxuICAgICAgdGhpcy5fZjZTb3VyY2VSb3cgPSBzb3VyY2U7XHJcblxyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmR1cGxpY2F0ZVJvdyhzb3VyY2UsIGlzRmlyc3REdXBsaWNhdGUsIHRydWUpO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCAmJiAhdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lciA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuYWRkZWRSb3dFdmVudEVtaXR0ZXIuZW1pdCh0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0KTtcclxuICAgICAgICAgIHRoaXMucm93RHVwbGljYXRlZEV2ZW50RW1pdHRlci5lbWl0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQpO1xyXG4gICAgICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1c091dFJvdyhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuZm9jdXNPdXRSb3cuZW1pdChpdGVtKTtcclxuICB9XHJcblxyXG4gIGN1c3RvbVNvcnQoZXZlbnQ6IFNvcnRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgIT0gbnVsbCAmJiBldmVudC5kYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBldmVudC5kYXRhLnNvcnQoKGRhdGExLCBkYXRhMikgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5maWVsZCAhPSBudWxsICYmIGV2ZW50LmZpZWxkICE9IHVuZGVmaW5lZCAmJiBldmVudC5vcmRlcikge1xyXG4gICAgICAgICAgbGV0IHZhbHVlMSA9IGRhdGExW2V2ZW50LmZpZWxkXTtcclxuICAgICAgICAgIGxldCB2YWx1ZTIgPSBkYXRhMltldmVudC5maWVsZF07XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuXHJcbiAgICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmVzdWx0ID0gMDtcclxuICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXN1bHQgPSAodmFsdWUxIDwgdmFsdWUyKSA/IC0xIDogKHZhbHVlMSA+IHZhbHVlMikgPyAxIDogMDtcclxuXHJcbiAgICAgICAgICByZXR1cm4gKGV2ZW50Lm9yZGVyICogcmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3VsdChrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNvbnN1bHRDbGlja2VkLmVtaXQoa2V5KTtcclxuICB9XHJcblxyXG4gIG9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sOiBHcmlkQ29sdW1uLCBsYWJlbDogc3RyaW5nLCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGl0ZW1bdGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKV0gPSBsYWJlbDtcclxuICB9XHJcblxyXG4gIG9uQ2VsbFZhbHVlQ2hhbmdlZChjb2w6IEdyaWRDb2x1bW4sIG5ld1ZhbHVlOiBhbnksIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgLy8gTWFyayB0aGUgZ3JpZCBpdHNlbGYgZGlydHkgb24gYW55IGdlbnVpbmUgY2VsbCBlZGl0LiBUaGUgZ3JpZCBpbnN0YW5jZSBsaXZlc1xyXG4gICAgLy8gZm9yIHRoZSB3aG9sZSBmb3JtIGxpZmV0aW1lLCBzbyB0aGlzIGZsYWcgc3Vydml2ZXMgcm93LWRhdGEgcmVhc3NpZ25tZW50XHJcbiAgICAvLyBkdXJpbmcgcmVjYWxjdWxhdGlvbiAod2hlcmUgdHJhbnNpZW50IGNlbGwgaW5wdXRzIGFyZSByZWNyZWF0ZWQgYW5kIGxvc2VcclxuICAgIC8vIHRoZWlyIG93biBpc0RpcnR5KSwga2VlcGluZyB0aGUgc2F2ZS10aW1lIGNoYW5nZSBkZXRlY3Rpb24gYWNjdXJhdGUuXHJcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xyXG4gICAgaWYgKGNvbC50eXBlID09PSBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyAmJiBuZXdWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIGRlbGV0ZSBpdGVtW3RoaXMuX2dldFNoYWRvd1NlYXJjaENvbHVtbkxhYmVsKGNvbCldO1xyXG4gICAgfVxyXG4gICAgLy8gc2VuZCBldmVudHNcclxuICAgIGlmIChjb2wud2F0Y2hGb3JDaGFuZ2VzID09PSB0cnVlKSB7XHJcblxyXG4gICAgICBsZXQgY2VsbENoYW5nZWRSZXN1bHQ6IENlbGxDaGFuZ2VkUmVzdWx0ID0ge1xyXG4gICAgICAgIGtleTogaXRlbVt0aGlzLmtleV0sXHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNlbGxDaGFuZ2VkLmVtaXQoY2VsbENoYW5nZWRSZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlY2FsY3VsYXRlIGN1cnJlbnRSb3dOdW1iZXJcclxuICAgIGlmIChjb2wuZmllbGQgPT09IHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCkge1xyXG4gICAgICB0aGlzLl9vcmRlckJ5Um93TnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2hlY2sgZm9yIGR1cGxpY2F0ZWQgcm93c1xyXG4gICAgLy8gaWYodGhpcy5fZXF1YWxpdHlDaGVja09uICYmIGNvbC5pc0VxdWF0YWJsZUNyaXRlcmlhKXtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ2ZvdW5kIGVxdWF0YWJsZSA6IGNvbDonLCBjb2wsICdyb3cgOiAnLCBpdGVtKTtcclxuICAgIC8vICAgdGhpcy5fdHJ5RmluZEVxdWF0YWJsZShpdGVtKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVGb3JtU3RhdGUoZm9ybVN0YXRlOiBGb3JtU3RhdGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5nZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZS51cGRhdGVGb3JtU3RhdGUoZm9ybVN0YXRlKTtcclxuICB9XHJcblxyXG4gIGFwcGx5R2xvYmFsU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kdD8uZmlsdGVyR2xvYmFsKHRoaXMuc2VhcmNoVmFsdWUsIEVkaXRhYmxlR3JpZENvbXBvbmVudC5ERUNJTUFMX0FXQVJFX0NPTlRBSU5TX0ZJTFRFUik7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcblxyXG4gIHByaXZhdGUgX2luaXRSb3coKSB7XHJcbiAgICBsZXQgbmV3Um93OiBhbnkgPSB7fTtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUXHJcbiAgICAgICAgICB8fCBjb2wudHlwZSA9PSBJbnB1dFR5cGVzLlJBVEVfSU5QVVRcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuSU5URUdFUlxyXG4gICAgICAgICAgfHwgY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUXHJcbiAgICAgICAgICB8fCBjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUKSB7XHJcbiAgICAgICAgICBuZXdSb3dbY29sLmZpZWxkXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbC50eXBlID09IElucHV0VHlwZXMuQ0hFQ0tCT1gpIHtcclxuICAgICAgICAgIG5ld1Jvd1tjb2wuZmllbGRdID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbmV3Um93W2NvbC5maWVsZF0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9pc0F1dG9Sb3dOdW1iZXIgPT09IHRydWUpIHtcclxuICAgICAgICBuZXdSb3dbdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXSA9IHRoaXMuX25leHRSb3dOdW1iZXIoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Um93XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3Um93O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFNhdmVFdmVudFN1YnNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMuc2F2ZUV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5zYXZlRXZlbnQ/LnN1YnNjcmliZShcclxuICAgICAgKCkgPT4gdGhpcy5zYXZlSXRlbXMoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKSB7XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zID09IG51bGxcclxuICAgICAgfHwgdGhpcy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyaWQgY29sdW1ucyBjYW5cXCd0IGJlIG51bGwnKVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsZXQgcm93TnVtYmVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlzQXV0b1Jvd051bWJlckNvbHVtbiA9PT0gdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHJvd051bWJlckNvbHVtbnMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dyaWQgY29sdW1ucyBjYW5cXCd0IGhhdmUgbW9yZSB0aGFuIG9uZSBSb3dOdW1iZXJDb2x1bW4nKVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAocm93TnVtYmVyQ29sdW1ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICB0aGlzLl9pc0F1dG9Sb3dOdW1iZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9hdXRvUm93TnVtYmVyRmllbGQgPSByb3dOdW1iZXJDb2x1bW5zWzBdLmZpZWxkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEN1cnJlbnRSb3dOdW1iZXJBbmRPcmRlckJ5Um93TnVtYmVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlciA9PT0gdHJ1ZVxyXG4gICAgICAmJiB0aGlzLl9hdXRvUm93TnVtYmVyRmllbGQgIT0gdW5kZWZpbmVkXHJcbiAgICAgICYmIHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCAhPSBudWxsXHJcbiAgICAgICYmIHRoaXMuZ3JpZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLl9vcmRlckJ5Um93TnVtYmVyKCk7XHJcblxyXG4gICAgICB0aGlzLl9jdXJyZW50Um93TnVtYmVyID0gdGhpcy5ncmlkRGF0YVt0aGlzLmdyaWREYXRhLmxlbmd0aCAtIDFdW3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uZXh0Um93TnVtYmVyKCk6IG51bWJlciB7XHJcbiAgICB0aGlzLl9jdXJyZW50Um93TnVtYmVyID0gdGhpcy5ncmlkRGF0YS5sZW5ndGggKyAxO1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vbkRlbGV0ZVJvdyhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHJvd1t0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdID09PSB0aGlzLl9jdXJyZW50Um93TnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXItLTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29yZGVyQnlSb3dOdW1iZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyaWREYXRhLnNvcnQoKGEsIGIpID0+IHsgcmV0dXJuIGFbdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXSAtIGJbdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0RXF1YXRhYmxlRmllbGRzKCk6IHZvaWQge1xyXG4gICAgbGV0IGVxdWF0YWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5pc0VxdWF0YWJsZUNyaXRlcmlhID09IHRydWUpO1xyXG4gICAgaWYgKGVxdWF0YWJsZUNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5fZXF1YWxpdHlDaGVja09uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fZXF1YXRhYmxlRmllbGRzID0gZXF1YXRhYmxlQ29sdW1ucy5tYXAoYyA9PiBjLmZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRTdW1BdEZ1c2lvbkZpZWxkcygpOiB2b2lkIHtcclxuICAgIGxldCBzdW1BdEZ1c2lvbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5pc1N1bUF0RnVzaW9uID09IHRydWUpO1xyXG4gICAgaWYgKHN1bUF0RnVzaW9uQ29sdW1ucykge1xyXG4gICAgICB0aGlzLl9lcXVhbGl0eUNoZWNrT24gPSB0cnVlO1xyXG4gICAgICB0aGlzLl9zdW1BdEZ1c2lvbkZpZWxkcyA9IHN1bUF0RnVzaW9uQ29sdW1ucy5tYXAoYyA9PiBjLmZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyeUZpbmRFcXVhdGFibGUocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBmb3VuZEVxdWFsUm93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5ncmlkRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zb2xlLmxvZygncHJvYyByb3cgOiAnLCB0aGlzLmdyaWREYXRhW2ldKTtcclxuICAgICAgbGV0IGlzQ3VycmVudFJvd0VxdWFsOiBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fZXF1YXRhYmxlRmllbGRzPy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdwcm9jIGZpZWxkIDogJywgZik7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZERhdGFbaV1bZl0gIT0gcm93W2ZdKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnbm90IGVxdWFsICcsIHJvdywgdGhpcy5ncmlkRGF0YVtpXSk7XHJcbiAgICAgICAgICBpc0N1cnJlbnRSb3dFcXVhbCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChpc0N1cnJlbnRSb3dFcXVhbCkge1xyXG4gICAgICAgIHRoaXMuX2Z1c2lvblJvd3ModGhpcy5ncmlkRGF0YVtpXSwgcm93KTtcclxuICAgICAgICBmb3VuZEVxdWFsUm93ID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGZvdW5kRXF1YWxSb3cpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2RlbGV0aW5nIDogJywgcm93KTtcclxuICAgICAgdGhpcy5kZWxldGUocm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Z1c2lvblJvd3Mocm93MTogYW55LCByb3cyOiBhbnkpIHtcclxuICAgIHRoaXMuX3N1bUF0RnVzaW9uRmllbGRzPy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICByb3cxW2ZdID0gcHJlY2lzZUFkZChyb3cxW2ZdLCByb3cyW2ZdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FuY2VsUGVuZGluZ0R1cGxpY2F0ZUVtaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyKTtcclxuICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jR2xvYmFsRmlsdGVyRmllbGRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5zZWxlY3RlZENvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbC50eXBlID09PSBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTykge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHRoaXMuX2dldFNoYWRvd1NlYXJjaENvbHVtbkxhYmVsKGNvbCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKGNvbC5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzID0gZmllbGRzO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIF9yZWdpc3RlckdyaWRDb250YWluc0ZpbHRlcigpOiB2b2lkIHtcclxuICAgIC8vIEN1c3RvbSBQcmltZU5HIGZpbHRlciB1c2VkIGJ5IGFwcGx5R2xvYmFsU2VhcmNoKCkgaW5zdGVhZCBvZiB0aGUgYnVpbHQtaW4gJ2NvbnRhaW5zJy5cclxuICAgIC8vIEV4dGVuZHMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdpdGggbG9jYWxlLWF3YXJlIGRlY2ltYWwgbWF0Y2hpbmc6XHJcbiAgICAvLyBhIHVzZXIgaW4gRlIvQVIgbG9jYWxlIHR5cGVzIFwiMTEsMjVcIiBidXQgdGhlIHN0b3JlZCBKUyBudW1iZXIgc3RyaW5naWZpZXMgYXMgXCIxMS4yNVwiLFxyXG4gICAgLy8gc28gYSBwbGFpbiAnY29udGFpbnMnIGNoZWNrIHdvdWxkIG1pc3MgaXQuXHJcbiAgICB0aGlzLl9maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKEVkaXRhYmxlR3JpZENvbXBvbmVudC5ERUNJTUFMX0FXQVJFX0NPTlRBSU5TX0ZJTFRFUiwgKHZhbHVlOiBhbnksIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCB8fCBmaWx0ZXIudHJpbSgpID09PSAnJykgcmV0dXJuIHRydWU7XHJcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBzdHJWYWx1ZSA9IFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3Qgc3RyRmlsdGVyID0gZmlsdGVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgLy8gU3RlcCAxIOKAlCBkaXJlY3QgbWF0Y2ggKGhhbmRsZXMgYWxsIHRleHQgY29sdW1ucyBhbmQgZXhhY3QgbnVtZXJpYyBtYXRjaGVzKVxyXG4gICAgICBpZiAoc3RyVmFsdWUuaW5jbHVkZXMoc3RyRmlsdGVyKSkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAvLyBTdGVwIDIg4oCUIGRlY2ltYWwgY29tbWHihpRkb3Qgbm9ybWFsaXphdGlvbi5cclxuICAgICAgLy8gVHdvIGd1YXJkcyBtdXN0IGJvdGggcGFzcyBiZWZvcmUgbm9ybWFsaXppbmc6XHJcbiAgICAgIC8vICAg4oCiIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgIOKGkiBvbmx5IHJ1biBvbiBhY3R1YWwgbnVtZXJpYyB2YWx1ZXM7IHRleHQgY29sdW1uc1xyXG4gICAgICAvLyAgICAgY29udGFpbmluZyBkb3RzIChlLmcuIHByb2R1Y3QgY29kZXMgbGlrZSBcIkhQLlhZWlwiKSBhcmUgbmV2ZXIgdG91Y2hlZC5cclxuICAgICAgLy8gICDigKIgL15cXGQrWywuXVxcZCskLyAgICAgICAgICAgIOKGkiBmaWx0ZXIgbXVzdCBsb29rIGxpa2UgYSBkZWNpbWFsIG51bWJlcjpcclxuICAgICAgLy8gICAgICAgXlxcZCsgICBvbmUgb3IgbW9yZSBkaWdpdHMgYmVmb3JlIHRoZSBzZXBhcmF0b3JcclxuICAgICAgLy8gICAgICAgWywuXSAgIGV4YWN0bHkgb25lIHNlcGFyYXRvciwgY29tbWEgb3IgZG90XHJcbiAgICAgIC8vICAgICAgIFxcZCskICAgb25lIG9yIG1vcmUgZGlnaXRzIGFmdGVyIHRoZSBzZXBhcmF0b3JcclxuICAgICAgLy8gICAgIFRoaXMgcmVqZWN0cyBmcmVlLXRleHQgZmlsdGVycyB0aGF0IGhhcHBlbiB0byBjb250YWluIGEgY29tbWEgKFwiQ2Fpc3NlLCBGcmFuY2VcIilcclxuICAgICAgLy8gICAgIGFuZCBpbmNvbXBsZXRlIGlucHV0cyAoXCIxMSxcIiAvIFwiLDI1XCIpLlxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAvXlxcZCtbLC5dXFxkKyQvLnRlc3Qoc3RyRmlsdGVyKSkge1xyXG4gICAgICAgIHJldHVybiBzdHJWYWx1ZS5pbmNsdWRlcyhzdHJGaWx0ZXIucmVwbGFjZSgnLCcsICcuJykpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NsZWFuR3JpZERhdGFGb3JFbWl0KCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWREYXRhLm1hcChyb3cgPT4ge1xyXG4gICAgICBjb25zdCBjbGVhbjogYW55ID0ge307XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJvdykpIHtcclxuICAgICAgICBpZiAoIWtleS5zdGFydHNXaXRoKEVkaXRhYmxlR3JpZENvbXBvbmVudC5TRUFSQ0hfTEFCRUxfUFJFRklYKSkge1xyXG4gICAgICAgICAgY2xlYW5ba2V5XSA9IHJvd1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY2xlYW47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFNoYWRvd1NlYXJjaENvbHVtbkxhYmVsKGNvbHVtbjogR3JpZENvbHVtbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7RWRpdGFibGVHcmlkQ29tcG9uZW50LlNFQVJDSF9MQUJFTF9QUkVGSVh9JHtjb2x1bW4uZmllbGR9YDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICA8cC10YWJsZSAjZHQgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCIgZWRpdE1vZGU9XCJyb3dcIlxyXG4gICAgW3BhZ2luYXRvcl09XCJncmlkRGF0YS5sZW5ndGggPiBwYWdlU2l6ZVwiIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93UGVyUGFnZVwiIFtyb3dzXT1cInBhZ2VTaXplXCJcclxuICAgIChvblJvd1NlbGVjdCk9XCJvblJvd1NlbGVjdGVkKCRldmVudClcIiAob25Sb3dVbnNlbGVjdCk9XCJvblJvd1Vuc2VsZWN0KCRldmVudClcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgIChvbkNvbFJlc2l6ZSk9XCJvbkNvbFJlc2l6ZSgkZXZlbnQpXCJcclxuICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIiBjb2x1bW5SZXNpemVNb2RlPVwiZXhwYW5kXCIgYXBwZW5kVG89XCJib2R5XCIgW3ZhbHVlXT1cImdyaWREYXRhXCJcclxuICAgIFtjb2x1bW5zXT1cInNlbGVjdGVkQ29sdW1uc1wiIFtkYXRhS2V5XT1cImtleVwiIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCIgW3N0eWxlQ2xhc3NdPVwiJ3AtZGF0YXRhYmxlLXNtIHAtZGF0YXRhYmxlLWdyaWRsaW5lcycgKyAoc3RyaXBlZFJvd3MgPyAnIHAtZGF0YXRhYmxlLXN0cmlwZWQnIDogJycpXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIiAjZWRpdGFibGVUYWJsZSBbdG90YWxSZWNvcmRzXT1cImdyaWREYXRhLmxlbmd0aFwiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiIFtyb3dUcmFja0J5XT1cInJvd1RyYWNrQnlcIiBbdGFibGVTdHlsZV09XCJ0YWJsZVN0eWxlXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC01IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiY29sdW1uc1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSB7eyAnY29sdW1uc19zZWxlY3RlZCcgfCBsb2NhbGl6ZSB9fVwiIG9wdGlvbkxhYmVsPVwidHJhbnNsYXRlZEhlYWRlclwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieydtaW4td2lkdGgnOiAnMTgwcHgnfVwiIHBsYWNlaG9sZGVyPVwie3sgJ2Nob29zZV9jb2x1bW5zJyB8IGxvY2FsaXplIH19XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi5oZWFkZXIgfCBsb2NhbGl6ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHbG9iYWxTZWFyY2hcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHctOFwiPlxyXG4gICAgICAgICAgPGRpdiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJnbG9iYWxfc2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0Z3JvdXAgcnRsLW1vZGUgaC0ycmVtIG5vLXBhZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwSW5wdXRUZXh0IGNsYXNzPVwiYm9yZGVyLXJvdW5kLWxnXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NoYXJlZF9lZGl0dGFibGVfc2VhcmNoX3BsYWNlaG9sZGVyJyB8IGxvY2FsaXplXCIgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlHbG9iYWxTZWFyY2goKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNlYXJjaF9idXR0b25cIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gc3R5bGVDbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktc2VhcmNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc2VhcmNoXCJcclxuICAgICAgICAgICAgICAob25DbGljayk9XCJhcHBseUdsb2JhbFNlYXJjaCgpXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uTW9kZSAhPSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjJyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6MnJlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIj5cclxuICAgICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggI3RhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcblxyXG4gICAgICAgIDwhLS0gPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90aD4gLS0+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEdXBsaWNhdGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG5cclxuICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgW3N0eWxlXT1cImNvbC5zdHlsZVwiIFtuZ1N0eWxlXT1cImdldENvbHVtblNpemVTdHlsZShjb2wpXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW2NsYXNzLnRzaS1jb2wtd3JhcF09XCJzaG91bGRXcmFwQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTtcIiBwU29ydGFibGVDb2x1bW49XCJ7e2NvbC5maWVsZH19XCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIHBUb29sdGlwPVwie3tjb2wudG9vbFRpcFRleHQgfCBsb2NhbGl6ZSB9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIHBSZW9yZGVyYWJsZUNvbHVtbj57eyBjb2wuaGVhZGVyIHwgbG9jYWxpemVcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInt7Y29sLmZpZWxkfX1cIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICA8VHNpLUJ1YmJsZS1JbmZvIFtpbmZvVGV4dF09XCJjb2wuaW5mb1RleHQgfCBsb2NhbGl6ZVwiPjwvVHNpLUJ1YmJsZS1JbmZvPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoIHN0eWxlPVwibWluLXdpZHRoOjNyZW1cIiAqbmdJZj1cInNob3dSb3dTdW1tYXJ5XCIgc2NvcGU9XCJjb2xcIj57eydSb3dTdW1tYXJ5JyB8IGxvY2FsaXplfX08L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1lZGl0aW5nPVwiZWRpdGluZ1wiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgIFxyXG4gICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJpdGVtXCJcclxuICAgICAgICAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZSB8fCBzZWxlY3Rpb25Nb2RlID09IHVuZGVmaW5lZDsgZWxzZSBzZWxlY3Rpb25Nb2RlQmxvY2tcIlxyXG4gICAgICAgIChmb2N1c091dCk9XCJvbkZvY3VzT3V0Um93KGl0ZW0pXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiID48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RWRpdEJ1dHRvblwiIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBJbml0RWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0aW5nXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBwU2F2ZUVkaXRhYmxlUm93IGljb249XCJwaSBwaS1jaGVja1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBDYW5jZWxFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzY29wZT1cImNvbFwiIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfZHVwbGlxdWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiZHVwbGljYXRlUm93KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHN0eWxlPVwibGVmdDogLTFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tY29uc3VsdC1zdHlsZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2NvbnN1bHRlclwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY29uc3VsdChpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tZGVsZXRlLXN0eWxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtkaXNhYmxlZF09XCJpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW0pXCIgdHlwZT1cImJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXRyYXNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc3VwcHJpbWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcblxyXG4gICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIFtjbGFzcy50c2ktY29sLXdyYXBdPVwic2hvdWxkV3JhcENvbHVtbihjb2wpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5kaXNwbGF5T25seSB8fCBkaXNhYmxlZDsgZWxzZSBvcmRpbmFyeUJsb2NcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNvcmRpbmFyeUJsb2M+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlNFQVJDSF9DT01CTzsgZWxzZSBjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbbGlzdFNvdXJjZVVybF09XCJjb2wubGlzdFNvdXJjZVVybFwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiXHJcbiAgICAgICAgICAgICAgICBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIChiaW5kQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCIgW3Nob3dVcGRhdGVCdXR0b25dPVwiY29sLnNob3dVcGRhdGVCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRMYWJlbENoYW5nZSk9XCJvbkNlbGxMYWJlbFJlc29sdmVkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGF0ZVBpY2tlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREFURTsgZWxzZSBjaGVja0JveElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ2hlY2tCb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tCb3hJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIiBcclxuICAgICAgICAgICAgICAgICAgW2lzQmluYXJ5XT1cImNvbC5pc0JpbmFyeSA/PyBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLUlucHV0IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSB0aW1lSW5wdXRCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtcGlja2VyIGJsb2MgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZUlucHV0QmxvYz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FOyBlbHNlIGZvcm11bGFJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLTxUc2ktQnViYmxlLUluZm9cclxuICAgICAgICAgICAgICAgICAgW2luZm9UZXh0XT1cIlsnZm9ybXVsYV9leHBsaWNhdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgIF1cIj48L1RzaS1CdWJibGUtSW5mbz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAge3tyb3dTdW1tYXJ5KGl0ZW0pfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Nb2RlQmxvY2s+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDx0ciBbcEVkaXRhYmxlUm93XT1cIml0ZW1cIiBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiIFtwU2VsZWN0YWJsZVJvd0luZGV4XT1cInJvd0luZGV4XCJcclxuICAgICAgICAgICAgKGZvY3VzT3V0KT1cIm9uRm9jdXNPdXRSb3coaXRlbSlcIj5cclxuXHJcbiAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiIHN0eWxlPVwid2lkdGg6IDJyZW07XCI+XHJcbiAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAjdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtO2xlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcEluaXRFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktcGVuY2lsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBTYXZlRWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcENhbmNlbEVkaXRhYmxlUm93IGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIHBSZXNpemFibGVDb2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2R1cGxpcXVlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mb1wiIChjbGljayk9XCJkdXBsaWNhdGVSb3coaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBwUmVzaXphYmxlQ29sdW1uICpuZ0lmPVwic2hvd0NvbnN1bHRCdXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTEgYnRuLWNvbnN1bHQtc3R5bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9jb25zdWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9XCJjb25zdWx0KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gcFJlc2l6YWJsZUNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTEgYnRuLWRlbGV0ZS1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIHR5cGU9XCJidXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS10cmFzaFwiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9zdXBwcmltZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuZGlzcGxheU9ubHkgfHwgZGlzYWJsZWQ7IGVsc2Ugb3JkaW5hcnlCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3JkaW5hcnlCbG9jPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktU2VhcmNoLUNvbWJvIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuU0VBUkNIX0NPTUJPOyBlbHNlIGN1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIiBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiIFtidXNpbmVzc0NsYXNzXT1cImNvbC5idXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2N1cnJlbnRSb3dJdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VXBkYXRlQnV0dG9uXT1cImNvbC5zaG93VXBkYXRlQnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwib25DZWxsTGFiZWxSZXNvbHZlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUOyBlbHNlIGRhdGVQaWNrZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVQaWNrZXJJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpc0JpbmFyeV09XCJjb2wuaXNCaW5hcnkgPz8gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURlY2ltYWwtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLklOVEVHRVI7IGVsc2UgcmF0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2NsYXNzXT1cIidtYXgtdy00cmVtJ1wiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlJBVEVfSU5QVVQ7IGVsc2UgdGltZUlucHV0QmxvY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtUGlja2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aW1lSW5wdXRCbG9jPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FIGVsc2UgZm9ybXVsYUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuRk9STVVMQV9URVhUX0JPWDsgZWxzZSBkZWZhdWx0VGV4dElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAgICAgIHt7cm93U3VtbWFyeShpdGVtKX19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0ciBjbGFzcz1cInRmb290ZXJcIj5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RkPiAtLT5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94ICN0YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc2NvcGU9XCJjb2xcIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5Ub3RhbDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RGVsZXRlQnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDwhLS08dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0R1cGxpY2F0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiBbc3R5bGVdPVwiY29sLnN0eWxlXCIgW25nU3R5bGVdPVwiZ2V0Q29sdW1uU2l6ZVN0eWxlKGNvbClcIiBzY29wZT1cImNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5oYXZlU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGVjaW1hbE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSBkZWZhdWx0VGV4dE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaXNGcmFjdGlvbl09XCJjb2wuaXNGcmFjdGlvblwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIHt7Z2V0U3VtbWFyeShjb2wpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICB7eydUb3RhbFJlY29yZHNDb3VudCcgfCBsb2NhbGl6ZSB9fSB7e2dyaWREYXRhLmxlbmd0aH19XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJsZT5cclxuICA8ZGl2PlxyXG4gICAgPFRzaS1CdXR0b24gKm5nSWY9XCJzaG93QWRkQnV0dG9uXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7d2lkdGg6IDIwcHg7XCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktcGx1c1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfYWpvdXRlclwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tc20gcC1idXR0b24tc3VjY2VzcyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seSBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|