@theseam/ui-common 0.4.17 → 0.4.18
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/confirm-dialog/confirm-click.directive.d.ts +6 -2
- package/confirm-dialog/confirm-dialog.component.d.ts +8 -1
- package/confirm-dialog/confirm-dialog.service.d.ts +4 -0
- package/esm2020/confirm-dialog/confirm-click.directive.mjs +5 -3
- package/esm2020/confirm-dialog/confirm-dialog.component.mjs +17 -3
- package/esm2020/confirm-dialog/confirm-dialog.service.mjs +5 -2
- package/esm2020/datatable/datatable/datatable.component.mjs +2 -2
- package/fesm2015/theseam-ui-common-confirm-dialog.mjs +24 -5
- package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +1 -1
- package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-confirm-dialog.mjs +24 -5
- package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +1 -1
- package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
-
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
2
|
+
import { EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
|
|
3
3
|
import { ModalRef } from '@theseam/ui-common/modal';
|
|
4
4
|
import { ThemeTypes } from '@theseam/ui-common/models';
|
|
5
5
|
import { ConfirmDialogComponent } from './confirm-dialog.component';
|
|
@@ -14,6 +14,10 @@ export declare class ConfirmClickDirective implements OnDestroy {
|
|
|
14
14
|
message: string;
|
|
15
15
|
type: ThemeTypes;
|
|
16
16
|
} | undefined | null;
|
|
17
|
+
seamConfirmTpl: TemplateRef<any> | {
|
|
18
|
+
template: TemplateRef<any>;
|
|
19
|
+
context: any;
|
|
20
|
+
} | undefined | null;
|
|
17
21
|
seamConfirmDisabled: boolean;
|
|
18
22
|
seamConfirmClick: EventEmitter<"confirm">;
|
|
19
23
|
get _confirmClickActiveCss(): boolean;
|
|
@@ -23,5 +27,5 @@ export declare class ConfirmClickDirective implements OnDestroy {
|
|
|
23
27
|
get modalRef(): ModalRef<ConfirmDialogComponent, "confirm" | undefined> | undefined;
|
|
24
28
|
close(): void;
|
|
25
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmClickDirective, never>;
|
|
26
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ConfirmClickDirective, "[seamConfirmClick]", ["seamConfirmClick"], { "seamConfirmMsg": "seamConfirmMsg"; "seamConfirmAlert": "seamConfirmAlert"; "seamConfirmDisabled": "seamConfirmDisabled"; }, { "seamConfirmClick": "seamConfirmClick"; }, never, never, false, never>;
|
|
30
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ConfirmClickDirective, "[seamConfirmClick]", ["seamConfirmClick"], { "seamConfirmMsg": "seamConfirmMsg"; "seamConfirmAlert": "seamConfirmAlert"; "seamConfirmTpl": "seamConfirmTpl"; "seamConfirmDisabled": "seamConfirmDisabled"; }, { "seamConfirmClick": "seamConfirmClick"; }, never, never, false, never>;
|
|
27
31
|
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
1
2
|
import type { ThemeTypes } from '@theseam/ui-common/models';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class ConfirmDialogComponent {
|
|
4
5
|
message: string | undefined | null;
|
|
5
6
|
alertMessage: string | undefined | null;
|
|
6
7
|
alertType: ThemeTypes | undefined | null;
|
|
8
|
+
template: TemplateRef<any> | {
|
|
9
|
+
template: TemplateRef<any>;
|
|
10
|
+
context: any;
|
|
11
|
+
} | undefined | null;
|
|
12
|
+
get tpl(): TemplateRef<any> | null | undefined;
|
|
13
|
+
get tplContext(): any;
|
|
7
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
|
|
8
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmDialogComponent, "seam-confirm-dialog", never, { "message": "message"; "alertMessage": "alertMessage"; "alertType": "alertType"; }, {}, never, never, false, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmDialogComponent, "seam-confirm-dialog", never, { "message": "message"; "alertMessage": "alertMessage"; "alertType": "alertType"; "template": "template"; }, {}, never, never, false, never>;
|
|
9
16
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
1
2
|
import { Modal, ModalRef } from '@theseam/ui-common/modal';
|
|
2
3
|
import { ThemeTypes } from '@theseam/ui-common/models';
|
|
3
4
|
import { ConfirmDialogComponent } from './confirm-dialog.component';
|
|
@@ -8,6 +9,9 @@ export declare class SeamConfirmDialogService {
|
|
|
8
9
|
open(message?: string, alert?: string | {
|
|
9
10
|
message: string;
|
|
10
11
|
type: ThemeTypes;
|
|
12
|
+
}, template?: TemplateRef<any> | {
|
|
13
|
+
template: TemplateRef<any>;
|
|
14
|
+
context: any;
|
|
11
15
|
}): ModalRef<ConfirmDialogComponent, 'confirm' | undefined>;
|
|
12
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<SeamConfirmDialogService, never>;
|
|
13
17
|
static ɵprov: i0.ɵɵInjectableDeclaration<SeamConfirmDialogService>;
|
|
@@ -15,7 +15,7 @@ export class ConfirmClickDirective {
|
|
|
15
15
|
if (this._modalRef) {
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
|
-
this._modalRef = this._confirmService.open(this.seamConfirmMsg || '', this.seamConfirmAlert || undefined);
|
|
18
|
+
this._modalRef = this._confirmService.open(this.seamConfirmMsg || '', this.seamConfirmAlert || undefined, this.seamConfirmTpl || undefined);
|
|
19
19
|
this._modalRef.afterClosed().subscribe(result => {
|
|
20
20
|
if (result === 'confirm') {
|
|
21
21
|
this.seamConfirmClick.emit(result);
|
|
@@ -41,7 +41,7 @@ export class ConfirmClickDirective {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
ConfirmClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ConfirmClickDirective, deps: [{ token: i1.SeamConfirmDialogService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
-
ConfirmClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ConfirmClickDirective, selector: "[seamConfirmClick]", inputs: { seamConfirmMsg: "seamConfirmMsg", seamConfirmAlert: "seamConfirmAlert", seamConfirmDisabled: "seamConfirmDisabled" }, outputs: { seamConfirmClick: "seamConfirmClick" }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.lib-confirm-click-active": "this._confirmClickActiveCss" } }, exportAs: ["seamConfirmClick"], ngImport: i0 });
|
|
44
|
+
ConfirmClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ConfirmClickDirective, selector: "[seamConfirmClick]", inputs: { seamConfirmMsg: "seamConfirmMsg", seamConfirmAlert: "seamConfirmAlert", seamConfirmTpl: "seamConfirmTpl", seamConfirmDisabled: "seamConfirmDisabled" }, outputs: { seamConfirmClick: "seamConfirmClick" }, host: { listeners: { "click": "_onClick($event)" }, properties: { "class.lib-confirm-click-active": "this._confirmClickActiveCss" } }, exportAs: ["seamConfirmClick"], ngImport: i0 });
|
|
45
45
|
__decorate([
|
|
46
46
|
InputBoolean()
|
|
47
47
|
], ConfirmClickDirective.prototype, "seamConfirmDisabled", void 0);
|
|
@@ -55,6 +55,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
55
55
|
type: Input
|
|
56
56
|
}], seamConfirmAlert: [{
|
|
57
57
|
type: Input
|
|
58
|
+
}], seamConfirmTpl: [{
|
|
59
|
+
type: Input
|
|
58
60
|
}], seamConfirmDisabled: [{
|
|
59
61
|
type: Input
|
|
60
62
|
}], seamConfirmClick: [{
|
|
@@ -66,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
66
68
|
type: HostListener,
|
|
67
69
|
args: ['click', ['$event']]
|
|
68
70
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vY29uZmlybS1kaWFsb2cvY29uZmlybS1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQTtBQUV6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7OztBQVd0RCxNQUFNLE9BQU8scUJBQXFCO0lBWWhDLElBQ0ksc0JBQXNCLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUM7SUFHeEQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTthQUMzQjtTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBRTlCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQyxDQUFBO1FBRTNJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNuQztZQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQW9CLGVBQXlDO1FBQXpDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQTdCcEMsd0JBQW1CLEdBQUcsS0FBSyxDQUFBO1FBRTFDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7SUEyQk8sQ0FBQztJQUVsRSxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7U0FDdkI7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQztJQUVqQyxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7U0FDdkI7SUFDSCxDQUFDOztrSEFuRFUscUJBQXFCO3NHQUFyQixxQkFBcUI7QUFRUDtJQUFmLFlBQVksRUFBRTtrRUFBNEI7MkZBUnpDLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO2lCQUM3QjsrR0FNVSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNtQixtQkFBbUI7c0JBQTNDLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUdILHNCQUFzQjtzQkFEekIsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBSTdDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgTW9kYWxSZWYgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbW9kYWwnXG5pbXBvcnQgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50J1xuaW1wb3J0IHsgU2VhbUNvbmZpcm1EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy5zZXJ2aWNlJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2VhbUNvbmZpcm1DbGlja10nLFxuICBleHBvcnRBczogJ3NlYW1Db25maXJtQ2xpY2snXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1DbGlja0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWFtQ29uZmlybURpc2FibGVkOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIF9tb2RhbFJlZjogTW9kYWxSZWY8Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgJ2NvbmZpcm0nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpIHNlYW1Db25maXJtTXNnOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHNlYW1Db25maXJtQWxlcnQ6IHN0cmluZyB8IHsgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiBUaGVtZVR5cGVzIH0gfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHNlYW1Db25maXJtVHBsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgeyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiwgY29udGV4dDogYW55IH0gfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWFtQ29uZmlybURpc2FibGVkID0gZmFsc2VcblxuICBAT3V0cHV0KCkgc2VhbUNvbmZpcm1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8J2NvbmZpcm0nPigpXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5saWItY29uZmlybS1jbGljay1hY3RpdmUnKVxuICBnZXQgX2NvbmZpcm1DbGlja0FjdGl2ZUNzcygpIHsgcmV0dXJuICEhdGhpcy5fbW9kYWxSZWYgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnJGV2ZW50JyBdKVxuICBfb25DbGljayhldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhbUNvbmZpcm1EaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuX21vZGFsUmVmKSB7XG4gICAgICAgIHRoaXMuX21vZGFsUmVmLmNsb3NlKClcbiAgICAgICAgdGhpcy5fbW9kYWxSZWYgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbW9kYWxSZWYpIHsgcmV0dXJuIH1cblxuICAgIHRoaXMuX21vZGFsUmVmID0gdGhpcy5fY29uZmlybVNlcnZpY2Uub3Blbih0aGlzLnNlYW1Db25maXJtTXNnIHx8ICcnLCB0aGlzLnNlYW1Db25maXJtQWxlcnQgfHwgdW5kZWZpbmVkLCB0aGlzLnNlYW1Db25maXJtVHBsIHx8IHVuZGVmaW5lZClcblxuICAgIHRoaXMuX21vZGFsUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnY29uZmlybScpIHtcbiAgICAgICAgdGhpcy5zZWFtQ29uZmlybUNsaWNrLmVtaXQocmVzdWx0KVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9tb2RhbFJlZiA9IHVuZGVmaW5lZFxuICAgIH0pXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maXJtU2VydmljZTogU2VhbUNvbmZpcm1EaWFsb2dTZXJ2aWNlKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fbW9kYWxSZWYpIHtcbiAgICAgIHRoaXMuX21vZGFsUmVmLmNsb3NlKClcbiAgICB9XG4gIH1cblxuICBnZXQgbW9kYWxSZWYoKSB7IHJldHVybiB0aGlzLl9tb2RhbFJlZiB9XG5cbiAgcHVibGljIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl9tb2RhbFJlZikge1xuICAgICAgdGhpcy5fbW9kYWxSZWYuY2xvc2UoKVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -8,17 +8,31 @@ export class ConfirmDialogComponent {
|
|
|
8
8
|
this.message = 'Are you sure you want to continue?';
|
|
9
9
|
this.alertType = 'warning';
|
|
10
10
|
}
|
|
11
|
+
get tpl() {
|
|
12
|
+
if (this.template && 'template' in this.template) {
|
|
13
|
+
return this.template.template;
|
|
14
|
+
}
|
|
15
|
+
return this.template;
|
|
16
|
+
}
|
|
17
|
+
get tplContext() {
|
|
18
|
+
if (this.template && 'context' in this.template) {
|
|
19
|
+
return this.template.context;
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
11
23
|
}
|
|
12
24
|
ConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
-
ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ConfirmDialogComponent, selector: "seam-confirm-dialog", inputs: { message: "message", alertMessage: "alertMessage", alertType: "alertType" }, ngImport: i0, template: "<seam-modal-body>\n <h5>{{ message }}</h5>\n\n
|
|
25
|
+
ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ConfirmDialogComponent, selector: "seam-confirm-dialog", inputs: { message: "message", alertMessage: "alertMessage", alertType: "alertType", template: "template" }, ngImport: i0, template: "<seam-modal-body>\n <ng-container *ngIf=\"tpl; else messageTpl\">\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: tplContext }\"></ng-container>\n </ng-container>\n\n <ng-template #messageTpl>\n <h5>{{ message }}</h5>\n\n <div *ngIf=\"alertMessage\" class=\"alert {{ alertType ? 'alert-' + alertType : '' }} mb-0\">\n {{ alertMessage }}\n </div>\n </ng-template>\n\n</seam-modal-body>\n<seam-modal-footer>\n <button class=\"btn btn-primary\" seamModalClose=\"confirm\">Yes</button>\n <button class=\"btn btn-lightgray\" data-dismiss=\"modal\" seamModalClose=\"cancel\" seamAutoFocus>No</button>\n</seam-modal-footer>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.AutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "component", type: i3.ModalBodyComponent, selector: "seam-modal-body" }, { kind: "component", type: i3.ModalFooterComponent, selector: "seam-modal-footer" }, { kind: "directive", type: i3.ModalCloseDirective, selector: "button[seamModalClose]", inputs: ["type", "aria-label", "seamModalClose", "seamModalNext", "seamModalNextConfig"], exportAs: ["seamModalClose"] }] });
|
|
14
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
15
27
|
type: Component,
|
|
16
|
-
args: [{ selector: 'seam-confirm-dialog', template: "<seam-modal-body>\n <h5>{{ message }}</h5>\n\n
|
|
28
|
+
args: [{ selector: 'seam-confirm-dialog', template: "<seam-modal-body>\n <ng-container *ngIf=\"tpl; else messageTpl\">\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: tplContext }\"></ng-container>\n </ng-container>\n\n <ng-template #messageTpl>\n <h5>{{ message }}</h5>\n\n <div *ngIf=\"alertMessage\" class=\"alert {{ alertType ? 'alert-' + alertType : '' }} mb-0\">\n {{ alertMessage }}\n </div>\n </ng-template>\n\n</seam-modal-body>\n<seam-modal-footer>\n <button class=\"btn btn-primary\" seamModalClose=\"confirm\">Yes</button>\n <button class=\"btn btn-lightgray\" data-dismiss=\"modal\" seamModalClose=\"cancel\" seamAutoFocus>No</button>\n</seam-modal-footer>\n" }]
|
|
17
29
|
}], propDecorators: { message: [{
|
|
18
30
|
type: Input
|
|
19
31
|
}], alertMessage: [{
|
|
20
32
|
type: Input
|
|
21
33
|
}], alertType: [{
|
|
22
34
|
type: Input
|
|
35
|
+
}], template: [{
|
|
36
|
+
type: Input
|
|
23
37
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQTs7Ozs7QUFTN0QsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQU9XLFlBQU8sR0FBOEIsb0NBQW9DLENBQUE7UUFFekUsY0FBUyxHQUFrQyxTQUFTLENBQUE7S0FtQjlEO0lBaEJDLElBQUksR0FBRztRQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFBO1NBQzlCO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQTtTQUM3QjtRQUVELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7O21IQXJCVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix1S0NUbkMsdXFCQWtCQTsyRkRUYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQU10QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB0eXBlIHsgVGhlbWVUeXBlcyB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tb2RlbHMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tY29uZmlybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlPydcbiAgQElucHV0KCkgYWxlcnRNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIGFsZXJ0VHlwZTogVGhlbWVUeXBlcyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnd2FybmluZydcbiAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB7IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCBjb250ZXh0OiBhbnkgfSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBnZXQgdHBsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy50ZW1wbGF0ZSAmJiAndGVtcGxhdGUnIGluIHRoaXMudGVtcGxhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlLnRlbXBsYXRlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVcbiAgfVxuXG4gIGdldCB0cGxDb250ZXh0KCk6IGFueSB7XG4gICAgaWYgKHRoaXMudGVtcGxhdGUgJiYgJ2NvbnRleHQnIGluIHRoaXMudGVtcGxhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlLmNvbnRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxufVxuIiwiPHNlYW0tbW9kYWwtYm9keT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRwbDsgZWxzZSBtZXNzYWdlVHBsXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRwbENvbnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI21lc3NhZ2VUcGw+XG4gICAgPGg1Pnt7IG1lc3NhZ2UgfX08L2g1PlxuXG4gICAgPGRpdiAqbmdJZj1cImFsZXJ0TWVzc2FnZVwiIGNsYXNzPVwiYWxlcnQge3sgYWxlcnRUeXBlID8gJ2FsZXJ0LScgKyBhbGVydFR5cGUgOiAnJyB9fSBtYi0wXCI+XG4gICAgICB7eyBhbGVydE1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC9zZWFtLW1vZGFsLWJvZHk+XG48c2VhbS1tb2RhbC1mb290ZXI+XG4gIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBzZWFtTW9kYWxDbG9zZT1cImNvbmZpcm1cIj5ZZXM8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHRncmF5XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBzZWFtTW9kYWxDbG9zZT1cImNhbmNlbFwiIHNlYW1BdXRvRm9jdXM+Tm88L2J1dHRvbj5cbjwvc2VhbS1tb2RhbC1mb290ZXI+XG4iXX0=
|
|
@@ -6,7 +6,7 @@ export class SeamConfirmDialogService {
|
|
|
6
6
|
constructor(modal) {
|
|
7
7
|
this.modal = modal;
|
|
8
8
|
}
|
|
9
|
-
open(message, alert) {
|
|
9
|
+
open(message, alert, template) {
|
|
10
10
|
const modalRef = this.modal.openFromComponent(ConfirmDialogComponent);
|
|
11
11
|
if (!modalRef.componentInstance) {
|
|
12
12
|
throw new Error('ConfirmDialogComponent not created.');
|
|
@@ -27,6 +27,9 @@ export class SeamConfirmDialogService {
|
|
|
27
27
|
throw new Error('Invalid alert argument.');
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
if (template) {
|
|
31
|
+
comp.template = template;
|
|
32
|
+
}
|
|
30
33
|
return modalRef;
|
|
31
34
|
}
|
|
32
35
|
}
|
|
@@ -35,4 +38,4 @@ SeamConfirmDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
|
|
|
35
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SeamConfirmDialogService, decorators: [{
|
|
36
39
|
type: Injectable
|
|
37
40
|
}], ctorParameters: function () { return [{ type: i1.Modal }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxlQUFlLENBQUE7QUFLdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7OztBQUduRSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQ1UsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFDbEIsQ0FBQztJQUVFLElBQUksQ0FDVCxPQUFnQixFQUNoQixLQUFzRCxFQUN0RCxRQUEwRTtRQUUxRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFFckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7U0FDdkQ7UUFFRCxNQUFNLElBQUksR0FBMkIsUUFBUSxDQUFDLGlCQUFpQixDQUFBO1FBRS9ELElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7U0FDdkI7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTthQUMxQjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUE7YUFDNUI7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO2FBQzNDO1NBQ0Y7UUFFRCxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1NBQ3pCO1FBRUQsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzs7cUhBdkNVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IE1vZGFsLCBNb2RhbFJlZiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tb2RhbCdcbmltcG9ydCB7IFRoZW1lVHlwZXMgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbW9kZWxzJ1xuXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWFtQ29uZmlybURpYWxvZ1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsXG4gICkgeyB9XG5cbiAgcHVibGljIG9wZW4oXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICBhbGVydD86IHN0cmluZyB8IHsgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiBUaGVtZVR5cGVzIH0sXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgeyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiwgY29udGV4dDogYW55IH1cbiAgKTogTW9kYWxSZWY8Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgJ2NvbmZpcm0nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsLm9wZW5Gcm9tQ29tcG9uZW50KENvbmZpcm1EaWFsb2dDb21wb25lbnQpXG5cbiAgICBpZiAoIW1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbmZpcm1EaWFsb2dDb21wb25lbnQgbm90IGNyZWF0ZWQuJylcbiAgICB9XG5cbiAgICBjb25zdCBjb21wOiBDb25maXJtRGlhbG9nQ29tcG9uZW50ID0gbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2VcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBjb21wLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgfVxuXG4gICAgaWYgKGFsZXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGFsZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb21wLmFsZXJ0TWVzc2FnZSA9IGFsZXJ0XG4gICAgICB9IGVsc2UgaWYgKGFsZXJ0Lm1lc3NhZ2UgJiYgYWxlcnQudHlwZSkge1xuICAgICAgICBjb21wLmFsZXJ0TWVzc2FnZSA9IGFsZXJ0Lm1lc3NhZ2VcbiAgICAgICAgY29tcC5hbGVydFR5cGUgPSBhbGVydC50eXBlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYWxlcnQgYXJndW1lbnQuJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGNvbXAudGVtcGxhdGUgPSB0ZW1wbGF0ZVxuICAgIH1cblxuICAgIHJldHVybiBtb2RhbFJlZlxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -382,7 +382,7 @@ export class DatatableComponent {
|
|
|
382
382
|
const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order');
|
|
383
383
|
const state = {
|
|
384
384
|
columns: [
|
|
385
|
-
...(currentOrderAlteration?.state.columns || []),
|
|
385
|
+
...(currentOrderAlteration?.state.columns || []).filter((x) => x.columnProp !== columnProp),
|
|
386
386
|
{ columnProp, index: event.newValue }
|
|
387
387
|
]
|
|
388
388
|
};
|
|
@@ -667,4 +667,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
667
667
|
type: HostListener,
|
|
668
668
|
args: ['dblclick', ['$event']]
|
|
669
669
|
}] } });
|
|
670
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFBZ0MsWUFBWSxFQUFhLE1BQU0sMEJBQTBCLENBQUE7QUFDaEcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFDTCxTQUFTLEVBSVQsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDakcsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVGLE9BQU8sRUFDTCxVQUFVLEVBS1Ysa0JBQWtCLElBQUkscUJBQXFCLEVBQzND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QUF2RSxZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFeEQsYUFBYTtzQkFEaEIsWUFBWTt1QkFBQywrQkFBK0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBUUssU0FBUztzQkFBNUUsWUFBWTt1QkFBQyxrQ0FBa0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0QsTUFBTTtzQkFBdEUsWUFBWTt1QkFBQywrQkFBK0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRzNELGdCQUFnQjtzQkFEbkIsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBaUJMLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMscUJBQXFCO2dCQUN3QixtQkFBbUI7c0JBQTFFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNkLFlBQVk7c0JBQW5ELFNBQVM7dUJBQUMsMkJBQTJCO2dCQUdsQyxpQkFBaUI7c0JBRHBCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVM1QyxhQUFhO3NCQURoQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3hDLFNBQVM7c0JBRFosU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVNwQyxjQUFjO3NCQURqQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTekMsbUJBQW1CO3NCQUR0QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFzQmxELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZSwgTGlzdFJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFDaGV2cm9uRG93biwgZmFDaGV2cm9uUmlnaHQsIGZhU3Bpbm5lciB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcbmltcG9ydCB7XG4gIENvbHVtbk1vZGUsXG4gIENvbnRleHRtZW51VHlwZSxcbiAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gIERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSxcbiAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICBEYXRhdGFibGVDb21wb25lbnQgYXMgTmd4RGF0YXRhYmxlQ29tcG9uZW50LFxuICBEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUsXG4gIFNvcnRUeXBlLFxuICBUcmVlU3RhdHVzXG59IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uVHlwZSB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgY29tcG9zZURhdGFGaWx0ZXJzLCBjb21wb3NlRGF0YUZpbHRlclN0YXRlcywgRGF0YUZpbHRlciwgRGF0YUZpbHRlclN0YXRlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcbmltcG9ydCB7IElFbGVtZW50UmVzaXplZEV2ZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3NoYXJlZCdcbmltcG9ydCB7IG5vdE51bGxPclVuZGVmaW5lZCwgd2FpdE9uQ29uZGl0aW9uQXN5bmMgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtYWN0aW9uLW1lbnUvZGF0YXRhYmxlLWFjdGlvbi1tZW51LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLWZvb3Rlci9kYXRhdGFibGUtZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtbWVudS1iYXIvZGF0YXRhYmxlLW1lbnUtYmFyLmNvbXBvbmVudCdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUgfSBmcm9tICcuLi9kYXRhdGFibGUtcm93LWRldGFpbC9kYXRhdGFibGUtcm93LWRldGFpbC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRhdGFibGUtcm93LWFjdGlvbi1pdGVtLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL21vZGVscy9kYXRhdGFibGUtYWNjZXNzb3InXG5pbXBvcnQgeyBEYXRhdGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGF0YWJsZS1kYXRhLXNvdXJjZSdcbmltcG9ydCB7IFRoZVNlYW1QYWdlSW5mbyB9IGZyb20gJy4uL21vZGVscy9wYWdlLWluZm8nXG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvc29ydC1ldmVudCdcbmltcG9ydCB7IFNvcnRJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQtaXRlbSdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xuaW1wb3J0IHsgQ29sdW1uc01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sdW1ucy1tYW5hZ2VyLnNlcnZpY2UnXG5pbXBvcnQgeyBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGF0YWJsZS1jb2x1bW4tY2hhbmdlcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGF0YXRhYmxlLXByZWZlcmVuY2VzLnNlcnZpY2UnXG5pbXBvcnQgeyBUSEVTRUFNX0RBVEFUQUJMRV9BQ0NFU1NPUiB9IGZyb20gJy4uL3Rva2Vucy9kYXRhdGFibGUtYWNjZXNzb3InXG5pbXBvcnQgeyByZW1vdmVVbnVzZWREaWZmcyB9IGZyb20gJy4uL3V0aWxzL3JlbW92ZS11bnVzZWQtZGlmZnMnXG5pbXBvcnQgeyB0cmFuc2xhdGVUZW1wbGF0ZUNvbHVtbnMgfSBmcm9tICcuLi91dGlscy90cmFuc2xhdGUtdGVtcGxhdGVzJ1xuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb25zTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb2x1bW5zLWFsdGVyYXRpb25zLW1hbmFnZXIuc2VydmljZSdcbmltcG9ydCB7IENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbidcbmltcG9ydCB7IG1hcENvbHVtbnNBbHRlcmF0aW9uc1N0YXRlcyB9IGZyb20gJy4uL3V0aWxzL21hcC1jb2x1bW5zLWFsdGVyYXRpb25zLXN0YXRlcydcbmltcG9ydCB7IFdpZHRoQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy93aWR0aC5jb2x1bW5zLWFsdGVyYXRpb24nXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xuaW1wb3J0IHsgT3JkZXJDb2x1bW5zQWx0ZXJhdGlvbiwgT3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvb3JkZXIuY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgU29ydENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvc29ydC5jb2x1bW5zLWFsdGVyYXRpb24nXG5cbi8qKlxuICogTk9URTogVGhpcyBpcyBzdGlsbCBiZWluZyB3b3JrZWQgb24uIEkgYW0gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhpcyBtb2RlbFxuICogYmVjYXVzZSBgbmd4LWRhdGF0YWJsZWAganVzdCB1c2VzIGFuIHVudHlwZWQgb2JqZWN0IGFuZCBzZXRzIHByb3BlcnRpZXMgaW5cbiAqIG11bHRpcGxlIHBsYWNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2VsbENvbnRleHQge1xuICBhbGxSb3dzU2VsZWN0ZWQ6IGZhbHNlXG5cbiAgc2VsZWN0Rm46ICgpID0+IGFueVxuICBzb3J0RGlyPzogJ2FzYycgfCAnZGVzYydcbiAgc29ydEZuOiAoKSA9PiBhbnlcblxuICBleHBhbmRlZD86IGJvb2xlYW5cblxuICBvbkNoZWNrYm94Q2hhbmdlRm4/OiBhbnlcbiAgYWN0aXZhdGVGbj86IGFueVxuICByb3c/OiBhbnlcbiAgZ3JvdXA/OiBhbnlcbiAgdmFsdWU/OiBhbnlcbiAgY29sdW1uPzogVGhlU2VhbURhdGF0YWJsZUNvbHVtblxuICByb3dIZWlnaHQ/OiBudW1iZXJcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW5cbiAgcm93SW5kZXg/OiBudW1iZXJcbiAgdHJlZVN0YXR1cz86IFRyZWVTdGF0dXNcbiAgb25UcmVlQWN0aW9uPzogYW55XG59XG5cbi8qKlxuICogSW50ZW5kZWQgZm9yIGludGVybmFsIGNsYXNzZXMgZGVjbGFyZWQgYnkgdGhlIGBUaGVTZWFtRGF0YXRhYmxlTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRIRVNFQU1fREFUQVRBQkxFID0gbmV3IEluamVjdGlvblRva2VuPERhdGFGaWx0ZXI+KCdMaWJEYXRhdGFibGUnKVxuXG5leHBvcnQgY29uc3QgX1RIRVNFQU1fREFUQVRBQkxFOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFRIRVNFQU1fREFUQVRBQkxFLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdXNlLWJlZm9yZS1kZWNsYXJlXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGF0YWJsZUNvbXBvbmVudClcbn1cblxuZXhwb3J0IGNvbnN0IF9USEVTRUFNX0RBVEFUQUJMRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBUSEVTRUFNX0RBVEFUQUJMRV9BQ0NFU1NPUixcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhdGFibGVDb21wb25lbnQpXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZGF0YXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGF0YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGF0YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3NsaWRlRG93bicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMCUpJywgb3BhY2l0eTogJzAnIH0pLFxuICAgICAgICBhbmltYXRlKCcyNTBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6ICcxJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogJzEnIH0pLFxuICAgICAgICBhbmltYXRlKCcyNTBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScsIG9wYWNpdHk6ICcwJyB9KSksXG4gICAgICBdKVxuICAgIF0pXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIF9USEVTRUFNX0RBVEFUQUJMRSxcbiAgICBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZSxcbiAgICBfVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IsXG4gICAgQ29sdW1uc01hbmFnZXJTZXJ2aWNlLFxuICAgIENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGF0YWJsZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IsIENvbGxlY3Rpb25WaWV3ZXIge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXh0ZXJuYWxQYWdpbmc6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXh0ZXJuYWxTb3J0aW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsRmlsdGVyaW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xvYWRpbmdJbmRpY2F0b3I6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVvcmRlcmFibGU6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc3dhcENvbHVtbnM6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBFeHBhbnNpb25EZWZhdWx0OiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdEFsbFJvd3NPblBhZ2U6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc3VtbWFyeVJvdzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92aXJ0dWFsaXphdGlvbjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zY3JvbGxiYXJWOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Njcm9sbGJhckg6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGltaXQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jb3VudDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29mZnNldDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hlYWRlckhlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Jvd0hlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Zvb3RlckhlaWdodDogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N1bW1hcnlIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10gfCB1bmRlZmluZWQgfCBudWxsXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zb3J0czogU29ydEl0ZW1bXSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICByZWFkb25seSBfZmFDaGV2cm9uRG93biA9IGZhQ2hldnJvbkRvd25cbiAgcmVhZG9ubHkgX2ZhQ2hldnJvblJpZ2h0ID0gZmFDaGV2cm9uUmlnaHRcbiAgcmVhZG9ubHkgX2ZhU3Bpbm5lciA9IGZhU3Bpbm5lclxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhRmlsdGVyW10+KFtdKVxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvdXJjZTxhbnk+IHwgYW55W10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBwcml2YXRlIF9yZXNpemluZzogeyBbcHJvcDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGVzOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJTdGF0ZVtdPlxuXG4gIGdldCBmaWx0ZXJzKCk6IERhdGFGaWx0ZXJbXSB7IHJldHVybiB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZSB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlcnMkOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJbXT5cblxuICBASW5wdXQoKVxuICBnZXQgcHJlZmVyZW5jZXNLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9wcmVmZXJlbmNlc0tleS52YWx1ZSB9XG4gIHNldCBwcmVmZXJlbmNlc0tleSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkgeyB0aGlzLl9wcmVmZXJlbmNlc0tleS5uZXh0KHZhbHVlIHx8IHVuZGVmaW5lZCkgfVxuICBwcml2YXRlIF9wcmVmZXJlbmNlc0tleSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4odW5kZWZpbmVkKVxuXG4gIEBJbnB1dCgpIHRhcmdldE1hcmtlclRlbXBsYXRlOiBhbnlcblxuICBASW5wdXQoKVxuICBzZXQgY29sdW1ucyh2YWx1ZTogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0SW5wdXRDb2x1bW5zKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXSlcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuX3Jvd3MudmFsdWUgfVxuICBzZXQgcm93cyh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl9yb3dzLm5leHQodmFsdWUgfHwgW10pXG4gIH1cbiAgcHJpdmF0ZSBfcm93cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKVxuXG4gIHB1YmxpYyByb3dzJDogT2JzZXJ2YWJsZTxhbnlbXT5cblxuICBASW5wdXQoKSBjb2x1bW5Nb2RlOiBDb2x1bW5Nb2RlIHwgdW5kZWZpbmVkIHwgbnVsbCA9IENvbHVtbk1vZGUuZm9yY2VcblxuICBASW5wdXQoKSBncm91cFJvd3NCeTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBncm91cGVkUm93czogYW55W10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbCA9IFtdXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGV4dGVybmFsUGFnaW5nID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGV4dGVybmFsU29ydGluZyA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbEZpbHRlcmluZyA9IGZhbHNlXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgY291bnQgPSAwXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBvZmZzZXQgPSAwXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGxvYWRpbmdJbmRpY2F0b3IgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3Rpb25UeXBlKCk6IFNlbGVjdGlvblR5cGUgfCB1bmRlZmluZWQgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLmdldFNlbGVjdGlvblR5cGUoKSB9XG4gIHNldCBzZWxlY3Rpb25UeXBlKHZhbHVlOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFNlbGVjdGlvblR5cGUobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlb3JkZXJhYmxlID0gdHJ1ZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc3dhcENvbHVtbnMgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzb3J0VHlwZSgpOiBTb3J0VHlwZSB7IHJldHVybiB0aGlzLl9zb3J0VHlwZSB9XG4gIHNldCBzb3J0VHlwZSh2YWx1ZTogU29ydFR5cGUpIHtcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSAmJiAodmFsdWUgPT09IFNvcnRUeXBlLnNpbmdsZSB8fCB2YWx1ZSA9PT0gU29ydFR5cGUubXVsdGkpKSB7XG4gICAgICB0aGlzLl9zb3J0VHlwZSA9IHZhbHVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NvcnRUeXBlID0gU29ydFR5cGUuc2luZ2xlXG4gICAgfVxuICB9XG4gIF9zb3J0VHlwZTogU29ydFR5cGUgPSBTb3J0VHlwZS5zaW5nbGVcblxuICBASW5wdXQoKVxuICBnZXQgc29ydHMoKTogU29ydEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMubmd4RGF0YXRhYmxlID8gdGhpcy5uZ3hEYXRhdGFibGUuc29ydHMgOiB0aGlzLl9zb3J0c1xuICB9XG4gIHNldCBzb3J0cyh2YWx1ZTogU29ydEl0ZW1bXSkge1xuICAgIHRoaXMuX3NvcnRzID0gbm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IGNvZXJjZUFycmF5KHZhbHVlKSA6IFtdXG4gIH1cbiAgX3NvcnRzOiBTb3J0SXRlbVtdID0gW11cblxuICBASW5wdXQoKSBjc3NDbGFzc2VzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsID0ge1xuICAgIHNvcnRBc2NlbmRpbmc6ICdkYXRhdGFibGUtaWNvbi11cCcsXG4gICAgc29ydERlc2NlbmRpbmc6ICdkYXRhdGFibGUtaWNvbi1kb3duJyxcbiAgICBwYWdlckxlZnRBcnJvdzogJ2RhdGF0YWJsZS1pY29uLWxlZnQnLFxuICAgIHBhZ2VyUmlnaHRBcnJvdzogJ2RhdGF0YWJsZS1pY29uLXJpZ2h0JyxcbiAgICBwYWdlclByZXZpb3VzOiAnZGF0YXRhYmxlLWljb24tcHJldicsXG4gICAgcGFnZXJOZXh0OiAnZGF0YXRhYmxlLWljb24tc2tpcCdcbiAgfVxuXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsID0ge1xuICAgIC8vIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIGFycmF5IGlzIHByZXNlbnRlZFxuICAgIC8vIGJ1dCBjb250YWlucyBubyB2YWx1ZXNcbiAgICBlbXB0eU1lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kJyxcblxuICAgIC8vIEZvb3RlciB0b3RhbCBtZXNzYWdlXG4gICAgdG90YWxNZXNzYWdlOiAndG90YWwnLFxuXG4gICAgLy8gRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2VcbiAgICBzZWxlY3RlZE1lc3NhZ2U6ICdzZWxlY3RlZCdcbiAgfVxuXG4gIEBJbnB1dCgpIHJvd0lkZW50aXR5OiAoKHg6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZCB8IG51bGwgPSAoeDogYW55KSA9PiB4XG5cbiAgQElucHV0KCkgcm93Q2xhc3M6IGFueSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBzZWxlY3RDaGVjazogYW55IHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBkaXNwbGF5Q2hlY2s6ICgocm93OiBhbnksIGNvbHVtbj86IGFueSwgdmFsdWU/OiBhbnkpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBncm91cEV4cGFuc2lvbkRlZmF1bHQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHRyYWNrQnlQcm9wOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNlbGVjdEFsbFJvd3NPblBhZ2UgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHRyZWVGcm9tUmVsYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgdHJlZVRvUmVsYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN1bW1hcnlSb3cgPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBzdW1tYXJ5SGVpZ2h0ID0gMzBcbiAgQElucHV0KCkgc3VtbWFyeVBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ3RvcCdcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdmlydHVhbGl6YXRpb24gPSB0cnVlXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgaGVhZGVySGVpZ2h0ID0gNTBcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgcm93SGVpZ2h0ID0gNTBcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgZm9vdGVySGVpZ2h0ID0gNDBcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2Nyb2xsYmFyViA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNjcm9sbGJhckggPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IERhdGFTb3VyY2U8YW55PiB8IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGF0YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgIHZhbHVlLnNldERhdGF0YWJsZUFjY2Vzc29yKHRoaXMpXG4gICAgfVxuICAgIHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0Lm5leHQodmFsdWUgfHwgdW5kZWZpbmVkKVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSByZWFkb25seSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgYWN0aXZhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBzb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RXZlbnQ+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoZVNlYW1QYWdlSW5mbz4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVvcmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRhYmxlQ29udGV4dG1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6IENvbnRleHRtZW51VHlwZSwgY29udGVudDogYW55IH0+KGZhbHNlKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdHJlZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGlvblJlZnJlc2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBoaWRkZW5Db2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50KVxuICBzZXQgY29sdW1uQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRUZW1wbGF0ZUNvbHVtbnModHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zKHZhbHVlPy50b0FycmF5KCkgPz8gW10pKVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBhY3Rpb25NZW51PzogRGF0YXRhYmxlQWN0aW9uTWVudUNvbXBvbmVudFxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCByb3dBY3Rpb25JdGVtKCk6IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fcm93QWN0aW9uSXRlbSB9XG4gIHNldCByb3dBY3Rpb25JdGVtKHZhbHVlOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcm93QWN0aW9uSXRlbSA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0Um93QWN0aW9uSXRlbShub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfcm93QWN0aW9uSXRlbTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGQoVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcm93RGV0YWlsPzogVGhlU2VhbURhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZVxuICBAQ29udGVudENoaWxkKFRoZVNlYW1EYXRhdGFibGVGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGZvb3Rlcj86IFRoZVNlYW1EYXRhdGFibGVGb290ZXJEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQpXG4gIGdldCBtZW51QmFyQ29tcG9uZW50KCk6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fbWVudUJhckNvbXBvbmVudCB9XG4gIHNldCBtZW51QmFyQ29tcG9uZW50KHZhbHVlOiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbWVudUJhckNvbXBvbmVudCA9IHZhbHVlXG5cbiAgICBpZiAodGhpcy5fbWVudUJhclN1YikgeyB0aGlzLl9tZW51QmFyU3ViLnVuc3Vic2NyaWJlKCkgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zZXRNZW51QmFyRmlsdGVycyh2YWx1ZS5maWx0ZXJzKCkpXG5cbiAgICAgIHRoaXMuX21lbnVCYXJTdWIgPSB0aGlzLl9tZW51QmFyQ29tcG9uZW50Py5maWx0ZXJzQ2hhbmdlZFxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4geyB0aGlzLl9zZXRNZW51QmFyRmlsdGVycyh2YWx1ZS5maWx0ZXJzKCkpIH0pXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX21lbnVCYXJDb21wb25lbnQ6IERhdGF0YWJsZU1lbnVCYXJDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfbWVudUJhclN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZChOZ3hEYXRhdGFibGVDb21wb25lbnQpIG5neERhdGF0YWJsZT86IE5neERhdGF0YWJsZUNvbXBvbmVudFxuICBAVmlld0NoaWxkKE5neERhdGF0YWJsZUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5neERhdGF0YWJsZUVsZW1lbnQ/OiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlKSBuZ3hSb3dEZXRhaWw/OiBEYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmVcblxuICBAVmlld0NoaWxkKCdhY3Rpb25NZW51Q2VsbFRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCBhY3Rpb25NZW51Q2VsbFRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsIH1cbiAgc2V0IGFjdGlvbk1lbnVDZWxsVHBsKHZhbHVlOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYWN0aW9uTWVudUNlbGxUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEFjdGlvbk1lbnVDZWxsVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF9hY3Rpb25NZW51Q2VsbFRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ3RyZWVUb2dnbGVUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgdHJlZVRvZ2dsZVRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZT4gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fdHJlZVRvZ2dsZVRwbCB9XG4gIHNldCB0cmVlVG9nZ2xlVHBsKHZhbHVlOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl90cmVlVG9nZ2xlVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRUcmVlVG9nZ2xlVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF90cmVlVG9nZ2xlVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCdoZWFkZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgaGVhZGVyVHBsKCk6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faGVhZGVyVHBsIH1cbiAgc2V0IGhlYWRlclRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2hlYWRlclRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0SGVhZGVyVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF9oZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCdibGFua0hlYWRlclRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdldCBibGFua0hlYWRlclRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2JsYW5rSGVhZGVyVHBsIH1cbiAgc2V0IGJsYW5rSGVhZGVyVHBsKHZhbHVlOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYmxhbmtIZWFkZXJUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEJsYW5rSGVhZGVyVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF9ibGFua0hlYWRlclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUeXBlU2VsZWN0b3JUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgY2VsbFR5cGVTZWxlY3RvclRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2NlbGxUeXBlU2VsZWN0b3JUcGwgfVxuICBzZXQgY2VsbFR5cGVTZWxlY3RvclRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NlbGxUeXBlU2VsZWN0b3JUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldENlbGxUeXBlU2VsZWN0b3JUcGwobm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX2NlbGxUeXBlU2VsZWN0b3JUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBwdWJsaWMgY29sdW1uQ29tcG9uZW50cyQ/OiBPYnNlcnZhYmxlPERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudFtdPlxuICBwcml2YXRlIF9jb2xEaWZmZXJzSW5wOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+IH0gPSB7fVxuICBwcml2YXRlIF9jb2xEaWZmZXJzVHBsOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+IH0gPSB7fVxuXG4gIHB1YmxpYyByZWFkb25seSBjb2x1bW5zJDogT2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+XG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5Q29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuXG4gIHZpZXdDaGFuZ2U6IE9ic2VydmFibGU8TGlzdFJhbmdlPlxuXG4gIHByaXZhdGUgX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWVxuXG4gIC8vIFRPRE86IFJlbW92ZSB0aGlzIERPTS1kZXBlbmRlbnQgY29kZSB3aGVuIGEgd2F5IHRvIHByb3BlcnR5IGxpc3RlbiBmb3JcbiAgLy8gZGJsY2xpY2sgb24gdGhlIGhlYWRlciByZWFzaXplIGhhbmRsZXMuXG4gIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJywgWyAnJGV2ZW50JyBdKVxuICBfZGJsQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGlzSGFuZGxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNpemUtaGFuZGxlJylcbiAgICBpZiAoaXNIYW5kbGUpIHtcbiAgICAgIGNvbnN0IGlzUmVzaXplYWJsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucygncmVzaXplYWJsZScpXG4gICAgICBpZiAoaXNSZXNpemVhYmxlKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIGNvbnN0IGlkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudFxuICAgICAgICAgID8ucXVlcnlTZWxlY3RvcignLmRhdGF0YWJsZS1jb2x1bW4taGVhZGVyLXNlcGFyYXRvcicpXG4gICAgICAgICAgPy5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uLWlkJylcbiAgICAgICAgdGhpcy5fY29sdW1uc01hbmFnZXIuY29sdW1ucyQucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApLnN1YnNjcmliZShjb2x1bW5zID0+IHtcbiAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLiQkaWQgPT09IGlkKVxuICAgICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtblByb3AgPSBnZXRDb2x1bW5Qcm9wKGNvbHVtbilcbiAgICAgICAgICAgIGlmIChjb2x1bW5Qcm9wKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvbih7IGNvbHVtblByb3AsIGNhbkF1dG9SZXNpemU6IHRydWUgfSwgZmFsc2UpXG4gICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKFsgYWx0ZXJhdGlvbiBdKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcmVmZXJlbmNlczogRGF0YXRhYmxlUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnNNYW5hZ2VyOiBDb2x1bW5zTWFuYWdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlcjogQ29sdW1uc0FsdGVyYXRpb25zTWFuYWdlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKGtleSA9PiB7XG4gICAgICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKGtleSkgfHwga2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJvbSh3YWl0T25Db25kaXRpb25Bc3luYygoKSA9PiB0aGlzLl9wcmVmZXJlbmNlcy5pc0xvYWRlZChrZXkpKSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnNldEFsdGVyYXRpb25zKGtleSwgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5nZXQoKSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIGNvbnN0IGFwcGx5UHJlZnMgPSAoY29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdKSA9PiB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hcHBseShjb2xzLCB0aGlzKVxuICAgICAgICByZXR1cm4gY29sc1xuICAgICAgfSksXG4gICAgKVxuXG4gICAgdGhpcy5fcHJlZmVyZW5jZXNLZXkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAocHJlZnNLZXkgPT4ge1xuICAgICAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChwcmVmc0tleSkpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlcy5wcmVmZXJlbmNlcyhwcmVmc0tleSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcHJlZmVyZW5jZXMgPT4ge1xuICAgICAgICAgICAgYXdhaXQgd2FpdE9uQ29uZGl0aW9uQXN5bmMoKCkgPT4gdGhpcy5fcHJlZmVyZW5jZXMuaXNMb2FkZWQocHJlZnNLZXkpKVxuICAgICAgICAgICAgcmV0dXJuIHByZWZlcmVuY2VzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICBtYXAocHJlZmVyZW5jZXMgPT4ge1xuICAgICAgICAgICAgbGV0IGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvbltdID0gW11cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGFsdGVyYXRpb25zID0gbWFwQ29sdW1uc0FsdGVyYXRpb25zU3RhdGVzKHByZWZlcmVuY2VzLmFsdGVyYXRpb25zKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIG1hcCBjb2x1bW5zIGFsdGVyYXRpb25zIHN0YXRlcycpXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChhbHRlcmF0aW9ucylcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLl9jb2x1bW5zTWFuYWdlci5jb2x1bW5zJFxuXG4gICAgdGhpcy5kaXNwbGF5Q29sdW1ucyQgPSB0aGlzLmNvbHVtbnMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY29scyA9PiBhcHBseVByZWZzKGNvbHMpKSxcbiAgICAgIG1hcChjb2xzID0+IGNvbHMuZmlsdGVyKGMgPT4gIWMuaGlkZGVuKSksXG4gICAgICB0YXAodiA9PiByZW1vdmVVbnVzZWREaWZmcyh2LCB0aGlzLl9jb2xEaWZmZXJzSW5wLCB0aGlzLl9jb2xEaWZmZXJzVHBsKSksXG4gICAgKVxuXG4gICAgdGhpcy5maWx0ZXJzJCA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICB0aGlzLmZpbHRlclN0YXRlcyA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmlsdGVycyA9PiBjb21wb3NlRGF0YUZpbHRlclN0YXRlcyhmaWx0ZXJzKSlcbiAgICApXG5cbiAgICB0aGlzLnJvd3MkID0gdGhpcy5fZGF0YVNvdXJjZVN1YmplY3QucGlwZShcbiAgICAgIHN3aXRjaE1hcChkYXRhU291cmNlID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGFTb3VyY2UnLCBkYXRhU291cmNlKVxuICAgICAgICBsZXQgZGF0YVN0cmVhbTogT2JzZXJ2YWJsZTxhbnlbXT5cblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ35kYXRhc291cmNlJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+b2JzZXJ2YWJsZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UgYXMgYW55XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+YXJyYXknKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBvZihkYXRhU291cmNlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+cm93cyBmYWxsYmFjaycpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IHRoaXMuX3Jvd3MuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC8vIC5waXBlKHRhcCh2ID0+IGNvbnNvbGUubG9nKCdyb3dzficsIHYpKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5leHRlcm5hbEZpbHRlcmluZykge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdub3QgdXNpbmcgZXh0ZXJuYWxGaWx0ZXJpbmcnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU3RyZWFtLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAocm93cyA9PiB0aGlzLl9maWx0ZXJzU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAgICAgY29uY2F0TWFwKGZpbHRlcnMgPT4gb2Yocm93cykucGlwZShjb21wb3NlRGF0YUZpbHRlcnMoZmlsdGVycykpKSxcbiAgICAgICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2NvbXBvc2VkIGZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgICApKVxuICAgICAgICAgIClcblxuICAgICAgICAgIC8vIGRhdGFTdHJlYW0gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5waXBlKFxuICAgICAgICAgIC8vICAgdGFwKHYgPT4gY29uc29sZS5sb2coJ2ZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgLy8gICBjb25jYXRNYXAoZmlsdGVycyA9PiBkYXRhU3RyZWFtLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKSksXG4gICAgICAgICAgLy8gICB0YXAodiA9PiBjb25zb2xlLmxvZygnY29tcG9zZWQgZmlsdGVycycsIHYpKSxcbiAgICAgICAgICAvLyApXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdzdHJlYW0nLCB2KSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHZpZXdDaGFuZ2UgZm9yIENvbGxlY3Rpb25WaWV3ZXIuXG4gICAgdGhpcy52aWV3Q2hhbmdlID0gdGhpcy5wYWdlLnBpcGUobWFwKHAgPT4gKHsgc3RhcnQ6IDAsIGVuZDogcC5jb3VudCB9KSkpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5yb3dEZXRhaWwpIHtcbiAgICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbiA9IHRoaXMucm93RGV0YWlsLl90b2dnbGUuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMubmd4Um93RGV0YWlsKSB7XG4gICAgICAgICAgdGhpcy5uZ3hSb3dEZXRhaWwudG9nZ2xlLmVtaXQoZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcm93RGV0YWlsVG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1lbnVCYXJGaWx0ZXJzKGZpbHRlcnM6IERhdGFGaWx0ZXJbXSkge1xuICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyB8fCBbXSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5Db21wb25lbnQocHJvcE5hbWU6IHN0cmluZyk6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jb2x1bW5Db21wb25lbnRzIHx8IHRoaXMuY29sdW1uQ29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgdHBsID0gdGhpcy5jb2x1bW5Db21wb25lbnRzLmZpbmQodCA9PiB0LnByb3AgPT09IHByb3BOYW1lKVxuICAgIGlmICh0cGwpIHtcbiAgICAgIHJldHVybiB0cGxcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgX2NvbHVtbkRhdGEoY29sOiBhbnkpOiB7IGNvbDogYW55LCBjb21wOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfCBudWxsIH0ge1xuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmdldENvbHVtbkNvbXBvbmVudChjb2wucHJvcClcbiAgICByZXR1cm4geyBjb2wsIGNvbXAgfVxuICB9XG5cbiAgX2dldFJvd0V4cGFuZGVkKHJvdzogYW55KSB7XG4gICAgaWYgKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlLmJvZHlDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZS5ib2R5Q29tcG9uZW50LmdldFJvd0V4cGFuZGVkKHJvdylcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUZuQ29sdW1uKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLnByb3BcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGF0YWJsZVJlc2l6ZShldmVudDogSUVsZW1lbnRSZXNpemVkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5uZ3hEYXRhdGFibGUgJiYgdGhpcy5uZ3hEYXRhdGFibGVFbGVtZW50ICYmIHRoaXMubmd4RGF0YXRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciBpbnRlZ3JhdGluZyB0aGlzIGludG8gdGhlIG5neC1kYXRhdGFibGUgbGlicmFyeSB0byBhdm9pZFxuICAgICAgLy8gbXVsdGlwbGUgcmVzaXplIGNhbGxzIHdoZW4gdGhlIHRhYmxlIHJlc2l6ZXMgaXRzZWxmLlxuICAgICAgdGhpcy5uZ3hEYXRhdGFibGUucmVjYWxjdWxhdGUoKVxuICAgIH1cbiAgfVxuXG4gIF9vblJlc2l6ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNpemUuZW1pdChldmVudClcblxuICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKGV2ZW50LmNvbHVtbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtblByb3AgPSBnZXRDb2x1bW5Qcm9wKGV2ZW50LmNvbHVtbilcbiAgICBpZiAoY29sdW1uUHJvcCkge1xuICAgICAgbGV0IGFkZEFsdGVyYXRpb24gPSBmYWxzZVxuXG4gICAgICBpZiAoIXRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdKSB7XG4gICAgICAgIHRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdID0gdHJ1ZVxuICAgICAgICBhZGRBbHRlcmF0aW9uID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQuaXNEb25lKSB7XG4gICAgICAgIHRoaXMuX3Jlc2l6aW5nW2NvbHVtblByb3BdID0gZmFsc2VcbiAgICAgICAgYWRkQWx0ZXJhdGlvbiA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZEFsdGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uKHtcbiAgICAgICAgICBjb2x1bW5Qcm9wLFxuICAgICAgICAgIHdpZHRoOiBldmVudC5jb2x1bW4ud2lkdGgsXG4gICAgICAgICAgY2FuQXV0b1Jlc2l6ZTogZmFsc2VcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX29uUmVvcmRlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZW9yZGVyLmVtaXQoZXZlbnQpXG5cbiAgICBjb25zdCBjb2x1bW5Qcm9wID0gZ2V0Q29sdW1uUHJvcChldmVudC5jb2x1bW4pXG4gICAgaWYgKGNvbHVtblByb3ApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlckFsdGVyYXRpb24gPSB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmdldCgpLmZpbmQoeCA9PiB4LnR5cGUgPT09ICdvcmRlcicpXG4gICAgICBjb25zdCBzdGF0ZTogT3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlID0ge1xuICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgLi4uKGN1cnJlbnRPcmRlckFsdGVyYXRpb24/LnN0YXRlLmNvbHVtbnMgfHwgW10pLFxuICAgICAgICAgIHsgY29sdW1uUHJvcCwgaW5kZXg6IGV2ZW50Lm5ld1ZhbHVlIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBPcmRlckNvbHVtbnNBbHRlcmF0aW9uKHN0YXRlLCB0cnVlKVxuICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoWyBhbHRlcmF0aW9uIF0pXG4gICAgfVxuICB9XG5cbiAgX29uU29ydChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zb3J0LmVtaXQoZXZlbnQpXG5cbiAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbih7IHNvcnRzOiBldmVudC5zb3J0cyB9LCB0cnVlKVxuICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKFsgYWx0ZXJhdGlvbiBdKVxuICB9XG5cbiAgX29uVHJlZUFjdGlvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSBldmVudC5yb3dJbmRleFxuICAgIGNvbnN0IHJvdyA9IGV2ZW50LnJvd1xuICAgIGlmIChyb3cudHJlZVN0YXR1cyA9PT0gJ2NvbGxhcHNlZCcpIHtcbiAgICAgIHJvdy50cmVlU3RhdHVzID0gJ2V4cGFuZGVkJ1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cudHJlZVN0YXR1cyA9ICdjb2xsYXBzZWQnXG4gICAgfVxuICAgIHRoaXMucm93cyA9IFsgLi4udGhpcy5yb3dzIF1cbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYWdlIGluZm8gZnJvbSB0aGUgd3JhcHBlZCBOZ3hEYXRhdGFibGUgaW5zdGFuY2Ugb3IgZGVmYXVsdHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBhZ2VJbmZvKCk6IFRoZVNlYW1QYWdlSW5mbyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldDogdGhpcy5uZ3hEYXRhdGFibGU/Lm9mZnNldCA/PyAwLFxuICAgICAgcGFnZVNpemU6IHRoaXMubmd4RGF0YXRhYmxlPy5wYWdlU2l6ZSA/PyAwLFxuICAgICAgbGltaXQ6IHRoaXMubmd4RGF0YXRhYmxlPy5saW1pdCxcbiAgICAgIGNvdW50OiB0aGlzLm5neERhdGF0YWJsZT8uY291bnQgPz8gMFxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0YXRhYmxlLXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2VhbS1kYXRhdGFibGUtbWVudS1iYXJcIj48L25nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJkYXRhdGFibGUtdGFibGUtd3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8bmd4LWRhdGF0YWJsZVxuICAgICAgICBbY29sdW1uTW9kZV09XCIkYW55KGNvbHVtbk1vZGUpXCJcbiAgICAgICAgW3Njcm9sbGJhclZdPVwic2Nyb2xsYmFyVlwiXG4gICAgICAgIFtzY3JvbGxiYXJIXT1cInNjcm9sbGJhckhcIlxuICAgICAgICBbdmlydHVhbGl6YXRpb25dPVwidmlydHVhbGl6YXRpb25cIlxuICAgICAgICBbdGFyZ2V0TWFya2VyVGVtcGxhdGVdPVwidGFyZ2V0TWFya2VyVGVtcGxhdGVcIlxuICAgICAgICBbZ3JvdXBSb3dzQnldPVwiJGFueShncm91cFJvd3NCeSlcIlxuICAgICAgICBbZ3JvdXBlZFJvd3NdPVwiJGFueShncm91cGVkUm93cylcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiJGFueShzZWxlY3RlZClcIlxuICAgICAgICBbZXh0ZXJuYWxQYWdpbmddPVwiZXh0ZXJuYWxQYWdpbmdcIlxuICAgICAgICBbZXh0ZXJuYWxTb3J0aW5nXT1cImV4dGVybmFsU29ydGluZ1wiXG4gICAgICAgIFtsaW1pdF09XCIkYW55KGxpbWl0KVwiXG4gICAgICAgIFtjb3VudF09XCIkYW55KGNvdW50KVwiXG4gICAgICAgIFtvZmZzZXRdPVwiJGFueShvZmZzZXQpXCJcbiAgICAgICAgW2xvYWRpbmdJbmRpY2F0b3JdPVwibG9hZGluZ0luZGljYXRvclwiXG4gICAgICAgIFtzZWxlY3Rpb25UeXBlXT1cIiRhbnkoc2VsZWN0aW9uVHlwZSlcIlxuICAgICAgICBbcmVvcmRlcmFibGVdPVwicmVvcmRlcmFibGVcIlxuICAgICAgICBbc3dhcENvbHVtbnNdPVwic3dhcENvbHVtbnNcIlxuICAgICAgICBbc29ydFR5cGVdPVwiJGFueShzb3J0VHlwZSlcIlxuICAgICAgICBbc29ydHNdPVwiJGFueShfc29ydHMpXCJcbiAgICAgICAgW2Nzc0NsYXNzZXNdPVwiY3NzQ2xhc3Nlc1wiXG4gICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlc1wiXG4gICAgICAgIFtyb3dJZGVudGl0eV09XCIkYW55KHJvd0lkZW50aXR5KVwiXG4gICAgICAgIFtyb3dDbGFzc109XCJyb3dDbGFzc1wiXG4gICAgICAgIFtzZWxlY3RDaGVja109XCJzZWxlY3RDaGVja1wiXG4gICAgICAgIFtkaXNwbGF5Q2hlY2tdPVwiJGFueShkaXNwbGF5Q2hlY2spXCJcbiAgICAgICAgW2dyb3VwRXhwYW5zaW9uRGVmYXVsdF09XCJncm91cEV4cGFuc2lvbkRlZmF1bHRcIlxuICAgICAgICBbdHJhY2tCeVByb3BdPVwiJGFueSh0cmFja0J5UHJvcClcIlxuICAgICAgICBbc2VsZWN0QWxsUm93c09uUGFnZV09XCJzZWxlY3RBbGxSb3dzT25QYWdlXCJcbiAgICAgICAgW3RyZWVGcm9tUmVsYXRpb25dPVwiJGFueSh0cmVlRnJvbVJlbGF0aW9uKVwiXG4gICAgICAgIFt0cmVlVG9SZWxhdGlvbl09XCIkYW55KHRyZWVUb1JlbGF0aW9uKVwiXG4gICAgICAgIFtzdW1tYXJ5Um93XT1cInN1bW1hcnlSb3dcIlxuICAgICAgICBbc3VtbWFyeUhlaWdodF09XCIkYW55KHN1bW1hcnlIZWlnaHQpXCJcbiAgICAgICAgW3N1bW1hcnlQb3NpdGlvbl09XCIkYW55KHN1bW1hcnlQb3NpdGlvbilcIlxuICAgICAgICBbcm93c109XCJyb3dzJCB8IGFzeW5jXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiJGFueShkaXNwbGF5Q29sdW1ucyQgfCBhc3luYylcIlxuICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIiRhbnkoaGVhZGVySGVpZ2h0KVwiXG4gICAgICAgIFtyb3dIZWlnaHRdPVwiJGFueShyb3dIZWlnaHQpXCJcbiAgICAgICAgW2Zvb3RlckhlaWdodF09XCIkYW55KGZvb3RlckhlaWdodClcIlxuICAgICAgICAoc2Nyb2xsKT1cInNjcm9sbC5lbWl0KCRldmVudClcIlxuICAgICAgICAoYWN0aXZhdGUpPVwiYWN0aXZhdGUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNvcnQpPVwiX29uU29ydCgkZXZlbnQpXCJcbiAgICAgICAgKHBhZ2UpPVwicGFnZS5lbWl0KCRldmVudClcIlxuICAgICAgICAocmVvcmRlcik9XCJfb25SZW9yZGVyKCRldmVudClcIlxuICAgICAgICAocmVzaXplKT1cIl9vblJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgICAgKHRhYmxlQ29udGV4dG1lbnUpPVwidGFibGVDb250ZXh0bWVudS5lbWl0KCRldmVudClcIlxuICAgICAgICAodHJlZUFjdGlvbik9XCJ0cmVlQWN0aW9uLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzZWFtRWxlbVJlc2l6ZWQpPVwib25EYXRhdGFibGVSZXNpemUoJGV2ZW50KVwiXG4gICAgICAgICh0cmVlQWN0aW9uKT1cIl9vblRyZWVBY3Rpb24oJGV2ZW50KVwiPlxuXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlciBbcm93SGVpZ2h0XT1cIjUwXCIgI215R3JvdXBIZWFkZXIgKm5nSWY9XCJncm91cFJvd3NCeVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXA9XCJncm91cFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCIgbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXItdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgYmctbGlnaHQgcC0xXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1ib3R0b21dPVwiIWV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLXJpZ2h0XT1cIiFleHBhbmRlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1kb3duXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJFeHBhbmQvQ29sbGFwc2UgR3JvdXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibmd4RGF0YXRhYmxlPy5ncm91cEhlYWRlcj8udG9nZ2xlRXhwYW5kR3JvdXAoZ3JvdXApXCI+XG4gICAgICAgICAgICAgIDxiPkFnZToge3sgZ3JvdXAuYWdlIH19PC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWdyb3VwLWhlYWRlcj5cblxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1yb3ctZGV0YWlsICpuZ0lmPVwicm93RGV0YWlsICYmIHJvd0RldGFpbC50ZW1wbGF0ZVwiXG4gICAgICAgICAgW3Jvd0hlaWdodF09XCJyb3dEZXRhaWwucm93SGVpZ2h0IHx8IDBcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCIkYW55KHJvd0RldGFpbC50ZW1wbGF0ZSlcIlxuICAgICAgICAgICh0b2dnbGUpPVwicm93RGV0YWlsLnRvZ2dsZS5lbWl0KCRldmVudClcIj5cbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLXJvdy1kZXRhaWw+XG5cbiAgICAgICAgPG5neC1kYXRhdGFibGUtZm9vdGVyICpuZ0lmPVwiZm9vdGVyICYmIGZvb3Rlci50ZW1wbGF0ZVwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cIiRhbnkoZm9vdGVyLnRlbXBsYXRlKVwiPlxuICAgICAgICA8L25neC1kYXRhdGFibGUtZm9vdGVyPlxuICAgICAgPC9uZ3gtZGF0YXRhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2JsYW5rSGVhZGVyVHBsIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlPjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyVHBsIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlXG4gIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtc29ydEZuPVwic29ydEZuXCI+XG4gIDxzdHJvbmcgKm5nSWY9XCIhY29sdW1uLnNvcnRhYmxlXCIgY2xhc3M9XCJkcmFnZ2FibGVcIj57e2NvbHVtbi5uYW1lfX08L3N0cm9uZz5cbiAgPHN0cm9uZyAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZVwiIGNsYXNzPVwiZGF0YXRhYmxlLXNvcnQtdGFyZ2V0IGRyYWdnYWJsZVwiIChjbGljayk9XCJzb3J0Rm4oKVwiPnt7Y29sdW1uLm5hbWV9fTwvc3Ryb25nPlxuICA8ZGl2IGNsYXNzPVwiZGF0YXRhYmxlLWNvbHVtbi1oZWFkZXItc2VwYXJhdG9yXCIgW2F0dHIuZGF0YS1jb2x1bW4taWRdPVwiY29sdW1uLiQkaWRcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2VsbFR5cGVTZWxlY3RvclRwbCBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGVcbiAgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxzZWFtLXRhYmxlLWNlbGwtdHlwZS1zZWxlY3RvciAqbmdJZj1cInJvd1wiXG4gICAgW3R5cGVdPVwiY29sdW1uLmNlbGxUeXBlXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgW3Jvd109XCJyb3dcIlxuICAgIFtjb2xEYXRhXT1cImNvbHVtblwiPlxuICA8L3NlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhY3Rpb25NZW51Q2VsbFRwbCBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGVcbiAgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1yb3c9XCJyb3dcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93ICYmIHJvd0FjdGlvbkl0ZW0/LnRlbXBsYXRlXCI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHJvd0FjdGlvbkl0ZW0/LnRlbXBsYXRlKVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJlZVRvZ2dsZVRwbCBuZ3gtZGF0YXRhYmxlLXRyZWUtdG9nZ2xlIGxldC10cmVlPVwiY2VsbENvbnRleHRcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwicC0wIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJ0blwiXG4gICAgW2Rpc2FibGVkXT1cInRyZWUudHJlZVN0YXR1cz09PSdkaXNhYmxlZCdcIlxuICAgIChjbGljayk9XCJ0cmVlLm9uVHJlZUFjdGlvbigpXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJ0cmVlLnRyZWVTdGF0dXM9PT0nbG9hZGluZydcIj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIl9mYVNwaW5uZXJcIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2NvbGxhcHNlZCdcIj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIl9mYUNoZXZyb25SaWdodFwiPjwvZmEtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJ0cmVlLnRyZWVTdGF0dXM9PT0nZXhwYW5kZWQnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFDaGV2cm9uRG93blwiPjwvZmEtaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJ0cmVlLnRyZWVTdGF0dXM9PT0nZGlzYWJsZWQnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFDaGV2cm9uUmlnaHRcIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
670
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvZGF0YXRhYmxlL2RhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL2RhdGF0YWJsZS9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RSxPQUFPLEVBQWdCLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlFLE9BQU8sRUFBZ0MsWUFBWSxFQUFhLE1BQU0sMEJBQTBCLENBQUE7QUFDaEcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFDTCxTQUFTLEVBSVQsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDakcsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVGLE9BQU8sRUFDTCxVQUFVLEVBS1Ysa0JBQWtCLElBQUkscUJBQXFCLEVBQzND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c0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlLCBpc0RhdGFTb3VyY2UsIExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucydcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvblJpZ2h0LCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQge1xuICBDb2x1bW5Nb2RlLFxuICBDb250ZXh0bWVudVR5cGUsXG4gIERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlLFxuICBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUsXG4gIERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZSxcbiAgRGF0YXRhYmxlQ29tcG9uZW50IGFzIE5neERhdGF0YWJsZUNvbXBvbmVudCxcbiAgRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlLFxuICBTb3J0VHlwZSxcbiAgVHJlZVN0YXR1c1xufSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblR5cGUgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiwgSW5wdXROdW1iZXIgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IGNvbXBvc2VEYXRhRmlsdGVycywgY29tcG9zZURhdGFGaWx0ZXJTdGF0ZXMsIERhdGFGaWx0ZXIsIERhdGFGaWx0ZXJTdGF0ZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhLWZpbHRlcnMnXG5pbXBvcnQgeyBJRWxlbWVudFJlc2l6ZWRFdmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9zaGFyZWQnXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQsIHdhaXRPbkNvbmRpdGlvbkFzeW5jIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLWFjdGlvbi1tZW51L2RhdGF0YWJsZS1hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9kYXRhdGFibGUtY29sdW1uL2RhdGF0YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RhdGF0YWJsZS1mb290ZXIvZGF0YXRhYmxlLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YXRhYmxlLW1lbnUtYmFyL2RhdGF0YWJsZS1tZW51LWJhci5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0YXRhYmxlLXJvdy1kZXRhaWwvZGF0YXRhYmxlLXJvdy1kZXRhaWwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLXJvdy1hY3Rpb24taXRlbS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgRGF0YXRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9kYXRhdGFibGUtZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBUaGVTZWFtUGFnZUluZm8gfSBmcm9tICcuLi9tb2RlbHMvcGFnZS1pbmZvJ1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL21vZGVscy9zb3J0LWl0ZW0nXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbidcbmltcG9ydCB7IENvbHVtbnNNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlJ1xuaW1wb3J0IHsgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhdGFibGUtY29sdW1uLWNoYW5nZXMuc2VydmljZSdcbmltcG9ydCB7IERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IgfSBmcm9tICcuLi90b2tlbnMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuaW1wb3J0IHsgcmVtb3ZlVW51c2VkRGlmZnMgfSBmcm9tICcuLi91dGlscy9yZW1vdmUtdW51c2VkLWRpZmZzJ1xuaW1wb3J0IHsgdHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNsYXRlLXRlbXBsYXRlcydcbmltcG9ydCB7IENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29sdW1ucy1hbHRlcmF0aW9ucy1tYW5hZ2VyLnNlcnZpY2UnXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXG5pbXBvcnQgeyBtYXBDb2x1bW5zQWx0ZXJhdGlvbnNTdGF0ZXMgfSBmcm9tICcuLi91dGlscy9tYXAtY29sdW1ucy1hbHRlcmF0aW9ucy1zdGF0ZXMnXG5pbXBvcnQgeyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvd2lkdGguY29sdW1ucy1hbHRlcmF0aW9uJ1xuaW1wb3J0IHsgZ2V0Q29sdW1uUHJvcCB9IGZyb20gJy4uL3V0aWxzL2dldC1jb2x1bW4tcHJvcCdcbmltcG9ydCB7IE9yZGVyQ29sdW1uc0FsdGVyYXRpb24sIE9yZGVyQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL29yZGVyLmNvbHVtbnMtYWx0ZXJhdGlvbidcbmltcG9ydCB7IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uJ1xuXG4vKipcbiAqIE5PVEU6IFRoaXMgaXMgc3RpbGwgYmVpbmcgd29ya2VkIG9uLiBJIGFtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoaXMgbW9kZWxcbiAqIGJlY2F1c2UgYG5neC1kYXRhdGFibGVgIGp1c3QgdXNlcyBhbiB1bnR5cGVkIG9iamVjdCBhbmQgc2V0cyBwcm9wZXJ0aWVzIGluXG4gKiBtdWx0aXBsZSBwbGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNlbGxDb250ZXh0IHtcbiAgYWxsUm93c1NlbGVjdGVkOiBmYWxzZVxuXG4gIHNlbGVjdEZuOiAoKSA9PiBhbnlcbiAgc29ydERpcj86ICdhc2MnIHwgJ2Rlc2MnXG4gIHNvcnRGbjogKCkgPT4gYW55XG5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG5cbiAgb25DaGVja2JveENoYW5nZUZuPzogYW55XG4gIGFjdGl2YXRlRm4/OiBhbnlcbiAgcm93PzogYW55XG4gIGdyb3VwPzogYW55XG4gIHZhbHVlPzogYW55XG4gIGNvbHVtbj86IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5cbiAgcm93SGVpZ2h0PzogbnVtYmVyXG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuXG4gIHJvd0luZGV4PzogbnVtYmVyXG4gIHRyZWVTdGF0dXM/OiBUcmVlU3RhdHVzXG4gIG9uVHJlZUFjdGlvbj86IGFueVxufVxuXG4vKipcbiAqIEludGVuZGVkIGZvciBpbnRlcm5hbCBjbGFzc2VzIGRlY2xhcmVkIGJ5IHRoZSBgVGhlU2VhbURhdGF0YWJsZU1vZHVsZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0RBVEFUQUJMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXRhRmlsdGVyPignTGliRGF0YXRhYmxlJylcblxuZXhwb3J0IGNvbnN0IF9USEVTRUFNX0RBVEFUQUJMRTogYW55ID0ge1xuICBwcm92aWRlOiBUSEVTRUFNX0RBVEFUQUJMRSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhdGFibGVDb21wb25lbnQpXG59XG5cbmV4cG9ydCBjb25zdCBfVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogVEhFU0VBTV9EQVRBVEFCTEVfQUNDRVNTT1IsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXRhYmxlQ29tcG9uZW50KVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWRhdGF0YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAlKScsIG9wYWNpdHk6ICcwJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjUwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwJSknLCBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgXSlcbiAgICBdKVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBfVEhFU0VBTV9EQVRBVEFCTEUsXG4gICAgRGF0YXRhYmxlQ29sdW1uQ2hhbmdlc1NlcnZpY2UsXG4gICAgX1RIRVNFQU1fREFUQVRBQkxFX0FDQ0VTU09SLFxuICAgIENvbHVtbnNNYW5hZ2VyU2VydmljZSxcbiAgICBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yLCBDb2xsZWN0aW9uVmlld2VyIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsUGFnaW5nOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4dGVybmFsU29ydGluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHRlcm5hbEZpbHRlcmluZzogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sb2FkaW5nSW5kaWNhdG9yOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Jlb3JkZXJhYmxlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N3YXBDb2x1bW5zOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyb3VwRXhwYW5zaW9uRGVmYXVsdDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWxlY3RBbGxSb3dzT25QYWdlOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N1bW1hcnlSb3c6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlydHVhbGl6YXRpb246IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYmFyVjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zY3JvbGxiYXJIOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xpbWl0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY291bnQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9vZmZzZXQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oZWFkZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yb3dIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9mb290ZXJIZWlnaHQ6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdW1tYXJ5SGVpZ2h0OiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc29ydHM6IFNvcnRJdGVtW10gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgcmVhZG9ubHkgX2ZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duXG4gIHJlYWRvbmx5IF9mYUNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0XG4gIHJlYWRvbmx5IF9mYVNwaW5uZXIgPSBmYVNwaW5uZXJcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YUZpbHRlcltdPihbXSlcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YVNvdXJjZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFTb3VyY2U8YW55PiB8IGFueVtdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgcHJpdmF0ZSBfcmVzaXppbmc6IHsgW3Byb3A6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclN0YXRlczogT2JzZXJ2YWJsZTxEYXRhRmlsdGVyU3RhdGVbXT5cblxuICBnZXQgZmlsdGVycygpOiBEYXRhRmlsdGVyW10geyByZXR1cm4gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUgfVxuXG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxEYXRhRmlsdGVyW10+XG5cbiAgQElucHV0KClcbiAgZ2V0IHByZWZlcmVuY2VzS2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXNLZXkudmFsdWUgfVxuICBzZXQgcHJlZmVyZW5jZXNLZXkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHsgdGhpcy5fcHJlZmVyZW5jZXNLZXkubmV4dCh2YWx1ZSB8fCB1bmRlZmluZWQpIH1cbiAgcHJpdmF0ZSBfcHJlZmVyZW5jZXNLZXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KHVuZGVmaW5lZClcblxuICBASW5wdXQoKSB0YXJnZXRNYXJrZXJUZW1wbGF0ZTogYW55XG5cbiAgQElucHV0KClcbiAgc2V0IGNvbHVtbnModmFsdWU6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldElucHV0Q29sdW1ucyhBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10pXG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcm93cygpOiBhbnlbXSB7IHJldHVybiB0aGlzLl9yb3dzLnZhbHVlIH1cbiAgc2V0IHJvd3ModmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fcm93cy5uZXh0KHZhbHVlIHx8IFtdKVxuICB9XG4gIHByaXZhdGUgX3Jvd3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSlcblxuICBwdWJsaWMgcm93cyQ6IE9ic2VydmFibGU8YW55W10+XG5cbiAgQElucHV0KCkgY29sdW1uTW9kZTogQ29sdW1uTW9kZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBDb2x1bW5Nb2RlLmZvcmNlXG5cbiAgQElucHV0KCkgZ3JvdXBSb3dzQnk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZ3JvdXBlZFJvd3M6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSBbXVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFBhZ2luZyA9IGZhbHNlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBleHRlcm5hbFNvcnRpbmcgPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZXh0ZXJuYWxGaWx0ZXJpbmcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDApIGNvdW50ID0gMFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgb2Zmc2V0ID0gMFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBsb2FkaW5nSW5kaWNhdG9yID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0aW9uVHlwZSgpOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9jb2x1bW5zTWFuYWdlci5nZXRTZWxlY3Rpb25UeXBlKCkgfVxuICBzZXQgc2VsZWN0aW9uVHlwZSh2YWx1ZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRTZWxlY3Rpb25UeXBlKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZW9yZGVyYWJsZSA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN3YXBDb2x1bW5zID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBnZXQgc29ydFR5cGUoKTogU29ydFR5cGUgeyByZXR1cm4gdGhpcy5fc29ydFR5cGUgfVxuICBzZXQgc29ydFR5cGUodmFsdWU6IFNvcnRUeXBlKSB7XG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgKHZhbHVlID09PSBTb3J0VHlwZS5zaW5nbGUgfHwgdmFsdWUgPT09IFNvcnRUeXBlLm11bHRpKSkge1xuICAgICAgdGhpcy5fc29ydFR5cGUgPSB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zb3J0VHlwZSA9IFNvcnRUeXBlLnNpbmdsZVxuICAgIH1cbiAgfVxuICBfc29ydFR5cGU6IFNvcnRUeXBlID0gU29ydFR5cGUuc2luZ2xlXG5cbiAgQElucHV0KClcbiAgZ2V0IHNvcnRzKCk6IFNvcnRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLm5neERhdGF0YWJsZSA/IHRoaXMubmd4RGF0YXRhYmxlLnNvcnRzIDogdGhpcy5fc29ydHNcbiAgfVxuICBzZXQgc29ydHModmFsdWU6IFNvcnRJdGVtW10pIHtcbiAgICB0aGlzLl9zb3J0cyA9IG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyBjb2VyY2VBcnJheSh2YWx1ZSkgOiBbXVxuICB9XG4gIF9zb3J0czogU29ydEl0ZW1bXSA9IFtdXG5cbiAgQElucHV0KCkgY3NzQ2xhc3NlczogYW55IHwgdW5kZWZpbmVkIHwgbnVsbCA9IHtcbiAgICBzb3J0QXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tdXAnLFxuICAgIHNvcnREZXNjZW5kaW5nOiAnZGF0YXRhYmxlLWljb24tZG93bicsXG4gICAgcGFnZXJMZWZ0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1sZWZ0JyxcbiAgICBwYWdlclJpZ2h0QXJyb3c6ICdkYXRhdGFibGUtaWNvbi1yaWdodCcsXG4gICAgcGFnZXJQcmV2aW91czogJ2RhdGF0YWJsZS1pY29uLXByZXYnLFxuICAgIHBhZ2VyTmV4dDogJ2RhdGF0YWJsZS1pY29uLXNraXAnXG4gIH1cblxuICBASW5wdXQoKSBtZXNzYWdlczogYW55IHwgdW5kZWZpbmVkIHwgbnVsbCA9IHtcbiAgICAvLyBNZXNzYWdlIHRvIHNob3cgd2hlbiBhcnJheSBpcyBwcmVzZW50ZWRcbiAgICAvLyBidXQgY29udGFpbnMgbm8gdmFsdWVzXG4gICAgZW1wdHlNZXNzYWdlOiAnTm8gcmVjb3JkcyBmb3VuZCcsXG5cbiAgICAvLyBGb290ZXIgdG90YWwgbWVzc2FnZVxuICAgIHRvdGFsTWVzc2FnZTogJ3RvdGFsJyxcblxuICAgIC8vIEZvb3RlciBzZWxlY3RlZCBtZXNzYWdlXG4gICAgc2VsZWN0ZWRNZXNzYWdlOiAnc2VsZWN0ZWQnXG4gIH1cblxuICBASW5wdXQoKSByb3dJZGVudGl0eTogKCh4OiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQgfCBudWxsID0gKHg6IGFueSkgPT4geFxuXG4gIEBJbnB1dCgpIHJvd0NsYXNzOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgc2VsZWN0Q2hlY2s6IGFueSB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgZGlzcGxheUNoZWNrOiAoKHJvdzogYW55LCBjb2x1bW4/OiBhbnksIHZhbHVlPzogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JvdXBFeHBhbnNpb25EZWZhdWx0ID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmFja0J5UHJvcDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZWxlY3RBbGxSb3dzT25QYWdlID0gZmFsc2VcblxuICBASW5wdXQoKSB0cmVlRnJvbVJlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIHRyZWVUb1JlbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdW1tYXJ5Um93ID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgc3VtbWFyeUhlaWdodCA9IDMwXG4gIEBJbnB1dCgpIHN1bW1hcnlQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICd0b3AnXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHZpcnR1YWxpemF0aW9uID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGhlYWRlckhlaWdodCA9IDUwXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHJvd0hlaWdodCA9IDUwXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGZvb3RlckhlaWdodCA9IDQwXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNjcm9sbGJhclYgPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzY3JvbGxiYXJIID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhU291cmNlKHZhbHVlOiBEYXRhU291cmNlPGFueT4gfCBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhdGFibGVEYXRhU291cmNlKSB7XG4gICAgICB2YWx1ZS5zZXREYXRhdGFibGVBY2Nlc3Nvcih0aGlzKVxuICAgIH1cbiAgICB0aGlzLl9kYXRhU291cmNlU3ViamVjdC5uZXh0KHZhbHVlIHx8IHVuZGVmaW5lZClcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEV2ZW50PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVTZWFtUGFnZUluZm8+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlb3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG4gIEBPdXRwdXQoKSByZWFkb25seSB0YWJsZUNvbnRleHRtZW51ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50LCB0eXBlOiBDb250ZXh0bWVudVR5cGUsIGNvbnRlbnQ6IGFueSB9PihmYWxzZSlcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRyZWVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3Rpb25SZWZyZXNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGlkZGVuQ29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICBAQ29udGVudENoaWxkcmVuKERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudClcbiAgc2V0IGNvbHVtbkNvbXBvbmVudHModmFsdWU6IFF1ZXJ5TGlzdDxEYXRhdGFibGVDb2x1bW5Db21wb25lbnQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0VGVtcGxhdGVDb2x1bW5zKHRyYW5zbGF0ZVRlbXBsYXRlQ29sdW1ucyh2YWx1ZT8udG9BcnJheSgpID8/IFtdKSlcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRGF0YXRhYmxlQWN0aW9uTWVudUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uTWVudT86IERhdGF0YWJsZUFjdGlvbk1lbnVDb21wb25lbnRcbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgcm93QWN0aW9uSXRlbSgpOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3Jvd0FjdGlvbkl0ZW0gfVxuICBzZXQgcm93QWN0aW9uSXRlbSh2YWx1ZTogRGF0YXRhYmxlUm93QWN0aW9uSXRlbURpcmVjdGl2ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Jvd0FjdGlvbkl0ZW0gPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFJvd0FjdGlvbkl0ZW0obm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkKVxuICB9XG4gIHByaXZhdGUgX3Jvd0FjdGlvbkl0ZW06IERhdGF0YWJsZVJvd0FjdGlvbkl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWRcblxuICBAQ29udGVudENoaWxkKFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJvd0RldGFpbD86IFRoZVNlYW1EYXRhdGFibGVSb3dEZXRhaWxEaXJlY3RpdmVcbiAgQENvbnRlbnRDaGlsZChUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmb290ZXI/OiBUaGVTZWFtRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlXG5cbiAgQENvbnRlbnRDaGlsZChEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50KVxuICBnZXQgbWVudUJhckNvbXBvbmVudCgpOiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX21lbnVCYXJDb21wb25lbnQgfVxuICBzZXQgbWVudUJhckNvbXBvbmVudCh2YWx1ZTogRGF0YXRhYmxlTWVudUJhckNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX21lbnVCYXJDb21wb25lbnQgPSB2YWx1ZVxuXG4gICAgaWYgKHRoaXMuX21lbnVCYXJTdWIpIHsgdGhpcy5fbWVudUJhclN1Yi51bnN1YnNjcmliZSgpIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fc2V0TWVudUJhckZpbHRlcnModmFsdWUuZmlsdGVycygpKVxuXG4gICAgICB0aGlzLl9tZW51QmFyU3ViID0gdGhpcy5fbWVudUJhckNvbXBvbmVudD8uZmlsdGVyc0NoYW5nZWRcbiAgICAgICAgLnN1YnNjcmliZSh2ID0+IHsgdGhpcy5fc2V0TWVudUJhckZpbHRlcnModmFsdWUuZmlsdGVycygpKSB9KVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9tZW51QmFyQ29tcG9uZW50OiBEYXRhdGFibGVNZW51QmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX21lbnVCYXJTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZFxuXG4gIEBWaWV3Q2hpbGQoTmd4RGF0YXRhYmxlQ29tcG9uZW50KSBuZ3hEYXRhdGFibGU/OiBOZ3hEYXRhdGFibGVDb21wb25lbnRcbiAgQFZpZXdDaGlsZChOZ3hEYXRhdGFibGVDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBuZ3hEYXRhdGFibGVFbGVtZW50PzogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSkgbmd4Um93RGV0YWlsPzogRGF0YXRhYmxlUm93RGV0YWlsRGlyZWN0aXZlXG5cbiAgQFZpZXdDaGlsZCgnYWN0aW9uTWVudUNlbGxUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgYWN0aW9uTWVudUNlbGxUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9hY3Rpb25NZW51Q2VsbFRwbCB9XG4gIHNldCBhY3Rpb25NZW51Q2VsbFRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRBY3Rpb25NZW51Q2VsbFRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfYWN0aW9uTWVudUNlbGxUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCd0cmVlVG9nZ2xlVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IHRyZWVUb2dnbGVUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3RyZWVUb2dnbGVUcGwgfVxuICBzZXQgdHJlZVRvZ2dsZVRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdHJlZVRvZ2dsZVRwbCA9IHZhbHVlXG4gICAgdGhpcy5fY29sdW1uc01hbmFnZXIuc2V0VHJlZVRvZ2dsZVRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfdHJlZVRvZ2dsZVRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnaGVhZGVyVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGhlYWRlclRwbCgpOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2hlYWRlclRwbCB9XG4gIHNldCBoZWFkZXJUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9oZWFkZXJUcGwgPSB2YWx1ZVxuICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldEhlYWRlclRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfaGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnYmxhbmtIZWFkZXJUcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBnZXQgYmxhbmtIZWFkZXJUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9ibGFua0hlYWRlclRwbCB9XG4gIHNldCBibGFua0hlYWRlclRwbCh2YWx1ZTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2JsYW5rSGVhZGVyVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRCbGFua0hlYWRlclRwbChub3ROdWxsT3JVbmRlZmluZWQodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQpXG4gIH1cbiAgcHJpdmF0ZSBfYmxhbmtIZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcblxuICBAVmlld0NoaWxkKCdjZWxsVHlwZVNlbGVjdG9yVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ2V0IGNlbGxUeXBlU2VsZWN0b3JUcGwoKTogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsIH1cbiAgc2V0IGNlbGxUeXBlU2VsZWN0b3JUcGwodmFsdWU6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsID0gdmFsdWVcbiAgICB0aGlzLl9jb2x1bW5zTWFuYWdlci5zZXRDZWxsVHlwZVNlbGVjdG9yVHBsKG5vdE51bGxPclVuZGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZClcbiAgfVxuICBwcml2YXRlIF9jZWxsVHlwZVNlbGVjdG9yVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG5cbiAgcHVibGljIGNvbHVtbkNvbXBvbmVudHMkPzogT2JzZXJ2YWJsZTxEYXRhdGFibGVDb2x1bW5Db21wb25lbnRbXT5cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc0lucDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cbiAgcHJpdmF0ZSBfY29sRGlmZmVyc1RwbDogeyBbcHJvcE5hbWU6IHN0cmluZ106IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PiB9ID0ge31cblxuICBwdWJsaWMgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8VGhlU2VhbURhdGF0YWJsZUNvbHVtbltdPlxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheUNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICB2aWV3Q2hhbmdlOiBPYnNlcnZhYmxlPExpc3RSYW5nZT5cblxuICBwcml2YXRlIF9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFlcblxuICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBET00tZGVwZW5kZW50IGNvZGUgd2hlbiBhIHdheSB0byBwcm9wZXJ0eSBsaXN0ZW4gZm9yXG4gIC8vIGRibGNsaWNrIG9uIHRoZSBoZWFkZXIgcmVhc2l6ZSBoYW5kbGVzLlxuICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsgJyRldmVudCcgXSlcbiAgX2RibENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpc0hhbmRsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygncmVzaXplLWhhbmRsZScpXG4gICAgaWYgKGlzSGFuZGxlKSB7XG4gICAgICBjb25zdCBpc1Jlc2l6ZWFibGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2l6ZWFibGUnKVxuICAgICAgaWYgKGlzUmVzaXplYWJsZSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBjb25zdCBpZCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnRcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJy5kYXRhdGFibGUtY29sdW1uLWhlYWRlci1zZXBhcmF0b3InKVxuICAgICAgICAgID8uZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbi1pZCcpXG4gICAgICAgIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLmNvbHVtbnMkLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoY29sdW1ucyA9PiB7XG4gICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKGMgPT4gYy4kJGlkID09PSBpZClcbiAgICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5Qcm9wID0gZ2V0Q29sdW1uUHJvcChjb2x1bW4pXG4gICAgICAgICAgICBpZiAoY29sdW1uUHJvcCkge1xuICAgICAgICAgICAgICBjb25zdCBhbHRlcmF0aW9uID0gbmV3IFdpZHRoQ29sdW1uc0FsdGVyYXRpb24oeyBjb2x1bW5Qcm9wLCBjYW5BdXRvUmVzaXplOiB0cnVlIH0sIGZhbHNlKVxuICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChbIGFsdGVyYXRpb24gXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJlZmVyZW5jZXM6IERhdGF0YWJsZVByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zTWFuYWdlcjogQ29sdW1uc01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXI6IENvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLl9wcmVmZXJlbmNlc0tleS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHN3aXRjaE1hcChrZXkgPT4ge1xuICAgICAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChrZXkpIHx8IGtleS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZyb20od2FpdE9uQ29uZGl0aW9uQXN5bmMoKCkgPT4gdGhpcy5fcHJlZmVyZW5jZXMuaXNMb2FkZWQoa2V5KSkpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9wcmVmZXJlbmNlcy5zZXRBbHRlcmF0aW9ucyhrZXksIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuZ2V0KCkpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApKVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSxcbiAgICApLnN1YnNjcmliZSgpXG5cbiAgICBjb25zdCBhcHBseVByZWZzID0gKGNvbHM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSkgPT4gdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5jaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYXBwbHkoY29scywgdGhpcylcbiAgICAgICAgcmV0dXJuIGNvbHNcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHRoaXMuX3ByZWZlcmVuY2VzS2V5LnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKHByZWZzS2V5ID0+IHtcbiAgICAgICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQocHJlZnNLZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXMucHJlZmVyZW5jZXMocHJlZnNLZXkpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIHByZWZlcmVuY2VzID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHdhaXRPbkNvbmRpdGlvbkFzeW5jKCgpID0+IHRoaXMuX3ByZWZlcmVuY2VzLmlzTG9hZGVkKHByZWZzS2V5KSlcbiAgICAgICAgICAgIHJldHVybiBwcmVmZXJlbmNlc1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgbWFwKHByZWZlcmVuY2VzID0+IHtcbiAgICAgICAgICAgIGxldCBhbHRlcmF0aW9uczogQ29sdW1uc0FsdGVyYXRpb25bXSA9IFtdXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhbHRlcmF0aW9ucyA9IG1hcENvbHVtbnNBbHRlcmF0aW9uc1N0YXRlcyhwcmVmZXJlbmNlcy5hbHRlcmF0aW9ucylcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1VuYWJsZSB0byBtYXAgY29sdW1ucyBhbHRlcmF0aW9ucyBzdGF0ZXMnKVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5hZGQoYWx0ZXJhdGlvbnMpXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSlcbiAgICApLnN1YnNjcmliZSgpXG5cbiAgICB0aGlzLmNvbHVtbnMkID0gdGhpcy5fY29sdW1uc01hbmFnZXIuY29sdW1ucyRcblxuICAgIHRoaXMuZGlzcGxheUNvbHVtbnMkID0gdGhpcy5jb2x1bW5zJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbHMgPT4gYXBwbHlQcmVmcyhjb2xzKSksXG4gICAgICBtYXAoY29scyA9PiBjb2xzLmZpbHRlcihjID0+ICFjLmhpZGRlbikpLFxuICAgICAgdGFwKHYgPT4gcmVtb3ZlVW51c2VkRGlmZnModiwgdGhpcy5fY29sRGlmZmVyc0lucCwgdGhpcy5fY29sRGlmZmVyc1RwbCkpLFxuICAgIClcblxuICAgIHRoaXMuZmlsdGVycyQgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKVxuXG4gICAgdGhpcy5maWx0ZXJTdGF0ZXMgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGZpbHRlcnMgPT4gY29tcG9zZURhdGFGaWx0ZXJTdGF0ZXMoZmlsdGVycykpXG4gICAgKVxuXG4gICAgdGhpcy5yb3dzJCA9IHRoaXMuX2RhdGFTb3VyY2VTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGF0YVNvdXJjZSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhU291cmNlJywgZGF0YVNvdXJjZSlcbiAgICAgICAgbGV0IGRhdGFTdHJlYW06IE9ic2VydmFibGU8YW55W10+XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShkYXRhU291cmNlKSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd+ZGF0YXNvdXJjZScpXG4gICAgICAgICAgZGF0YVN0cmVhbSA9IGRhdGFTb3VyY2UuY29ubmVjdCh0aGlzKSBhcyBhbnlcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfm9ic2VydmFibGUnKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSBkYXRhU291cmNlIGFzIGFueVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfmFycmF5JylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gb2YoZGF0YVNvdXJjZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnfnJvd3MgZmFsbGJhY2snKVxuICAgICAgICAgIGRhdGFTdHJlYW0gPSB0aGlzLl9yb3dzLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygncm93c34nLCB2KSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IHVzaW5nIGV4dGVybmFsRmlsdGVyaW5nJylcbiAgICAgICAgICBkYXRhU3RyZWFtID0gZGF0YVN0cmVhbS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJvd3MgPT4gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2ZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgICAgIGNvbmNhdE1hcChmaWx0ZXJzID0+IG9mKHJvd3MpLnBpcGUoY29tcG9zZURhdGFGaWx0ZXJzKGZpbHRlcnMpKSksXG4gICAgICAgICAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdjb21wb3NlZCBmaWx0ZXJzJywgdikpLFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBkYXRhU3RyZWFtID0gdGhpcy5fZmlsdGVyc1N1YmplY3QucGlwZShcbiAgICAgICAgICAvLyAgIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdmaWx0ZXJzJywgdikpLFxuICAgICAgICAgIC8vICAgY29uY2F0TWFwKGZpbHRlcnMgPT4gZGF0YVN0cmVhbS5waXBlKGNvbXBvc2VEYXRhRmlsdGVycyhmaWx0ZXJzKSkpLFxuICAgICAgICAgIC8vICAgdGFwKHYgPT4gY29uc29sZS5sb2coJ2NvbXBvc2VkIGZpbHRlcnMnLCB2KSksXG4gICAgICAgICAgLy8gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFTdHJlYW0ucGlwZShcbiAgICAgICAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnc3RyZWFtJywgdikpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIFRPRE86IEltcGxlbWVudCB2aWV3Q2hhbmdlIGZvciBDb2xsZWN0aW9uVmlld2VyLlxuICAgIHRoaXMudmlld0NoYW5nZSA9IHRoaXMucGFnZS5waXBlKG1hcChwID0+ICh7IHN0YXJ0OiAwLCBlbmQ6IHAuY291bnQgfSkpKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucm93RGV0YWlsKSB7XG4gICAgICB0aGlzLl9yb3dEZXRhaWxUb2dnbGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvd0RldGFpbC5fdG9nZ2xlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5neFJvd0RldGFpbCkge1xuICAgICAgICAgIHRoaXMubmd4Um93RGV0YWlsLnRvZ2dsZS5lbWl0KGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Jvd0RldGFpbFRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gIH1cblxuICBwcml2YXRlIF9zZXRNZW51QmFyRmlsdGVycyhmaWx0ZXJzOiBEYXRhRmlsdGVyW10pIHtcbiAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC5uZXh0KGZpbHRlcnMgfHwgW10pXG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uQ29tcG9uZW50KHByb3BOYW1lOiBzdHJpbmcpOiBEYXRhdGFibGVDb2x1bW5Db21wb25lbnQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29sdW1uQ29tcG9uZW50cyB8fCB0aGlzLmNvbHVtbkNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHRwbCA9IHRoaXMuY29sdW1uQ29tcG9uZW50cy5maW5kKHQgPT4gdC5wcm9wID09PSBwcm9wTmFtZSlcbiAgICBpZiAodHBsKSB7XG4gICAgICByZXR1cm4gdHBsXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIF9jb2x1bW5EYXRhKGNvbDogYW55KTogeyBjb2w6IGFueSwgY29tcDogRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50IHwgbnVsbCB9IHtcbiAgICBjb25zdCBjb21wID0gdGhpcy5nZXRDb2x1bW5Db21wb25lbnQoY29sLnByb3ApXG4gICAgcmV0dXJuIHsgY29sLCBjb21wIH1cbiAgfVxuXG4gIF9nZXRSb3dFeHBhbmRlZChyb3c6IGFueSkge1xuICAgIGlmICh0aGlzLm5neERhdGF0YWJsZSAmJiB0aGlzLm5neERhdGF0YWJsZS5ib2R5Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ3hEYXRhdGFibGUuYm9keUNvbXBvbmVudC5nZXRSb3dFeHBhbmRlZChyb3cpXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlGbkNvbHVtbihpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbS5wcm9wXG4gIH1cblxuICBwdWJsaWMgb25EYXRhdGFibGVSZXNpemUoZXZlbnQ6IElFbGVtZW50UmVzaXplZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMubmd4RGF0YXRhYmxlICYmIHRoaXMubmd4RGF0YXRhYmxlRWxlbWVudCAmJiB0aGlzLm5neERhdGF0YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgLy8gVE9ETzogQ29uc2lkZXIgaW50ZWdyYXRpbmcgdGhpcyBpbnRvIHRoZSBuZ3gtZGF0YXRhYmxlIGxpYnJhcnkgdG8gYXZvaWRcbiAgICAgIC8vIG11bHRpcGxlIHJlc2l6ZSBjYWxscyB3aGVuIHRoZSB0YWJsZSByZXNpemVzIGl0c2VsZi5cbiAgICAgIHRoaXMubmd4RGF0YXRhYmxlLnJlY2FsY3VsYXRlKClcbiAgICB9XG4gIH1cblxuICBfb25SZXNpemUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzaXplLmVtaXQoZXZlbnQpXG5cbiAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChldmVudC5jb2x1bW4pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5Qcm9wID0gZ2V0Q29sdW1uUHJvcChldmVudC5jb2x1bW4pXG4gICAgaWYgKGNvbHVtblByb3ApIHtcbiAgICAgIGxldCBhZGRBbHRlcmF0aW9uID0gZmFsc2VcblxuICAgICAgaWYgKCF0aGlzLl9yZXNpemluZ1tjb2x1bW5Qcm9wXSkge1xuICAgICAgICB0aGlzLl9yZXNpemluZ1tjb2x1bW5Qcm9wXSA9IHRydWVcbiAgICAgICAgYWRkQWx0ZXJhdGlvbiA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmlzRG9uZSkge1xuICAgICAgICB0aGlzLl9yZXNpemluZ1tjb2x1bW5Qcm9wXSA9IGZhbHNlXG4gICAgICAgIGFkZEFsdGVyYXRpb24gPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRBbHRlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvbih7XG4gICAgICAgICAgY29sdW1uUHJvcCxcbiAgICAgICAgICB3aWR0aDogZXZlbnQuY29sdW1uLndpZHRoLFxuICAgICAgICAgIGNhbkF1dG9SZXNpemU6IGZhbHNlXG4gICAgICAgIH0sIHRydWUpXG4gICAgICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKFsgYWx0ZXJhdGlvbiBdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vblJlb3JkZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVvcmRlci5lbWl0KGV2ZW50KVxuXG4gICAgY29uc3QgY29sdW1uUHJvcCA9IGdldENvbHVtblByb3AoZXZlbnQuY29sdW1uKVxuICAgIGlmIChjb2x1bW5Qcm9wKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3JkZXJBbHRlcmF0aW9uID0gdGhpcy5fY29sdW1uc0FsdGVyYXRpb25zTWFuYWdlci5nZXQoKS5maW5kKHggPT4geC50eXBlID09PSAnb3JkZXInKVxuICAgICAgY29uc3Qgc3RhdGU6IE9yZGVyQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSA9IHtcbiAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgIC4uLihjdXJyZW50T3JkZXJBbHRlcmF0aW9uPy5zdGF0ZS5jb2x1bW5zIHx8IFtdKS5maWx0ZXIoKHg6IGFueSkgPT4geC5jb2x1bW5Qcm9wICE9PSBjb2x1bW5Qcm9wKSxcbiAgICAgICAgICB7IGNvbHVtblByb3AsIGluZGV4OiBldmVudC5uZXdWYWx1ZSB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgT3JkZXJDb2x1bW5zQWx0ZXJhdGlvbihzdGF0ZSwgdHJ1ZSlcbiAgICAgIHRoaXMuX2NvbHVtbnNBbHRlcmF0aW9uc01hbmFnZXIuYWRkKFsgYWx0ZXJhdGlvbiBdKVxuICAgIH1cbiAgfVxuXG4gIF9vblNvcnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc29ydC5lbWl0KGV2ZW50KVxuXG4gICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBTb3J0Q29sdW1uc0FsdGVyYXRpb24oeyBzb3J0czogZXZlbnQuc29ydHMgfSwgdHJ1ZSlcbiAgICB0aGlzLl9jb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyLmFkZChbIGFsdGVyYXRpb24gXSlcbiAgfVxuXG4gIF9vblRyZWVBY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGluZGV4ID0gZXZlbnQucm93SW5kZXhcbiAgICBjb25zdCByb3cgPSBldmVudC5yb3dcbiAgICBpZiAocm93LnRyZWVTdGF0dXMgPT09ICdjb2xsYXBzZWQnKSB7XG4gICAgICByb3cudHJlZVN0YXR1cyA9ICdleHBhbmRlZCdcbiAgICB9IGVsc2Uge1xuICAgICAgcm93LnRyZWVTdGF0dXMgPSAnY29sbGFwc2VkJ1xuICAgIH1cbiAgICB0aGlzLnJvd3MgPSBbIC4uLnRoaXMucm93cyBdXG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIHRoaXMuYWN0aW9uUmVmcmVzaFJlcXVlc3QuZW1pdCh1bmRlZmluZWQpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFnZSBpbmZvIGZyb20gdGhlIHdyYXBwZWQgTmd4RGF0YXRhYmxlIGluc3RhbmNlIG9yIGRlZmF1bHRzLlxuICAgKi9cbiAgcHVibGljIGdldCBwYWdlSW5mbygpOiBUaGVTZWFtUGFnZUluZm8ge1xuICAgIHJldHVybiB7XG4gICAgICBvZmZzZXQ6IHRoaXMubmd4RGF0YXRhYmxlPy5vZmZzZXQgPz8gMCxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLm5neERhdGF0YWJsZT8ucGFnZVNpemUgPz8gMCxcbiAgICAgIGxpbWl0OiB0aGlzLm5neERhdGF0YWJsZT8ubGltaXQsXG4gICAgICBjb3VudDogdGhpcy5uZ3hEYXRhdGFibGU/LmNvdW50ID8/IDBcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGF0YWJsZS13cmFwcGVyXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNlYW0tZGF0YXRhYmxlLW1lbnUtYmFyXCI+PC9uZy1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiZGF0YXRhYmxlLXRhYmxlLXdyYXBwZXJcIj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPG5neC1kYXRhdGFibGVcbiAgICAgICAgW2NvbHVtbk1vZGVdPVwiJGFueShjb2x1bW5Nb2RlKVwiXG4gICAgICAgIFtzY3JvbGxiYXJWXT1cInNjcm9sbGJhclZcIlxuICAgICAgICBbc2Nyb2xsYmFySF09XCJzY3JvbGxiYXJIXCJcbiAgICAgICAgW3ZpcnR1YWxpemF0aW9uXT1cInZpcnR1YWxpemF0aW9uXCJcbiAgICAgICAgW3RhcmdldE1hcmtlclRlbXBsYXRlXT1cInRhcmdldE1hcmtlclRlbXBsYXRlXCJcbiAgICAgICAgW2dyb3VwUm93c0J5XT1cIiRhbnkoZ3JvdXBSb3dzQnkpXCJcbiAgICAgICAgW2dyb3VwZWRSb3dzXT1cIiRhbnkoZ3JvdXBlZFJvd3MpXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cIiRhbnkoc2VsZWN0ZWQpXCJcbiAgICAgICAgW2V4dGVybmFsUGFnaW5nXT1cImV4dGVybmFsUGFnaW5nXCJcbiAgICAgICAgW2V4dGVybmFsU29ydGluZ109XCJleHRlcm5hbFNvcnRpbmdcIlxuICAgICAgICBbbGltaXRdPVwiJGFueShsaW1pdClcIlxuICAgICAgICBbY291bnRdPVwiJGFueShjb3VudClcIlxuICAgICAgICBbb2Zmc2V0XT1cIiRhbnkob2Zmc2V0KVwiXG4gICAgICAgIFtsb2FkaW5nSW5kaWNhdG9yXT1cImxvYWRpbmdJbmRpY2F0b3JcIlxuICAgICAgICBbc2VsZWN0aW9uVHlwZV09XCIkYW55KHNlbGVjdGlvblR5cGUpXCJcbiAgICAgICAgW3Jlb3JkZXJhYmxlXT1cInJlb3JkZXJhYmxlXCJcbiAgICAgICAgW3N3YXBDb2x1bW5zXT1cInN3YXBDb2x1bW5zXCJcbiAgICAgICAgW3NvcnRUeXBlXT1cIiRhbnkoc29ydFR5cGUpXCJcbiAgICAgICAgW3NvcnRzXT1cIiRhbnkoX3NvcnRzKVwiXG4gICAgICAgIFtjc3NDbGFzc2VzXT1cImNzc0NsYXNzZXNcIlxuICAgICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXNcIlxuICAgICAgICBbcm93SWRlbnRpdHldPVwiJGFueShyb3dJZGVudGl0eSlcIlxuICAgICAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIlxuICAgICAgICBbc2VsZWN0Q2hlY2tdPVwic2VsZWN0Q2hlY2tcIlxuICAgICAgICBbZGlzcGxheUNoZWNrXT1cIiRhbnkoZGlzcGxheUNoZWNrKVwiXG4gICAgICAgIFtncm91cEV4cGFuc2lvbkRlZmF1bHRdPVwiZ3JvdXBFeHBhbnNpb25EZWZhdWx0XCJcbiAgICAgICAgW3RyYWNrQnlQcm9wXT1cIiRhbnkodHJhY2tCeVByb3ApXCJcbiAgICAgICAgW3NlbGVjdEFsbFJvd3NPblBhZ2VdPVwic2VsZWN0QWxsUm93c09uUGFnZVwiXG4gICAgICAgIFt0cmVlRnJvbVJlbGF0aW9uXT1cIiRhbnkodHJlZUZyb21SZWxhdGlvbilcIlxuICAgICAgICBbdHJlZVRvUmVsYXRpb25dPVwiJGFueSh0cmVlVG9SZWxhdGlvbilcIlxuICAgICAgICBbc3VtbWFyeVJvd109XCJzdW1tYXJ5Um93XCJcbiAgICAgICAgW3N1bW1hcnlIZWlnaHRdPVwiJGFueShzdW1tYXJ5SGVpZ2h0KVwiXG4gICAgICAgIFtzdW1tYXJ5UG9zaXRpb25dPVwiJGFueShzdW1tYXJ5UG9zaXRpb24pXCJcbiAgICAgICAgW3Jvd3NdPVwicm93cyQgfCBhc3luY1wiXG4gICAgICAgIFtjb2x1bW5zXT1cIiRhbnkoZGlzcGxheUNvbHVtbnMkIHwgYXN5bmMpXCJcbiAgICAgICAgW2hlYWRlckhlaWdodF09XCIkYW55KGhlYWRlckhlaWdodClcIlxuICAgICAgICBbcm93SGVpZ2h0XT1cIiRhbnkocm93SGVpZ2h0KVwiXG4gICAgICAgIFtmb290ZXJIZWlnaHRdPVwiJGFueShmb290ZXJIZWlnaHQpXCJcbiAgICAgICAgKHNjcm9sbCk9XCJzY3JvbGwuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGFjdGl2YXRlKT1cImFjdGl2YXRlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3QpPVwic2VsZWN0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzb3J0KT1cIl9vblNvcnQoJGV2ZW50KVwiXG4gICAgICAgIChwYWdlKT1cInBhZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHJlb3JkZXIpPVwiX29uUmVvcmRlcigkZXZlbnQpXCJcbiAgICAgICAgKHJlc2l6ZSk9XCJfb25SZXNpemUoJGV2ZW50KVwiXG4gICAgICAgICh0YWJsZUNvbnRleHRtZW51KT1cInRhYmxlQ29udGV4dG1lbnUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHRyZWVBY3Rpb24pPVwidHJlZUFjdGlvbi5lbWl0KCRldmVudClcIlxuICAgICAgICAoc2VhbUVsZW1SZXNpemVkKT1cIm9uRGF0YXRhYmxlUmVzaXplKCRldmVudClcIlxuICAgICAgICAodHJlZUFjdGlvbik9XCJfb25UcmVlQWN0aW9uKCRldmVudClcIj5cblxuICAgICAgICA8bmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXIgW3Jvd0hlaWdodF09XCI1MFwiICNteUdyb3VwSGVhZGVyICpuZ0lmPVwiZ3JvdXBSb3dzQnlcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWdyb3VwPVwiZ3JvdXBcIiBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiIG5neC1kYXRhdGFibGUtZ3JvdXAtaGVhZGVyLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGJnLWxpZ2h0IHAtMVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYm90dG9tXT1cIiFleHBhbmRlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1yaWdodF09XCIhZXhwYW5kZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGF0YXRhYmxlLWljb24tZG93bl09XCJleHBhbmRlZFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiRXhwYW5kL0NvbGxhcHNlIEdyb3VwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5neERhdGF0YWJsZT8uZ3JvdXBIZWFkZXI/LnRvZ2dsZUV4cGFuZEdyb3VwKGdyb3VwKVwiPlxuICAgICAgICAgICAgICA8Yj5BZ2U6IHt7IGdyb3VwLmFnZSB9fTwvYj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1ncm91cC1oZWFkZXI+XG5cbiAgICAgICAgPG5neC1kYXRhdGFibGUtcm93LWRldGFpbCAqbmdJZj1cInJvd0RldGFpbCAmJiByb3dEZXRhaWwudGVtcGxhdGVcIlxuICAgICAgICAgIFtyb3dIZWlnaHRdPVwicm93RGV0YWlsLnJvd0hlaWdodCB8fCAwXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiJGFueShyb3dEZXRhaWwudGVtcGxhdGUpXCJcbiAgICAgICAgICAodG9nZ2xlKT1cInJvd0RldGFpbC50b2dnbGUuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbmd4LWRhdGF0YWJsZS1yb3ctZGV0YWlsPlxuXG4gICAgICAgIDxuZ3gtZGF0YXRhYmxlLWZvb3RlciAqbmdJZj1cImZvb3RlciAmJiBmb290ZXIudGVtcGxhdGVcIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCIkYW55KGZvb3Rlci50ZW1wbGF0ZSlcIj5cbiAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWZvb3Rlcj5cbiAgICAgIDwvbmd4LWRhdGF0YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNibGFua0hlYWRlclRwbCBuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZT48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRwbCBuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZVxuICBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LXNvcnRGbj1cInNvcnRGblwiPlxuICA8c3Ryb25nICpuZ0lmPVwiIWNvbHVtbi5zb3J0YWJsZVwiIGNsYXNzPVwiZHJhZ2dhYmxlXCI+e3tjb2x1bW4ubmFtZX19PC9zdHJvbmc+XG4gIDxzdHJvbmcgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIiBjbGFzcz1cImRhdGF0YWJsZS1zb3J0LXRhcmdldCBkcmFnZ2FibGVcIiAoY2xpY2spPVwic29ydEZuKClcIj57e2NvbHVtbi5uYW1lfX08L3N0cm9uZz5cbiAgPGRpdiBjbGFzcz1cImRhdGF0YWJsZS1jb2x1bW4taGVhZGVyLXNlcGFyYXRvclwiIFthdHRyLmRhdGEtY29sdW1uLWlkXT1cImNvbHVtbi4kJGlkXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NlbGxUeXBlU2VsZWN0b3JUcGwgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlXG4gIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIiBsZXQtcm93PVwicm93XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8c2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3IgKm5nSWY9XCJyb3dcIlxuICAgIFt0eXBlXT1cImNvbHVtbi5jZWxsVHlwZVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgIFtyb3ddPVwicm93XCJcbiAgICBbY29sRGF0YV09XCJjb2x1bW5cIj5cbiAgPC9zZWFtLXRhYmxlLWNlbGwtdHlwZS1zZWxlY3Rvcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0aW9uTWVudUNlbGxUcGwgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlXG4gIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIiBsZXQtcm93PVwicm93XCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdyAmJiByb3dBY3Rpb25JdGVtPy50ZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShyb3dBY3Rpb25JdGVtPy50ZW1wbGF0ZSlcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyZWVUb2dnbGVUcGwgbmd4LWRhdGF0YWJsZS10cmVlLXRvZ2dsZSBsZXQtdHJlZT1cImNlbGxDb250ZXh0XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInAtMCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBidG5cIlxuICAgIFtkaXNhYmxlZF09XCJ0cmVlLnRyZWVTdGF0dXM9PT0nZGlzYWJsZWQnXCJcbiAgICAoY2xpY2spPVwidHJlZS5vblRyZWVBY3Rpb24oKVwiPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2xvYWRpbmcnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFTcGlubmVyXCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInRyZWUudHJlZVN0YXR1cz09PSdjb2xsYXBzZWQnXCI+XG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJfZmFDaGV2cm9uUmlnaHRcIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2V4cGFuZGVkJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhQ2hldnJvbkRvd25cIj48L2ZhLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidHJlZS50cmVlU3RhdHVzPT09J2Rpc2FibGVkJ1wiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiX2ZhQ2hldnJvblJpZ2h0XCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|