verben-workflow-ui 0.5.77 → 0.5.78
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/README.md +13 -0
- package/esm2022/src/lib/components/actors/actors.component.mjs +5 -5
- package/esm2022/src/lib/components/actors/actors.facade.mjs +3 -3
- package/esm2022/src/lib/components/actors/actors.form.component.mjs +5 -5
- package/esm2022/src/lib/components/actors/actors.module.mjs +4 -4
- package/esm2022/src/lib/components/actors/actors.service.mjs +3 -3
- package/esm2022/src/lib/components/actors/actors.state.mjs +3 -3
- package/esm2022/src/lib/components/designer/components/label-editor.component.mjs +6 -6
- package/esm2022/src/lib/components/designer/components/node-selector.component.mjs +4 -4
- package/esm2022/src/lib/components/designer/components/swimlane-label.component.mjs +3 -3
- package/esm2022/src/lib/components/designer/components/swimlane-popup.component.mjs +3 -3
- package/esm2022/src/lib/components/designer/components/wf-canvas.component.mjs +6 -6
- package/esm2022/src/lib/components/designer/components/wf-designer.component.mjs +3 -3
- package/esm2022/src/lib/components/designer/components/wf-toolbar.component.mjs +6 -6
- package/esm2022/src/lib/components/designer/services/canvas-state.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/connection-segment-interaction.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/connection.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/keyboard-handler.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/label-management.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/node-finder.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/node-interaction.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/node-precondition.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/node-selection.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/orthogonal-router.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/position-update.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/rendering.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/swimlane-management.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/swimlane-stats.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/viewport.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/wf-facade.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/wf-mapper.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/wf-persistence.service.mjs +3 -3
- package/esm2022/src/lib/components/designer/services/wf-state.service.mjs +3 -3
- package/esm2022/src/lib/components/expiration/expiration.component.mjs +3 -3
- package/esm2022/src/lib/components/expiration/expiration.module.mjs +4 -4
- package/esm2022/src/lib/components/file-render/file-render.component.mjs +5 -5
- package/esm2022/src/lib/components/file-render/file-render.module.mjs +4 -4
- package/esm2022/src/lib/components/file-upload/file-upload.component.mjs +5 -5
- package/esm2022/src/lib/components/file-upload/file-upload.module.mjs +4 -4
- package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +5 -5
- package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +3 -3
- package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +5 -5
- package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +4 -4
- package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +3 -3
- package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +3 -3
- package/esm2022/src/lib/components/form-control/form-control.component.mjs +5 -5
- package/esm2022/src/lib/components/form-control/form-control.module.mjs +4 -4
- package/esm2022/src/lib/components/form-group/base-table-style.mjs +6 -6
- package/esm2022/src/lib/components/form-group/form-fields/form-fields.component.mjs +5 -5
- package/esm2022/src/lib/components/form-group/form-fields/form-fields.module.mjs +4 -4
- package/esm2022/src/lib/components/form-group/form-fields/form-fields.service.mjs +3 -3
- package/esm2022/src/lib/components/form-group/form-group.component.mjs +5 -5
- package/esm2022/src/lib/components/form-group/form-group.module.mjs +4 -4
- package/esm2022/src/lib/components/form-group/form-group.service.mjs +3 -3
- package/esm2022/src/lib/components/form-response/form-response.component.mjs +5 -5
- package/esm2022/src/lib/components/form-response/form-response.module.mjs +4 -4
- package/esm2022/src/lib/components/form-response/form-response.service.mjs +3 -3
- package/esm2022/src/lib/components/form-timer/form-timer.component.mjs +5 -5
- package/esm2022/src/lib/components/form-timer/form-timer.module.mjs +4 -4
- package/esm2022/src/lib/components/forms/base-table-style.mjs +6 -6
- package/esm2022/src/lib/components/forms/forms.component.mjs +5 -5
- package/esm2022/src/lib/components/forms/forms.module.mjs +4 -4
- package/esm2022/src/lib/components/forms/forms.service.mjs +3 -3
- package/esm2022/src/lib/components/journal/journal.component.mjs +3 -3
- package/esm2022/src/lib/components/journal/journal.module.mjs +4 -4
- package/esm2022/src/lib/components/my-queue/my-queue.component.mjs +5 -5
- package/esm2022/src/lib/components/my-queue/my-queue.facade.mjs +3 -3
- package/esm2022/src/lib/components/my-queue/my-queue.module.mjs +4 -4
- package/esm2022/src/lib/components/my-queue/my-queue.service.mjs +3 -3
- package/esm2022/src/lib/components/my-queue/my-queue.state.mjs +3 -3
- package/esm2022/src/lib/components/my-queue/tasks.form.component.mjs +5 -5
- package/esm2022/src/lib/components/operation-popup/operation-popup.component.mjs +5 -5
- package/esm2022/src/lib/components/operation-popup/operation-popup.facade.mjs +3 -3
- package/esm2022/src/lib/components/operation-popup/operation-popup.service.mjs +3 -3
- package/esm2022/src/lib/components/operation-popup/operation-popup.state.mjs +3 -3
- package/esm2022/src/lib/components/stage-details/stage-details.component.mjs +5 -5
- package/esm2022/src/lib/components/stage-details/stage-details.module.mjs +4 -4
- package/esm2022/src/lib/components/task-form/task-form.component.mjs +5 -5
- package/esm2022/src/lib/components/task-form/task-form.module.mjs +4 -4
- package/esm2022/src/lib/components/task-history/task-history.component.mjs +5 -5
- package/esm2022/src/lib/components/task-history/task-history.module.mjs +4 -4
- package/esm2022/src/lib/components/task-history/task-history.service.mjs +3 -3
- package/esm2022/src/lib/components/task-notification/base-table-style.mjs +6 -6
- package/esm2022/src/lib/components/task-notification/task-notification.component.mjs +5 -5
- package/esm2022/src/lib/components/task-notification/task-notification.module.mjs +4 -4
- package/esm2022/src/lib/components/task-notification/task-notification.service.mjs +3 -3
- package/esm2022/src/lib/components/tasks/tasks.component.mjs +5 -5
- package/esm2022/src/lib/components/tasks/tasks.facade.mjs +3 -3
- package/esm2022/src/lib/components/tasks/tasks.form.component.mjs +5 -5
- package/esm2022/src/lib/components/tasks/tasks.module.mjs +4 -4
- package/esm2022/src/lib/components/tasks/tasks.service.mjs +3 -3
- package/esm2022/src/lib/components/tasks/tasks.state.mjs +3 -3
- package/esm2022/src/lib/components/wf/wf.component.mjs +3 -3
- package/esm2022/src/lib/components/wf/wf.module.mjs +4 -4
- package/esm2022/src/lib/components/wf/wf.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow/table-style.mjs +6 -6
- package/esm2022/src/lib/components/workflow/workflow.component.mjs +8 -8
- package/esm2022/src/lib/components/workflow/workflow.module.mjs +4 -4
- package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/actor-tags-dialog/actor-tags-dialog.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/conditions-popup/conditions-popup.component.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/decision-popup/decision-popup.component.mjs +4 -4
- package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/designer-toolbar/designer-toolbar.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/escalation-dialog/escalation-dialog.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/services/connection.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/services/node-management.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/services/popup.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/services/swimlane.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/services/transformer.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/stage-dialog/stage-dialog.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/stage-node/stage-node.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs +5 -5
- package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +3 -3
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +4 -4
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.module.mjs +4 -4
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +3 -3
- package/esm2022/src/lib/components/workflows/workflow-form/workflow-form.component.mjs +5 -5
- package/esm2022/src/lib/components/workflows/workflows.component.mjs +5 -5
- package/esm2022/src/lib/components/workflows/workflows.facade.mjs +3 -3
- package/esm2022/src/lib/components/workflows/workflows.module.mjs +4 -4
- package/esm2022/src/lib/components/workflows/workflows.service.mjs +3 -3
- package/esm2022/src/lib/components/workflows/workflows.state.mjs +3 -3
- package/esm2022/src/lib/pipes/async-label.pipe.mjs +3 -3
- package/esm2022/src/lib/services/environment.service.mjs +3 -3
- package/esm2022/src/lib/services/http-web-request.service.mjs +3 -3
- package/esm2022/src/lib/services/label.service.mjs +3 -3
- package/esm2022/src/lib/services/util.service.mjs +3 -3
- package/esm2022/src/lib/shared/base-table-style.mjs +6 -6
- package/esm2022/src/lib/shared/components/base-data-view.component.mjs +3 -3
- package/esm2022/src/lib/shared/shared.module.mjs +4 -4
- package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs +21 -21
- package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs +85 -85
- package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs +7 -7
- package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +21 -21
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs +27 -27
- package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs +11 -11
- package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs +16 -16
- package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-journal.mjs +7 -7
- package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs +21 -21
- package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs +13 -13
- package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs +8 -8
- package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs +11 -11
- package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs +16 -16
- package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs +21 -21
- package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-wf.mjs +10 -10
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +67 -67
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs +16 -16
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs +21 -21
- package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-pipes.mjs +3 -3
- package/fesm2022/verben-workflow-ui-src-lib-services.mjs +12 -12
- package/fesm2022/verben-workflow-ui-src-lib-shared.mjs +12 -12
- package/fesm2022/verben-workflow-ui-src-lib-shared.mjs.map +1 -1
- package/package.json +36 -36
- package/src/lib/components/workflow/workflow.component.d.ts +1 -1
- package/styles/styles.css +19 -1436
|
@@ -131,12 +131,12 @@ export class TasksFormComponent {
|
|
|
131
131
|
else
|
|
132
132
|
return this.form.invalid;
|
|
133
133
|
}
|
|
134
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
135
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TasksFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.TaskFacade }], target: i0.ɵɵFactoryTarget.Component });
|
|
135
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TasksFormComponent, selector: "tasks-form", inputs: { currentData: "currentData" }, outputs: { onTaskFormSave: "onTaskFormSave", onSave: "onSave" }, ngImport: i0, template: "@if (taskFormView && taskForm) {\n<div\n *ngIf=\"taskForm.Entities[active]\"\n class=\"flex flex-wrap bg-[#9A9FBF80] rounded-xl px-3 py-2 w-full relative gap-6\"\n>\n <app-form-timer></app-form-timer>\n <div *ngFor=\"let group of taskForm.Entities; let index = index\">\n <p\n (click)=\"active = index\"\n [ngClass]=\"{\n 'bg-[var(--vbn-color-surface)] text-primary rounded-lg shadow-lg': active === index\n }\"\n class=\"px-6 py-2 cursor-pointer\"\n >\n {{ group.Name }}group\n </p>\n </div>\n</div>\n\n<div *ngIf=\"taskForm.Entities[active]; else emptyState\" class=\"mt-4\">\n <form-control\n [dataType]=\"dataType\"\n [formProperties]=\"taskForm.Entities[active].Properties\"\n ></form-control>\n\n <div class=\"flex gap-3 justify-end\">\n <verbena-button\n (click)=\"areRequiredPropertiesFilled()\"\n text=\"CHECK\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n\n <verbena-button\n (click)=\"taskFormView = false\"\n text=\"Close task form\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n\n <verbena-button\n class=\"verben-primary-button\"\n (click)=\"sendTaskForm()\"\n [disable]=\"!areRequiredPropertiesFilled()\"\n text=\"Save\"\n ></verbena-button>\n </div>\n</div>\n\n<!-- Empty state template -->\n<ng-template #emptyState>\n <p class=\"mt-4 p-4 text-gray-600 text-center\">\n No entries available for the selected form group.\n </p>\n</ng-template>\n\n} @else {\n<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n formControlName=\"Name\"\n placeHolder=\"Enter Name\"\n />\n <verbena-input\n name=\"Description\"\n label=\"Description\"\n formControlName=\"Description\"\n placeHolder=\"Enter Description\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"workflow\">Workflow</label>\n\n <verben-drop-down\n label=\"Workflow\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"workflows\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n id=\"workflow\"\n formControlName=\"WorkflowCode\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"status\">Status</label>\n\n <verben-drop-down\n label=\"Status\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [showClear]=\"true\"\n placeholder=\"Null\"\n [(options)]=\"statuses\"\n id=\"status\"\n formControlName=\"Status\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"var(--vbn-color-text-muted)\"\n textColor=\"var(--vbn-color-on-primary)\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n <verbena-button\n [disable]=\"!taskForm || loadingTaskForm\"\n (click)=\"taskFormView = true\"\n [text]=\"loadingTaskForm ? 'Checking for form' : 'Fill task form'\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"var(--vbn-color-primary)\"\n textColor=\"var(--vbn-color-on-primary)\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n}\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "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.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "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", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i5.FormControlComponent, selector: "form-control", inputs: ["dataType", "value", "boolInputType", "formProperties", "disabled"] }, { kind: "component", type: i6.FormTimerComponent, selector: "app-form-timer", inputs: ["expiryDate"] }] });
|
|
136
136
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TasksFormComponent, decorators: [{
|
|
138
138
|
type: Component,
|
|
139
|
-
args: [{ selector: 'tasks-form', template: "@if (taskFormView && taskForm) {\n<div\n *ngIf=\"taskForm.Entities[active]\"\n class=\"flex flex-wrap bg-[#9A9FBF80] rounded-xl px-3 py-2 w-full relative gap-6\"\n>\n <app-form-timer></app-form-timer>\n <div *ngFor=\"let group of taskForm.Entities; let index = index\">\n <p\n (click)=\"active = index\"\n [ngClass]=\"{\n 'bg-[
|
|
139
|
+
args: [{ selector: 'tasks-form', template: "@if (taskFormView && taskForm) {\n<div\n *ngIf=\"taskForm.Entities[active]\"\n class=\"flex flex-wrap bg-[#9A9FBF80] rounded-xl px-3 py-2 w-full relative gap-6\"\n>\n <app-form-timer></app-form-timer>\n <div *ngFor=\"let group of taskForm.Entities; let index = index\">\n <p\n (click)=\"active = index\"\n [ngClass]=\"{\n 'bg-[var(--vbn-color-surface)] text-primary rounded-lg shadow-lg': active === index\n }\"\n class=\"px-6 py-2 cursor-pointer\"\n >\n {{ group.Name }}group\n </p>\n </div>\n</div>\n\n<div *ngIf=\"taskForm.Entities[active]; else emptyState\" class=\"mt-4\">\n <form-control\n [dataType]=\"dataType\"\n [formProperties]=\"taskForm.Entities[active].Properties\"\n ></form-control>\n\n <div class=\"flex gap-3 justify-end\">\n <verbena-button\n (click)=\"areRequiredPropertiesFilled()\"\n text=\"CHECK\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n\n <verbena-button\n (click)=\"taskFormView = false\"\n text=\"Close task form\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n\n <verbena-button\n class=\"verben-primary-button\"\n (click)=\"sendTaskForm()\"\n [disable]=\"!areRequiredPropertiesFilled()\"\n text=\"Save\"\n ></verbena-button>\n </div>\n</div>\n\n<!-- Empty state template -->\n<ng-template #emptyState>\n <p class=\"mt-4 p-4 text-gray-600 text-center\">\n No entries available for the selected form group.\n </p>\n</ng-template>\n\n} @else {\n<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\"\n>\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n formControlName=\"Name\"\n placeHolder=\"Enter Name\"\n />\n <verbena-input\n name=\"Description\"\n label=\"Description\"\n formControlName=\"Description\"\n placeHolder=\"Enter Description\"\n />\n\n <div class=\"space-y-1\">\n <label for=\"workflow\">Workflow</label>\n\n <verben-drop-down\n label=\"Workflow\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"workflows\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n id=\"workflow\"\n formControlName=\"WorkflowCode\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"status\">Status</label>\n\n <verben-drop-down\n label=\"Status\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [showClear]=\"true\"\n placeholder=\"Null\"\n [(options)]=\"statuses\"\n id=\"status\"\n formControlName=\"Status\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Delete\"\n bgColor=\"var(--vbn-color-text-muted)\"\n textColor=\"var(--vbn-color-on-primary)\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n <verbena-button\n [disable]=\"!taskForm || loadingTaskForm\"\n (click)=\"taskFormView = true\"\n [text]=\"loadingTaskForm ? 'Checking for form' : 'Fill task form'\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"var(--vbn-color-primary)\"\n textColor=\"var(--vbn-color-on-primary)\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n}\n" }]
|
|
140
140
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.TaskFacade }], propDecorators: { currentData: [{
|
|
141
141
|
type: Input
|
|
142
142
|
}], onTaskFormSave: [{
|
|
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
144
144
|
}], onSave: [{
|
|
145
145
|
type: Output
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL215LXF1ZXVlL3Rhc2tzLmZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9teS1xdWV1ZS90YXNrcy5mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQU83RCxNQUFNLE9BQU8sa0JBQWtCO0lBcUNUO0lBQXlCO0lBcEM3QyxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3pD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LENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUV6RSxxREFBcUQ7UUFDckQsK0NBQStDO1FBQy9DLDJCQUEyQjtRQUMzQixhQUFhO1FBQ2IsOEJBQThCO1FBQzlCLHVDQUF1QztRQUN2QyxtQ0FBbUM7UUFDbkMsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDMUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUM1RCxDQUFDO1FBRUYsSUFDRSxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUN6RCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDOztZQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQzt3R0F4SVUsa0JBQWtCOzRGQUFsQixrQkFBa0IsMkpDZC9CLDRwSEFnSkE7OzRGRGxJYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsWUFBWTt5R0FLbEIsV0FBVztzQkFEZCxLQUFLO2dCQXlCSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkRGF0YSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgV29ya2Zsb3cgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBUYXNrRmFjYWRlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy90YXNrcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rhc2tzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFza3MuZm9ybS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tzRm9ybUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGdldCBjdXJyZW50RGF0YSgpOiBDYXJkRGF0YSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50RGF0YTtcbiAgfVxuICBzZXQgY3VycmVudERhdGEodmFsdWU6IENhcmREYXRhIHwgbnVsbCkge1xuICAgIHRoaXMuX2N1cnJlbnREYXRhID0gdmFsdWU7XG4gICAgY29uc29sZS5sb2codmFsdWU/LmRhdGEpO1xuICAgIGlmICh2YWx1ZT8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBOYW1lOiB2YWx1ZS5kYXRhLk5hbWUgfHwgJycsXG4gICAgICAgIERlc2NyaXB0aW9uOiB2YWx1ZS5kYXRhLkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBXb3JrZmxvd0NvZGU6IHZhbHVlLmRhdGEuV29ya2Zsb3dDb2RlIHx8ICcnLFxuICAgICAgICBTdGF0dXM6IHZhbHVlLmRhdGEuU3RhdHVzIHx8ICcnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRhOiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gIHRhc2tGb3JtOiBGb3JtIHwgbnVsbCA9IG51bGw7XG4gIGFjdGl2ZTogbnVtYmVyID0gMDtcbiAgZGF0YVR5cGU6IERhdGFUeXBlID0gRGF0YVR5cGUuVGV4dDtcblxuICBAT3V0cHV0KCkgb25UYXNrRm9ybVNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcnRpYWw8VGFzaz4+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICBzdGF0dXNlcyA9IE9iamVjdC52YWx1ZXMoU3RhdHVzKTtcbiAgd29ya2Zsb3dzOiBXb3JrZmxvd1tdID0gW107XG4gIGxvYWRpbmdUYXNrRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICB0YXNrRm9ybVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB0YXNrRmFjYWRlOiBUYXNrRmFjYWRlKSB7XG4gICAgdGhpcy50YXNrRmFjYWRlLmdldFdvcmtmbG93JCgpLnN1YnNjcmliZSgod29ya2Zsb3dzKSA9PiB7XG4gICAgICB0aGlzLndvcmtmbG93cyA9IHdvcmtmbG93cztcbiAgICB9KTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIE5hbWU6IFsnJywgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfV0sXG4gICAgICBEZXNjcmlwdGlvbjogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFdvcmtmbG93Q29kZTogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFN0YXR1czogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFRhc2tGb3JtczogW10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy50YXNrRmFjYWRlLmxvYWRXb3JrZmxvd3MoKS50aGVuKCgpID0+IHt9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgfVxuXG4gICAgdGhpcy5mb3JtLmdldCgnV29ya2Zsb3dDb2RlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dzLmZpbmQoXG4gICAgICAgICAgKHsgQ29kZSB9KSA9PiBDb2RlID09PSB2YWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VsZWN0ZWRXb3JrZmxvdz8uRm9ybSkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2tGb3JtID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhc2tGYWNhZGVcbiAgICAgICAgICAgIC5sb2FkRm9ybXNXaXRoUGFyYW0oc2VsZWN0ZWRXb3JrZmxvdy5Gb3JtKVxuICAgICAgICAgICAgLnRoZW4oKGZvcm0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhc2tGb3JtID0gZm9ybTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGFza0Zvcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGFza0Zvcm0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgLy8gRW1pdCBzYXZlIGV2ZW50IHdpdGggZm9ybSB2YWx1ZVxuICAgICAgY29uc29sZS5sb2coJ0Zvcm0gc2F2ZWQ6JywgdGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMudGFza0Zvcm0gfHxcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ1Rhc2tGb3JtcycpPy52YWx1ZSBhcyBGb3JtW10pPy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgZGVsZXRlIGV2ZW50XG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZSByZXF1ZXN0ZWQnKTtcbiAgfVxuXG4gIHNlbmRUYXNrRm9ybSgpIHtcbiAgICBpZiAodGhpcy50YXNrRm9ybSkge1xuICAgICAgdGhpcy5mb3JtXG4gICAgICAgIC5nZXQoJ1Rhc2tGb3JtcycpXG4gICAgICAgID8uc2V0VmFsdWUoW3sgLi4udGhpcy50YXNrRm9ybSwgU3dpbWxhbmU6ICcnIH1dKTtcbiAgICAgIHRoaXMudGFza0Zvcm1WaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVGFza0Zvcm1TYXZlLmVtaXQodGhpcy50YXNrRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgYXJlUmVxdWlyZWRQcm9wZXJ0aWVzRmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnRhc2tGb3JtPy5FbnRpdGllc1t0aGlzLmFjdGl2ZV0uUHJvcGVydGllcyB8fCBbXTtcblxuICAgIC8vIENoZWNrIGlmIGFsbCByZXF1aXJlZCBwcm9wZXJ0aWVzIGhhdmUgdmFsaWQgdmFsdWVzXG4gICAgLy8gcmV0dXJuIHByb3BlcnRpZXMuZXZlcnkoKHByb3BlcnR5OiBhbnkpID0+IHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKHByb3BlcnR5KTtcbiAgICAvLyAgIHJldHVybiAoXG4gICAgLy8gICAgICFwcm9wZXJ0eS5pc1JlcXVpcmVkIHx8XG4gICAgLy8gICAgIChwcm9wZXJ0eS5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgLy8gICAgICAgcHJvcGVydHkuVmFsdWUgIT09IG51bGwgJiZcbiAgICAvLyAgICAgICBwcm9wZXJ0eS5WYWx1ZSAhPT0gJycpXG4gICAgLy8gICApO1xuICAgIC8vIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZVByb2Nlc3NpbmcoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dzLmZpbmQoXG4gICAgICAoeyBDb2RlIH0pID0+IENvZGUgPT09IHRoaXMuZm9ybS5nZXQoJ1dvcmtmbG93Q29kZScpPy52YWx1ZVxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZFdvcmtmbG93Py5Gb3JtICYmXG4gICAgICAodGhpcy5jdXJyZW50RGF0YT8uZGF0YSBhcyBUYXNrKT8uVGFza0Zvcm1zPy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSByZXR1cm4gdGhpcy5mb3JtLmludmFsaWQ7XG4gIH1cbn1cbiIsIkBpZiAodGFza0Zvcm1WaWV3ICYmIHRhc2tGb3JtKSB7XG48ZGl2XG4gICpuZ0lmPVwidGFza0Zvcm0uRW50aXRpZXNbYWN0aXZlXVwiXG4gIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYmctWyM5QTlGQkY4MF0gcm91bmRlZC14bCBweC0zIHB5LTIgdy1mdWxsIHJlbGF0aXZlIGdhcC02XCJcbj5cbiAgPGFwcC1mb3JtLXRpbWVyPjwvYXBwLWZvcm0tdGltZXI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHRhc2tGb3JtLkVudGl0aWVzOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxwXG4gICAgICAoY2xpY2spPVwiYWN0aXZlID0gaW5kZXhcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYmctWyNmZmZdIHRleHQtcHJpbWFyeSByb3VuZGVkLWxnIHNoYWRvdy1sZyc6IGFjdGl2ZSA9PT0gaW5kZXhcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJweC02IHB5LTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgID5cbiAgICAgIHt7IGdyb3VwLk5hbWUgfX1ncm91cFxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInRhc2tGb3JtLkVudGl0aWVzW2FjdGl2ZV07IGVsc2UgZW1wdHlTdGF0ZVwiIGNsYXNzPVwibXQtNFwiPlxuICA8Zm9ybS1jb250cm9sXG4gICAgW2RhdGFUeXBlXT1cImRhdGFUeXBlXCJcbiAgICBbZm9ybVByb3BlcnRpZXNdPVwidGFza0Zvcm0uRW50aXRpZXNbYWN0aXZlXS5Qcm9wZXJ0aWVzXCJcbiAgPjwvZm9ybS1jb250cm9sPlxuXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zIGp1c3RpZnktZW5kXCI+XG4gICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICAoY2xpY2spPVwiYXJlUmVxdWlyZWRQcm9wZXJ0aWVzRmlsbGVkKClcIlxuICAgICAgdGV4dD1cIkNIRUNLXCJcbiAgICAgIHN0eWxlVHlwZT1cInlsdy1vdXRsaW5lXCJcbiAgICAgIGNsYXNzPVwibWwtYXV0b1wiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIChjbGljayk9XCJ0YXNrRm9ybVZpZXcgPSBmYWxzZVwiXG4gICAgICB0ZXh0PVwiQ2xvc2UgdGFzayBmb3JtXCJcbiAgICAgIHN0eWxlVHlwZT1cInlsdy1vdXRsaW5lXCJcbiAgICAgIGNsYXNzPVwibWwtYXV0b1wiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIGNsYXNzPVwidmVyYmVuLXByaW1hcnktYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzZW5kVGFza0Zvcm0oKVwiXG4gICAgICBbZGlzYWJsZV09XCIhYXJlUmVxdWlyZWRQcm9wZXJ0aWVzRmlsbGVkKClcIlxuICAgICAgdGV4dD1cIlNhdmVcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEVtcHR5IHN0YXRlIHRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNlbXB0eVN0YXRlPlxuICA8cCBjbGFzcz1cIm10LTQgcC00IHRleHQtZ3JheS02MDAgdGV4dC1jZW50ZXJcIj5cbiAgICBObyBlbnRyaWVzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIGZvcm0gZ3JvdXAuXG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbn0gQGVsc2Uge1xuPGZvcm1cbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB4LTMgcGItMyByb3VuZGVkLXhsIGgtZnVsbCB3LWZ1bGwgcmVsYXRpdmUgc3BhY2UteS00XCJcbiAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCJcbj5cbiAgPHZlcmJlbmEtaW5wdXRcbiAgICBuYW1lPVwiTmFtZVwiXG4gICAgbGFiZWw9XCJOYW1lXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCJcbiAgICBwbGFjZUhvbGRlcj1cIkVudGVyIE5hbWVcIlxuICAvPlxuICA8dmVyYmVuYS1pbnB1dFxuICAgIG5hbWU9XCJEZXNjcmlwdGlvblwiXG4gICAgbGFiZWw9XCJEZXNjcmlwdGlvblwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiRGVzY3JpcHRpb25cIlxuICAgIHBsYWNlSG9sZGVyPVwiRW50ZXIgRGVzY3JpcHRpb25cIlxuICAvPlxuXG4gIDxkaXYgY2xhc3M9XCJzcGFjZS15LTFcIj5cbiAgICA8bGFiZWwgZm9yPVwid29ya2Zsb3dcIj5Xb3JrZmxvdzwvbGFiZWw+XG5cbiAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgbGFiZWw9XCJXb3JrZmxvd1wiXG4gICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgW29wdGlvbnNdPVwid29ya2Zsb3dzXCJcbiAgICAgIG9wdGlvbkxhYmVsPVwiTmFtZVwiXG4gICAgICBvcHRpb25WYWx1ZT1cIkNvZGVcIlxuICAgICAgaWQ9XCJ3b3JrZmxvd1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJXb3JrZmxvd0NvZGVcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgID5cbiAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzcGFjZS15LTFcIj5cbiAgICA8bGFiZWwgZm9yPVwic3RhdHVzXCI+U3RhdHVzPC9sYWJlbD5cblxuICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICBsYWJlbD1cIlN0YXR1c1wiXG4gICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiTnVsbFwiXG4gICAgICBbKG9wdGlvbnMpXT1cInN0YXR1c2VzXCJcbiAgICAgIGlkPVwic3RhdHVzXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIlN0YXR1c1wiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgPlxuICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBidXR0b25zIC0tPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQgbXktMlwiPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgd2lkdGg9XCIxMTRweFwiXG4gICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgIHRleHQ9XCJEZWxldGVcIlxuICAgICAgYmdDb2xvcj1cIiM5OTk5OTlcIlxuICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgIFtkaXNhYmxlXT1cImRpc2FibGVQcm9jZXNzaW5nKClcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgW2Rpc2FibGVdPVwiIXRhc2tGb3JtIHx8IGxvYWRpbmdUYXNrRm9ybVwiXG4gICAgICAoY2xpY2spPVwidGFza0Zvcm1WaWV3ID0gdHJ1ZVwiXG4gICAgICBbdGV4dF09XCJsb2FkaW5nVGFza0Zvcm0gPyAnQ2hlY2tpbmcgZm9yIGZvcm0nIDogJ0ZpbGwgdGFzayBmb3JtJ1wiXG4gICAgICBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiXG4gICAgICBjbGFzcz1cIm1sLWF1dG9cIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICB0ZXh0PVwiU2F2ZVwiXG4gICAgICBiZ0NvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICB0ZXh0Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgcGQ9XCIxMHB4IDIwcHhcIlxuICAgICAgd2lkdGg9XCIxMTRweFwiXG4gICAgICBoZWlnaHQ9XCIzOXB4XCJcbiAgICAgIFtkaXNhYmxlXT1cImRpc2FibGVQcm9jZXNzaW5nKClcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbn1cbiJdfQ==
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL215LXF1ZXVlL3Rhc2tzLmZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9teS1xdWV1ZS90YXNrcy5mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQU83RCxNQUFNLE9BQU8sa0JBQWtCO0lBcUNUO0lBQXlCO0lBcEM3QyxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3pD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LENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUV6RSxxREFBcUQ7UUFDckQsK0NBQStDO1FBQy9DLDJCQUEyQjtRQUMzQixhQUFhO1FBQ2IsOEJBQThCO1FBQzlCLHVDQUF1QztRQUN2QyxtQ0FBbUM7UUFDbkMsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDMUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUM1RCxDQUFDO1FBRUYsSUFDRSxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUN6RCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDOztZQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQzt3R0F4SVUsa0JBQWtCOzRGQUFsQixrQkFBa0IsMkpDZC9CLDZ2SEFnSkE7OzRGRGxJYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsWUFBWTt5R0FLbEIsV0FBVztzQkFEZCxLQUFLO2dCQXlCSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkRGF0YSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgV29ya2Zsb3cgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBUYXNrRmFjYWRlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy90YXNrcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rhc2tzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFza3MuZm9ybS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tzRm9ybUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGdldCBjdXJyZW50RGF0YSgpOiBDYXJkRGF0YSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50RGF0YTtcbiAgfVxuICBzZXQgY3VycmVudERhdGEodmFsdWU6IENhcmREYXRhIHwgbnVsbCkge1xuICAgIHRoaXMuX2N1cnJlbnREYXRhID0gdmFsdWU7XG4gICAgY29uc29sZS5sb2codmFsdWU/LmRhdGEpO1xuICAgIGlmICh2YWx1ZT8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBOYW1lOiB2YWx1ZS5kYXRhLk5hbWUgfHwgJycsXG4gICAgICAgIERlc2NyaXB0aW9uOiB2YWx1ZS5kYXRhLkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBXb3JrZmxvd0NvZGU6IHZhbHVlLmRhdGEuV29ya2Zsb3dDb2RlIHx8ICcnLFxuICAgICAgICBTdGF0dXM6IHZhbHVlLmRhdGEuU3RhdHVzIHx8ICcnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRhOiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gIHRhc2tGb3JtOiBGb3JtIHwgbnVsbCA9IG51bGw7XG4gIGFjdGl2ZTogbnVtYmVyID0gMDtcbiAgZGF0YVR5cGU6IERhdGFUeXBlID0gRGF0YVR5cGUuVGV4dDtcblxuICBAT3V0cHV0KCkgb25UYXNrRm9ybVNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcnRpYWw8VGFzaz4+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICBzdGF0dXNlcyA9IE9iamVjdC52YWx1ZXMoU3RhdHVzKTtcbiAgd29ya2Zsb3dzOiBXb3JrZmxvd1tdID0gW107XG4gIGxvYWRpbmdUYXNrRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICB0YXNrRm9ybVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB0YXNrRmFjYWRlOiBUYXNrRmFjYWRlKSB7XG4gICAgdGhpcy50YXNrRmFjYWRlLmdldFdvcmtmbG93JCgpLnN1YnNjcmliZSgod29ya2Zsb3dzKSA9PiB7XG4gICAgICB0aGlzLndvcmtmbG93cyA9IHdvcmtmbG93cztcbiAgICB9KTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIE5hbWU6IFsnJywgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfV0sXG4gICAgICBEZXNjcmlwdGlvbjogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFdvcmtmbG93Q29kZTogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFN0YXR1czogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIFRhc2tGb3JtczogW10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy50YXNrRmFjYWRlLmxvYWRXb3JrZmxvd3MoKS50aGVuKCgpID0+IHt9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgfVxuXG4gICAgdGhpcy5mb3JtLmdldCgnV29ya2Zsb3dDb2RlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dzLmZpbmQoXG4gICAgICAgICAgKHsgQ29kZSB9KSA9PiBDb2RlID09PSB2YWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VsZWN0ZWRXb3JrZmxvdz8uRm9ybSkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2tGb3JtID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhc2tGYWNhZGVcbiAgICAgICAgICAgIC5sb2FkRm9ybXNXaXRoUGFyYW0oc2VsZWN0ZWRXb3JrZmxvdy5Gb3JtKVxuICAgICAgICAgICAgLnRoZW4oKGZvcm0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhc2tGb3JtID0gZm9ybTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGFza0Zvcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGFza0Zvcm0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgLy8gRW1pdCBzYXZlIGV2ZW50IHdpdGggZm9ybSB2YWx1ZVxuICAgICAgY29uc29sZS5sb2coJ0Zvcm0gc2F2ZWQ6JywgdGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMudGFza0Zvcm0gfHxcbiAgICAgICAgKHRoaXMuZm9ybS5nZXQoJ1Rhc2tGb3JtcycpPy52YWx1ZSBhcyBGb3JtW10pPy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgZGVsZXRlIGV2ZW50XG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZSByZXF1ZXN0ZWQnKTtcbiAgfVxuXG4gIHNlbmRUYXNrRm9ybSgpIHtcbiAgICBpZiAodGhpcy50YXNrRm9ybSkge1xuICAgICAgdGhpcy5mb3JtXG4gICAgICAgIC5nZXQoJ1Rhc2tGb3JtcycpXG4gICAgICAgID8uc2V0VmFsdWUoW3sgLi4udGhpcy50YXNrRm9ybSwgU3dpbWxhbmU6ICcnIH1dKTtcbiAgICAgIHRoaXMudGFza0Zvcm1WaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVGFza0Zvcm1TYXZlLmVtaXQodGhpcy50YXNrRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgYXJlUmVxdWlyZWRQcm9wZXJ0aWVzRmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnRhc2tGb3JtPy5FbnRpdGllc1t0aGlzLmFjdGl2ZV0uUHJvcGVydGllcyB8fCBbXTtcblxuICAgIC8vIENoZWNrIGlmIGFsbCByZXF1aXJlZCBwcm9wZXJ0aWVzIGhhdmUgdmFsaWQgdmFsdWVzXG4gICAgLy8gcmV0dXJuIHByb3BlcnRpZXMuZXZlcnkoKHByb3BlcnR5OiBhbnkpID0+IHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKHByb3BlcnR5KTtcbiAgICAvLyAgIHJldHVybiAoXG4gICAgLy8gICAgICFwcm9wZXJ0eS5pc1JlcXVpcmVkIHx8XG4gICAgLy8gICAgIChwcm9wZXJ0eS5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgLy8gICAgICAgcHJvcGVydHkuVmFsdWUgIT09IG51bGwgJiZcbiAgICAvLyAgICAgICBwcm9wZXJ0eS5WYWx1ZSAhPT0gJycpXG4gICAgLy8gICApO1xuICAgIC8vIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZVByb2Nlc3NpbmcoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dzLmZpbmQoXG4gICAgICAoeyBDb2RlIH0pID0+IENvZGUgPT09IHRoaXMuZm9ybS5nZXQoJ1dvcmtmbG93Q29kZScpPy52YWx1ZVxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZFdvcmtmbG93Py5Gb3JtICYmXG4gICAgICAodGhpcy5jdXJyZW50RGF0YT8uZGF0YSBhcyBUYXNrKT8uVGFza0Zvcm1zPy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSByZXR1cm4gdGhpcy5mb3JtLmludmFsaWQ7XG4gIH1cbn1cbiIsIkBpZiAodGFza0Zvcm1WaWV3ICYmIHRhc2tGb3JtKSB7XG48ZGl2XG4gICpuZ0lmPVwidGFza0Zvcm0uRW50aXRpZXNbYWN0aXZlXVwiXG4gIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYmctWyM5QTlGQkY4MF0gcm91bmRlZC14bCBweC0zIHB5LTIgdy1mdWxsIHJlbGF0aXZlIGdhcC02XCJcbj5cbiAgPGFwcC1mb3JtLXRpbWVyPjwvYXBwLWZvcm0tdGltZXI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHRhc2tGb3JtLkVudGl0aWVzOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxwXG4gICAgICAoY2xpY2spPVwiYWN0aXZlID0gaW5kZXhcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYmctW3ZhcigtLXZibi1jb2xvci1zdXJmYWNlKV0gdGV4dC1wcmltYXJ5IHJvdW5kZWQtbGcgc2hhZG93LWxnJzogYWN0aXZlID09PSBpbmRleFxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cInB4LTYgcHktMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgPlxuICAgICAge3sgZ3JvdXAuTmFtZSB9fWdyb3VwXG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwidGFza0Zvcm0uRW50aXRpZXNbYWN0aXZlXTsgZWxzZSBlbXB0eVN0YXRlXCIgY2xhc3M9XCJtdC00XCI+XG4gIDxmb3JtLWNvbnRyb2xcbiAgICBbZGF0YVR5cGVdPVwiZGF0YVR5cGVcIlxuICAgIFtmb3JtUHJvcGVydGllc109XCJ0YXNrRm9ybS5FbnRpdGllc1thY3RpdmVdLlByb3BlcnRpZXNcIlxuICA+PC9mb3JtLWNvbnRyb2w+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMganVzdGlmeS1lbmRcIj5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIChjbGljayk9XCJhcmVSZXF1aXJlZFByb3BlcnRpZXNGaWxsZWQoKVwiXG4gICAgICB0ZXh0PVwiQ0hFQ0tcIlxuICAgICAgc3R5bGVUeXBlPVwieWx3LW91dGxpbmVcIlxuICAgICAgY2xhc3M9XCJtbC1hdXRvXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cblxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cInRhc2tGb3JtVmlldyA9IGZhbHNlXCJcbiAgICAgIHRleHQ9XCJDbG9zZSB0YXNrIGZvcm1cIlxuICAgICAgc3R5bGVUeXBlPVwieWx3LW91dGxpbmVcIlxuICAgICAgY2xhc3M9XCJtbC1hdXRvXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cblxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgY2xhc3M9XCJ2ZXJiZW4tcHJpbWFyeS1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNlbmRUYXNrRm9ybSgpXCJcbiAgICAgIFtkaXNhYmxlXT1cIiFhcmVSZXF1aXJlZFByb3BlcnRpZXNGaWxsZWQoKVwiXG4gICAgICB0ZXh0PVwiU2F2ZVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRW1wdHkgc3RhdGUgdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2VtcHR5U3RhdGU+XG4gIDxwIGNsYXNzPVwibXQtNCBwLTQgdGV4dC1ncmF5LTYwMCB0ZXh0LWNlbnRlclwiPlxuICAgIE5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciB0aGUgc2VsZWN0ZWQgZm9ybSBncm91cC5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxufSBAZWxzZSB7XG48Zm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICBjbGFzcz1cImZsZXggZmxleC1jb2wgcHgtMyBwYi0zIHJvdW5kZWQteGwgaC1mdWxsIHctZnVsbCByZWxhdGl2ZSBzcGFjZS15LTRcIlxuICAobmdTdWJtaXQpPVwiaGFuZGxlU3VibWl0KClcIlxuPlxuICA8dmVyYmVuYS1pbnB1dFxuICAgIG5hbWU9XCJOYW1lXCJcbiAgICBsYWJlbD1cIk5hbWVcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIlxuICAgIHBsYWNlSG9sZGVyPVwiRW50ZXIgTmFtZVwiXG4gIC8+XG4gIDx2ZXJiZW5hLWlucHV0XG4gICAgbmFtZT1cIkRlc2NyaXB0aW9uXCJcbiAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiXG4gICAgcGxhY2VIb2xkZXI9XCJFbnRlciBEZXNjcmlwdGlvblwiXG4gIC8+XG5cbiAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgIDxsYWJlbCBmb3I9XCJ3b3JrZmxvd1wiPldvcmtmbG93PC9sYWJlbD5cblxuICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICBsYWJlbD1cIldvcmtmbG93XCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICBbb3B0aW9uc109XCJ3b3JrZmxvd3NcIlxuICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgIG9wdGlvblZhbHVlPVwiQ29kZVwiXG4gICAgICBpZD1cIndvcmtmbG93XCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIldvcmtmbG93Q29kZVwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgPlxuICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgIDxsYWJlbCBmb3I9XCJzdGF0dXNcIj5TdGF0dXM8L2xhYmVsPlxuXG4gICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgIGxhYmVsPVwiU3RhdHVzXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXG4gICAgICBbc2hvd0NsZWFyXT1cInRydWVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJOdWxsXCJcbiAgICAgIFsob3B0aW9ucyldPVwic3RhdHVzZXNcIlxuICAgICAgaWQ9XCJzdGF0dXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiU3RhdHVzXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICA+XG4gICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICA8L2Rpdj5cblxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtNCBteS0yXCI+XG4gICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICB3aWR0aD1cIjExNHB4XCJcbiAgICAgIGhlaWdodD1cIjM5cHhcIlxuICAgICAgdGV4dD1cIkRlbGV0ZVwiXG4gICAgICBiZ0NvbG9yPVwidmFyKC0tdmJuLWNvbG9yLXRleHQtbXV0ZWQpXCJcbiAgICAgIHRleHRDb2xvcj1cInZhcigtLXZibi1jb2xvci1vbi1wcmltYXJ5KVwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgIFtkaXNhYmxlXT1cImRpc2FibGVQcm9jZXNzaW5nKClcIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgW2Rpc2FibGVdPVwiIXRhc2tGb3JtIHx8IGxvYWRpbmdUYXNrRm9ybVwiXG4gICAgICAoY2xpY2spPVwidGFza0Zvcm1WaWV3ID0gdHJ1ZVwiXG4gICAgICBbdGV4dF09XCJsb2FkaW5nVGFza0Zvcm0gPyAnQ2hlY2tpbmcgZm9yIGZvcm0nIDogJ0ZpbGwgdGFzayBmb3JtJ1wiXG4gICAgICBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiXG4gICAgICBjbGFzcz1cIm1sLWF1dG9cIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICB0ZXh0PVwiU2F2ZVwiXG4gICAgICBiZ0NvbG9yPVwidmFyKC0tdmJuLWNvbG9yLXByaW1hcnkpXCJcbiAgICAgIHRleHRDb2xvcj1cInZhcigtLXZibi1jb2xvci1vbi1wcmltYXJ5KVwiXG4gICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIHdpZHRoPVwiMTE0cHhcIlxuICAgICAgaGVpZ2h0PVwiMzlweFwiXG4gICAgICBbZGlzYWJsZV09XCJkaXNhYmxlUHJvY2Vzc2luZygpXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG59XG4iXX0=
|
|
@@ -335,12 +335,12 @@ export class OperationPopupComponent {
|
|
|
335
335
|
};
|
|
336
336
|
return labels[this.activeActionType || 'passon'] || 'Submit';
|
|
337
337
|
}
|
|
338
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
339
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OperationPopupComponent, isStandalone: true, selector: "lib-operation-popup", inputs: { user: "user", task: "task", allowedActions: "allowedActions" }, outputs: { actionComplete: "actionComplete" }, providers: [OperationPopupService, OperationPopupState, OperationPopupFacade], ngImport: i0, template: "<verben-pop-Up [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" [(dropdownOpen)]=\"isPopupOpen\">\n\n <!-- Trigger (projected content from parent) -->\n <div dropdown-trigger>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <!-- Popup content -->\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <!-- Step 1: Action Selection -->\n <div *ngIf=\"currentStep === 'action-selection'\">\n <div *ngFor=\"let action of filteredActions\" (click)=\"onActionSelect(action.value)\"\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ action.label }}\n </div>\n </div>\n\n <!-- Step 2: Action Form -->\n <div *ngIf=\"currentStep === 'action-form'\" style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n (click)=\"currentStep = 'action-selection'; activeActionType = null\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">{{ submitButtonLabel }}</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- Action Dropdown (for PassOn, PassBack, SkipTo) -->\n <verben-drop-down *ngIf=\"showActionDropdown\" label=\"Action\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Action\"\n [options]=\"nextActions\" id=\"actions\" optionLabel=\"Name\" [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Stage Dropdown (for PickTask, ReleaseTask) -->\n <verben-drop-down *ngIf=\"showStageDropdown\" label=\"Stages\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"task?.FullStages || []\" id=\"stages\" optionLabel=\"Name\" optionValue=\"Code\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Actor Dropdown -->\n <verben-drop-down *ngIf=\"showActorDropdown\" label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\"\n [options]=\"nextActors\" id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\"\n [(ngModel)]=\"recipientCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Comment Textarea -->\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\" [cols]=\"8\">\n </textarea>\n\n <!-- Submit Button -->\n <verbena-button [disable]=\"!canSubmit\" [text]=\"submitButtonLabel\" (click)=\"handleActionSubmit()\"\n class=\"text-xs w-full\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\" fontSize=\"14px\"\n pd=\"10px 20px\" width=\"100%\" height=\"32px\">\n {{ submitButtonLabel }}\n </verbena-button>\n </div>\n </div>\n </div>\n</verben-pop-Up>\n\n<!-- Form Dialog for PassOn when form is required -->\n<verben-dialogue [showCloseIcon]=\"true\" [dismissOutsideClick]=\"true\" [closeOnEscape]=\"true\" [mode]=\"'drawer'\"\n [padding]=\"'0px'\" [drawerWidth]=\"'400px'\" [disableFooter]=\"false\" [isVisible]=\"isFormModalVisible\"\n [modalData]=\"stageForm\" [headerTemplate]=\"headerTemplate\" [bodyTemplate]=\"bodyTemplate\" [showCloseIcon]=\"false\" [style]=\"{ 'z-index': '99' }\">\n</verben-dialogue>\n<ng-template #headerTemplate>\n <div class=\"bg-[#FFE681] px-6 py-4 flex justify-between items-center\">\n <h1>Form</h1>\n <verben-svg class=\"cursor-pointer\" [icon]=\"'close-circle'\" (click)=\"isFormModalVisible = false\" [width]=\"15\"\n [height]=\"15\" [stroke]=\"'#fff'\"></verben-svg>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngIf=\"stageForm?.Entities?.[active]; else emptyState\" class=\"mt-4\">\n <form-control [dataType]=\"dataType\"\n [formProperties]=\"stageForm?.Entities?.[active]?.Properties ?? []\"></form-control>\n\n <div class=\"flex gap-3 justify-end\">\n <verbena-button class=\"verben-primary-button\" (click)=\"submitForm()\"\n [disable]=\"!areRequiredPropertiesFilled()\" text=\"Save\"></verbena-button>\n </div>\n </div>\n\n <!-- Empty state template -->\n <ng-template #emptyState>\n <p class=\"mt-4 p-4 text-gray-600 text-center\">\n No entries available for the selected form group.\n </p>\n </ng-template>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: VerbenPopUpModule }, { kind: "component", type: i4.VerbenPopUpComponent, selector: "verben-pop-Up", inputs: ["dropdownOpen", "dropdownWidth", "color", "customStyles", "popUpClass", "border", "borderRadius", "enableMouseLeave", "cdkPosition"], outputs: ["dropdownOpenChange", "close"] }, { kind: "ngmodule", type: DropDownModule }, { 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: "ngmodule", type: VerbenaButtonModule }, { 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: "ngmodule", type: VerbenDialogueModule }, { 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: "ngmodule", type: FormControlerModule }, { kind: "component", type: i5.FormControlComponent, selector: "form-control", inputs: ["dataType", "value", "boolInputType", "formProperties", "disabled"] }, { kind: "ngmodule", type: FormTimerModule }, { kind: "ngmodule", type: SvgModule }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
|
|
338
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OperationPopupComponent, deps: [{ token: i1.OperationPopupFacade }], target: i0.ɵɵFactoryTarget.Component });
|
|
339
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OperationPopupComponent, isStandalone: true, selector: "lib-operation-popup", inputs: { user: "user", task: "task", allowedActions: "allowedActions" }, outputs: { actionComplete: "actionComplete" }, providers: [OperationPopupService, OperationPopupState, OperationPopupFacade], ngImport: i0, template: "<verben-pop-Up [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" [(dropdownOpen)]=\"isPopupOpen\">\n\n <!-- Trigger (projected content from parent) -->\n <div dropdown-trigger>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <!-- Popup content -->\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <!-- Step 1: Action Selection -->\n <div *ngIf=\"currentStep === 'action-selection'\">\n <div *ngFor=\"let action of filteredActions\" (click)=\"onActionSelect(action.value)\"\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ action.label }}\n </div>\n </div>\n\n <!-- Step 2: Action Form -->\n <div *ngIf=\"currentStep === 'action-form'\" style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n (click)=\"currentStep = 'action-selection'; activeActionType = null\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">{{ submitButtonLabel }}</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- Action Dropdown (for PassOn, PassBack, SkipTo) -->\n <verben-drop-down *ngIf=\"showActionDropdown\" label=\"Action\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Action\"\n [options]=\"nextActions\" id=\"actions\" optionLabel=\"Name\" [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Stage Dropdown (for PickTask, ReleaseTask) -->\n <verben-drop-down *ngIf=\"showStageDropdown\" label=\"Stages\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"task?.FullStages || []\" id=\"stages\" optionLabel=\"Name\" optionValue=\"Code\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Actor Dropdown -->\n <verben-drop-down *ngIf=\"showActorDropdown\" label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\"\n [options]=\"nextActors\" id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\"\n [(ngModel)]=\"recipientCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Comment Textarea -->\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\" [cols]=\"8\">\n </textarea>\n\n <!-- Submit Button -->\n <verbena-button [disable]=\"!canSubmit\" [text]=\"submitButtonLabel\" (click)=\"handleActionSubmit()\"\n class=\"text-xs w-full\" bgColor=\"var(--vbn-color-primary)\" textColor=\"var(--vbn-color-on-primary)\" borderRadius=\"10px\" fontSize=\"14px\"\n pd=\"10px 20px\" width=\"100%\" height=\"32px\">\n {{ submitButtonLabel }}\n </verbena-button>\n </div>\n </div>\n </div>\n</verben-pop-Up>\n\n<!-- Form Dialog for PassOn when form is required -->\n<verben-dialogue [showCloseIcon]=\"true\" [dismissOutsideClick]=\"true\" [closeOnEscape]=\"true\" [mode]=\"'drawer'\"\n [padding]=\"'0px'\" [drawerWidth]=\"'400px'\" [disableFooter]=\"false\" [isVisible]=\"isFormModalVisible\"\n [modalData]=\"stageForm\" [headerTemplate]=\"headerTemplate\" [bodyTemplate]=\"bodyTemplate\" [showCloseIcon]=\"false\" [style]=\"{ 'z-index': '99' }\">\n</verben-dialogue>\n<ng-template #headerTemplate>\n <div class=\"bg-[var(--vbn-color-primary)] px-6 py-4 flex justify-between items-center\">\n <h1>Form</h1>\n <verben-svg class=\"cursor-pointer\" [icon]=\"'close-circle'\" (click)=\"isFormModalVisible = false\" [width]=\"15\"\n [height]=\"15\" [stroke]=\"'var(--vbn-color-surface)'\"></verben-svg>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngIf=\"stageForm?.Entities?.[active]; else emptyState\" class=\"mt-4\">\n <form-control [dataType]=\"dataType\"\n [formProperties]=\"stageForm?.Entities?.[active]?.Properties ?? []\"></form-control>\n\n <div class=\"flex gap-3 justify-end\">\n <verbena-button class=\"verben-primary-button\" (click)=\"submitForm()\"\n [disable]=\"!areRequiredPropertiesFilled()\" text=\"Save\"></verbena-button>\n </div>\n </div>\n\n <!-- Empty state template -->\n <ng-template #emptyState>\n <p class=\"mt-4 p-4 text-gray-600 text-center\">\n No entries available for the selected form group.\n </p>\n </ng-template>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: VerbenPopUpModule }, { kind: "component", type: i4.VerbenPopUpComponent, selector: "verben-pop-Up", inputs: ["dropdownOpen", "dropdownWidth", "color", "customStyles", "popUpClass", "border", "borderRadius", "enableMouseLeave", "cdkPosition"], outputs: ["dropdownOpenChange", "close"] }, { kind: "ngmodule", type: DropDownModule }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "ngmodule", type: VerbenaButtonModule }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "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: "ngmodule", type: VerbenDialogueModule }, { 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: "ngmodule", type: FormControlerModule }, { kind: "component", type: i5.FormControlComponent, selector: "form-control", inputs: ["dataType", "value", "boolInputType", "formProperties", "disabled"] }, { kind: "ngmodule", type: FormTimerModule }, { kind: "ngmodule", type: SvgModule }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
|
|
340
340
|
}
|
|
341
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OperationPopupComponent, decorators: [{
|
|
342
342
|
type: Component,
|
|
343
|
-
args: [{ selector: 'lib-operation-popup', standalone: true, imports: [CommonModule, FormsModule, VerbenPopUpModule, DropDownModule, VerbenaButtonModule, VerbenDialogueModule, FormControlerModule, FormTimerModule, SvgModule], providers: [OperationPopupService, OperationPopupState, OperationPopupFacade], template: "<verben-pop-Up [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" [(dropdownOpen)]=\"isPopupOpen\">\n\n <!-- Trigger (projected content from parent) -->\n <div dropdown-trigger>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <!-- Popup content -->\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <!-- Step 1: Action Selection -->\n <div *ngIf=\"currentStep === 'action-selection'\">\n <div *ngFor=\"let action of filteredActions\" (click)=\"onActionSelect(action.value)\"\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ action.label }}\n </div>\n </div>\n\n <!-- Step 2: Action Form -->\n <div *ngIf=\"currentStep === 'action-form'\" style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n (click)=\"currentStep = 'action-selection'; activeActionType = null\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">{{ submitButtonLabel }}</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- Action Dropdown (for PassOn, PassBack, SkipTo) -->\n <verben-drop-down *ngIf=\"showActionDropdown\" label=\"Action\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Action\"\n [options]=\"nextActions\" id=\"actions\" optionLabel=\"Name\" [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Stage Dropdown (for PickTask, ReleaseTask) -->\n <verben-drop-down *ngIf=\"showStageDropdown\" label=\"Stages\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"task?.FullStages || []\" id=\"stages\" optionLabel=\"Name\" optionValue=\"Code\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Actor Dropdown -->\n <verben-drop-down *ngIf=\"showActorDropdown\" label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\"\n [options]=\"nextActors\" id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\"\n [(ngModel)]=\"recipientCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Comment Textarea -->\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\" [cols]=\"8\">\n </textarea>\n\n <!-- Submit Button -->\n <verbena-button [disable]=\"!canSubmit\" [text]=\"submitButtonLabel\" (click)=\"handleActionSubmit()\"\n class=\"text-xs w-full\" bgColor=\"
|
|
343
|
+
args: [{ selector: 'lib-operation-popup', standalone: true, imports: [CommonModule, FormsModule, VerbenPopUpModule, DropDownModule, VerbenaButtonModule, VerbenDialogueModule, FormControlerModule, FormTimerModule, SvgModule], providers: [OperationPopupService, OperationPopupState, OperationPopupFacade], template: "<verben-pop-Up [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" [(dropdownOpen)]=\"isPopupOpen\">\n\n <!-- Trigger (projected content from parent) -->\n <div dropdown-trigger>\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <!-- Popup content -->\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <!-- Step 1: Action Selection -->\n <div *ngIf=\"currentStep === 'action-selection'\">\n <div *ngFor=\"let action of filteredActions\" (click)=\"onActionSelect(action.value)\"\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ action.label }}\n </div>\n </div>\n\n <!-- Step 2: Action Form -->\n <div *ngIf=\"currentStep === 'action-form'\" style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n (click)=\"currentStep = 'action-selection'; activeActionType = null\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">{{ submitButtonLabel }}</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- Action Dropdown (for PassOn, PassBack, SkipTo) -->\n <verben-drop-down *ngIf=\"showActionDropdown\" label=\"Action\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Action\"\n [options]=\"nextActions\" id=\"actions\" optionLabel=\"Name\" [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Stage Dropdown (for PickTask, ReleaseTask) -->\n <verben-drop-down *ngIf=\"showStageDropdown\" label=\"Stages\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"task?.FullStages || []\" id=\"stages\" optionLabel=\"Name\" optionValue=\"Code\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Actor Dropdown -->\n <verben-drop-down *ngIf=\"showActorDropdown\" label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\"\n [options]=\"nextActors\" id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\"\n [(ngModel)]=\"recipientCode\" class=\"form-control\">\n </verben-drop-down>\n\n <!-- Comment Textarea -->\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\" [cols]=\"8\">\n </textarea>\n\n <!-- Submit Button -->\n <verbena-button [disable]=\"!canSubmit\" [text]=\"submitButtonLabel\" (click)=\"handleActionSubmit()\"\n class=\"text-xs w-full\" bgColor=\"var(--vbn-color-primary)\" textColor=\"var(--vbn-color-on-primary)\" borderRadius=\"10px\" fontSize=\"14px\"\n pd=\"10px 20px\" width=\"100%\" height=\"32px\">\n {{ submitButtonLabel }}\n </verbena-button>\n </div>\n </div>\n </div>\n</verben-pop-Up>\n\n<!-- Form Dialog for PassOn when form is required -->\n<verben-dialogue [showCloseIcon]=\"true\" [dismissOutsideClick]=\"true\" [closeOnEscape]=\"true\" [mode]=\"'drawer'\"\n [padding]=\"'0px'\" [drawerWidth]=\"'400px'\" [disableFooter]=\"false\" [isVisible]=\"isFormModalVisible\"\n [modalData]=\"stageForm\" [headerTemplate]=\"headerTemplate\" [bodyTemplate]=\"bodyTemplate\" [showCloseIcon]=\"false\" [style]=\"{ 'z-index': '99' }\">\n</verben-dialogue>\n<ng-template #headerTemplate>\n <div class=\"bg-[var(--vbn-color-primary)] px-6 py-4 flex justify-between items-center\">\n <h1>Form</h1>\n <verben-svg class=\"cursor-pointer\" [icon]=\"'close-circle'\" (click)=\"isFormModalVisible = false\" [width]=\"15\"\n [height]=\"15\" [stroke]=\"'var(--vbn-color-surface)'\"></verben-svg>\n </div>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div>\n <div *ngIf=\"stageForm?.Entities?.[active]; else emptyState\" class=\"mt-4\">\n <form-control [dataType]=\"dataType\"\n [formProperties]=\"stageForm?.Entities?.[active]?.Properties ?? []\"></form-control>\n\n <div class=\"flex gap-3 justify-end\">\n <verbena-button class=\"verben-primary-button\" (click)=\"submitForm()\"\n [disable]=\"!areRequiredPropertiesFilled()\" text=\"Save\"></verbena-button>\n </div>\n </div>\n\n <!-- Empty state template -->\n <ng-template #emptyState>\n <p class=\"mt-4 p-4 text-gray-600 text-center\">\n No entries available for the selected form group.\n </p>\n </ng-template>\n </div>\n</ng-template>\n" }]
|
|
344
344
|
}], ctorParameters: () => [{ type: i1.OperationPopupFacade }], propDecorators: { user: [{
|
|
345
345
|
type: Input
|
|
346
346
|
}], task: [{
|
|
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
350
350
|
}], actionComplete: [{
|
|
351
351
|
type: Output
|
|
352
352
|
}] } });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvb3BlcmF0aW9uLXBvcHVwL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL29wZXJhdGlvbi1wb3B1cC9vcGVyYXRpb24tcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25GLE9BQU8sRUFBUyxRQUFRLEVBQThCLE1BQU0sbUNBQW1DLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlC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QkFBdEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJvcERvd25Nb2R1bGUsIFN2Z01vZHVsZSwgVmVyYmVuYUJ1dHRvbk1vZHVsZSwgVmVyYmVuRGlhbG9ndWVNb2R1bGUsIFZlcmJlblBvcFVwTW9kdWxlIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IEZvcm1Db250cm9sZXJNb2R1bGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBGb3JtVGltZXJNb2R1bGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tdGltZXInO1xuaW1wb3J0IHsgQWN0b3IsIERhdGFUeXBlLCBGb3JtLCBUYXNrLCBXb3JrZmxvd0FjdGlvbiB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBPcGVyYXRpb25Qb3B1cEZhY2FkZSB9IGZyb20gJy4vb3BlcmF0aW9uLXBvcHVwLmZhY2FkZSc7XG5pbXBvcnQgeyBPcGVyYXRpb25Qb3B1cFNlcnZpY2UgfSBmcm9tICcuL29wZXJhdGlvbi1wb3B1cC5zZXJ2aWNlJztcbmltcG9ydCB7IE9wZXJhdGlvblBvcHVwU3RhdGUgfSBmcm9tICcuL29wZXJhdGlvbi1wb3B1cC5zdGF0ZSc7XG5cbnR5cGUgQWN0aW9uVHlwZSA9ICdwYXNzb24nIHwgJ3Bhc3NiYWNrJyB8ICdyZWFzc2lnbicgfCAnc2tpcHRvJyB8ICdwaWNrdGFzaycgfCAncmVsZWFzZXRhc2snIHwgJ2ZvbGxvd3Rhc2snIHwgJ3VuZm9sbG93dGFzayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1vcGVyYXRpb24tcG9wdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVmVyYmVuUG9wVXBNb2R1bGUsIERyb3BEb3duTW9kdWxlLCBWZXJiZW5hQnV0dG9uTW9kdWxlLCBWZXJiZW5EaWFsb2d1ZU1vZHVsZSwgRm9ybUNvbnRyb2xlck1vZHVsZSwgRm9ybVRpbWVyTW9kdWxlLCBTdmdNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtPcGVyYXRpb25Qb3B1cFNlcnZpY2UsIE9wZXJhdGlvblBvcHVwU3RhdGUsIE9wZXJhdGlvblBvcHVwRmFjYWRlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhc2s6IFRhc2sgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgYWxsb3dlZEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIEludGVybmFsIHBvcHVwIHZpc2liaWxpdHkgY29udHJvbFxuICBpc1BvcHVwT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0Zvcm1Nb2RhbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudFN0ZXA6ICdhY3Rpb24tc2VsZWN0aW9uJyB8ICdhY3Rpb24tZm9ybScgPSAnYWN0aW9uLXNlbGVjdGlvbic7XG5cbiAgLy8gQWN0aW9uIHN0YXRlXG4gIGFjdGl2ZUFjdGlvblR5cGU6IEFjdGlvblR5cGUgfCBudWxsID0gbnVsbDtcbiAgY29tbWVudDogc3RyaW5nID0gJyc7XG4gIHJlY2lwaWVudENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZEFjdGlvbjogQmVoYXZpb3JTdWJqZWN0PFdvcmtmbG93QWN0aW9uIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdvcmtmbG93QWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHNlbGVjdGVkU3RhZ2VDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgZm9ybVN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERhdGEgZnJvbSBmYWNhZGVcbiAgbmV4dEFjdGlvbnM6IFdvcmtmbG93QWN0aW9uW10gPSBbXTtcbiAgbmV4dEFjdG9yczogQWN0b3JbXSA9IFtdO1xuICBzdGFnZUZvcm06IEZvcm0gfCBudWxsID0gbnVsbDtcbiAgYWN0aXZlOiBudW1iZXIgPSAwO1xuICBkYXRhVHlwZTogRGF0YVR5cGUgPSBEYXRhVHlwZS5UZXh0O1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjYWRlOiBPcGVyYXRpb25Qb3B1cEZhY2FkZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGZhY2FkZSBvYnNlcnZhYmxlc1xuICAgIHRoaXMuZmFjYWRlLmdldE5leHRBY3Rpb25zJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdGlvbnMgPSBkYXRhO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmZhY2FkZS5nZXROZXh0QWN0b3JzJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdG9ycyA9IGRhdGE7XG4gICAgICAgIC8vIEF1dG8tc2VsZWN0IGN1cnJlbnQgdXNlciBpZiBhdmFpbGFibGVcbiAgICAgICAgaWYgKHRoaXMudXNlciAmJiBkYXRhLm1hcCgoeyBJZGVudGlmaWVyIH0pID0+IElkZW50aWZpZXIpLmluY2x1ZGVzKHRoaXMudXNlcikpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwaWVudENvZGUgPSB0aGlzLnVzZXI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5mYWNhZGUuZ2V0VGFza0Zvcm1zJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhZ2VGb3JtID0gZGF0YT8uWzBdIHx8IG51bGw7XG4gICAgICB9KTtcblxuICAgIC8vIExvYWQgYWN0b3JzIHdoZW4gYWN0aW9uIGlzIHNlbGVjdGVkXG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvblxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24gJiYgdGhpcy50YXNrKSB7XG4gICAgICAgICAgdGhpcy5mYWNhZGUubG9hZE5leHRBY3RvcnModGhpcy50YXNrLkNvZGUsIGZhbHNlLCBhY3Rpb24uVG9TdGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gR2V0IGZpbHRlcmVkIGFjdGlvbnMgYmFzZWQgb24gYWxsb3dlZEFjdGlvbnMgaW5wdXRcbiAgZ2V0IGZpbHRlcmVkQWN0aW9ucygpOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBBY3Rpb25UeXBlOyByZXF1aXJlc0Zvcm06IGJvb2xlYW4gfVtdIHtcbiAgICBjb25zdCBhbGxBY3Rpb25zID0gW1xuICAgICAgeyBsYWJlbDogJ1Bhc3MgT24nLCB2YWx1ZTogJ3Bhc3NvbicgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUGFzcyBCYWNrJywgdmFsdWU6ICdwYXNzYmFjaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUmUtQXNzaWduJywgdmFsdWU6ICdyZWFzc2lnbicgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1NraXAgVG8nLCB2YWx1ZTogJ3NraXB0bycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUGljayBUYXNrJywgdmFsdWU6ICdwaWNrdGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1JlbGVhc2UgVGFzaycsIHZhbHVlOiAncmVsZWFzZXRhc2snIGFzIEFjdGlvblR5cGUsIHJlcXVpcmVzRm9ybTogZmFsc2UgfSxcbiAgICAgIHsgbGFiZWw6ICdGb2xsb3cgVGFzaycsIHZhbHVlOiAnZm9sbG93dGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1VuZm9sbG93IFRhc2snLCB2YWx1ZTogJ3VuZm9sbG93dGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gYWxsQWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IHRoaXMuYWxsb3dlZEFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uLnZhbHVlKSk7XG4gIH1cblxuICAvLyBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBhbiBhY3Rpb24gZnJvbSB0aGUgbGlzdFxuICBhc3luYyBvbkFjdGlvblNlbGVjdChhY3Rpb25UeXBlOiBBY3Rpb25UeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnRhc2spIHJldHVybjtcblxuICAgIHRoaXMuYWN0aXZlQWN0aW9uVHlwZSA9IGFjdGlvblR5cGU7XG4gICAgdGhpcy5jb21tZW50ID0gJyc7XG4gICAgdGhpcy5yZWNpcGllbnRDb2RlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uLm5leHQobnVsbCk7XG5cbiAgICAvLyBMb2FkIG5lY2Vzc2FyeSBkYXRhIGJhc2VkIG9uIGFjdGlvbiB0eXBlXG4gICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlICdwYXNzb24nOlxuICAgICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkTmV4dEFjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkVGFza0Zvcm1zKHRoaXMudGFzay5Db2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwYXNzYmFjayc6XG4gICAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLmxvYWRQcmV2aW91c0FjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NraXB0byc6XG4gICAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLmxvYWRBbGxQcmV2aW91c0FjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlYXNzaWduJzpcbiAgICAgICAgYXdhaXQgdGhpcy5mYWNhZGUubG9hZE5leHRBY3RvcnModGhpcy50YXNrLkNvZGUsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BpY2t0YXNrJzpcbiAgICAgIGNhc2UgJ3JlbGVhc2V0YXNrJzpcbiAgICAgICAgLy8gVGhlc2UgdXNlIHRoZSB0YXNrJ3MgZnVsbCBzdGFnZXNcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmb2xsb3d0YXNrJzpcbiAgICAgIGNhc2UgJ3VuZm9sbG93dGFzayc6XG4gICAgICAgIC8vIFRoZXNlIGRvbid0IG5lZWQgYWRkaXRpb25hbCBkYXRhXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRvZ2dsZSBwb3B1cDogY2xvc2UgdGhlbiByZW9wZW4gZm9yIHN0ZXAgdHJhbnNpdGlvblxuICAgIHRoaXMuaXNQb3B1cE9wZW4gPSBmYWxzZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSAnYWN0aW9uLWZvcm0nO1xuICAgICAgdGhpcy5pc1BvcHVwT3BlbiA9IHRydWU7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgLy8gSGFuZGxlIGFjdGlvbiBzdWJtaXNzaW9uXG4gIGFzeW5jIGhhbmRsZUFjdGlvblN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudGFzaykgcmV0dXJuO1xuXG4gICAgbGV0IGFjdGlvbkNvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmVBY3Rpb25UeXBlKSB7XG4gICAgICAgIGNhc2UgJ3Bhc3Nvbic6XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gYXdhaXQgdGhpcy5oYW5kbGVQYXNzT24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFzc2JhY2snOlxuICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlUGFzc0JhY2soKTtcbiAgICAgICAgICBhY3Rpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFzc2lnbic6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZUFzc2lnbigpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NraXB0byc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTa2lwVG8oKTtcbiAgICAgICAgICBhY3Rpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaWNrdGFzayc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVQaWNrVGFzaygpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlbGVhc2V0YXNrJzpcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVJlbGVhc2VUYXNrKCk7XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZm9sbG93dGFzayc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVGb2xsb3dUYXNrKCk7XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndW5mb2xsb3d0YXNrJzpcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVVuZm9sbG93VGFzaygpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIE9ubHkgY2xvc2UgcG9wdXAgYW5kIGVtaXQgY29tcGxldGlvbiBpZiBhY3Rpb24gYWN0dWFsbHkgY29tcGxldGVkXG4gICAgICAvLyAobm90IHdhaXRpbmcgZm9yIGZvcm0gZGlhbG9nKVxuICAgICAgaWYgKGFjdGlvbkNvbXBsZXRlZCkge1xuICAgICAgICB0aGlzLmNsb3NlUG9wdXAoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUGFzc09uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnN0YWdlRm9ybSAmJiAhdGhpcy5mb3JtU3VibWl0dGVkKSB7XG4gICAgICAvLyBJZiB0aGVyZSdzIGEgZm9ybSBhbmQgaXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHlldCwgc2hvdyB0aGUgZm9ybSBtb2RhbFxuICAgICAgdGhpcy5pc1BvcHVwT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0Zvcm1Nb2RhbFZpc2libGUgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBY3Rpb24gbm90IGNvbXBsZXRlZCB5ZXQsIHdhaXRpbmcgZm9yIGZvcm1cbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZEFjdGlvbiA9IHRoaXMuc2VsZWN0ZWRBY3Rpb24uZ2V0VmFsdWUoKTtcbiAgICBpZiAoc2VsZWN0ZWRBY3Rpb24gJiYgdGhpcy50YXNrICYmIHRoaXMuY29tbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUucGFzc09uKHNlbGVjdGVkQWN0aW9uLCB0aGlzLnRhc2ssIHRoaXMuY29tbWVudCwgdGhpcy5yZWNpcGllbnRDb2RlKTtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCA9IGZhbHNlOyAvLyBSZXNldCBmb3IgbmV4dCB0aW1lXG4gICAgfVxuICAgIHJldHVybiB0cnVlOyAvLyBBY3Rpb24gY29tcGxldGVkXG4gIH1cblxuICBzdWJtaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YWdlRm9ybSAmJiB0aGlzLnRhc2spIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTdWJtaXR0aW5nIGZvcm0uLi4nLCB0aGlzLnN0YWdlRm9ybSk7XG4gICAgICB0aGlzLmZhY2FkZS5maWxsRm9ybSh0aGlzLnN0YWdlRm9ybSwgdGhpcy50YXNrLkNvZGUpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyBmaWxsRm9ybSBBUEkgcmV0dXJucyBlbXB0eSByZXNwb25zZSwgc28ganVzdCBjaGVjayB0aGF0IGl0IGRpZG4ndCBlcnJvclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdGb3JtIGZpbGxlZCBzdWNjZXNzZnVsbHksIHByb2NlZWRpbmcgd2l0aCBwYXNzT24uLi4nKTtcbiAgICAgICAgICB0aGlzLnN0YWdlRm9ybSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5pc0Zvcm1Nb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvcm1TdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdpdGggcGFzc09uIGFmdGVyIGZvcm0gaXMgZmlsbGVkXG4gICAgICAgICAgdGhpcy5oYW5kbGVQYXNzT24oKS50aGVuKChjb21wbGV0ZWQpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXNzT24gY29tcGxldGVkOicsIGNvbXBsZXRlZCk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGhhbmRsZVBhc3NPbjonLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmaWxsaW5nIGZvcm06JywgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHN1Ym1pdCBmb3JtOiBzdGFnZUZvcm0gb3IgdGFzayBpcyBtaXNzaW5nJywge1xuICAgICAgICBzdGFnZUZvcm06IHRoaXMuc3RhZ2VGb3JtLFxuICAgICAgICB0YXNrOiB0aGlzLnRhc2tcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFyZVJlcXVpcmVkUHJvcGVydGllc0ZpbGxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc3RhZ2VGb3JtKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5zdGFnZUZvcm0uRW50aXRpZXNbdGhpcy5hY3RpdmVdLlByb3BlcnRpZXMgfHwgW107XG4gICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVkIHByb3BlcnRpZXMgaGF2ZSB2YWxpZCB2YWx1ZXNcbiAgICByZXR1cm4gcHJvcGVydGllcy5ldmVyeSgocHJvcGVydHk6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgIXByb3BlcnR5LmlzUmVxdWlyZWQgfHxcbiAgICAgICAgKHByb3BlcnR5LlZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBwcm9wZXJ0eS5WYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHByb3BlcnR5LlZhbHVlICE9PSAnJylcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVBhc3NCYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlbGVjdGVkQWN0aW9uID0gdGhpcy5zZWxlY3RlZEFjdGlvbi5nZXRWYWx1ZSgpO1xuICAgIGlmIChzZWxlY3RlZEFjdGlvbiAmJiB0aGlzLnRhc2sgJiYgdGhpcy5jb21tZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5wYXNzQmFjayhzZWxlY3RlZEFjdGlvbiwgdGhpcy50YXNrLCB0aGlzLmNvbW1lbnQsIHRoaXMucmVjaXBpZW50Q29kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZUFzc2lnbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMuY29tbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUucmVBc3NpZ24odGhpcy50YXNrLCB0aGlzLmNvbW1lbnQsIHRoaXMudXNlciwgdGhpcy5yZWNpcGllbnRDb2RlIHx8IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTa2lwVG8oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRBY3Rpb24gPSB0aGlzLnNlbGVjdGVkQWN0aW9uLmdldFZhbHVlKCk7XG4gICAgaWYgKHNlbGVjdGVkQWN0aW9uICYmIHRoaXMudGFzayAmJiB0aGlzLmNvbW1lbnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnNraXBUbyhcbiAgICAgICAgdGhpcy50YXNrLkN1cnJlbnRTdGFnZXNbMF0sXG4gICAgICAgIHNlbGVjdGVkQWN0aW9uLlRvU3RhZ2UsXG4gICAgICAgIHRoaXMudGFzayxcbiAgICAgICAgdGhpcy5jb21tZW50LFxuICAgICAgICB0aGlzLnJlY2lwaWVudENvZGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVQaWNrVGFzaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMuY29tbWVudCAmJiB0aGlzLnNlbGVjdGVkU3RhZ2VDb2RlKSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5waWNrVGFzayh0aGlzLnNlbGVjdGVkU3RhZ2VDb2RlLCB0aGlzLnRhc2ssIHRoaXMuY29tbWVudCwgdGhpcy5yZWNpcGllbnRDb2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVJlbGVhc2VUYXNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRhc2sgJiYgdGhpcy5jb21tZW50ICYmIHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnJlbGVhc2VUYXNrKHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUsIHRoaXMudGFzaywgdGhpcy5jb21tZW50LCB0aGlzLnJlY2lwaWVudENvZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRm9sbG93VGFzaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMudXNlcikge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUuZm9sbG93VGFzayh0aGlzLnVzZXIsIHRoaXMudGFzayk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVVbmZvbGxvd1Rhc2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudGFzayAmJiB0aGlzLnVzZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnVuZm9sbG93VGFzayh0aGlzLnRhc2suQ29kZSwgdGhpcy51c2VyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BvcHVwT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNGb3JtTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50U3RlcCA9ICdhY3Rpb24tc2VsZWN0aW9uJztcbiAgICB0aGlzLmFjdGl2ZUFjdGlvblR5cGUgPSBudWxsO1xuICAgIHRoaXMuY29tbWVudCA9ICcnO1xuICAgIHRoaXMucmVjaXBpZW50Q29kZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbi5uZXh0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUgPSBudWxsO1xuICAgIHRoaXMubmV4dEFjdGlvbnMgPSBbXTtcbiAgICB0aGlzLm5leHRBY3RvcnMgPSBbXTtcbiAgICB0aGlzLnN0YWdlRm9ybSA9IG51bGw7XG4gICAgdGhpcy5mb3JtU3VibWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayBpZiBzdWJtaXQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkXG4gIGdldCBjYW5TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbW1lbnQpIHJldHVybiBmYWxzZTtcblxuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVBY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlICdwYXNzb24nOlxuICAgICAgY2FzZSAncGFzc2JhY2snOlxuICAgICAgY2FzZSAnc2tpcHRvJzpcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZEFjdGlvbi5nZXRWYWx1ZSgpO1xuICAgICAgY2FzZSAncmVhc3NpZ24nOlxuICAgICAgICByZXR1cm4gISF0aGlzLnJlY2lwaWVudENvZGU7XG4gICAgICBjYXNlICdwaWNrdGFzayc6XG4gICAgICBjYXNlICdyZWxlYXNldGFzayc6XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWRTdGFnZUNvZGU7XG4gICAgICBjYXNlICdmb2xsb3d0YXNrJzpcbiAgICAgIGNhc2UgJ3VuZm9sbG93dGFzayc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNob3cgYWN0aW9uIGRyb3Bkb3duIGZvciBjZXJ0YWluIGFjdGlvbiB0eXBlc1xuICBnZXQgc2hvd0FjdGlvbkRyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3Bhc3NvbicsICdwYXNzYmFjaycsICdza2lwdG8nXS5pbmNsdWRlcyh0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJycpO1xuICB9XG5cbiAgLy8gU2hvdyBhY3RvciBkcm9wZG93biBmb3IgY2VydGFpbiBhY3Rpb24gdHlwZXNcbiAgZ2V0IHNob3dBY3RvckRyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3Bhc3NvbicsICdwYXNzYmFjaycsICdza2lwdG8nLCAncmVhc3NpZ24nLCAncGlja3Rhc2snLCAncmVsZWFzZXRhc2snXS5pbmNsdWRlcyh0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJycpO1xuICB9XG5cbiAgLy8gU2hvdyBzdGFnZSBkcm9wZG93biBmb3IgcGljay9yZWxlYXNlIHRhc2tcbiAgZ2V0IHNob3dTdGFnZURyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3BpY2t0YXNrJywgJ3JlbGVhc2V0YXNrJ10uaW5jbHVkZXModGhpcy5hY3RpdmVBY3Rpb25UeXBlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIEdldCBsYWJlbCBmb3Igc3VibWl0IGJ1dHRvblxuICBnZXQgc3VibWl0QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYWJlbHM6IFJlY29yZDxBY3Rpb25UeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgcGFzc29uOiAnUGFzcyBPbicsXG4gICAgICBwYXNzYmFjazogJ1Bhc3MgQmFjaycsXG4gICAgICByZWFzc2lnbjogJ1JlLUFzc2lnbicsXG4gICAgICBza2lwdG86ICdTa2lwIFRvJyxcbiAgICAgIHBpY2t0YXNrOiAnUGljayBUYXNrJyxcbiAgICAgIHJlbGVhc2V0YXNrOiAnUmVsZWFzZSBUYXNrJyxcbiAgICAgIGZvbGxvd3Rhc2s6ICdGb2xsb3cnLFxuICAgICAgdW5mb2xsb3d0YXNrOiAnVW5mb2xsb3cnLFxuICAgIH07XG4gICAgcmV0dXJuIGxhYmVsc1t0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJ3Bhc3NvbiddIHx8ICdTdWJtaXQnO1xuICB9XG59XG4iLCI8dmVyYmVuLXBvcC1VcCBbY3VzdG9tU3R5bGVzXT1cInsgJ3otaW5kZXgnOiAnOTknIH1cIiBbZW5hYmxlTW91c2VMZWF2ZV09XCJmYWxzZVwiIFtjdXN0b21TdHlsZXNdPVwie1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZDRhMTA3ODAnLFxuICAgIGJvcmRlclJhZGl1czogJzVweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnXG4gIH1cIiBbKGRyb3Bkb3duT3BlbildPVwiaXNQb3B1cE9wZW5cIj5cblxuICAgIDwhLS0gVHJpZ2dlciAocHJvamVjdGVkIGNvbnRlbnQgZnJvbSBwYXJlbnQpIC0tPlxuICAgIDxkaXYgZHJvcGRvd24tdHJpZ2dlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RyaWdnZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQb3B1cCBjb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXNtXCIgZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgPCEtLSBTdGVwIDE6IEFjdGlvbiBTZWxlY3Rpb24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gJ2FjdGlvbi1zZWxlY3Rpb24nXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZmlsdGVyZWRBY3Rpb25zXCIgKGNsaWNrKT1cIm9uQWN0aW9uU2VsZWN0KGFjdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcHktMiBweC0zIGhvdmVyOmJnLXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFN0ZXAgMjogQWN0aW9uIEZvcm0gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gJ2FjdGlvbi1mb3JtJ1wiIHN0eWxlPVwid2lkdGg6IDE2cmVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQganVzdGlmeS1iZXR3ZWVuIGgtMTIgcHgtMiBwdC00XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRTdGVwID0gJ2FjdGlvbi1zZWxlY3Rpb24nOyBhY3RpdmVBY3Rpb25UeXBlID0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PVwiMC42XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi43NDY0OSA4LjAwMzM4QzYuOTE0ODMgOC4xMzQ3IDcuMDI1MiA4LjIwNDU1IDcuMTE1MzEgOC4yOTM5NkM3Ljk4ODQ2IDkuMTYyMjIgOC44NTc0MiAxMC4wMzQ3IDkuNzI5MTcgMTAuOTA1QzkuODcxNjcgMTEuMDQ3NSA5Ljk5MzkxIDExLjE5MjEgOS45OTMyMSAxMS40MTI5QzkuOTkyNTEgMTEuNjQ2MiA5Ljg5NDcyIDExLjgxNTIgOS42OTU2NCAxMS45MjU2QzkuNDkzMDcgMTIuMDM4IDkuMjkyNiAxMi4wMjA2IDkuMTA0NjkgMTEuODg5OUM5LjAzODMzIDExLjg0MzggOC45ODE3NSAxMS43ODQ1IDguOTIzNzggMTEuNzI3MkM3Ljg1NTc0IDEwLjY1OTIgNi43OTY3OCA5LjU4MjAzIDUuNzE0NzcgOC41Mjg2N0M1LjM3MTEgOC4xOTQwNyA1LjM4NDM3IDcuNzkxNzMgNS43MDc3OSA3LjQ3NTk5QzYuNzg4NCA2LjQyMTIzIDcuODQ4NzUgNS4zNDU1MSA4LjkxNTM5IDQuMjc2MDdDOS4xMTM3NyA0LjA3NzY5IDkuMzIwNTQgMy45MjI2MiA5LjYyMyA0LjA0MTM3QzkuOTc5MjQgNC4xODEwNyAxMC4xMTIgNC41ODkwMSA5Ljg5NDcyIDQuOTAzMzVDOS44Mjk3NiA0Ljk5NzY1IDkuNzQxNzQgNS4wNzcyOCA5LjY2MDAyIDUuMTU5N0M4LjgwNjQyIDYuMDE0NjkgNy45NTI4MyA2Ljg2OTY4IDcuMDk2NDUgNy43MjI1N0M3LjAxNDcyIDcuODA0MyA2LjkxNTUzIDcuODY4NTYgNi43NDU3OSA4LjAwNDA4TDYuNzQ2NDkgOC4wMDMzOFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj57eyBzdWJtaXRCdXR0b25MYWJlbCB9fTwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLTIgbWF4LWgtOTYgb3ZlcmZsb3cteS1hdXRvIHAtMlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9uIERyb3Bkb3duIChmb3IgUGFzc09uLCBQYXNzQmFjaywgU2tpcFRvKSAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93biAqbmdJZj1cInNob3dBY3Rpb25Ecm9wZG93blwiIGxhYmVsPVwiQWN0aW9uXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiIFtmaWx0ZXJdPVwidHJ1ZVwiIGZpbHRlckJ5PVwiTmFtZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm5leHRBY3Rpb25zXCIgaWQ9XCJhY3Rpb25zXCIgb3B0aW9uTGFiZWw9XCJOYW1lXCIgW25nTW9kZWxdPVwic2VsZWN0ZWRBY3Rpb24gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkQWN0aW9uLm5leHQoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTdGFnZSBEcm9wZG93biAoZm9yIFBpY2tUYXNrLCBSZWxlYXNlVGFzaykgLS0+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd24gKm5nSWY9XCJzaG93U3RhZ2VEcm9wZG93blwiIGxhYmVsPVwiU3RhZ2VzXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiIFtmaWx0ZXJdPVwidHJ1ZVwiIGZpbHRlckJ5PVwiTmFtZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFN0YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidGFzaz8uRnVsbFN0YWdlcyB8fCBbXVwiIGlkPVwic3RhZ2VzXCIgb3B0aW9uTGFiZWw9XCJOYW1lXCIgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN0YWdlQ29kZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBBY3RvciBEcm9wZG93biAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93biAqbmdJZj1cInNob3dBY3RvckRyb3Bkb3duXCIgbGFiZWw9XCJBY3RvcnNcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCIgW2ZpbHRlcl09XCJ0cnVlXCIgZmlsdGVyQnk9XCJOYW1lXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJuZXh0QWN0b3JzXCIgaWQ9XCJhY3RvcnNcIiBvcHRpb25MYWJlbD1cIk5hbWVcIiBvcHRpb25WYWx1ZT1cIklkZW50aWZpZXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlY2lwaWVudENvZGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQ29tbWVudCBUZXh0YXJlYSAtLT5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJjb21tZW50XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcC0xIHRleHQteHMgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWQtbWRcIiBzdHlsZT1cImhlaWdodDogOHJlbVwiIFtjb2xzXT1cIjhcIj5cbiAgICAgICAgPC90ZXh0YXJlYT5cblxuICAgICAgICAgICAgICAgIDwhLS0gU3VibWl0IEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gW2Rpc2FibGVdPVwiIWNhblN1Ym1pdFwiIFt0ZXh0XT1cInN1Ym1pdEJ1dHRvbkxhYmVsXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvblN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHctZnVsbFwiIGJnQ29sb3I9XCIjRkZFNjgxXCIgdGV4dENvbG9yPVwiIzQwNDA0MFwiIGJvcmRlclJhZGl1cz1cIjEwcHhcIiBmb250U2l6ZT1cIjE0cHhcIlxuICAgICAgICAgICAgICAgICAgICBwZD1cIjEwcHggMjBweFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMycHhcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc3VibWl0QnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC92ZXJiZW4tcG9wLVVwPlxuXG48IS0tIEZvcm0gRGlhbG9nIGZvciBQYXNzT24gd2hlbiBmb3JtIGlzIHJlcXVpcmVkIC0tPlxuPHZlcmJlbi1kaWFsb2d1ZSBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCIgW2Rpc21pc3NPdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIiBbbW9kZV09XCInZHJhd2VyJ1wiXG4gICAgW3BhZGRpbmddPVwiJzBweCdcIiBbZHJhd2VyV2lkdGhdPVwiJzQwMHB4J1wiIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCIgW2lzVmlzaWJsZV09XCJpc0Zvcm1Nb2RhbFZpc2libGVcIlxuICAgIFttb2RhbERhdGFdPVwic3RhZ2VGb3JtXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIiBbc2hvd0Nsb3NlSWNvbl09XCJmYWxzZVwiIFtzdHlsZV09XCJ7ICd6LWluZGV4JzogJzk5JyB9XCI+XG48L3ZlcmJlbi1kaWFsb2d1ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImJnLVsjRkZFNjgxXSBweC02IHB5LTQgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxoMT5Gb3JtPC9oMT5cbiAgICAgICAgPHZlcmJlbi1zdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtpY29uXT1cIidjbG9zZS1jaXJjbGUnXCIgKGNsaWNrKT1cImlzRm9ybU1vZGFsVmlzaWJsZSA9IGZhbHNlXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIiBbc3Ryb2tlXT1cIicjZmZmJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdGFnZUZvcm0/LkVudGl0aWVzPy5bYWN0aXZlXTsgZWxzZSBlbXB0eVN0YXRlXCIgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICA8Zm9ybS1jb250cm9sIFtkYXRhVHlwZV09XCJkYXRhVHlwZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Qcm9wZXJ0aWVzXT1cInN0YWdlRm9ybT8uRW50aXRpZXM/LlthY3RpdmVdPy5Qcm9wZXJ0aWVzID8/IFtdXCI+PC9mb3JtLWNvbnRyb2w+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIGNsYXNzPVwidmVyYmVuLXByaW1hcnktYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cIiFhcmVSZXF1aXJlZFByb3BlcnRpZXNGaWxsZWQoKVwiIHRleHQ9XCJTYXZlXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEVtcHR5IHN0YXRlIHRlbXBsYXRlIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5U3RhdGU+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgcC00IHRleHQtZ3JheS02MDAgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICBObyBlbnRyaWVzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIGZvcm0gZ3JvdXAuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvb3BlcmF0aW9uLXBvcHVwL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL29wZXJhdGlvbi1wb3B1cC9vcGVyYXRpb24tcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25GLE9BQU8sRUFBUyxRQUFRLEVBQThCLE1BQU0sbUNBQW1DLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlC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QkFBdEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJvcERvd25Nb2R1bGUsIFN2Z01vZHVsZSwgVmVyYmVuYUJ1dHRvbk1vZHVsZSwgVmVyYmVuRGlhbG9ndWVNb2R1bGUsIFZlcmJlblBvcFVwTW9kdWxlIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IEZvcm1Db250cm9sZXJNb2R1bGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBGb3JtVGltZXJNb2R1bGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tdGltZXInO1xuaW1wb3J0IHsgQWN0b3IsIERhdGFUeXBlLCBGb3JtLCBUYXNrLCBXb3JrZmxvd0FjdGlvbiB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBPcGVyYXRpb25Qb3B1cEZhY2FkZSB9IGZyb20gJy4vb3BlcmF0aW9uLXBvcHVwLmZhY2FkZSc7XG5pbXBvcnQgeyBPcGVyYXRpb25Qb3B1cFNlcnZpY2UgfSBmcm9tICcuL29wZXJhdGlvbi1wb3B1cC5zZXJ2aWNlJztcbmltcG9ydCB7IE9wZXJhdGlvblBvcHVwU3RhdGUgfSBmcm9tICcuL29wZXJhdGlvbi1wb3B1cC5zdGF0ZSc7XG5cbnR5cGUgQWN0aW9uVHlwZSA9ICdwYXNzb24nIHwgJ3Bhc3NiYWNrJyB8ICdyZWFzc2lnbicgfCAnc2tpcHRvJyB8ICdwaWNrdGFzaycgfCAncmVsZWFzZXRhc2snIHwgJ2ZvbGxvd3Rhc2snIHwgJ3VuZm9sbG93dGFzayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1vcGVyYXRpb24tcG9wdXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVmVyYmVuUG9wVXBNb2R1bGUsIERyb3BEb3duTW9kdWxlLCBWZXJiZW5hQnV0dG9uTW9kdWxlLCBWZXJiZW5EaWFsb2d1ZU1vZHVsZSwgRm9ybUNvbnRyb2xlck1vZHVsZSwgRm9ybVRpbWVyTW9kdWxlLCBTdmdNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtPcGVyYXRpb25Qb3B1cFNlcnZpY2UsIE9wZXJhdGlvblBvcHVwU3RhdGUsIE9wZXJhdGlvblBvcHVwRmFjYWRlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29wZXJhdGlvbi1wb3B1cC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhc2s6IFRhc2sgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgYWxsb3dlZEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIEludGVybmFsIHBvcHVwIHZpc2liaWxpdHkgY29udHJvbFxuICBpc1BvcHVwT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0Zvcm1Nb2RhbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudFN0ZXA6ICdhY3Rpb24tc2VsZWN0aW9uJyB8ICdhY3Rpb24tZm9ybScgPSAnYWN0aW9uLXNlbGVjdGlvbic7XG5cbiAgLy8gQWN0aW9uIHN0YXRlXG4gIGFjdGl2ZUFjdGlvblR5cGU6IEFjdGlvblR5cGUgfCBudWxsID0gbnVsbDtcbiAgY29tbWVudDogc3RyaW5nID0gJyc7XG4gIHJlY2lwaWVudENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZEFjdGlvbjogQmVoYXZpb3JTdWJqZWN0PFdvcmtmbG93QWN0aW9uIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdvcmtmbG93QWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHNlbGVjdGVkU3RhZ2VDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgZm9ybVN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERhdGEgZnJvbSBmYWNhZGVcbiAgbmV4dEFjdGlvbnM6IFdvcmtmbG93QWN0aW9uW10gPSBbXTtcbiAgbmV4dEFjdG9yczogQWN0b3JbXSA9IFtdO1xuICBzdGFnZUZvcm06IEZvcm0gfCBudWxsID0gbnVsbDtcbiAgYWN0aXZlOiBudW1iZXIgPSAwO1xuICBkYXRhVHlwZTogRGF0YVR5cGUgPSBEYXRhVHlwZS5UZXh0O1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjYWRlOiBPcGVyYXRpb25Qb3B1cEZhY2FkZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGZhY2FkZSBvYnNlcnZhYmxlc1xuICAgIHRoaXMuZmFjYWRlLmdldE5leHRBY3Rpb25zJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdGlvbnMgPSBkYXRhO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmZhY2FkZS5nZXROZXh0QWN0b3JzJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdG9ycyA9IGRhdGE7XG4gICAgICAgIC8vIEF1dG8tc2VsZWN0IGN1cnJlbnQgdXNlciBpZiBhdmFpbGFibGVcbiAgICAgICAgaWYgKHRoaXMudXNlciAmJiBkYXRhLm1hcCgoeyBJZGVudGlmaWVyIH0pID0+IElkZW50aWZpZXIpLmluY2x1ZGVzKHRoaXMudXNlcikpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwaWVudENvZGUgPSB0aGlzLnVzZXI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5mYWNhZGUuZ2V0VGFza0Zvcm1zJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhZ2VGb3JtID0gZGF0YT8uWzBdIHx8IG51bGw7XG4gICAgICB9KTtcblxuICAgIC8vIExvYWQgYWN0b3JzIHdoZW4gYWN0aW9uIGlzIHNlbGVjdGVkXG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvblxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24gJiYgdGhpcy50YXNrKSB7XG4gICAgICAgICAgdGhpcy5mYWNhZGUubG9hZE5leHRBY3RvcnModGhpcy50YXNrLkNvZGUsIGZhbHNlLCBhY3Rpb24uVG9TdGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gR2V0IGZpbHRlcmVkIGFjdGlvbnMgYmFzZWQgb24gYWxsb3dlZEFjdGlvbnMgaW5wdXRcbiAgZ2V0IGZpbHRlcmVkQWN0aW9ucygpOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBBY3Rpb25UeXBlOyByZXF1aXJlc0Zvcm06IGJvb2xlYW4gfVtdIHtcbiAgICBjb25zdCBhbGxBY3Rpb25zID0gW1xuICAgICAgeyBsYWJlbDogJ1Bhc3MgT24nLCB2YWx1ZTogJ3Bhc3NvbicgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUGFzcyBCYWNrJywgdmFsdWU6ICdwYXNzYmFjaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUmUtQXNzaWduJywgdmFsdWU6ICdyZWFzc2lnbicgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1NraXAgVG8nLCB2YWx1ZTogJ3NraXB0bycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiB0cnVlIH0sXG4gICAgICB7IGxhYmVsOiAnUGljayBUYXNrJywgdmFsdWU6ICdwaWNrdGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1JlbGVhc2UgVGFzaycsIHZhbHVlOiAncmVsZWFzZXRhc2snIGFzIEFjdGlvblR5cGUsIHJlcXVpcmVzRm9ybTogZmFsc2UgfSxcbiAgICAgIHsgbGFiZWw6ICdGb2xsb3cgVGFzaycsIHZhbHVlOiAnZm9sbG93dGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgICAgeyBsYWJlbDogJ1VuZm9sbG93IFRhc2snLCB2YWx1ZTogJ3VuZm9sbG93dGFzaycgYXMgQWN0aW9uVHlwZSwgcmVxdWlyZXNGb3JtOiBmYWxzZSB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gYWxsQWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IHRoaXMuYWxsb3dlZEFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uLnZhbHVlKSk7XG4gIH1cblxuICAvLyBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBhbiBhY3Rpb24gZnJvbSB0aGUgbGlzdFxuICBhc3luYyBvbkFjdGlvblNlbGVjdChhY3Rpb25UeXBlOiBBY3Rpb25UeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnRhc2spIHJldHVybjtcblxuICAgIHRoaXMuYWN0aXZlQWN0aW9uVHlwZSA9IGFjdGlvblR5cGU7XG4gICAgdGhpcy5jb21tZW50ID0gJyc7XG4gICAgdGhpcy5yZWNpcGllbnRDb2RlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uLm5leHQobnVsbCk7XG5cbiAgICAvLyBMb2FkIG5lY2Vzc2FyeSBkYXRhIGJhc2VkIG9uIGFjdGlvbiB0eXBlXG4gICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlICdwYXNzb24nOlxuICAgICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkTmV4dEFjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkVGFza0Zvcm1zKHRoaXMudGFzay5Db2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwYXNzYmFjayc6XG4gICAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLmxvYWRQcmV2aW91c0FjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NraXB0byc6XG4gICAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLmxvYWRBbGxQcmV2aW91c0FjdGlvbnModGhpcy50YXNrLkNvZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlYXNzaWduJzpcbiAgICAgICAgYXdhaXQgdGhpcy5mYWNhZGUubG9hZE5leHRBY3RvcnModGhpcy50YXNrLkNvZGUsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BpY2t0YXNrJzpcbiAgICAgIGNhc2UgJ3JlbGVhc2V0YXNrJzpcbiAgICAgICAgLy8gVGhlc2UgdXNlIHRoZSB0YXNrJ3MgZnVsbCBzdGFnZXNcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmb2xsb3d0YXNrJzpcbiAgICAgIGNhc2UgJ3VuZm9sbG93dGFzayc6XG4gICAgICAgIC8vIFRoZXNlIGRvbid0IG5lZWQgYWRkaXRpb25hbCBkYXRhXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRvZ2dsZSBwb3B1cDogY2xvc2UgdGhlbiByZW9wZW4gZm9yIHN0ZXAgdHJhbnNpdGlvblxuICAgIHRoaXMuaXNQb3B1cE9wZW4gPSBmYWxzZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSAnYWN0aW9uLWZvcm0nO1xuICAgICAgdGhpcy5pc1BvcHVwT3BlbiA9IHRydWU7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgLy8gSGFuZGxlIGFjdGlvbiBzdWJtaXNzaW9uXG4gIGFzeW5jIGhhbmRsZUFjdGlvblN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudGFzaykgcmV0dXJuO1xuXG4gICAgbGV0IGFjdGlvbkNvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmVBY3Rpb25UeXBlKSB7XG4gICAgICAgIGNhc2UgJ3Bhc3Nvbic6XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gYXdhaXQgdGhpcy5oYW5kbGVQYXNzT24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFzc2JhY2snOlxuICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlUGFzc0JhY2soKTtcbiAgICAgICAgICBhY3Rpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFzc2lnbic6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZUFzc2lnbigpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NraXB0byc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTa2lwVG8oKTtcbiAgICAgICAgICBhY3Rpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaWNrdGFzayc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVQaWNrVGFzaygpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlbGVhc2V0YXNrJzpcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVJlbGVhc2VUYXNrKCk7XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZm9sbG93dGFzayc6XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVGb2xsb3dUYXNrKCk7XG4gICAgICAgICAgYWN0aW9uQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndW5mb2xsb3d0YXNrJzpcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVVuZm9sbG93VGFzaygpO1xuICAgICAgICAgIGFjdGlvbkNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIE9ubHkgY2xvc2UgcG9wdXAgYW5kIGVtaXQgY29tcGxldGlvbiBpZiBhY3Rpb24gYWN0dWFsbHkgY29tcGxldGVkXG4gICAgICAvLyAobm90IHdhaXRpbmcgZm9yIGZvcm0gZGlhbG9nKVxuICAgICAgaWYgKGFjdGlvbkNvbXBsZXRlZCkge1xuICAgICAgICB0aGlzLmNsb3NlUG9wdXAoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUGFzc09uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnN0YWdlRm9ybSAmJiAhdGhpcy5mb3JtU3VibWl0dGVkKSB7XG4gICAgICAvLyBJZiB0aGVyZSdzIGEgZm9ybSBhbmQgaXQgaGFzbid0IGJlZW4gc3VibWl0dGVkIHlldCwgc2hvdyB0aGUgZm9ybSBtb2RhbFxuICAgICAgdGhpcy5pc1BvcHVwT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0Zvcm1Nb2RhbFZpc2libGUgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBY3Rpb24gbm90IGNvbXBsZXRlZCB5ZXQsIHdhaXRpbmcgZm9yIGZvcm1cbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZEFjdGlvbiA9IHRoaXMuc2VsZWN0ZWRBY3Rpb24uZ2V0VmFsdWUoKTtcbiAgICBpZiAoc2VsZWN0ZWRBY3Rpb24gJiYgdGhpcy50YXNrICYmIHRoaXMuY29tbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUucGFzc09uKHNlbGVjdGVkQWN0aW9uLCB0aGlzLnRhc2ssIHRoaXMuY29tbWVudCwgdGhpcy5yZWNpcGllbnRDb2RlKTtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCA9IGZhbHNlOyAvLyBSZXNldCBmb3IgbmV4dCB0aW1lXG4gICAgfVxuICAgIHJldHVybiB0cnVlOyAvLyBBY3Rpb24gY29tcGxldGVkXG4gIH1cblxuICBzdWJtaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YWdlRm9ybSAmJiB0aGlzLnRhc2spIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTdWJtaXR0aW5nIGZvcm0uLi4nLCB0aGlzLnN0YWdlRm9ybSk7XG4gICAgICB0aGlzLmZhY2FkZS5maWxsRm9ybSh0aGlzLnN0YWdlRm9ybSwgdGhpcy50YXNrLkNvZGUpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyBmaWxsRm9ybSBBUEkgcmV0dXJucyBlbXB0eSByZXNwb25zZSwgc28ganVzdCBjaGVjayB0aGF0IGl0IGRpZG4ndCBlcnJvclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdGb3JtIGZpbGxlZCBzdWNjZXNzZnVsbHksIHByb2NlZWRpbmcgd2l0aCBwYXNzT24uLi4nKTtcbiAgICAgICAgICB0aGlzLnN0YWdlRm9ybSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5pc0Zvcm1Nb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvcm1TdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIENvbnRpbnVlIHdpdGggcGFzc09uIGFmdGVyIGZvcm0gaXMgZmlsbGVkXG4gICAgICAgICAgdGhpcy5oYW5kbGVQYXNzT24oKS50aGVuKChjb21wbGV0ZWQpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXNzT24gY29tcGxldGVkOicsIGNvbXBsZXRlZCk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGhhbmRsZVBhc3NPbjonLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmaWxsaW5nIGZvcm06JywgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHN1Ym1pdCBmb3JtOiBzdGFnZUZvcm0gb3IgdGFzayBpcyBtaXNzaW5nJywge1xuICAgICAgICBzdGFnZUZvcm06IHRoaXMuc3RhZ2VGb3JtLFxuICAgICAgICB0YXNrOiB0aGlzLnRhc2tcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFyZVJlcXVpcmVkUHJvcGVydGllc0ZpbGxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc3RhZ2VGb3JtKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5zdGFnZUZvcm0uRW50aXRpZXNbdGhpcy5hY3RpdmVdLlByb3BlcnRpZXMgfHwgW107XG4gICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVkIHByb3BlcnRpZXMgaGF2ZSB2YWxpZCB2YWx1ZXNcbiAgICByZXR1cm4gcHJvcGVydGllcy5ldmVyeSgocHJvcGVydHk6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgIXByb3BlcnR5LmlzUmVxdWlyZWQgfHxcbiAgICAgICAgKHByb3BlcnR5LlZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBwcm9wZXJ0eS5WYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIHByb3BlcnR5LlZhbHVlICE9PSAnJylcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVBhc3NCYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlbGVjdGVkQWN0aW9uID0gdGhpcy5zZWxlY3RlZEFjdGlvbi5nZXRWYWx1ZSgpO1xuICAgIGlmIChzZWxlY3RlZEFjdGlvbiAmJiB0aGlzLnRhc2sgJiYgdGhpcy5jb21tZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5wYXNzQmFjayhzZWxlY3RlZEFjdGlvbiwgdGhpcy50YXNrLCB0aGlzLmNvbW1lbnQsIHRoaXMucmVjaXBpZW50Q29kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZUFzc2lnbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMuY29tbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUucmVBc3NpZ24odGhpcy50YXNrLCB0aGlzLmNvbW1lbnQsIHRoaXMudXNlciwgdGhpcy5yZWNpcGllbnRDb2RlIHx8IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTa2lwVG8oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRBY3Rpb24gPSB0aGlzLnNlbGVjdGVkQWN0aW9uLmdldFZhbHVlKCk7XG4gICAgaWYgKHNlbGVjdGVkQWN0aW9uICYmIHRoaXMudGFzayAmJiB0aGlzLmNvbW1lbnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnNraXBUbyhcbiAgICAgICAgdGhpcy50YXNrLkN1cnJlbnRTdGFnZXNbMF0sXG4gICAgICAgIHNlbGVjdGVkQWN0aW9uLlRvU3RhZ2UsXG4gICAgICAgIHRoaXMudGFzayxcbiAgICAgICAgdGhpcy5jb21tZW50LFxuICAgICAgICB0aGlzLnJlY2lwaWVudENvZGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVQaWNrVGFzaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMuY29tbWVudCAmJiB0aGlzLnNlbGVjdGVkU3RhZ2VDb2RlKSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5waWNrVGFzayh0aGlzLnNlbGVjdGVkU3RhZ2VDb2RlLCB0aGlzLnRhc2ssIHRoaXMuY29tbWVudCwgdGhpcy5yZWNpcGllbnRDb2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVJlbGVhc2VUYXNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRhc2sgJiYgdGhpcy5jb21tZW50ICYmIHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnJlbGVhc2VUYXNrKHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUsIHRoaXMudGFzaywgdGhpcy5jb21tZW50LCB0aGlzLnJlY2lwaWVudENvZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRm9sbG93VGFzaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50YXNrICYmIHRoaXMudXNlcikge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUuZm9sbG93VGFzayh0aGlzLnVzZXIsIHRoaXMudGFzayk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVVbmZvbGxvd1Rhc2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudGFzayAmJiB0aGlzLnVzZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLnVuZm9sbG93VGFzayh0aGlzLnRhc2suQ29kZSwgdGhpcy51c2VyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BvcHVwT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNGb3JtTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50U3RlcCA9ICdhY3Rpb24tc2VsZWN0aW9uJztcbiAgICB0aGlzLmFjdGl2ZUFjdGlvblR5cGUgPSBudWxsO1xuICAgIHRoaXMuY29tbWVudCA9ICcnO1xuICAgIHRoaXMucmVjaXBpZW50Q29kZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbi5uZXh0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRTdGFnZUNvZGUgPSBudWxsO1xuICAgIHRoaXMubmV4dEFjdGlvbnMgPSBbXTtcbiAgICB0aGlzLm5leHRBY3RvcnMgPSBbXTtcbiAgICB0aGlzLnN0YWdlRm9ybSA9IG51bGw7XG4gICAgdGhpcy5mb3JtU3VibWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayBpZiBzdWJtaXQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkXG4gIGdldCBjYW5TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbW1lbnQpIHJldHVybiBmYWxzZTtcblxuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVBY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlICdwYXNzb24nOlxuICAgICAgY2FzZSAncGFzc2JhY2snOlxuICAgICAgY2FzZSAnc2tpcHRvJzpcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZEFjdGlvbi5nZXRWYWx1ZSgpO1xuICAgICAgY2FzZSAncmVhc3NpZ24nOlxuICAgICAgICByZXR1cm4gISF0aGlzLnJlY2lwaWVudENvZGU7XG4gICAgICBjYXNlICdwaWNrdGFzayc6XG4gICAgICBjYXNlICdyZWxlYXNldGFzayc6XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWRTdGFnZUNvZGU7XG4gICAgICBjYXNlICdmb2xsb3d0YXNrJzpcbiAgICAgIGNhc2UgJ3VuZm9sbG93dGFzayc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNob3cgYWN0aW9uIGRyb3Bkb3duIGZvciBjZXJ0YWluIGFjdGlvbiB0eXBlc1xuICBnZXQgc2hvd0FjdGlvbkRyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3Bhc3NvbicsICdwYXNzYmFjaycsICdza2lwdG8nXS5pbmNsdWRlcyh0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJycpO1xuICB9XG5cbiAgLy8gU2hvdyBhY3RvciBkcm9wZG93biBmb3IgY2VydGFpbiBhY3Rpb24gdHlwZXNcbiAgZ2V0IHNob3dBY3RvckRyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3Bhc3NvbicsICdwYXNzYmFjaycsICdza2lwdG8nLCAncmVhc3NpZ24nLCAncGlja3Rhc2snLCAncmVsZWFzZXRhc2snXS5pbmNsdWRlcyh0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJycpO1xuICB9XG5cbiAgLy8gU2hvdyBzdGFnZSBkcm9wZG93biBmb3IgcGljay9yZWxlYXNlIHRhc2tcbiAgZ2V0IHNob3dTdGFnZURyb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ3BpY2t0YXNrJywgJ3JlbGVhc2V0YXNrJ10uaW5jbHVkZXModGhpcy5hY3RpdmVBY3Rpb25UeXBlIHx8ICcnKTtcbiAgfVxuXG4gIC8vIEdldCBsYWJlbCBmb3Igc3VibWl0IGJ1dHRvblxuICBnZXQgc3VibWl0QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYWJlbHM6IFJlY29yZDxBY3Rpb25UeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgcGFzc29uOiAnUGFzcyBPbicsXG4gICAgICBwYXNzYmFjazogJ1Bhc3MgQmFjaycsXG4gICAgICByZWFzc2lnbjogJ1JlLUFzc2lnbicsXG4gICAgICBza2lwdG86ICdTa2lwIFRvJyxcbiAgICAgIHBpY2t0YXNrOiAnUGljayBUYXNrJyxcbiAgICAgIHJlbGVhc2V0YXNrOiAnUmVsZWFzZSBUYXNrJyxcbiAgICAgIGZvbGxvd3Rhc2s6ICdGb2xsb3cnLFxuICAgICAgdW5mb2xsb3d0YXNrOiAnVW5mb2xsb3cnLFxuICAgIH07XG4gICAgcmV0dXJuIGxhYmVsc1t0aGlzLmFjdGl2ZUFjdGlvblR5cGUgfHwgJ3Bhc3NvbiddIHx8ICdTdWJtaXQnO1xuICB9XG59XG4iLCI8dmVyYmVuLXBvcC1VcCBbY3VzdG9tU3R5bGVzXT1cInsgJ3otaW5kZXgnOiAnOTknIH1cIiBbZW5hYmxlTW91c2VMZWF2ZV09XCJmYWxzZVwiIFtjdXN0b21TdHlsZXNdPVwie1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZDRhMTA3ODAnLFxuICAgIGJvcmRlclJhZGl1czogJzVweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnXG4gIH1cIiBbKGRyb3Bkb3duT3BlbildPVwiaXNQb3B1cE9wZW5cIj5cblxuICAgIDwhLS0gVHJpZ2dlciAocHJvamVjdGVkIGNvbnRlbnQgZnJvbSBwYXJlbnQpIC0tPlxuICAgIDxkaXYgZHJvcGRvd24tdHJpZ2dlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RyaWdnZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQb3B1cCBjb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXNtXCIgZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgPCEtLSBTdGVwIDE6IEFjdGlvbiBTZWxlY3Rpb24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gJ2FjdGlvbi1zZWxlY3Rpb24nXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZmlsdGVyZWRBY3Rpb25zXCIgKGNsaWNrKT1cIm9uQWN0aW9uU2VsZWN0KGFjdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcHktMiBweC0zIGhvdmVyOmJnLXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFN0ZXAgMjogQWN0aW9uIEZvcm0gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50U3RlcCA9PT0gJ2FjdGlvbi1mb3JtJ1wiIHN0eWxlPVwid2lkdGg6IDE2cmVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQganVzdGlmeS1iZXR3ZWVuIGgtMTIgcHgtMiBwdC00XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRTdGVwID0gJ2FjdGlvbi1zZWxlY3Rpb24nOyBhY3RpdmVBY3Rpb25UeXBlID0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PVwiMC42XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi43NDY0OSA4LjAwMzM4QzYuOTE0ODMgOC4xMzQ3IDcuMDI1MiA4LjIwNDU1IDcuMTE1MzEgOC4yOTM5NkM3Ljk4ODQ2IDkuMTYyMjIgOC44NTc0MiAxMC4wMzQ3IDkuNzI5MTcgMTAuOTA1QzkuODcxNjcgMTEuMDQ3NSA5Ljk5MzkxIDExLjE5MjEgOS45OTMyMSAxMS40MTI5QzkuOTkyNTEgMTEuNjQ2MiA5Ljg5NDcyIDExLjgxNTIgOS42OTU2NCAxMS45MjU2QzkuNDkzMDcgMTIuMDM4IDkuMjkyNiAxMi4wMjA2IDkuMTA0NjkgMTEuODg5OUM5LjAzODMzIDExLjg0MzggOC45ODE3NSAxMS43ODQ1IDguOTIzNzggMTEuNzI3MkM3Ljg1NTc0IDEwLjY1OTIgNi43OTY3OCA5LjU4MjAzIDUuNzE0NzcgOC41Mjg2N0M1LjM3MTEgOC4xOTQwNyA1LjM4NDM3IDcuNzkxNzMgNS43MDc3OSA3LjQ3NTk5QzYuNzg4NCA2LjQyMTIzIDcuODQ4NzUgNS4zNDU1MSA4LjkxNTM5IDQuMjc2MDdDOS4xMTM3NyA0LjA3NzY5IDkuMzIwNTQgMy45MjI2MiA5LjYyMyA0LjA0MTM3QzkuOTc5MjQgNC4xODEwNyAxMC4xMTIgNC41ODkwMSA5Ljg5NDcyIDQuOTAzMzVDOS44Mjk3NiA0Ljk5NzY1IDkuNzQxNzQgNS4wNzcyOCA5LjY2MDAyIDUuMTU5N0M4LjgwNjQyIDYuMDE0NjkgNy45NTI4MyA2Ljg2OTY4IDcuMDk2NDUgNy43MjI1N0M3LjAxNDcyIDcuODA0MyA2LjkxNTUzIDcuODY4NTYgNi43NDU3OSA4LjAwNDA4TDYuNzQ2NDkgOC4wMDMzOFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj57eyBzdWJtaXRCdXR0b25MYWJlbCB9fTwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLTIgbWF4LWgtOTYgb3ZlcmZsb3cteS1hdXRvIHAtMlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9uIERyb3Bkb3duIChmb3IgUGFzc09uLCBQYXNzQmFjaywgU2tpcFRvKSAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93biAqbmdJZj1cInNob3dBY3Rpb25Ecm9wZG93blwiIGxhYmVsPVwiQWN0aW9uXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiIFtmaWx0ZXJdPVwidHJ1ZVwiIGZpbHRlckJ5PVwiTmFtZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm5leHRBY3Rpb25zXCIgaWQ9XCJhY3Rpb25zXCIgb3B0aW9uTGFiZWw9XCJOYW1lXCIgW25nTW9kZWxdPVwic2VsZWN0ZWRBY3Rpb24gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkQWN0aW9uLm5leHQoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTdGFnZSBEcm9wZG93biAoZm9yIFBpY2tUYXNrLCBSZWxlYXNlVGFzaykgLS0+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd24gKm5nSWY9XCJzaG93U3RhZ2VEcm9wZG93blwiIGxhYmVsPVwiU3RhZ2VzXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiIFtmaWx0ZXJdPVwidHJ1ZVwiIGZpbHRlckJ5PVwiTmFtZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFN0YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidGFzaz8uRnVsbFN0YWdlcyB8fCBbXVwiIGlkPVwic3RhZ2VzXCIgb3B0aW9uTGFiZWw9XCJOYW1lXCIgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN0YWdlQ29kZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBBY3RvciBEcm9wZG93biAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93biAqbmdJZj1cInNob3dBY3RvckRyb3Bkb3duXCIgbGFiZWw9XCJBY3RvcnNcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCIgW2ZpbHRlcl09XCJ0cnVlXCIgZmlsdGVyQnk9XCJOYW1lXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJuZXh0QWN0b3JzXCIgaWQ9XCJhY3RvcnNcIiBvcHRpb25MYWJlbD1cIk5hbWVcIiBvcHRpb25WYWx1ZT1cIklkZW50aWZpZXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlY2lwaWVudENvZGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cblxuICAgICAgICAgICAgICAgIDwhLS0gQ29tbWVudCBUZXh0YXJlYSAtLT5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJjb21tZW50XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcC0xIHRleHQteHMgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHJvdW5kZWQtbWRcIiBzdHlsZT1cImhlaWdodDogOHJlbVwiIFtjb2xzXT1cIjhcIj5cbiAgICAgICAgPC90ZXh0YXJlYT5cblxuICAgICAgICAgICAgICAgIDwhLS0gU3VibWl0IEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gW2Rpc2FibGVdPVwiIWNhblN1Ym1pdFwiIFt0ZXh0XT1cInN1Ym1pdEJ1dHRvbkxhYmVsXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvblN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHctZnVsbFwiIGJnQ29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItcHJpbWFyeSlcIiB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3Itb24tcHJpbWFyeSlcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCIgZm9udFNpemU9XCIxNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgcGQ9XCIxMHB4IDIwcHhcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMnB4XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHN1Ym1pdEJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdmVyYmVuLXBvcC1VcD5cblxuPCEtLSBGb3JtIERpYWxvZyBmb3IgUGFzc09uIHdoZW4gZm9ybSBpcyByZXF1aXJlZCAtLT5cbjx2ZXJiZW4tZGlhbG9ndWUgW3Nob3dDbG9zZUljb25dPVwidHJ1ZVwiIFtkaXNtaXNzT3V0c2lkZUNsaWNrXT1cInRydWVcIiBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCIgW21vZGVdPVwiJ2RyYXdlcidcIlxuICAgIFtwYWRkaW5nXT1cIicwcHgnXCIgW2RyYXdlcldpZHRoXT1cIic0MDBweCdcIiBbZGlzYWJsZUZvb3Rlcl09XCJmYWxzZVwiIFtpc1Zpc2libGVdPVwiaXNGb3JtTW9kYWxWaXNpYmxlXCJcbiAgICBbbW9kYWxEYXRhXT1cInN0YWdlRm9ybVwiIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCIgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIiBbc3R5bGVdPVwieyAnei1pbmRleCc6ICc5OScgfVwiPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJiZy1bdmFyKC0tdmJuLWNvbG9yLXByaW1hcnkpXSBweC02IHB5LTQgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxoMT5Gb3JtPC9oMT5cbiAgICAgICAgPHZlcmJlbi1zdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtpY29uXT1cIidjbG9zZS1jaXJjbGUnXCIgKGNsaWNrKT1cImlzRm9ybU1vZGFsVmlzaWJsZSA9IGZhbHNlXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIiBbc3Ryb2tlXT1cIid2YXIoLS12Ym4tY29sb3Itc3VyZmFjZSknXCI+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN0YWdlRm9ybT8uRW50aXRpZXM/LlthY3RpdmVdOyBlbHNlIGVtcHR5U3RhdGVcIiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgIDxmb3JtLWNvbnRyb2wgW2RhdGFUeXBlXT1cImRhdGFUeXBlXCJcbiAgICAgICAgICAgICAgICBbZm9ybVByb3BlcnRpZXNdPVwic3RhZ2VGb3JtPy5FbnRpdGllcz8uW2FjdGl2ZV0/LlByb3BlcnRpZXMgPz8gW11cIj48L2Zvcm0tY29udHJvbD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gY2xhc3M9XCJ2ZXJiZW4tcHJpbWFyeS1idXR0b25cIiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwiIWFyZVJlcXVpcmVkUHJvcGVydGllc0ZpbGxlZCgpXCIgdGV4dD1cIlNhdmVcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRW1wdHkgc3RhdGUgdGVtcGxhdGUgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlTdGF0ZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCBwLTQgdGV4dC1ncmF5LTYwMCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIE5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciB0aGUgc2VsZWN0ZWQgZm9ybSBncm91cC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -343,10 +343,10 @@ export class OperationPopupFacade {
|
|
|
343
343
|
this.state.setIsUpdating(false);
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
347
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
346
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OperationPopupFacade, deps: [{ token: i1.OperationPopupService }, { token: i2.OperationPopupState }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
347
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OperationPopupFacade });
|
|
348
348
|
}
|
|
349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OperationPopupFacade, decorators: [{
|
|
350
350
|
type: Injectable
|
|
351
351
|
}], ctorParameters: () => [{ type: i1.OperationPopupService }, { type: i2.OperationPopupState }, { type: i3.UtilService }] });
|
|
352
352
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXBvcHVwLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvb3BlcmF0aW9uLXBvcHVwL29wZXJhdGlvbi1wb3B1cC5mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQVMsYUFBYSxFQUE4QixNQUFNLG1DQUFtQyxDQUFDOzs7OztBQU1yRyxNQUFNLE9BQU8sb0JBQW9CO0lBRXJCO0lBQ0E7SUFDQTtJQUhWLFlBQ1UsT0FBOEIsRUFDOUIsS0FBMEIsRUFDMUIsV0FBd0I7UUFGeEIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBZ0I7UUFD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b250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdG9yLCBFcnJvclJlc3BvbnNlLCBGb3JtLCBUYXNrLCBXb3JrZmxvd0FjdGlvbiB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IE9wZXJhdGlvblBvcHVwU2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9uLXBvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlcmF0aW9uUG9wdXBTdGF0ZSB9IGZyb20gJy4vb3BlcmF0aW9uLXBvcHVwLnN0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblBvcHVwRmFjYWRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBPcGVyYXRpb25Qb3B1cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0ZTogT3BlcmF0aW9uUG9wdXBTdGF0ZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzVXBkYXRpbmckKCkuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShsb2FkaW5nKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzVXBkYXRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldElzVXBkYXRpbmckKCk7XG4gIH1cblxuICBnZXROZXh0QWN0aW9ucyQoKTogT2JzZXJ2YWJsZTxXb3JrZmxvd0FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2V0TmV4dEFjdGlvbnMkKCk7XG4gIH1cblxuICBnZXROZXh0QWN0b3JzJCgpOiBPYnNlcnZhYmxlPEFjdG9yW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5nZXROZXh0QWN0b3JzJCgpO1xuICB9XG5cbiAgZ2V0VGFza0Zvcm1zJCgpOiBPYnNlcnZhYmxlPEZvcm1bXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFRhc2tGb3JtcyQoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWROZXh0QWN0aW9ucyh0YXNrQ29kZTogc3RyaW5nKTogUHJvbWlzZTxXb3JrZmxvd0FjdGlvbltdPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldE5leHRBY3Rpb25zKHRhc2tDb2RlKTtcblxuICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dFcnJvcihyZXNwb25zZS5FcnJvck1zZyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGF0ZS5zZXROZXh0QWN0aW9ucyhyZXNwb25zZSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIG5leHQgYWN0aW9uczonLCBlcnJvcik7XG4gICAgICByZXR1cm4gW107XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZFByZXZpb3VzQWN0aW9ucyh0YXNrQ29kZTogc3RyaW5nKTogUHJvbWlzZTxXb3JrZmxvd0FjdGlvbltdPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldFByZXZpb3VzQWN0aW9ucyh0YXNrQ29kZSk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUuc2V0TmV4dEFjdGlvbnMocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBwcmV2aW91cyBhY3Rpb25zOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkQWxsUHJldmlvdXNBY3Rpb25zKHRhc2tDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFdvcmtmbG93QWN0aW9uW10+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKHRydWUpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0QWxsUHJldmlvdXNBY3Rpb25zKHRhc2tDb2RlKTtcblxuICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dFcnJvcihyZXNwb25zZS5FcnJvck1zZyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGF0ZS5zZXROZXh0QWN0aW9ucyhyZXNwb25zZSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGFsbCBwcmV2aW91cyBhY3Rpb25zOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTmV4dEFjdG9ycyhcbiAgICB0YXNrQ29kZTogc3RyaW5nLFxuICAgIGZvckN1cnJlbnRTdGFnZTogYm9vbGVhbixcbiAgICBzdGFnZUNvZGU/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QWN0b3JbXT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXROZXh0QWN0b3JzKHRhc2tDb2RlLCBmb3JDdXJyZW50U3RhZ2UsIHN0YWdlQ29kZSk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUuc2V0TmV4dEFjdG9ycyhyZXNwb25zZSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIG5leHQgYWN0b3JzOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkVGFza0Zvcm1zKHRhc2tDb2RlOiBzdHJpbmcpOiBQcm9taXNlPEZvcm1bXT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDdXJyZW50Rm9ybXNGb3JUYXNrKHRhc2tDb2RlKTtcblxuICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dFcnJvcihyZXNwb25zZS5FcnJvck1zZyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGF0ZS5zZXRUYXNrRm9ybXMocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCB0YXNrIGZvcm1zOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwYXNzT24oXG4gICAgYWN0aW9uOiBXb3JrZmxvd0FjdGlvbixcbiAgICB0YXNrOiBUYXNrLFxuICAgIGNvbW1lbnQ6IHN0cmluZyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyB8IG51bGxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnBhc3NPbihcbiAgICAgICAgYWN0aW9uLkZyb21TdGFnZSxcbiAgICAgICAgYWN0aW9uLlRvU3RhZ2UsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50YXNrLFxuICAgICAgICAgIEZ1bGxTdGFnZXM6IFtdLFxuICAgICAgICAgIEN1cnJlbnRBY3RvcnM6IHRhc2suQ3VycmVudEFjdG9ycy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgQWN0b3JUYWdzOiBbXSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIHJlY2lwaWVudCA/PyB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Rhc2sgcGFzc2VkIG9uIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgdGhpcy5zdGF0ZS5yZXNldFN0YXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwYXNzIG9uIHRhc2s6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGFzc0JhY2soXG4gICAgYWN0aW9uOiBXb3JrZmxvd0FjdGlvbixcbiAgICB0YXNrOiBUYXNrLFxuICAgIGNvbW1lbnQ6IHN0cmluZyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyB8IG51bGxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnBhc3NCYWNrKFxuICAgICAgICBhY3Rpb24uVG9TdGFnZSxcbiAgICAgICAgYWN0aW9uLkZyb21TdGFnZSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRhc2ssXG4gICAgICAgICAgRnVsbFN0YWdlczogW10sXG4gICAgICAgICAgQ3VycmVudEFjdG9yczogdGFzay5DdXJyZW50QWN0b3JzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICBBY3RvclRhZ3M6IFtdLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWVudCxcbiAgICAgICAgcmVjaXBpZW50ID8/IHVuZGVmaW5lZFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dFcnJvcihyZXNwb25zZS5FcnJvck1zZyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnVGFzayBwYXNzZWQgYmFjayBzdWNjZXNzZnVsbHknKTtcbiAgICAgIHRoaXMuc3RhdGUucmVzZXRTdGF0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcGFzcyBiYWNrIHRhc2s6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2tpcFRvKFxuICAgIGZyb206IFdvcmtmbG93QWN0aW9uWydGcm9tU3RhZ2UnXSxcbiAgICB0bzogV29ya2Zsb3dBY3Rpb25bJ1RvU3RhZ2UnXSxcbiAgICB0YXNrOiBUYXNrLFxuICAgIGNvbW1lbnQ6IHN0cmluZyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyB8IG51bGxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNraXBUbyhcbiAgICAgICAgZnJvbSxcbiAgICAgICAgdG8sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50YXNrLFxuICAgICAgICAgIEZ1bGxTdGFnZXM6IFtdLFxuICAgICAgICAgIEN1cnJlbnRBY3RvcnM6IHRhc2suQ3VycmVudEFjdG9ycy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgQWN0b3JUYWdzOiBbXSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIHJlY2lwaWVudCA/PyB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Rhc2sgc2tpcHBlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgIHRoaXMuc3RhdGUucmVzZXRTdGF0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2tpcCB0YXNrOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBpY2tUYXNrKFxuICAgIHRhcmdldFN0YWdlOiBzdHJpbmcsXG4gICAgdGFzazogVGFzayxcbiAgICBjb21tZW50OiBzdHJpbmcsXG4gICAgcmVjaXBpZW50OiBzdHJpbmcgfCBudWxsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5waWNrVGFzayhcbiAgICAgICAgdGFyZ2V0U3RhZ2UsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50YXNrLFxuICAgICAgICAgIEZ1bGxTdGFnZXM6IFtdLFxuICAgICAgICAgIEN1cnJlbnRBY3RvcnM6IHRhc2suQ3VycmVudEFjdG9ycy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgQWN0b3JUYWdzOiBbXSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIHJlY2lwaWVudCA/PyB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Rhc2sgcGlja2VkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgdGhpcy5zdGF0ZS5yZXNldFN0YXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwaWNrIHRhc2s6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsZWFzZVRhc2soXG4gICAgdGFyZ2V0U3RhZ2U6IHN0cmluZyxcbiAgICB0YXNrOiBUYXNrLFxuICAgIGNvbW1lbnQ6IHN0cmluZyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyB8IG51bGxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnJlbGVhc2VUYXNrKFxuICAgICAgICB0YXJnZXRTdGFnZSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRhc2ssXG4gICAgICAgICAgRnVsbFN0YWdlczogW10sXG4gICAgICAgICAgQ3VycmVudEFjdG9yczogdGFzay5DdXJyZW50QWN0b3JzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICBBY3RvclRhZ3M6IFtdLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWVudCxcbiAgICAgICAgcmVjaXBpZW50ID8/IHVuZGVmaW5lZFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dFcnJvcihyZXNwb25zZS5FcnJvck1zZyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnVGFzayByZWxlYXNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgIHRoaXMuc3RhdGUucmVzZXRTdGF0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVsZWFzZSB0YXNrOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZvbGxvd1Rhc2soYWN0b3JJZDogc3RyaW5nLCB0YXNrOiBUYXNrKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmZvbGxvd1Rhc2soXG4gICAgICAgIGFjdG9ySWQsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50YXNrLFxuICAgICAgICAgIEZ1bGxTdGFnZXM6IFtdLFxuICAgICAgICAgIEN1cnJlbnRBY3RvcnM6IHRhc2suQ3VycmVudEFjdG9ycy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgQWN0b3JUYWdzOiBbXSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Rhc2sgZm9sbG93ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICB0aGlzLnN0YXRlLnJlc2V0U3RhdGUoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZvbGxvdyB0YXNrOicsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVuZm9sbG93VGFzayh0YXNrSWQ6IHN0cmluZywgYWN0b3JJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnVuZm9sbG93VGFzayh0YXNrSWQsIGFjdG9ySWQpO1xuXG4gICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd0Vycm9yKHJlc3BvbnNlLkVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKCdUYXNrIHVuZm9sbG93ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICB0aGlzLnN0YXRlLnJlc2V0U3RhdGUoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHVuZm9sbG93IHRhc2s6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVBc3NpZ24odGFzazogVGFzaywgY29tbWVudDogc3RyaW5nLCBmcm9tVXNlcj86IHN0cmluZywgdG9Vc2VyPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyh0cnVlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnJlQXNzaWduKFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGFzayxcbiAgICAgICAgICBGdWxsU3RhZ2VzOiBbXSxcbiAgICAgICAgICBDdXJyZW50QWN0b3JzOiB0YXNrLkN1cnJlbnRBY3RvcnMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgIEFjdG9yVGFnczogW10sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuICAgICAgICBjb21tZW50LFxuICAgICAgICBmcm9tVXNlcixcbiAgICAgICAgdG9Vc2VyXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd0Vycm9yKHJlc3BvbnNlLkVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKCdUYXNrIHJlLWFzc2lnbmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgdGhpcy5zdGF0ZS5yZXNldFN0YXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZS1hc3NpZ24gdGFzazonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRJc1VwZGF0aW5nKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaWxsRm9ybShmb3JtOiBGb3JtLCB0YXNrQ29kZTogc3RyaW5nKTogUHJvbWlzZTxGb3JtIHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLnNldElzVXBkYXRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmljZS5maWxsRm9ybShmb3JtLCB0YXNrQ29kZSk7XG5cbiAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnRm9ybSBmaWxsZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmaWxsIGZvcm06JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0SXNVcGRhdGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|