verben-workflow-ui 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/workflow-designer/escalation-dialog/escalation-dialog.component.mjs +3 -3
- package/esm2022/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs +4 -8
- package/esm2022/lib/components/workflow-designer/workflow-designer.component.mjs +2 -7
- package/esm2022/lib/components/workflows/workflow-form/workflow-form.component.mjs +3 -3
- package/fesm2022/verben-workflow-ui.mjs +7 -16
- package/fesm2022/verben-workflow-ui.mjs.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/workflow-designer/escalation-dialog/escalation-dialog.component.mjs
CHANGED
|
@@ -191,11 +191,11 @@ export class EscalationDialogComponent {
|
|
|
191
191
|
return escalation !== null && escalation.DataState !== 'New';
|
|
192
192
|
}
|
|
193
193
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EscalationDialogComponent, deps: [{ token: i1.FormBuilder }, { token: i2.WorkflowDataService }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EscalationDialogComponent, selector: "lib-escalation-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, workflowCode: { classPropertyName: "workflowCode", publicName: "workflowCode", isSignal: true, isRequired: true, transformFunction: null }, stageCode: { classPropertyName: "stageCode", publicName: "stageCode", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", created: "created" }, ngImport: i0, template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngFor=\"let message of selectedMessages(); let i = index\">\n <div class=\"mb-4 space-y-4\">\n <div class=\"space-y-1\">\n <label\n [for]=\"message + '-' + i\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Message {{ i + 1 }}\n </label>\n <verben-drop-down\n selectKey=\"Code\"\n [id]=\"message + '-' + i\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select Message\"\n [options]=\"reportSchedules()\"\n optionLabel=\"Name\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageSelected($event, i)\"\n class=\"form-control\"\n ></verben-drop-down>\n </div>\n\n @if (message
|
|
194
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EscalationDialogComponent, selector: "lib-escalation-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, workflowCode: { classPropertyName: "workflowCode", publicName: "workflowCode", isSignal: true, isRequired: true, transformFunction: null }, stageCode: { classPropertyName: "stageCode", publicName: "stageCode", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", created: "created" }, ngImport: i0, template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngFor=\"let message of selectedMessages(); let i = index\">\n <div class=\"mb-4 space-y-4\">\n <div class=\"space-y-1\">\n <label\n [for]=\"message + '-' + i\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Message {{ i + 1 }}\n </label>\n <verben-drop-down\n selectKey=\"Code\"\n [id]=\"message + '-' + i\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select Message\"\n [options]=\"reportSchedules()\"\n optionLabel=\"Name\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageSelected($event, i)\"\n class=\"form-control\"\n ></verben-drop-down>\n </div>\n\n @if (message) {\n <div class=\"flex items-center gap-4\">\n <label\n [for]=\"'is-' + message + '-' + i + 'task-data-source'\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Is Task Data Source?\n </label>\n <verbena-switch\n [id]=\"'is-' + message + '-' + i + 'task-data-source'\"\n onText=\"Yes\"\n offText=\"No\"\n [onColor]=\"'#1A237E'\"\n [(ngModel)]=\"message.IsTaskDataSource\"\n ></verbena-switch>\n </div>\n }\n\n <div\n class=\"border border-primary -m-2 rounded-lg flex flex-col gap-3\"\n *ngIf=\"message\"\n >\n <div class=\"space-y-3 border-b border-primary px-2 py-3\">\n <verbena-input\n name=\"Subject\"\n [(ngModel)]=\"message.Subject\"\n [readOnly]=\"true\"\n />\n <verbena-input\n name=\"Recipients\"\n [(ngModel)]=\"message.Recipients\"\n [readOnly]=\"true\"\n />\n </div>\n <lib-editor\n [editorConfig]=\"editorConfig\"\n [editorMode]=\"editorMode\"\n [(ngModel)]=\"message.PlainMessage\"\n ></lib-editor>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"flex justify-between items-center gap-8 w-full\">\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Add Message\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"add\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"addMessage()\"\n ></verbena-button>\n\n <div class=\"flex gap-2 items-center\">\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Delete\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n width=\"110px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"delete\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"onDialogClose($event)\"\n ></verbena-button>\n\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Send\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n width=\"160px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"send\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"saveMessages()\"\n ></verbena-button>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-footer{display:flex;justify-content:space-between!important}::ng-deep button,button{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["dialogueWidth", "headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "width", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i5.EditorComponent, selector: "lib-editor", inputs: ["themeColor", "editorMode", "editorConfig", "content"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaSwitchComponent, selector: "verbena-switch", inputs: ["label", "checked", "disabled", "offColor", "onColor", "onText", "offText", "width", "height", "customStyles"], outputs: ["change"] }] });
|
|
195
195
|
}
|
|
196
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EscalationDialogComponent, decorators: [{
|
|
197
197
|
type: Component,
|
|
198
|
-
args: [{ selector: 'lib-escalation-dialog', template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngFor=\"let message of selectedMessages(); let i = index\">\n <div class=\"mb-4 space-y-4\">\n <div class=\"space-y-1\">\n <label\n [for]=\"message + '-' + i\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Message {{ i + 1 }}\n </label>\n <verben-drop-down\n selectKey=\"Code\"\n [id]=\"message + '-' + i\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select Message\"\n [options]=\"reportSchedules()\"\n optionLabel=\"Name\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageSelected($event, i)\"\n class=\"form-control\"\n ></verben-drop-down>\n </div>\n\n @if (message
|
|
198
|
+
args: [{ selector: 'lib-escalation-dialog', template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngFor=\"let message of selectedMessages(); let i = index\">\n <div class=\"mb-4 space-y-4\">\n <div class=\"space-y-1\">\n <label\n [for]=\"message + '-' + i\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Message {{ i + 1 }}\n </label>\n <verben-drop-down\n selectKey=\"Code\"\n [id]=\"message + '-' + i\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select Message\"\n [options]=\"reportSchedules()\"\n optionLabel=\"Name\"\n [ngModel]=\"message\"\n (ngModelChange)=\"onMessageSelected($event, i)\"\n class=\"form-control\"\n ></verben-drop-down>\n </div>\n\n @if (message) {\n <div class=\"flex items-center gap-4\">\n <label\n [for]=\"'is-' + message + '-' + i + 'task-data-source'\"\n class=\"text-sm font-semibold text-[#3E3E3E]\"\n >\n Is Task Data Source?\n </label>\n <verbena-switch\n [id]=\"'is-' + message + '-' + i + 'task-data-source'\"\n onText=\"Yes\"\n offText=\"No\"\n [onColor]=\"'#1A237E'\"\n [(ngModel)]=\"message.IsTaskDataSource\"\n ></verbena-switch>\n </div>\n }\n\n <div\n class=\"border border-primary -m-2 rounded-lg flex flex-col gap-3\"\n *ngIf=\"message\"\n >\n <div class=\"space-y-3 border-b border-primary px-2 py-3\">\n <verbena-input\n name=\"Subject\"\n [(ngModel)]=\"message.Subject\"\n [readOnly]=\"true\"\n />\n <verbena-input\n name=\"Recipients\"\n [(ngModel)]=\"message.Recipients\"\n [readOnly]=\"true\"\n />\n </div>\n <lib-editor\n [editorConfig]=\"editorConfig\"\n [editorMode]=\"editorMode\"\n [(ngModel)]=\"message.PlainMessage\"\n ></lib-editor>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"flex justify-between items-center gap-8 w-full\">\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Add Message\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"add\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"addMessage()\"\n ></verbena-button>\n\n <div class=\"flex gap-2 items-center\">\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Delete\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n width=\"110px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"delete\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"onDialogClose($event)\"\n ></verbena-button>\n\n <verbena-button\n style=\"cursor: pointer\"\n type=\"button\"\n text=\"Send\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"8px\"\n pd=\"10px 20px\"\n width=\"160px\"\n height=\"39px\"\n fontWeight=\"600\"\n fontSize=\"12px\"\n svg=\"send\"\n [svgHeight]=\"14\"\n [svgWidth]=\"14\"\n [svgSize]=\"'sm'\"\n (click)=\"saveMessages()\"\n ></verbena-button>\n </div>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-footer{display:flex;justify-content:space-between!important}::ng-deep button,button{cursor:pointer}\n"] }]
|
|
199
199
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.WorkflowDataService }], propDecorators: { visible: [{
|
|
200
200
|
type: Input
|
|
201
201
|
}], closed: [{
|
|
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
203
203
|
}], created: [{
|
|
204
204
|
type: Output
|
|
205
205
|
}] } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYWxhdGlvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci9lc2NhbGF0aW9uLWRpYWxvZy9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2VzY2FsYXRpb24tZGlhbG9nL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSTNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTVFLE9BQU8sRUFBZ0IsVUFBVSxFQUFlLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHlCQUF5QjtJQW1EMUI7SUFDQTtJQW5ERCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDeEMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNyQyxJQUFJLEdBQUcsS0FBSyxFQUFrQixDQUFDO0lBRXJCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBTSxDQUFDO0lBRTNDLFVBQVUsR0FBc0MsTUFBTSxDQUFDLElBQUksQ0FB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OzRGRHhJYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO2tIQUt4QixPQUFPO3NCQUFmLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdvcmtmbG93RGF0YVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXNjYWxhdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvRXNjYWxhdGlvblR5cGUnO1xuaW1wb3J0IHsgRXNjYWxhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Fc2NhbGF0aW9uJztcbmltcG9ydCB7IE9iamVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL29iamVjdC1zdGF0ZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVwb3J0U2NoZWR1bGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvUmVwb3J0U2NoZWR1bGUnO1xuaW1wb3J0IHsgVGFza05vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYXNrTm90aWZpY2F0aW9uJztcbmltcG9ydCB7IFRhc2tOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1Rhc2tOb3RpZmljYXRpb25UeXBlJztcbmltcG9ydCB7IE1lc3NhZ2VNZWRpdW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvTWVzc2FnZU1lZGl1bSc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcsIEVkaXRvck1vZGUsIEVkaXRvclN0YXRlIH0gZnJvbSAndmVyYmVuLXJlcG9ydGluZy11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lc2NhbGF0aW9uLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgd29ya2Zsb3dDb2RlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBzdGFnZUNvZGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHR5cGUgPSBpbnB1dDxFc2NhbGF0aW9uVHlwZT4oKTtcblxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgZXNjYWxhdGlvbjogV3JpdGFibGVTaWduYWw8RXNjYWxhdGlvbiB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuXG4gIC8vIGVzY2FsYXRpb25Gb3JtO1xuICByZXBvcnRTY2hlZHVsZXM6IFdyaXRhYmxlU2lnbmFsPFJlcG9ydFNjaGVkdWxlW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RlZE1lc3NhZ2VzOiBXcml0YWJsZVNpZ25hbDxcbiAgICAoKFJlcG9ydFNjaGVkdWxlICYgeyBJc1Rhc2tEYXRhU291cmNlOiBib29sZWFuIH0pIHwgbnVsbClbXVxuICA+ID0gc2lnbmFsKFtdKTtcblxuICBlZGl0b3JNb2RlOiBFZGl0b3JNb2RlID0gRWRpdG9yTW9kZS5EZXNpZ25lcjtcbiAgZWRpdG9yQ29uZmlnOiBFZGl0b3JDb25maWcgPSB7XG4gICAgZWRpdGFibGU6IHRydWUsXG4gICAgaGVpZ2h0OiAnJyxcbiAgICB3aWR0aDogJycsXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXG4gICAgbWVudUl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIExhYmVsOiAnVG9nZ2xlVmlldycsXG4gICAgICAgIEljb246ICdjb2RlLXRvZ2dsZScsXG4gICAgICAgIEljb25XaWR0aDogMjAsXG4gICAgICAgIEljb25IZWlnaHQ6IDIwLFxuICAgICAgICBJc1N0cm9rZTogZmFsc2UsXG4gICAgICAgIEdyb3VwQnk6ICdsb2NhbCcsXG4gICAgICAgIE9uQ2xpY2s6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRvck1vZGUgPVxuICAgICAgICAgICAgdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuRGVzaWduZXJcbiAgICAgICAgICAgICAgPyBFZGl0b3JNb2RlLkNvZGVcbiAgICAgICAgICAgICAgOiBFZGl0b3JNb2RlLkRlc2lnbmVyO1xuICAgICAgICB9LFxuICAgICAgICBJc0Rpc2FibGVkOiAoZXZlbnQ6IEVkaXRvclN0YXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBJc0VuYWJsZWQ6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuQ29kZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBJc1Rhc2tEYXRhU291cmNlOiBXcml0YWJsZVNpZ25hbDxib29sZWFuW10+ID0gc2lnbmFsKFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdGFnZUNvZGUgPSB0aGlzLnN0YWdlQ29kZSgpO1xuICAgICAgY29uc3Qgd29ya2Zsb3dDb2RlID0gdGhpcy53b3JrZmxvd0NvZGUoKTtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTdGFnZSBjb2RlIGNoYW5nZWQ6Jywgc3RhZ2VDb2RlKTtcbiAgICAgIGlmICh3b3JrZmxvd0NvZGUgJiYgc3RhZ2VDb2RlICYmIHR5cGUpIHtcbiAgICAgICAgLy8gdGhpcy5sb2FkRXNjYWxhdGlvbihzdGFnZUNvZGUpO1xuICAgICAgICB0aGlzLnNlYXJjaEVzY2FsYXRpb24od29ya2Zsb3dDb2RlLCBzdGFnZUNvZGUsIHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLmVzY2FsYXRpb24oKTtcbiAgICAgIGNvbnN0IHJlcG9ydFNjaGVkdWxlcyA9IHRoaXMucmVwb3J0U2NoZWR1bGVzKCk7XG5cbiAgICAgIGlmIChlc2NhbGF0aW9uICYmIHJlcG9ydFNjaGVkdWxlcykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVzY2FsYXRpb24uTWVzc2FnZXMubWFwKChjb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHJlcG9ydFNjaGVkdWxlcy5maW5kKChycykgPT4gcnMuQ29kZSA9PT0gY29kZSk7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQgPyB7IC4uLmZvdW5kLCBJc1Rhc2tEYXRhU291cmNlOiB0cnVlIH0gOiBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHRoaXMuZXNjYWxhdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAvLyAgIE1lc3NhZ2VzOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAvLyB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZFJlcG9ydFNjaGVkdWxlcygpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ0VzY2FsYXRpb25EaWFsb2dDb21wb25lbnQgaW5pdGlhbGl6ZWQgd2l0aCBzdGFnZUNvZGU6JyxcbiAgICAgIHRoaXMuc3RhZ2VDb2RlXG4gICAgKTtcbiAgICAvLyBjb25zb2xlLmxvZygnRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCB0eXBlOicsIHRoaXMudHlwZSk7XG4gIH1cblxuICAvLyBnZXQgbWVzc2FnZXMoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuZXNjYWxhdGlvbkZvcm0uY29udHJvbHNbJ01lc3NhZ2VzJ10gYXMgRm9ybUFycmF5O1xuICAvLyB9XG5cbiAgYWRkTWVzc2FnZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiBtc2dzLmNvbmNhdChbbnVsbF0pKTtcbiAgfVxuXG4gIGRlbGV0ZU1lc3NhZ2UobGVzc29uSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy51cGRhdGUoKG1zZ3MpID0+IG1zZ3Muc3BsaWNlKGxlc3NvbkluZGV4LCAxKSk7XG4gIH1cblxuICBvbk1lc3NhZ2VTZWxlY3RlZChyZXBvcnRTY2hlZHVsZTogUmVwb3J0U2NoZWR1bGUsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgbWVzc2FnZTonLCByZXBvcnRTY2hlZHVsZSwgJ2F0IGluZGV4OicsIGluZGV4KTtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdNc2dzID0gWy4uLm1zZ3NdO1xuICAgICAgbmV3TXNnc1tpbmRleF0gPSB7IC4uLnJlcG9ydFNjaGVkdWxlLCBJc1Rhc2tEYXRhU291cmNlOiB0cnVlIH07XG4gICAgICByZXR1cm4gbmV3TXNncztcbiAgICB9KTtcbiAgfVxuXG4gIGlzVmFsaWRTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcygpLmV2ZXJ5KChtc2cpID0+ICEhbXNnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVNZXNzYWdlcygpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkTWVzc2FnZXMoKSk7XG4gICAgY29uc3QgdGFza05vdGlmaWNhdGlvbnM6IFRhc2tOb3RpZmljYXRpb25bXSA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlcygpXG4gICAgICAuZmlsdGVyKChtc2cpID0+ICEhbXNnKVxuICAgICAgLm1hcCgobXNnKSA9PiAoe1xuICAgICAgICBJZDogJycsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBUZW5hbnRJZDogJ1BETFRDNicsXG4gICAgICAgIE1lc3NhZ2U6IG1zZy5Db2RlLFxuICAgICAgICBOYW1lOiBtc2cuTmFtZSxcbiAgICAgICAgU3ViamVjdDogbXNnLlN1YmplY3QsXG4gICAgICAgIFNlbmRlckNvbmZpZzogbXNnLk1lc3NhZ2VDb25maWcsXG4gICAgICAgIE1lZGl1bTogbXNnLk1lZGl1bSxcbiAgICAgICAgTm90aWZpY2F0aW9uVHlwZTogVGFza05vdGlmaWNhdGlvblR5cGUuRXNjYWxhdGlvbixcbiAgICAgICAgSXNNZXNzYWdlSWQ6IGZhbHNlLFxuICAgICAgICBJc1Rhc2tEYXRhU291cmNlOiBtc2cuSXNUYXNrRGF0YVNvdXJjZSxcbiAgICAgICAgTWVzc2FnZURhdGFTb3VyY2U6ICFtc2cuSXNUYXNrRGF0YVNvdXJjZVxuICAgICAgICAgID8gbXNnLlJlcG9ydERhdGFTb3VyY2VcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIH0pKTtcblxuICAgIGlmICh0YXNrTm90aWZpY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgIC8vIHRoaXMuY3JlYXRlZC5lbWl0KHRhc2tOb3RpZmljYXRpb25zKTtcbiAgICAgIGNvbnNvbGUubG9nKHRhc2tOb3RpZmljYXRpb25zKTtcbiAgICAgIHRoaXMub25EaWFsb2dDbG9zZShudWxsKTtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIC4uLih0aGlzLmVzY2FsYXRpb24gPz8ge1xuICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ1BETFRDNicsXG4gICAgICAgICAgV29ya2Zsb3c6IHRoaXMud29ya2Zsb3dDb2RlKCksXG4gICAgICAgICAgU3RhZ2U6IHRoaXMuc3RhZ2VDb2RlKCksXG4gICAgICAgICAgVHlwZTogdGhpcy50eXBlKCksXG4gICAgICAgICAgRXhwaXJhdGlvbldhcm5pbmc6IDAsXG4gICAgICAgICAgRHVyYXRpb246IDAsXG4gICAgICAgICAgTm90aWZ5QWZ0ZXI6IDAsXG4gICAgICAgICAgUG9zaXRpb246IDEsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIH0pLFxuICAgICAgICBNZXNzYWdlczogdGFza05vdGlmaWNhdGlvbnMubWFwKCh7IENvZGUgfSkgPT4gQ29kZSksXG4gICAgICAgIEZ1bGxNZXNzYWdlczogdGFza05vdGlmaWNhdGlvbnMsXG4gICAgICB9O1xuICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVFc2NhbGF0aW9ucyhbZGF0YV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVzY2FsYXRpb24oc3RhZ2VDb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEVzY2FsYXRpb25XaXRoUGFyYW0oc3RhZ2VDb2RlKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KGRhdGEuUmVzdWx0WzBdID8/IG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hFc2NhbGF0aW9uKFxuICAgIFdvcmtmbG93OiBzdHJpbmcsXG4gICAgU3RhZ2U6IHN0cmluZyxcbiAgICBUeXBlOiBFc2NhbGF0aW9uVHlwZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuc2VhcmNoRXNjYWxhdGlvbldpdGhQYXJhbSh7XG4gICAgICAgIFdvcmtmbG93LFxuICAgICAgICBTdGFnZSxcbiAgICAgICAgVHlwZSxcbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KGRhdGEuUmVzdWx0WzBdID8/IG51bGwpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSZXBvcnRTY2hlZHVsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5nZXRSZXBvcnRTY2hlZHVsZXMoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnJlcG9ydFNjaGVkdWxlcy5zZXQoZGF0YS5SZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgb25EaWFsb2dDbG9zZShldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgY2xvc2VkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgb25EaWFsb2dPcGVuKGV2ZW50RGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0RpYWxvZyBvcGVuZWQsIHJlY2VpdmVkIGRhdGE6JywgZXZlbnREYXRhKTtcbiAgfVxuXG4gIGlzTm90TmV3KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLmVzY2FsYXRpb24oKTtcbiAgICByZXR1cm4gZXNjYWxhdGlvbiAhPT0gbnVsbCAmJiBlc2NhbGF0aW9uLkRhdGFTdGF0ZSAhPT0gJ05ldyc7XG4gIH1cbn1cbiIsIjx2ZXJiZW4tZGlhbG9ndWVcbiAgW3Nob3dDbG9zZUljb25dPVwidHJ1ZVwiXG4gIFtkaXNtaXNzT3V0c2lkZUNsaWNrXT1cInRydWVcIlxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcbiAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICBbbW9kZV09XCInZHJhd2VyJ1wiXG4gIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCJcbiAgW2lzVmlzaWJsZV09XCJ2aXNpYmxlXCJcbiAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcbiAgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIlxuICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxuICAob3Blbk1vZGFsKT1cIm9uRGlhbG9nT3BlbigkZXZlbnQpXCJcbiAgKGNsb3NlTW9kYWwpPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCJcbj5cbjwvdmVyYmVuLWRpYWxvZ3VlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC0zIHRleHQteHMgYm9yZGVyLWItNCBib3JkZXItWyNGRkU2ODFdXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgdy0yLjUgaC0yLjUgYm9yZGVyLXQgYm9yZGVyLWwgYm9yZGVyLVsjM0UzRTNFXS83MCB0cmFuc2Zvcm0gLXJvdGF0ZS00NVwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2Ygc2VsZWN0ZWRNZXNzYWdlcygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItNCBzcGFjZS15LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgW2Zvcl09XCJtZXNzYWdlICsgJy0nICsgaVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgTWVzc2FnZSB7eyBpICsgMSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgIHNlbGVjdEtleT1cIkNvZGVcIlxuICAgICAgICAgICAgW2lkXT1cIm1lc3NhZ2UgKyAnLScgKyBpXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBNZXNzYWdlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInJlcG9ydFNjaGVkdWxlcygpXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwiTmFtZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVzc2FnZVNlbGVjdGVkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgID48L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLklzVGFza0RhdGFTb3VyY2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBbZm9yXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAndGFzay1kYXRhLXNvdXJjZSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1bIzNFM0UzRV1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIElzIFRhc2sgRGF0YSBTb3VyY2U/XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuYS1zd2l0Y2hcbiAgICAgICAgICAgIFtpZF09XCInaXMtJyArIG1lc3NhZ2UgKyAnLScgKyBpICsgJ3Rhc2stZGF0YS1zb3VyY2UnXCJcbiAgICAgICAgICAgIG9uVGV4dD1cIlllc1wiXG4gICAgICAgICAgICBvZmZUZXh0PVwiTm9cIlxuICAgICAgICAgICAgW29uQ29sb3JdPVwiJyMxQTIzN0UnXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1lc3NhZ2UuSXNUYXNrRGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZS5Jc1Rhc2tEYXRhU291cmNlID0gJGV2ZW50OyBvbk1lc3NhZ2VTZWxlY3RlZChtZXNzYWdlLCBpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC92ZXJiZW5hLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJib3JkZXIgYm9yZGVyLXByaW1hcnkgLW0tMiByb3VuZGVkLWxnIGZsZXggZmxleC1jb2wgZ2FwLTNcIlxuICAgICAgICAgICpuZ0lmPVwibWVzc2FnZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0zIGJvcmRlci1iIGJvcmRlci1wcmltYXJ5IHB4LTIgcHktM1wiPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIlN1YmplY3RcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuU3ViamVjdFwiXG4gICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiUmVjaXBpZW50c1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWVzc2FnZS5SZWNpcGllbnRzXCJcbiAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bGliLWVkaXRvclxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJlZGl0b3JDb25maWdcIlxuICAgICAgICAgICAgW2VkaXRvck1vZGVdPVwiZWRpdG9yTW9kZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuUGxhaW5NZXNzYWdlXCJcbiAgICAgICAgICA+PC9saWItZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTggdy1mdWxsXCI+XG4gICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRleHQ9XCJBZGQgTWVzc2FnZVwiXG4gICAgICBiZ0NvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICB0ZXh0Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjhweFwiXG4gICAgICBwZD1cIjEwcHggMjBweFwiXG4gICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgIGZvbnRXZWlnaHQ9XCI2MDBcIlxuICAgICAgZm9udFNpemU9XCIxMnB4XCJcbiAgICAgIHN2Zz1cImFkZFwiXG4gICAgICBbc3ZnSGVpZ2h0XT1cIjE0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIxNFwiXG4gICAgICBbc3ZnU2l6ZV09XCInc20nXCJcbiAgICAgIChjbGljayk9XCJhZGRNZXNzYWdlKClcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgaXRlbXMtY2VudGVyXCI+XG4gICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGV4dD1cIkRlbGV0ZVwiXG4gICAgICAgIGJnQ29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjhweFwiXG4gICAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgICAgd2lkdGg9XCIxMTBweFwiXG4gICAgICAgIGhlaWdodD1cIjM5cHhcIlxuICAgICAgICBmb250V2VpZ2h0PVwiNjAwXCJcbiAgICAgICAgZm9udFNpemU9XCIxMnB4XCJcbiAgICAgICAgc3ZnPVwiZGVsZXRlXCJcbiAgICAgICAgW3N2Z0hlaWdodF09XCIxNFwiXG4gICAgICAgIFtzdmdXaWR0aF09XCIxNFwiXG4gICAgICAgIFtzdmdTaXplXT1cIidzbSdcIlxuICAgICAgICAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCJcbiAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGV4dD1cIlNlbmRcIlxuICAgICAgICBiZ0NvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHRleHRDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI4cHhcIlxuICAgICAgICBwZD1cIjEwcHggMjBweFwiXG4gICAgICAgIHdpZHRoPVwiMTYwcHhcIlxuICAgICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgICAgZm9udFdlaWdodD1cIjYwMFwiXG4gICAgICAgIGZvbnRTaXplPVwiMTJweFwiXG4gICAgICAgIHN2Zz1cInNlbmRcIlxuICAgICAgICBbc3ZnSGVpZ2h0XT1cIjE0XCJcbiAgICAgICAgW3N2Z1dpZHRoXT1cIjE0XCJcbiAgICAgICAgW3N2Z1NpemVdPVwiJ3NtJ1wiXG4gICAgICAgIChjbGljayk9XCJzYXZlTWVzc2FnZXMoKVwiXG4gICAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYWxhdGlvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci9lc2NhbGF0aW9uLWRpYWxvZy9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2VzY2FsYXRpb24tZGlhbG9nL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSTNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTVFLE9BQU8sRUFBZ0IsVUFBVSxFQUFlLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHlCQUF5QjtJQW1EMUI7SUFDQTtJQW5ERCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDeEMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNyQyxJQUFJLEdBQUcsS0FBSyxFQUFrQixDQUFDO0lBRXJCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBTSxDQUFDO0lBRTNDLFVBQVUsR0FBc0MsTUFBTSxDQUFDLElBQUksQ0FB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OzRGRHJJYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO2tIQUt4QixPQUFPO3NCQUFmLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdvcmtmbG93RGF0YVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXNjYWxhdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvRXNjYWxhdGlvblR5cGUnO1xuaW1wb3J0IHsgRXNjYWxhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Fc2NhbGF0aW9uJztcbmltcG9ydCB7IE9iamVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL29iamVjdC1zdGF0ZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVwb3J0U2NoZWR1bGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvUmVwb3J0U2NoZWR1bGUnO1xuaW1wb3J0IHsgVGFza05vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYXNrTm90aWZpY2F0aW9uJztcbmltcG9ydCB7IFRhc2tOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1Rhc2tOb3RpZmljYXRpb25UeXBlJztcbmltcG9ydCB7IE1lc3NhZ2VNZWRpdW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvTWVzc2FnZU1lZGl1bSc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcsIEVkaXRvck1vZGUsIEVkaXRvclN0YXRlIH0gZnJvbSAndmVyYmVuLXJlcG9ydGluZy11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lc2NhbGF0aW9uLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgd29ya2Zsb3dDb2RlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBzdGFnZUNvZGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHR5cGUgPSBpbnB1dDxFc2NhbGF0aW9uVHlwZT4oKTtcblxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgZXNjYWxhdGlvbjogV3JpdGFibGVTaWduYWw8RXNjYWxhdGlvbiB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuXG4gIC8vIGVzY2FsYXRpb25Gb3JtO1xuICByZXBvcnRTY2hlZHVsZXM6IFdyaXRhYmxlU2lnbmFsPFJlcG9ydFNjaGVkdWxlW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RlZE1lc3NhZ2VzOiBXcml0YWJsZVNpZ25hbDxcbiAgICAoKFJlcG9ydFNjaGVkdWxlICYgeyBJc1Rhc2tEYXRhU291cmNlOiBib29sZWFuIH0pIHwgbnVsbClbXVxuICA+ID0gc2lnbmFsKFtdKTtcblxuICBlZGl0b3JNb2RlOiBFZGl0b3JNb2RlID0gRWRpdG9yTW9kZS5EZXNpZ25lcjtcbiAgZWRpdG9yQ29uZmlnOiBFZGl0b3JDb25maWcgPSB7XG4gICAgZWRpdGFibGU6IHRydWUsXG4gICAgaGVpZ2h0OiAnJyxcbiAgICB3aWR0aDogJycsXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXG4gICAgbWVudUl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIExhYmVsOiAnVG9nZ2xlVmlldycsXG4gICAgICAgIEljb246ICdjb2RlLXRvZ2dsZScsXG4gICAgICAgIEljb25XaWR0aDogMjAsXG4gICAgICAgIEljb25IZWlnaHQ6IDIwLFxuICAgICAgICBJc1N0cm9rZTogZmFsc2UsXG4gICAgICAgIEdyb3VwQnk6ICdsb2NhbCcsXG4gICAgICAgIE9uQ2xpY2s6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRvck1vZGUgPVxuICAgICAgICAgICAgdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuRGVzaWduZXJcbiAgICAgICAgICAgICAgPyBFZGl0b3JNb2RlLkNvZGVcbiAgICAgICAgICAgICAgOiBFZGl0b3JNb2RlLkRlc2lnbmVyO1xuICAgICAgICB9LFxuICAgICAgICBJc0Rpc2FibGVkOiAoZXZlbnQ6IEVkaXRvclN0YXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBJc0VuYWJsZWQ6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuQ29kZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBJc1Rhc2tEYXRhU291cmNlOiBXcml0YWJsZVNpZ25hbDxib29sZWFuW10+ID0gc2lnbmFsKFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdGFnZUNvZGUgPSB0aGlzLnN0YWdlQ29kZSgpO1xuICAgICAgY29uc3Qgd29ya2Zsb3dDb2RlID0gdGhpcy53b3JrZmxvd0NvZGUoKTtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTdGFnZSBjb2RlIGNoYW5nZWQ6Jywgc3RhZ2VDb2RlKTtcbiAgICAgIGlmICh3b3JrZmxvd0NvZGUgJiYgc3RhZ2VDb2RlICYmIHR5cGUpIHtcbiAgICAgICAgLy8gdGhpcy5sb2FkRXNjYWxhdGlvbihzdGFnZUNvZGUpO1xuICAgICAgICB0aGlzLnNlYXJjaEVzY2FsYXRpb24od29ya2Zsb3dDb2RlLCBzdGFnZUNvZGUsIHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLmVzY2FsYXRpb24oKTtcbiAgICAgIGNvbnN0IHJlcG9ydFNjaGVkdWxlcyA9IHRoaXMucmVwb3J0U2NoZWR1bGVzKCk7XG5cbiAgICAgIGlmIChlc2NhbGF0aW9uICYmIHJlcG9ydFNjaGVkdWxlcykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVzY2FsYXRpb24uTWVzc2FnZXMubWFwKChjb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHJlcG9ydFNjaGVkdWxlcy5maW5kKChycykgPT4gcnMuQ29kZSA9PT0gY29kZSk7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQgPyB7IC4uLmZvdW5kLCBJc1Rhc2tEYXRhU291cmNlOiB0cnVlIH0gOiBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHRoaXMuZXNjYWxhdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAvLyAgIE1lc3NhZ2VzOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAvLyB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZFJlcG9ydFNjaGVkdWxlcygpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ0VzY2FsYXRpb25EaWFsb2dDb21wb25lbnQgaW5pdGlhbGl6ZWQgd2l0aCBzdGFnZUNvZGU6JyxcbiAgICAgIHRoaXMuc3RhZ2VDb2RlXG4gICAgKTtcbiAgICAvLyBjb25zb2xlLmxvZygnRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCB0eXBlOicsIHRoaXMudHlwZSk7XG4gIH1cblxuICAvLyBnZXQgbWVzc2FnZXMoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuZXNjYWxhdGlvbkZvcm0uY29udHJvbHNbJ01lc3NhZ2VzJ10gYXMgRm9ybUFycmF5O1xuICAvLyB9XG5cbiAgYWRkTWVzc2FnZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiBtc2dzLmNvbmNhdChbbnVsbF0pKTtcbiAgfVxuXG4gIGRlbGV0ZU1lc3NhZ2UobGVzc29uSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy51cGRhdGUoKG1zZ3MpID0+IG1zZ3Muc3BsaWNlKGxlc3NvbkluZGV4LCAxKSk7XG4gIH1cblxuICBvbk1lc3NhZ2VTZWxlY3RlZChyZXBvcnRTY2hlZHVsZTogUmVwb3J0U2NoZWR1bGUsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgbWVzc2FnZTonLCByZXBvcnRTY2hlZHVsZSwgJ2F0IGluZGV4OicsIGluZGV4KTtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMudXBkYXRlKChtc2dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdNc2dzID0gWy4uLm1zZ3NdO1xuICAgICAgbmV3TXNnc1tpbmRleF0gPSB7IC4uLnJlcG9ydFNjaGVkdWxlLCBJc1Rhc2tEYXRhU291cmNlOiB0cnVlIH07XG4gICAgICByZXR1cm4gbmV3TXNncztcbiAgICB9KTtcbiAgfVxuXG4gIGlzVmFsaWRTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcygpLmV2ZXJ5KChtc2cpID0+ICEhbXNnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVNZXNzYWdlcygpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkTWVzc2FnZXMoKSk7XG4gICAgY29uc3QgdGFza05vdGlmaWNhdGlvbnM6IFRhc2tOb3RpZmljYXRpb25bXSA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlcygpXG4gICAgICAuZmlsdGVyKChtc2cpID0+ICEhbXNnKVxuICAgICAgLm1hcCgobXNnKSA9PiAoe1xuICAgICAgICBJZDogJycsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBUZW5hbnRJZDogJ1BETFRDNicsXG4gICAgICAgIE1lc3NhZ2U6IG1zZy5Db2RlLFxuICAgICAgICBOYW1lOiBtc2cuTmFtZSxcbiAgICAgICAgU3ViamVjdDogbXNnLlN1YmplY3QsXG4gICAgICAgIFNlbmRlckNvbmZpZzogbXNnLk1lc3NhZ2VDb25maWcsXG4gICAgICAgIE1lZGl1bTogbXNnLk1lZGl1bSxcbiAgICAgICAgTm90aWZpY2F0aW9uVHlwZTogVGFza05vdGlmaWNhdGlvblR5cGUuRXNjYWxhdGlvbixcbiAgICAgICAgSXNNZXNzYWdlSWQ6IGZhbHNlLFxuICAgICAgICBJc1Rhc2tEYXRhU291cmNlOiBtc2cuSXNUYXNrRGF0YVNvdXJjZSxcbiAgICAgICAgTWVzc2FnZURhdGFTb3VyY2U6ICFtc2cuSXNUYXNrRGF0YVNvdXJjZVxuICAgICAgICAgID8gbXNnLlJlcG9ydERhdGFTb3VyY2VcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIH0pKTtcblxuICAgIGlmICh0YXNrTm90aWZpY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgIC8vIHRoaXMuY3JlYXRlZC5lbWl0KHRhc2tOb3RpZmljYXRpb25zKTtcbiAgICAgIGNvbnNvbGUubG9nKHRhc2tOb3RpZmljYXRpb25zKTtcbiAgICAgIHRoaXMub25EaWFsb2dDbG9zZShudWxsKTtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIC4uLih0aGlzLmVzY2FsYXRpb24gPz8ge1xuICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ1BETFRDNicsXG4gICAgICAgICAgV29ya2Zsb3c6IHRoaXMud29ya2Zsb3dDb2RlKCksXG4gICAgICAgICAgU3RhZ2U6IHRoaXMuc3RhZ2VDb2RlKCksXG4gICAgICAgICAgVHlwZTogdGhpcy50eXBlKCksXG4gICAgICAgICAgRXhwaXJhdGlvbldhcm5pbmc6IDAsXG4gICAgICAgICAgRHVyYXRpb246IDAsXG4gICAgICAgICAgTm90aWZ5QWZ0ZXI6IDAsXG4gICAgICAgICAgUG9zaXRpb246IDEsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIH0pLFxuICAgICAgICBNZXNzYWdlczogdGFza05vdGlmaWNhdGlvbnMubWFwKCh7IENvZGUgfSkgPT4gQ29kZSksXG4gICAgICAgIEZ1bGxNZXNzYWdlczogdGFza05vdGlmaWNhdGlvbnMsXG4gICAgICB9O1xuICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVFc2NhbGF0aW9ucyhbZGF0YV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVzY2FsYXRpb24oc3RhZ2VDb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEVzY2FsYXRpb25XaXRoUGFyYW0oc3RhZ2VDb2RlKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KGRhdGEuUmVzdWx0WzBdID8/IG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hFc2NhbGF0aW9uKFxuICAgIFdvcmtmbG93OiBzdHJpbmcsXG4gICAgU3RhZ2U6IHN0cmluZyxcbiAgICBUeXBlOiBFc2NhbGF0aW9uVHlwZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuc2VhcmNoRXNjYWxhdGlvbldpdGhQYXJhbSh7XG4gICAgICAgIFdvcmtmbG93LFxuICAgICAgICBTdGFnZSxcbiAgICAgICAgVHlwZSxcbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KGRhdGEuUmVzdWx0WzBdID8/IG51bGwpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSZXBvcnRTY2hlZHVsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5nZXRSZXBvcnRTY2hlZHVsZXMoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnJlcG9ydFNjaGVkdWxlcy5zZXQoZGF0YS5SZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgb25EaWFsb2dDbG9zZShldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgY2xvc2VkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgb25EaWFsb2dPcGVuKGV2ZW50RGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0RpYWxvZyBvcGVuZWQsIHJlY2VpdmVkIGRhdGE6JywgZXZlbnREYXRhKTtcbiAgfVxuXG4gIGlzTm90TmV3KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLmVzY2FsYXRpb24oKTtcbiAgICByZXR1cm4gZXNjYWxhdGlvbiAhPT0gbnVsbCAmJiBlc2NhbGF0aW9uLkRhdGFTdGF0ZSAhPT0gJ05ldyc7XG4gIH1cbn1cbiIsIjx2ZXJiZW4tZGlhbG9ndWVcbiAgW3Nob3dDbG9zZUljb25dPVwidHJ1ZVwiXG4gIFtkaXNtaXNzT3V0c2lkZUNsaWNrXT1cInRydWVcIlxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcbiAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICBbbW9kZV09XCInZHJhd2VyJ1wiXG4gIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCJcbiAgW2lzVmlzaWJsZV09XCJ2aXNpYmxlXCJcbiAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcbiAgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIlxuICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIlxuICAob3Blbk1vZGFsKT1cIm9uRGlhbG9nT3BlbigkZXZlbnQpXCJcbiAgKGNsb3NlTW9kYWwpPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCJcbj5cbjwvdmVyYmVuLWRpYWxvZ3VlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC0zIHRleHQteHMgYm9yZGVyLWItNCBib3JkZXItWyNGRkU2ODFdXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgdy0yLjUgaC0yLjUgYm9yZGVyLXQgYm9yZGVyLWwgYm9yZGVyLVsjM0UzRTNFXS83MCB0cmFuc2Zvcm0gLXJvdGF0ZS00NVwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2Ygc2VsZWN0ZWRNZXNzYWdlcygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItNCBzcGFjZS15LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgW2Zvcl09XCJtZXNzYWdlICsgJy0nICsgaVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgTWVzc2FnZSB7eyBpICsgMSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgIHNlbGVjdEtleT1cIkNvZGVcIlxuICAgICAgICAgICAgW2lkXT1cIm1lc3NhZ2UgKyAnLScgKyBpXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBNZXNzYWdlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInJlcG9ydFNjaGVkdWxlcygpXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwiTmFtZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVzc2FnZVNlbGVjdGVkKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgID48L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAobWVzc2FnZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFtmb3JdPVwiJ2lzLScgKyBtZXNzYWdlICsgJy0nICsgaSArICd0YXNrLWRhdGEtc291cmNlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgSXMgVGFzayBEYXRhIFNvdXJjZT9cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDx2ZXJiZW5hLXN3aXRjaFxuICAgICAgICAgICAgW2lkXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAndGFzay1kYXRhLXNvdXJjZSdcIlxuICAgICAgICAgICAgb25UZXh0PVwiWWVzXCJcbiAgICAgICAgICAgIG9mZlRleHQ9XCJOb1wiXG4gICAgICAgICAgICBbb25Db2xvcl09XCInIzFBMjM3RSdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtZXNzYWdlLklzVGFza0RhdGFTb3VyY2VcIlxuICAgICAgICAgID48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItcHJpbWFyeSAtbS0yIHJvdW5kZWQtbGcgZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4gICAgICAgICAgKm5nSWY9XCJtZXNzYWdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTMgYm9yZGVyLWIgYm9yZGVyLXByaW1hcnkgcHgtMiBweS0zXCI+XG4gICAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiU3ViamVjdFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWVzc2FnZS5TdWJqZWN0XCJcbiAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJSZWNpcGllbnRzXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtZXNzYWdlLlJlY2lwaWVudHNcIlxuICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxsaWItZWRpdG9yXG4gICAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cImVkaXRvckNvbmZpZ1wiXG4gICAgICAgICAgICBbZWRpdG9yTW9kZV09XCJlZGl0b3JNb2RlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWVzc2FnZS5QbGFpbk1lc3NhZ2VcIlxuICAgICAgICAgID48L2xpYi1lZGl0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtOCB3LWZ1bGxcIj5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGV4dD1cIkFkZCBNZXNzYWdlXCJcbiAgICAgIGJnQ29sb3I9XCIjRkZFNjgxXCJcbiAgICAgIHRleHRDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgYm9yZGVyUmFkaXVzPVwiOHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIGhlaWdodD1cIjM5cHhcIlxuICAgICAgZm9udFdlaWdodD1cIjYwMFwiXG4gICAgICBmb250U2l6ZT1cIjEycHhcIlxuICAgICAgc3ZnPVwiYWRkXCJcbiAgICAgIFtzdmdIZWlnaHRdPVwiMTRcIlxuICAgICAgW3N2Z1dpZHRoXT1cIjE0XCJcbiAgICAgIFtzdmdTaXplXT1cIidzbSdcIlxuICAgICAgKGNsaWNrKT1cImFkZE1lc3NhZ2UoKVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0ZXh0PVwiRGVsZXRlXCJcbiAgICAgICAgYmdDb2xvcj1cIiNGRkU2ODFcIlxuICAgICAgICB0ZXh0Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiOHB4XCJcbiAgICAgICAgcGQ9XCIxMHB4IDIwcHhcIlxuICAgICAgICB3aWR0aD1cIjExMHB4XCJcbiAgICAgICAgaGVpZ2h0PVwiMzlweFwiXG4gICAgICAgIGZvbnRXZWlnaHQ9XCI2MDBcIlxuICAgICAgICBmb250U2l6ZT1cIjEycHhcIlxuICAgICAgICBzdmc9XCJkZWxldGVcIlxuICAgICAgICBbc3ZnSGVpZ2h0XT1cIjE0XCJcbiAgICAgICAgW3N2Z1dpZHRoXT1cIjE0XCJcbiAgICAgICAgW3N2Z1NpemVdPVwiJ3NtJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIlxuICAgICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0ZXh0PVwiU2VuZFwiXG4gICAgICAgIGJnQ29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjhweFwiXG4gICAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgICAgd2lkdGg9XCIxNjBweFwiXG4gICAgICAgIGhlaWdodD1cIjM5cHhcIlxuICAgICAgICBmb250V2VpZ2h0PVwiNjAwXCJcbiAgICAgICAgZm9udFNpemU9XCIxMnB4XCJcbiAgICAgICAgc3ZnPVwic2VuZFwiXG4gICAgICAgIFtzdmdIZWlnaHRdPVwiMTRcIlxuICAgICAgICBbc3ZnV2lkdGhdPVwiMTRcIlxuICAgICAgICBbc3ZnU2l6ZV09XCInc20nXCJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVNZXNzYWdlcygpXCJcbiAgICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2022/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs
CHANGED
|
@@ -90,11 +90,6 @@ export class SwimlaneDialogComponent {
|
|
|
90
90
|
console.log('Dialog opened, received data:', eventData);
|
|
91
91
|
}
|
|
92
92
|
applySelection() {
|
|
93
|
-
// Validate name
|
|
94
|
-
if (!this.workflowName || this.workflowName.trim() === '') {
|
|
95
|
-
console.error('Swimlane name cannot be empty');
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
93
|
const selectedTags = this.tags.filter((tag) => this.selectedTagNames.includes(tag.Name));
|
|
99
94
|
console.log('Submitting swimlane data:', {
|
|
100
95
|
name: this.workflowName,
|
|
@@ -106,15 +101,16 @@ export class SwimlaneDialogComponent {
|
|
|
106
101
|
});
|
|
107
102
|
// Reset form fields when dialog opens
|
|
108
103
|
this.selectedTagNames = [];
|
|
104
|
+
this.selectedTags = [];
|
|
109
105
|
this.workflowName = '';
|
|
110
106
|
this.searchQuery = '';
|
|
111
107
|
}
|
|
112
108
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneDialogComponent, deps: [{ token: i1.FormBuilder }, { token: i2.WorkflowDataService }, { token: i3.SwimlaneService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: SwimlaneDialogComponent, selector: "lib-swimlane-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, swimlaneData: { classPropertyName: "swimlaneData", publicName: "swimlaneData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", created: "created" }, ngImport: i0, template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n <div class=\"text-center\">\n <h2 class=\"text-sm font-medium\">Select Tags</h2>\n <span class=\"text-xs text-[#3E3E3E]/70\"\n >{{ this.selectedTags.length }}/{{ tags.length }}</span\n >\n </div>\n <span\n class=\"font-medium cursor-pointer text-[#3E3E3E]/70\"\n (click)=\"applySelection()\"\n >Create</span\n >\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"p-3\">\n <div class=\"mb-4 space-y-4\">\n <!-- <input\n type=\"text\"\n placeholder=\"Enter Name\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"workflowName\"\n />\n\n <input\n type=\"search\"\n placeholder=\"Filter Tags\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"searchQuery\"\n />\n </div>\n\n <div class=\"\">\n <div class=\"py-3\">\n <label class=\"flex items-center\">\n <input type=\"checkbox\" class=\"mr-3\" [(ngModel)]=\"allSelected\" />\n <span class=\"text-sm\">Select All</span>\n </label>\n </div>\n\n <div *ngFor=\"let tag of filteredTags\" class=\"py-3\">\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n class=\"mr-3\"\n [checked]=\"isTagSelected(tag.Name)\"\n (change)=\"toggleTagSelection(tag.Name)\"\n />\n <span class=\"text-sm\">{{ tag.Name }}</span>\n <span *ngIf=\"!tag.IsOptional\" class=\"ml-2 text-xs text-red-500\"\n >(Required)</span\n >\n </label>\n </div> -->\n\n <verben-drop-down\n selectKey=\"Code\"\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n placeholder=\"Select\"\n [options]=\"tags\"\n optionLabel=\"Name\"\n id=\"tags\"\n [(ngModel)]=\"selectedTags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div
|
|
109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: SwimlaneDialogComponent, selector: "lib-swimlane-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, swimlaneData: { classPropertyName: "swimlaneData", publicName: "swimlaneData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", created: "created" }, ngImport: i0, template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n <div class=\"text-center\">\n <h2 class=\"text-sm font-medium\">Select Tags</h2>\n <span class=\"text-xs text-[#3E3E3E]/70\"\n >{{ this.selectedTags.length }}/{{ tags.length }}</span\n >\n </div>\n <span\n class=\"font-medium cursor-pointer text-[#3E3E3E]/70\"\n (click)=\"applySelection()\"\n >Create</span\n >\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"p-3\">\n <div class=\"mb-4 space-y-4\">\n <!-- <input\n type=\"text\"\n placeholder=\"Enter Name\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"workflowName\"\n />\n\n <input\n type=\"search\"\n placeholder=\"Filter Tags\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"searchQuery\"\n />\n </div>\n\n <div class=\"\">\n <div class=\"py-3\">\n <label class=\"flex items-center\">\n <input type=\"checkbox\" class=\"mr-3\" [(ngModel)]=\"allSelected\" />\n <span class=\"text-sm\">Select All</span>\n </label>\n </div>\n\n <div *ngFor=\"let tag of filteredTags\" class=\"py-3\">\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n class=\"mr-3\"\n [checked]=\"isTagSelected(tag.Name)\"\n (change)=\"toggleTagSelection(tag.Name)\"\n />\n <span class=\"text-sm\">{{ tag.Name }}</span>\n <span *ngIf=\"!tag.IsOptional\" class=\"ml-2 text-xs text-red-500\"\n >(Required)</span\n >\n </label>\n </div> -->\n\n <verben-drop-down\n selectKey=\"Code\"\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n placeholder=\"Select\"\n [options]=\"tags\"\n optionLabel=\"Name\"\n id=\"tags\"\n [(ngModel)]=\"selectedTags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div\n class=\"flex justify-between w-full items-center p-4 border-t border-gray-200\"\n >\n <!-- <button\n class=\"px-4 py-2 mr-2 bg-white border border-gray-200 rounded text-sm font-medium\"\n (click)=\"onDialogClose($event)\"\n >\n Cancel\n </button> -->\n\n <verbena-button\n (click)=\"onDialogClose($event)\"\n text=\"Cancel\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"selectedTags.length < 1\"\n (click)=\"applySelection()\"\n ></verbena-button>\n\n <!-- <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n ></verbena-button> -->\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "component", type: i4.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["dialogueWidth", "headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "width", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
|
|
114
110
|
}
|
|
115
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneDialogComponent, decorators: [{
|
|
116
112
|
type: Component,
|
|
117
|
-
args: [{ selector: 'lib-swimlane-dialog', template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n <div class=\"text-center\">\n <h2 class=\"text-sm font-medium\">Select Tags</h2>\n <span class=\"text-xs text-[#3E3E3E]/70\"\n >{{ this.selectedTags.length }}/{{ tags.length }}</span\n >\n </div>\n <span\n class=\"font-medium cursor-pointer text-[#3E3E3E]/70\"\n (click)=\"applySelection()\"\n >Create</span\n >\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"p-3\">\n <div class=\"mb-4 space-y-4\">\n <!-- <input\n type=\"text\"\n placeholder=\"Enter Name\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"workflowName\"\n />\n\n <input\n type=\"search\"\n placeholder=\"Filter Tags\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"searchQuery\"\n />\n </div>\n\n <div class=\"\">\n <div class=\"py-3\">\n <label class=\"flex items-center\">\n <input type=\"checkbox\" class=\"mr-3\" [(ngModel)]=\"allSelected\" />\n <span class=\"text-sm\">Select All</span>\n </label>\n </div>\n\n <div *ngFor=\"let tag of filteredTags\" class=\"py-3\">\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n class=\"mr-3\"\n [checked]=\"isTagSelected(tag.Name)\"\n (change)=\"toggleTagSelection(tag.Name)\"\n />\n <span class=\"text-sm\">{{ tag.Name }}</span>\n <span *ngIf=\"!tag.IsOptional\" class=\"ml-2 text-xs text-red-500\"\n >(Required)</span\n >\n </label>\n </div> -->\n\n <verben-drop-down\n selectKey=\"Code\"\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n placeholder=\"Select\"\n [options]=\"tags\"\n optionLabel=\"Name\"\n id=\"tags\"\n [(ngModel)]=\"selectedTags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div
|
|
113
|
+
args: [{ selector: 'lib-swimlane-dialog', template: "<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'medium'\"\n [mode]=\"'drawer'\"\n [disableFooter]=\"false\"\n [isVisible]=\"visible\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n (openModal)=\"onDialogOpen($event)\"\n (closeModal)=\"onDialogClose($event)\"\n>\n</verben-dialogue>\n\n<ng-template #headerTemplate>\n <div\n class=\"flex items-center justify-between p-3 text-xs border-b-4 border-[#FFE681]\"\n >\n <button class=\"mr-4\" type=\"button\" (click)=\"onDialogClose($event)\">\n <span\n class=\"block w-2.5 h-2.5 border-t border-l border-[#3E3E3E]/70 transform -rotate-45\"\n ></span>\n </button>\n <div class=\"text-center\">\n <h2 class=\"text-sm font-medium\">Select Tags</h2>\n <span class=\"text-xs text-[#3E3E3E]/70\"\n >{{ this.selectedTags.length }}/{{ tags.length }}</span\n >\n </div>\n <span\n class=\"font-medium cursor-pointer text-[#3E3E3E]/70\"\n (click)=\"applySelection()\"\n >Create</span\n >\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"p-3\">\n <div class=\"mb-4 space-y-4\">\n <!-- <input\n type=\"text\"\n placeholder=\"Enter Name\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"workflowName\"\n />\n\n <input\n type=\"search\"\n placeholder=\"Filter Tags\"\n class=\"w-full px-4 py-2 rounded-lg border border-[#E7C10B] outline-none\"\n [(ngModel)]=\"searchQuery\"\n />\n </div>\n\n <div class=\"\">\n <div class=\"py-3\">\n <label class=\"flex items-center\">\n <input type=\"checkbox\" class=\"mr-3\" [(ngModel)]=\"allSelected\" />\n <span class=\"text-sm\">Select All</span>\n </label>\n </div>\n\n <div *ngFor=\"let tag of filteredTags\" class=\"py-3\">\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n class=\"mr-3\"\n [checked]=\"isTagSelected(tag.Name)\"\n (change)=\"toggleTagSelection(tag.Name)\"\n />\n <span class=\"text-sm\">{{ tag.Name }}</span>\n <span *ngIf=\"!tag.IsOptional\" class=\"ml-2 text-xs text-red-500\"\n >(Required)</span\n >\n </label>\n </div> -->\n\n <verben-drop-down\n selectKey=\"Code\"\n label=\"Tags\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"true\"\n placeholder=\"Select\"\n [options]=\"tags\"\n optionLabel=\"Name\"\n id=\"tags\"\n [(ngModel)]=\"selectedTags\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div\n class=\"flex justify-between w-full items-center p-4 border-t border-gray-200\"\n >\n <!-- <button\n class=\"px-4 py-2 mr-2 bg-white border border-gray-200 rounded text-sm font-medium\"\n (click)=\"onDialogClose($event)\"\n >\n Cancel\n </button> -->\n\n <verbena-button\n (click)=\"onDialogClose($event)\"\n text=\"Cancel\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"selectedTags.length < 1\"\n (click)=\"applySelection()\"\n ></verbena-button>\n\n <!-- <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n ></verbena-button> -->\n </div>\n</ng-template>\n" }]
|
|
118
114
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.WorkflowDataService }, { type: i3.SwimlaneService }], propDecorators: { visible: [{
|
|
119
115
|
type: Input
|
|
120
116
|
}], closed: [{
|
|
@@ -122,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
122
118
|
}], created: [{
|
|
123
119
|
type: Output
|
|
124
120
|
}] } });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvd29ya2Zsb3ctZGVzaWduZXIvc3dpbWxhbmUtZGlhbG9nL3N3aW1sYW5lLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3N3aW1sYW5lLWRpYWxvZy9zd2ltbGFuZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFXdkIsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNBO0lBbEJELE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBdUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO0lBRXRFLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUUxQiwwQ0FBMEM7SUFDMUMsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLFlBQVksR0FBVSxFQUFFLENBQUM7SUFFekIsWUFBWTtJQUNaLElBQUksR0FBVSxFQUFFLENBQUM7SUFFakIsWUFDVSxFQUFlLEVBQ2YsV0FBZ0MsRUFDaEMsZUFBZ0M7UUFGaEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUNoQyxv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QXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjtnSkFLdEIsT0FBTztzQkFBZixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFdvcmtmbG93RGF0YVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3dpbWxhbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3dpbWxhbmUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3dpbWxhbmUtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aW1sYW5lLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zd2ltbGFuZS1kaWFsb2cuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFN3aW1sYW5lRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBzd2ltbGFuZURhdGEgPSBpbnB1dDx7IG5hbWU6IHN0cmluZzsgdGFnczogVGFnW10gfSB8IG51bGw+KG51bGwpO1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWdzOiBUYWdbXTsgbmFtZTogc3RyaW5nIH0+KCk7XG5cbiAgc2VhcmNoUXVlcnk6IHN0cmluZyA9ICcnO1xuICB3b3JrZmxvd05hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8vIFRyYWNrIHNlbGVjdGVkIHRhZ3MgaW4gYSBzZXBhcmF0ZSBhcnJheVxuICBzZWxlY3RlZFRhZ05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZFRhZ3M6IFRhZ1tdID0gW107XG5cbiAgLy8gVGFncyBsaXN0XG4gIHRhZ3M6IFRhZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogV29ya2Zsb3dEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHN3aW1sYW5lU2VydmljZTogU3dpbWxhbmVTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzRGF0YSA9IHRoaXMuc3dpbWxhbmVEYXRhKCk7XG4gICAgICAvLyBJZiBlZGl0aW5nIGFuIGV4aXN0aW5nIHN3aW1sYW5lLCBwb3B1bGF0ZSB0aGUgZm9ybVxuICAgICAgaWYgKHNEYXRhKSB7XG4gICAgICAgIC8vIHRoaXMud29ya2Zsb3dOYW1lID0gc0RhdGEubmFtZSB8fCAnJztcbiAgICAgICAgLy8gU2V0IHNlbGVjdGVkIHRhZ3NcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSBzRGF0YS50YWdzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1N3aW1sYW5lIGRpYWxvZyBpbml0aWFsaXplZCB3aXRoIGRhdGE6JywgdGhpcy5zd2ltbGFuZURhdGEpO1xuXG4gICAgLy8gUmVzZXQgZm9ybSBmaWVsZHMgd2hlbiBkaWFsb2cgb3BlbnNcbiAgICAvLyB0aGlzLnNlbGVjdGVkVGFnTmFtZXMgPSBbXTtcbiAgICB0aGlzLndvcmtmbG93TmFtZSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJztcblxuICAgIC8vIExvYWQgdGFncyBmcm9tIHRoZSBkYXRhIHNlcnZpY2VcbiAgICB0aGlzLmxvYWRUYWdzKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0YWdzIGZyb20gdGhlIGRhdGEgc2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkVGFncygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldFRhZ3MoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRhZ3MgPSBkYXRhLlJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50YWdzLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFRhZ05hbWVzLmxlbmd0aCA9PT0gdGhpcy50YWdzLmxlbmd0aFxuICAgICk7XG4gIH1cblxuICBzZXQgYWxsU2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcyA9IHRoaXMudGFncy5tYXAoKHRhZykgPT4gdGFnLk5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFnTmFtZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyZWRUYWdzKCk6IFRhZ1tdIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhZ3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFncy5maWx0ZXIoKHRhZykgPT5cbiAgICAgIHRhZy5OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gIH1cblxuICBpc1RhZ1NlbGVjdGVkKHRhZ05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFnTmFtZXMuaW5jbHVkZXModGFnTmFtZSk7XG4gIH1cblxuICB0b2dnbGVUYWdTZWxlY3Rpb24odGFnTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkVGFnTmFtZXMuaW5kZXhPZih0YWdOYW1lKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhZ05hbWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcy5wdXNoKHRhZ05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGlhbG9nQ2xvc2UoZXZlbnREYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnRGlhbG9nIGNsb3NlZCwgcmVjZWl2ZWQgZGF0YTonLCBldmVudERhdGEpO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJztcbiAgICB0aGlzLndvcmtmbG93TmFtZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcyA9IFtdO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uRGlhbG9nT3BlbihldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgb3BlbmVkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gIH1cblxuICBhcHBseVNlbGVjdGlvbigpIHtcbiAgICAvLyBWYWxpZGF0ZSBuYW1lXG4gICAgaWYgKCF0aGlzLndvcmtmbG93TmFtZSB8fCB0aGlzLndvcmtmbG93TmFtZS50cmltKCkgPT09ICcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTd2ltbGFuZSBuYW1lIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkVGFncyA9IHRoaXMudGFncy5maWx0ZXIoKHRhZykgPT5cbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcy5pbmNsdWRlcyh0YWcuTmFtZSlcbiAgICApO1xuXG4gICAgY29uc29sZS5sb2coJ1N1Ym1pdHRpbmcgc3dpbWxhbmUgZGF0YTonLCB7XG4gICAgICBuYW1lOiB0aGlzLndvcmtmbG93TmFtZSxcbiAgICAgIHRhZ3M6IHNlbGVjdGVkVGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuY3JlYXRlZC5lbWl0KHtcbiAgICAgIHRhZ3M6IHRoaXMuc2VsZWN0ZWRUYWdzLFxuICAgICAgbmFtZTogdGhpcy53b3JrZmxvd05hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBSZXNldCBmb3JtIGZpZWxkcyB3aGVuIGRpYWxvZyBvcGVuc1xuICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcyA9IFtdO1xuICAgIHRoaXMud29ya2Zsb3dOYW1lID0gJyc7XG4gICAgdGhpcy5zZWFyY2hRdWVyeSA9ICcnO1xuICB9XG59XG4iLCI8dmVyYmVuLWRpYWxvZ3VlXG4gIFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxuICBbZGlzbWlzc091dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiXG4gIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgW21vZGVdPVwiJ2RyYXdlcidcIlxuICBbZGlzYWJsZUZvb3Rlcl09XCJmYWxzZVwiXG4gIFtpc1Zpc2libGVdPVwidmlzaWJsZVwiXG4gIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCJcbiAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbiAgKG9wZW5Nb2RhbCk9XCJvbkRpYWxvZ09wZW4oJGV2ZW50KVwiXG4gIChjbG9zZU1vZGFsKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiXG4+XG48L3ZlcmJlbi1kaWFsb2d1ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyB0ZXh0LXhzIGJvcmRlci1iLTQgYm9yZGVyLVsjRkZFNjgxXVwiXG4gID5cbiAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImJsb2NrIHctMi41IGgtMi41IGJvcmRlci10IGJvcmRlci1sIGJvcmRlci1bIzNFM0UzRV0vNzAgdHJhbnNmb3JtIC1yb3RhdGUtNDVcIlxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgIDxoMiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj5TZWxlY3QgVGFnczwvaDI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgdGV4dC1bIzNFM0UzRV0vNzBcIlxuICAgICAgICA+e3sgdGhpcy5zZWxlY3RlZFRhZ3MubGVuZ3RoIH19L3t7IHRhZ3MubGVuZ3RoIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZm9udC1tZWRpdW0gY3Vyc29yLXBvaW50ZXIgdGV4dC1bIzNFM0UzRV0vNzBcIlxuICAgICAgKGNsaWNrKT1cImFwcGx5U2VsZWN0aW9uKClcIlxuICAgICAgPkNyZWF0ZTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi00IHNwYWNlLXktNFwiPlxuICAgICAgPCEtLSA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIE5hbWVcIlxuICAgICAgICBjbGFzcz1cInctZnVsbCBweC00IHB5LTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVsjRTdDMTBCXSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIndvcmtmbG93TmFtZVwiXG4gICAgICAvPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIFRhZ3NcIlxuICAgICAgICBjbGFzcz1cInctZnVsbCBweC00IHB5LTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVsjRTdDMTBCXSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFF1ZXJ5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm1yLTNcIiBbKG5nTW9kZWwpXT1cImFsbFNlbGVjdGVkXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc21cIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhZyBvZiBmaWx0ZXJlZFRhZ3NcIiBjbGFzcz1cInB5LTNcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cIm1yLTNcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNUYWdTZWxlY3RlZCh0YWcuTmFtZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVUYWdTZWxlY3Rpb24odGFnLk5hbWUpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbVwiPnt7IHRhZy5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhZy5Jc09wdGlvbmFsXCIgY2xhc3M9XCJtbC0yIHRleHQteHMgdGV4dC1yZWQtNTAwXCJcbiAgICAgICAgICAgID4oUmVxdWlyZWQpPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICBzZWxlY3RLZXk9XCJDb2RlXCJcbiAgICAgICAgbGFiZWw9XCJUYWdzXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICBbb3B0aW9uc109XCJ0YWdzXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgaWQ9XCJ0YWdzXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRhZ3NcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICA+XG4gICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgcC00IGJvcmRlci10IGJvcmRlci1ncmF5LTIwMFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwicHgtNCBweS0yIG1yLTIgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkIHRleHQtc20gZm9udC1tZWRpdW1cIlxuICAgICAgKGNsaWNrKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJweC00IHB5LTIgYmcteWVsbG93LTMwMCB0ZXh0LWJsYWNrIHJvdW5kZWQgdGV4dC1zbSBmb250LW1lZGl1bVwiXG4gICAgICAoY2xpY2spPVwiYXBwbHlTZWxlY3Rpb24oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRUYWdzLmxlbmd0aCA8IDFcIlxuICAgID5cbiAgICAgIFNhdmVcbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwicHgtNCBweS0yIG1yLTIgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkIHRleHQtc20gZm9udC1tZWRpdW1cIlxuICAgID5cbiAgICAgIERlbGV0ZVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvd29ya2Zsb3ctZGVzaWduZXIvc3dpbWxhbmUtZGlhbG9nL3N3aW1sYW5lLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3N3aW1sYW5lLWRpYWxvZy9zd2ltbGFuZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFXdkIsTUFBTSxPQUFPLHVCQUF1QjtJQWlCeEI7SUFDQTtJQUNBO0lBbEJELE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBdUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO0lBRXRFLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUUxQiwwQ0FBMEM7SUFDMUMsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLFlBQVksR0FBVSxFQUFFLENBQUM7SUFFekIsWUFBWTtJQUNaLElBQUksR0FBVSxFQUFFLENBQUM7SUFFakIsWUFDVSxFQUFlLEVBQ2YsV0FBZ0MsRUFDaEMsZUFBZ0M7UUFGaEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUNoQyxv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biAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFdvcmtmbG93RGF0YVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3dpbWxhbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3dpbWxhbmUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3dpbWxhbmUtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aW1sYW5lLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zd2ltbGFuZS1kaWFsb2cuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFN3aW1sYW5lRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBzd2ltbGFuZURhdGEgPSBpbnB1dDx7IG5hbWU6IHN0cmluZzsgdGFnczogVGFnW10gfSB8IG51bGw+KG51bGwpO1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWdzOiBUYWdbXTsgbmFtZTogc3RyaW5nIH0+KCk7XG5cbiAgc2VhcmNoUXVlcnk6IHN0cmluZyA9ICcnO1xuICB3b3JrZmxvd05hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8vIFRyYWNrIHNlbGVjdGVkIHRhZ3MgaW4gYSBzZXBhcmF0ZSBhcnJheVxuICBzZWxlY3RlZFRhZ05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZFRhZ3M6IFRhZ1tdID0gW107XG5cbiAgLy8gVGFncyBsaXN0XG4gIHRhZ3M6IFRhZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogV29ya2Zsb3dEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHN3aW1sYW5lU2VydmljZTogU3dpbWxhbmVTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzRGF0YSA9IHRoaXMuc3dpbWxhbmVEYXRhKCk7XG4gICAgICAvLyBJZiBlZGl0aW5nIGFuIGV4aXN0aW5nIHN3aW1sYW5lLCBwb3B1bGF0ZSB0aGUgZm9ybVxuICAgICAgaWYgKHNEYXRhKSB7XG4gICAgICAgIC8vIHRoaXMud29ya2Zsb3dOYW1lID0gc0RhdGEubmFtZSB8fCAnJztcbiAgICAgICAgLy8gU2V0IHNlbGVjdGVkIHRhZ3NcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSBzRGF0YS50YWdzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1N3aW1sYW5lIGRpYWxvZyBpbml0aWFsaXplZCB3aXRoIGRhdGE6JywgdGhpcy5zd2ltbGFuZURhdGEpO1xuXG4gICAgLy8gUmVzZXQgZm9ybSBmaWVsZHMgd2hlbiBkaWFsb2cgb3BlbnNcbiAgICAvLyB0aGlzLnNlbGVjdGVkVGFnTmFtZXMgPSBbXTtcbiAgICB0aGlzLndvcmtmbG93TmFtZSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJztcblxuICAgIC8vIExvYWQgdGFncyBmcm9tIHRoZSBkYXRhIHNlcnZpY2VcbiAgICB0aGlzLmxvYWRUYWdzKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0YWdzIGZyb20gdGhlIGRhdGEgc2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkVGFncygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldFRhZ3MoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRhZ3MgPSBkYXRhLlJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50YWdzLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFRhZ05hbWVzLmxlbmd0aCA9PT0gdGhpcy50YWdzLmxlbmd0aFxuICAgICk7XG4gIH1cblxuICBzZXQgYWxsU2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcyA9IHRoaXMudGFncy5tYXAoKHRhZykgPT4gdGFnLk5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFnTmFtZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyZWRUYWdzKCk6IFRhZ1tdIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhZ3M7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFncy5maWx0ZXIoKHRhZykgPT5cbiAgICAgIHRhZy5OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gIH1cblxuICBpc1RhZ1NlbGVjdGVkKHRhZ05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFnTmFtZXMuaW5jbHVkZXModGFnTmFtZSk7XG4gIH1cblxuICB0b2dnbGVUYWdTZWxlY3Rpb24odGFnTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkVGFnTmFtZXMuaW5kZXhPZih0YWdOYW1lKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhZ05hbWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcy5wdXNoKHRhZ05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGlhbG9nQ2xvc2UoZXZlbnREYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnRGlhbG9nIGNsb3NlZCwgcmVjZWl2ZWQgZGF0YTonLCBldmVudERhdGEpO1xuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJztcbiAgICB0aGlzLndvcmtmbG93TmFtZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWdOYW1lcyA9IFtdO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uRGlhbG9nT3BlbihldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgb3BlbmVkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gIH1cblxuICBhcHBseVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3RlZFRhZ3MgPSB0aGlzLnRhZ3MuZmlsdGVyKCh0YWcpID0+XG4gICAgICB0aGlzLnNlbGVjdGVkVGFnTmFtZXMuaW5jbHVkZXModGFnLk5hbWUpXG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKCdTdWJtaXR0aW5nIHN3aW1sYW5lIGRhdGE6Jywge1xuICAgICAgbmFtZTogdGhpcy53b3JrZmxvd05hbWUsXG4gICAgICB0YWdzOiBzZWxlY3RlZFRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNyZWF0ZWQuZW1pdCh7XG4gICAgICB0YWdzOiB0aGlzLnNlbGVjdGVkVGFncyxcbiAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dOYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gUmVzZXQgZm9ybSBmaWVsZHMgd2hlbiBkaWFsb2cgb3BlbnNcbiAgICB0aGlzLnNlbGVjdGVkVGFnTmFtZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkVGFncyA9IFtdO1xuICAgIHRoaXMud29ya2Zsb3dOYW1lID0gJyc7XG4gICAgdGhpcy5zZWFyY2hRdWVyeSA9ICcnO1xuICB9XG59XG4iLCI8dmVyYmVuLWRpYWxvZ3VlXG4gIFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxuICBbZGlzbWlzc091dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiXG4gIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgW21vZGVdPVwiJ2RyYXdlcidcIlxuICBbZGlzYWJsZUZvb3Rlcl09XCJmYWxzZVwiXG4gIFtpc1Zpc2libGVdPVwidmlzaWJsZVwiXG4gIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCJcbiAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbiAgKG9wZW5Nb2RhbCk9XCJvbkRpYWxvZ09wZW4oJGV2ZW50KVwiXG4gIChjbG9zZU1vZGFsKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiXG4+XG48L3ZlcmJlbi1kaWFsb2d1ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyB0ZXh0LXhzIGJvcmRlci1iLTQgYm9yZGVyLVsjRkZFNjgxXVwiXG4gID5cbiAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImJsb2NrIHctMi41IGgtMi41IGJvcmRlci10IGJvcmRlci1sIGJvcmRlci1bIzNFM0UzRV0vNzAgdHJhbnNmb3JtIC1yb3RhdGUtNDVcIlxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgIDxoMiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj5TZWxlY3QgVGFnczwvaDI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgdGV4dC1bIzNFM0UzRV0vNzBcIlxuICAgICAgICA+e3sgdGhpcy5zZWxlY3RlZFRhZ3MubGVuZ3RoIH19L3t7IHRhZ3MubGVuZ3RoIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZm9udC1tZWRpdW0gY3Vyc29yLXBvaW50ZXIgdGV4dC1bIzNFM0UzRV0vNzBcIlxuICAgICAgKGNsaWNrKT1cImFwcGx5U2VsZWN0aW9uKClcIlxuICAgICAgPkNyZWF0ZTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi00IHNwYWNlLXktNFwiPlxuICAgICAgPCEtLSA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIE5hbWVcIlxuICAgICAgICBjbGFzcz1cInctZnVsbCBweC00IHB5LTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVsjRTdDMTBCXSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIndvcmtmbG93TmFtZVwiXG4gICAgICAvPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIFRhZ3NcIlxuICAgICAgICBjbGFzcz1cInctZnVsbCBweC00IHB5LTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVsjRTdDMTBCXSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFF1ZXJ5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm1yLTNcIiBbKG5nTW9kZWwpXT1cImFsbFNlbGVjdGVkXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc21cIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhZyBvZiBmaWx0ZXJlZFRhZ3NcIiBjbGFzcz1cInB5LTNcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cIm1yLTNcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNUYWdTZWxlY3RlZCh0YWcuTmFtZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVUYWdTZWxlY3Rpb24odGFnLk5hbWUpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbVwiPnt7IHRhZy5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhZy5Jc09wdGlvbmFsXCIgY2xhc3M9XCJtbC0yIHRleHQteHMgdGV4dC1yZWQtNTAwXCJcbiAgICAgICAgICAgID4oUmVxdWlyZWQpPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICBzZWxlY3RLZXk9XCJDb2RlXCJcbiAgICAgICAgbGFiZWw9XCJUYWdzXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICBbb3B0aW9uc109XCJ0YWdzXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgaWQ9XCJ0YWdzXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRhZ3NcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICA+XG4gICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gdy1mdWxsIGl0ZW1zLWNlbnRlciBwLTQgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwXCJcbiAgPlxuICAgIDwhLS0gPGJ1dHRvblxuICAgICAgY2xhc3M9XCJweC00IHB5LTIgbXItMiBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQgdGV4dC1zbSBmb250LW1lZGl1bVwiXG4gICAgICAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj4gLS0+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIlxuICAgICAgdGV4dD1cIkNhbmNlbFwiXG4gICAgICBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgdGV4dD1cIlNhdmVcIlxuICAgICAgYmdDb2xvcj1cIiNGRkU2ODFcIlxuICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIHdpZHRoPVwiMTE0cHhcIlxuICAgICAgaGVpZ2h0PVwiMzlweFwiXG4gICAgICBbZGlzYWJsZV09XCJzZWxlY3RlZFRhZ3MubGVuZ3RoIDwgMVwiXG4gICAgICAoY2xpY2spPVwiYXBwbHlTZWxlY3Rpb24oKVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8IS0tIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgd2lkdGg9XCIxMTRweFwiXG4gICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgIHRleHQ9XCJEZWxldGVcIlxuICAgICAgYmdDb2xvcj1cIiM5OTk5OTlcIlxuICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj4gLS0+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|