verben-workflow-ui 0.5.48 → 0.5.49

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.
@@ -659,11 +659,11 @@ class WorkflowFormComponent {
659
659
  return !this.form.valid;
660
660
  }
661
661
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowFormComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
662
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WorkflowFormComponent, selector: "lib-workflow-form", inputs: { operations: { classPropertyName: "operations", publicName: "operations", isSignal: false, isRequired: false, transformFunction: null }, currentData: { classPropertyName: "currentData", publicName: "currentData", isSignal: false, isRequired: false, transformFunction: null }, designerUrl: { classPropertyName: "designerUrl", publicName: "designerUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { switchView: "switchView", onSave: "onSave" }, ngImport: i0, template: "<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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
662
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WorkflowFormComponent, selector: "lib-workflow-form", inputs: { operations: { classPropertyName: "operations", publicName: "operations", isSignal: false, isRequired: false, transformFunction: null }, currentData: { classPropertyName: "currentData", publicName: "currentData", isSignal: false, isRequired: false, transformFunction: null }, designerUrl: { classPropertyName: "designerUrl", publicName: "designerUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { switchView: "switchView", onSave: "onSave" }, ngImport: i0, template: "<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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
663
663
  }
664
664
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowFormComponent, decorators: [{
665
665
  type: Component,
666
- args: [{ selector: 'lib-workflow-form', template: "<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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n" }]
666
+ args: [{ selector: 'lib-workflow-form', template: "<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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n" }]
667
667
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { operations: [{
668
668
  type: Input
669
669
  }], currentData: [{
@@ -1 +1 @@
1
- {"version":3,"file":"verben-workflow-ui-src-lib-components-workflows.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.helper.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.service.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.state.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.module.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/verben-workflow-ui-src-lib-components-workflows.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Workflow>[] = [\n {\n id: 'name',\n header: 'Name',\n accessorKey: 'Name',\n },\n {\n id: 'description',\n header: 'Description',\n accessorKey: 'Description',\n },\n {\n id: 'assignment-type',\n header: 'Assignment Type',\n accessorKey: 'AssignmentType',\n },\n {\n id: 'operation',\n header: 'Operation',\n accessorKey: 'Operation',\n },\n {\n id: 'stage-entry-rule',\n header: 'StageEntryRule',\n accessorKey: 'StageEntryRule',\n },\n {\n id: 'status',\n header: 'Status',\n accessorKey: 'Status',\n },\n { id: 'actions', header: 'Actions', accessorKey: 'Code' },\n];\n","import { DataFilterType } from 'verben-ng-ui';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\n\nexport function convertDataFilterTypeToSearchPropertyValueType(\n type: DataFilterType\n) {\n switch (type) {\n case DataFilterType.String:\n return SearchPropertyValueType.String;\n case DataFilterType.Integer:\n return SearchPropertyValueType.Int;\n case DataFilterType.Decimal:\n return SearchPropertyValueType.Decimal;\n case DataFilterType.Credit:\n return SearchPropertyValueType.Float;\n case DataFilterType.Date:\n return SearchPropertyValueType.Date;\n case DataFilterType.Bool:\n return SearchPropertyValueType.Bool;\n case DataFilterType.Number:\n return SearchPropertyValueType.Int;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ErrorResponse, FormEntity, Paged, SearchPropertyValue, Tag, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService, HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsService {\n private readonly BASE_URL = 'Workflow';\n\n constructor(\n private httpService: HttpWebRequestService,\n private envSvc: EnvironmentService\n ) { }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getWorkflows(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/GetWorkflows/${skip}/${limit}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param param Search parameter\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowWithParam(\n param: string,\n skip: number = 0,\n limit: number = 1,\n sortParam: string = 'CreatedAt',\n sortOrder: string = 'Asc'\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/GetWorkflowsWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param params Filter parameters\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowByFilterParams(\n params: SearchPropertyValue[],\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/SearchWorkflow/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.post(url, params) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Save multiple user access requests\n * @param requests Array of user access requests to save\n * @returns Promise containing the save operation result\n */\n saveWorkflows(requests: Partial<Workflow>[]): Promise<any | ErrorResponse> {\n const url = `${this.BASE_URL}/SaveWorkflows`;\n // const payload = requests.map((wf) => {\n // delete wf[\"Id\"];\n // wf.Actions = wf.Actions.map((ac) => {\n // delete ac[\"Id\"];\n // return ac;\n // })\n // return wf;\n // })\n return this.httpService.post(url, requests);\n }\n\n /**\n * Approve or reject multiple user access requests\n * @param requests Array of user access requests to save\n * @param isApproval True for approval, false for decline\n * @returns Promise containing the save operation result\n */\n processWorkflows(requests: Workflow[], isApproval: boolean): Promise<any | ErrorResponse> {\n const url = `${this.BASE_URL}/WorkflowAction/${isApproval}`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Delete multiple user access requests\n * @param requestIds Array of request IDs to delete\n * @returns Observable containing the delete operation result\n */\n deleteWorkflows(requestIds: string[]): Observable<any | ErrorResponse> {\n const url = `${this.BASE_URL}/DeleteWorkflows`;\n return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getForms(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<FormEntity> | ErrorResponse> {\n const url = `Form/GetFormEntities/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<FormEntity> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getTags(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `User/GetTags/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(\n url,\n this.envSvc.environment.AuthAPI\n ) as Promise<Paged<Tag> | ErrorResponse>;\n }\n\n getWorkflowOperations(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `Workflow/GetWorkflowOperations/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Tag> | ErrorResponse>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IDataFilter } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { QueryParams } from 'verben-workflow-ui/src/lib/models';\nimport { SortDirection } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsState {\n private updating$ = new BehaviorSubject<boolean>(false);\n private requests$ = new BehaviorSubject<Workflow[]>([]);\n private searchTerm$ = new BehaviorSubject<string>('');\n private queryParams$ = new BehaviorSubject<QueryParams<Workflow>>({\n skip: 0,\n limit: 20,\n sortParam: 'CreatedAt',\n sortOrder: SortDirection.Desc,\n });\n private filterParams$ = new BehaviorSubject<IDataFilter[]>([]);\n\n private operations$ = new BehaviorSubject<WorkflowOperation[]>([]);\n\n isUpdating$(): Observable<boolean> {\n return this.updating$.asObservable();\n }\n\n setUpdating(isUpdating: boolean): void {\n this.updating$.next(isUpdating);\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.requests$.asObservable();\n }\n\n setRequests(requests: Workflow[]): void {\n console.log('Setting requests:', requests);\n if (!Array.isArray(requests)) {\n console.error('Expected requests to be an array, but got:', requests);\n } else {\n this.requests$.next(requests);\n }\n }\n\n setOperations(operations: WorkflowOperation[]): void {\n this.operations$.next(operations);\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.operations$.asObservable();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.filterParams$.asObservable();\n }\n\n setFilterParams(params: IDataFilter[]): void {\n this.filterParams$.next(params);\n }\n appendRequests(newRequests: Workflow[]): void {\n const currentRequests = this.requests$.getValue();\n this.requests$.next([...currentRequests, ...newRequests]);\n }\n\n getSearchTerm$(): Observable<string> {\n return this.searchTerm$.asObservable();\n }\n\n getSearchTermValue(): string {\n return this.searchTerm$.getValue();\n }\n\n setSearchTerm(term: string): void {\n this.searchTerm$.next(term);\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.queryParams$.asObservable();\n }\n\n getQueryParamsValue(): QueryParams<Workflow> {\n return this.queryParams$.getValue();\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n }\n\n resetPagination(): void {\n const currentParams = this.queryParams$.getValue();\n this.queryParams$.next({ ...currentParams, skip: 0 });\n }\n\n addRequest(request: Workflow): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next([request, ...currentValue]);\n }\n\n updateRequest(updatedRequest: Workflow): void {\n const requests = this.requests$.getValue();\n const index = requests.findIndex((r) => r.Code === updatedRequest.Code);\n if (index !== -1) {\n requests[index] = updatedRequest;\n this.requests$.next([...requests]);\n }\n }\n\n removeRequest(requestId: string): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next(currentValue.filter((r) => r.Code !== requestId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n debounceTime,\n distinctUntilChanged,\n lastValueFrom,\n takeUntil\n} from 'rxjs';\n\nimport { IDataFilter } from 'verben-ng-ui';\nimport { ErrorResponse, QueryParams, SearchOperator, SearchPropertySign, SortDirection, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { convertDataFilterTypeToSearchPropertyValueType } from './workflows.helper';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n constructor(\n private workflowService: WorkflowsService,\n private workflowState: WorkflowsState,\n private utilService: UtilService\n ) {\n // Set up debounced search handling\n this.searchSubject\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe((searchTerm) => {\n this.handleSearch(searchTerm);\n });\n\n this.isUpdating$().subscribe((loading) => {\n this.utilService.sendBI(loading);\n });\n\n this.getFilterParams$().subscribe((params) => {\n if (params.length) {\n this.loadRequestsByFilterParams(params).catch((error) => {\n console.error('Failed to load requests by filter params:', error);\n this.utilService.showError(\n 'Failed to load requests by filter params'\n );\n });\n } else {\n this.loadRequests();\n }\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n isUpdating$(): Observable<boolean> {\n return this.workflowState.isUpdating$();\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.workflowState.getRequests$();\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.workflowState.getOperations$();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.workflowState.getFilterParams$();\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.workflowState.getQueryParams$();\n }\n\n getSearchTerm$(): Observable<string> {\n return this.workflowState.getSearchTerm$();\n }\n\n // Search handling\n search(term: string): void {\n this.searchSubject.next(term);\n }\n\n private async handleSearch(searchTerm: string): Promise<void> {\n this.workflowState.setSearchTerm(searchTerm);\n this.workflowState.resetPagination();\n\n try {\n this.workflowState.setUpdating(true);\n if (searchTerm.trim()) {\n await this.loadRequestsWithParam(searchTerm);\n } else {\n await this.loadRequests();\n }\n } catch (error) {\n console.error('Search failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async filter(filterParams: IDataFilter[]): Promise<void> {\n this.workflowState.resetPagination();\n this.workflowState.setFilterParams(filterParams);\n }\n\n // Load more handling\n async loadMore(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const currentParams = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Update skip value\n const newSkip = currentParams.skip + currentParams.limit;\n this.workflowState.updateQueryParams({ skip: newSkip });\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n )\n : await this.workflowService.getWorkflows(\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.appendRequests(response.Result);\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n // Load more handling\n async loadDataForExport(\n skip: number,\n limit: number\n ): Promise<Workflow[] | void> {\n try {\n this.workflowState.setUpdating(true);\n const { sortParam, sortOrder } = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n )\n : await this.workflowService.getWorkflows(\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n return response.Result;\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequests(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflows(\n params.skip,\n params.limit,\n params.sortParam || 'CreatedDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadOperations(): Promise<void> {\n try {\n const response = await this.workflowService.getWorkflowOperations(\n 0,\n 0,\n 'CreatedDate',\n SortDirection.Desc\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.setOperations(response.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n }\n }\n\n async loadRequestsWithParam(param: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowWithParam(\n param,\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequestsByFilterParams(filterParams: IDataFilter[]): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowByFilterParams(\n filterParams.map((filter) => ({\n PropertyName: filter.name,\n EntityValue: filter.value,\n type: convertDataFilterTypeToSearchPropertyValueType(filter.type),\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n })),\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.workflowState.updateQueryParams(params);\n this.loadRequests();\n }\n\n async addRequest(request: Partial<Workflow>): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const newRequest = { ...request } as Workflow;\n this.workflowState.addRequest(newRequest);\n newRequest.Id = '';\n newRequest.Code = '';\n const response = await this.workflowService.saveWorkflows([newRequest]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows added successfully');\n // this.workflowState.updateRequest(newRequest);\n await this.loadRequests(); // Reload to get server-side changes\n } catch (error) {\n console.error('Failed to add request:', error);\n this.workflowState.removeRequest(request.Code!);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async updateRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.saveWorkflows([request]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows updated successfully');\n this.workflowState.updateRequest(request);\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async deleteRequest(requestId: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n await lastValueFrom(this.workflowService.deleteWorkflows([requestId]));\n this.workflowState.removeRequest(requestId);\n } catch (error) {\n console.error('Failed to delete request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async approveRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.processWorkflows(\n [request],\n true\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n // console.log(response);\n const data = (response as Workflow[])?.[0];\n if (data) {\n this.workflowState.updateRequest(data);\n }\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n}\n\nenum DateFilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { TaskAssignmentType } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n selector: 'lib-workflow-form',\n templateUrl: './workflow-form.component.html',\n styleUrl: './workflow-form.component.css',\n})\nexport class WorkflowFormComponent {\n @Input() operations: WorkflowOperation[] = [];\n @Input()\n get currentData(): CardData | null {\n return this._currentData;\n }\n set currentData(value: CardData | null) {\n this._currentData = value;\n console.log(value?.data);\n if (value?.data) {\n this.form.patchValue({\n Name: value.data.Name || '',\n Description: value.data.Description || '',\n AssignmentType: value.data.AssignmentType || '',\n Service: value.data.Service || '',\n Operation: value.data.Operation || '',\n Status: value.data.Status || '',\n });\n } else {\n this.form.reset();\n }\n }\n private _currentData: CardData | null = null;\n designerUrl = input<string>('workflow');\n\n @Output() switchView = new EventEmitter<undefined>();\n @Output() onSave = new EventEmitter<Partial<Workflow>>();\n\n form: FormGroup;\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n\n // roles: WritableSignal<Role[]> = signal([]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({\n Name: ['', { validators: [Validators.required] }],\n Description: ['', { validators: [Validators.required] }],\n AssignmentType: ['', { validators: [Validators.required] }],\n Service: [''],\n Operation: [''],\n Status: ['', { validators: [Validators.required] }],\n });\n }\n\n ngOnInit(): void {\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n // try {\n // this.userAccessRequestFacade.loadRoles();\n // } catch (error) {\n // // Handle error\n // }\n console.log(this.currentData?.data);\n }\n\n handleSubmit(): void {\n if (this.form.valid) {\n // Emit save event with form value\n console.log('Form saved:', this.form.value);\n this.onSave.emit(this.form.value);\n }\n }\n\n onDelete(): void {\n // Emit delete event\n console.log('Delete requested');\n }\n\n disableProcessing(): boolean {\n return !this.form.valid;\n }\n}\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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { CardData, IDataFilter } from 'verben-ng-ui';\nimport { ObjectState, PermissionConfig, Status, TaskAssignmentType, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { BaseDataViewComponent, DataViewConfig } from 'verben-workflow-ui/src/lib/shared';\nimport { columns } from './workflows.columns';\nimport { WorkflowFacade } from './workflows.facade';\n\n@Component({\n selector: 'lib-workflows',\n templateUrl: './workflows.component.html',\n styleUrl: './workflows.component.css',\n})\nexport class WorkflowsComponent extends BaseDataViewComponent<Workflow> {\n designerUrl = input<string>('workflow');\n permissionConfig = input<PermissionConfig | null>(null);\n\n config: DataViewConfig<Workflow> = {\n dataSource: [],\n columns: columns,\n cardDataMapper: (task) => ({\n selected: false,\n title: task.Name,\n data: task,\n body: [\n { title: 'Name', value: task.Name },\n { title: 'Status', value: task.Status },\n { title: 'AssignmentType', value: task.AssignmentType },\n ],\n children: [],\n }),\n onDetailView: (task) => {\n // Custom detail view logic\n },\n };\n\n editForms: Map<number, FormGroup> = new Map();\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n operations: WritableSignal<WorkflowOperation[]> = signal([]);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private facade: WorkflowFacade,\n private fb: FormBuilder\n ) {\n super();\n\n this.loadData = this.loadData.bind(this);\n\n this.facade.getRequests$().subscribe((data) => {\n this.data.set(data);\n });\n\n this.facade.getOperations$().subscribe((data) => {\n this.operations.set(data);\n });\n }\n\n generateFormGroup(data?: Partial<Workflow>) {\n console.log(data);\n const form = this.fb.group({\n // Name: [data?.Name ?? '', { validators: [Validators.required] }],\n Name: new FormControl(data?.Name ?? '', [Validators.required]),\n Description: new FormControl(data?.Description ?? '', [\n Validators.required,\n ]),\n AssignmentType: new FormControl(data?.AssignmentType ?? '', [\n Validators.required,\n ]),\n // Service: [data?.Service ?? ''],\n Operation: [data?.Operation ?? ''],\n Status: new FormControl(data?.Status ?? '', [Validators.required]),\n });\n // console.log(form.value);\n return form;\n }\n\n getFormControl(index: number, field: string) {\n const control = this.editForms.get(index)?.get(field) as FormControl<any>;\n console.log(control);\n return control;\n }\n\n isRowValid(index: number): boolean {\n return this.editForms.get(index)?.valid || false;\n }\n\n override loadInitialData() {\n // this.userService.getRequests().subscribe(\n // tasks => this.data.set(tasks)\n // );\n // this.data.set(generateWorkflows(5));\n super.loadInitialData();\n // this.data = this.service.getMockUserRequests();\n\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n\n try {\n this.facade.loadRequests().then(() => {\n this.facade.loadOperations();\n });\n // this.userAccessRequestFacade.loadRoles();\n } catch (error) {\n // Handle error\n }\n }\n\n protected getCardDataByIdentifier(code: string): CardData | undefined {\n return this.cardData().find(({ data }) => data.data.Code === code);\n }\n\n loadMore() {\n // this.cardData = this.cardData.concat(this.cardData);\n }\n\n async onSave(data: Partial<Workflow>) {\n const payload = {\n ...this.currentData?.data,\n ...data,\n } as Workflow;\n if (payload.DataState === ObjectState.New) {\n console.log('Payload in new', payload);\n await this.facade.addRequest(payload);\n } else {\n console.log('Payload in update', payload);\n await this.facade.updateRequest({\n ...payload,\n DataState: ObjectState.Changed,\n });\n }\n }\n\n async commitRowChange(\n rowIndex: number,\n row: Workflow,\n postCommit?: () => void\n ) {\n const data = this.editForms.get(rowIndex)?.value as Partial<Workflow>;\n console.log();\n if (data) {\n const datum = {\n ...row,\n ...data,\n } as Workflow;\n if (datum.DataState === ObjectState.New) {\n this.facade.addRequest(datum).then(() => {\n postCommit?.();\n });\n } else {\n datum.DataState = ObjectState.Changed;\n this.facade.updateRequest(datum).then(() => {\n postCommit?.();\n });\n }\n }\n }\n\n onFilterSet(event: IDataFilter[]) {\n this.filterArray = event;\n this.config.filterOptions = event;\n this.facade.filter(event).then(() => {\n this.cdr.markForCheck();\n });\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.facade.search(event.value);\n }\n\n override onStateChange(event: { key: string; value: boolean }): void {\n console.log(`State changed for ${event.key}:`, event.value);\n switch (event.key) {\n case 'create':\n const timestamp = new Date();\n var newForm: Workflow = {\n Name: '',\n Description: '',\n StageEntryRule: '',\n AssignmentType: TaskAssignmentType.AutoRoute,\n TenantId: '',\n ServiceName: '',\n id: crypto.randomUUID(),\n Id: '',\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Status: Status.Active,\n Actions: [],\n Lanes: [],\n Stages: [],\n };\n this.data.update((prev) => [newForm, ...prev]);\n // console.log(newForm);\n break;\n default:\n break;\n }\n }\n\n async loadData(range: { skip: number; limit: number }) {\n const data = await this.facade.loadDataForExport(range.skip, range.limit);\n return data ?? [];\n }\n}\n","<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: !!permissionConfig()?.Actions?.['Export'],\n isSelect: true,\n isCreate: !!permissionConfig()?.Actions?.['Create'],\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Name')\"\n ></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Description')\"\n ></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"assignment-type\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n [formControl]=\"getFormControl(rowIndex, 'AssignmentType')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"operation\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <!-- <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n ></verbena-input> -->\n <verben-drop-down\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations()\"\n optionLabel=\"Description\"\n optionValue=\"Description\"\n id=\"operation\"\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"value == 'Active' ? '#CAE1CC' : '#FFDFDF'\"\n [textColor]=\"value == 'Active' ? '#4ABB54' : '#EB5757'\"\n fontSize=\"12px\"\n [text]=\"value\"\n [pd]=\"'2px 6px'\"\n ></verbena-badge>\n </ng-template>\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Null\"\n [options]=\"statuses\"\n [formControl]=\"getFormControl(rowIndex, 'Status')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <verben-svg\n (click)=\"\n editForms.set(rowIndex, generateFormGroup(row));\n toggleRowEdit()\n \"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n }\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <a [routerLink]=\"[designerUrl(), value]\">\n <verben-svg\n icon=\"designer\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </a>\n }\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"commitRowChange(rowIndex, row, toggleRowEdit)\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Code\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex justify-between gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 flex flex-col justify-between space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate line-clamp-1\"\n >{{ item.title }}</span\n >\n\n <span id=\"role\" class=\"text-sm line-clamp-1 truncate\">\n {{\n item.data?.Operation\n }}\n </span>\n\n <!-- <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Assignment:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.AssignmentType\n }}</span>\n </p> -->\n </div>\n\n <div class=\"grid gap-y-1 w-fit justify-items-end\">\n <!-- <p class=\"grid\">\n <span id=\"role\" class=\"text-sm font-medium line-clamp-1 truncate\">{{\n item.data?.Operation\n }}</span>\n </p> -->\n <span id=\"phone\" class=\"text-sm\">\n {{ item.data.AssignmentType }}\n </span>\n\n <div class=\"flex gap-4 items-center\">\n @if (!!permissionConfig()?.Actions?.['Design'] && item.data?.Code) {\n <a [routerLink]=\"[designerUrl(), item.data.Code]\">\n <verben-svg\n icon=\"designer\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"$event.stopPropagation()\"\n ></verben-svg>\n </a>\n }\n\n <verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"\n item.data.Status == 'Active' ? '#CAE1CC' : '#FFDFDF'\n \"\n [textColor]=\"\n item.data.Status == 'Active' ? '#4ABB54' : '#EB5757'\n \"\n fontSize=\"12px\"\n [text]=\"item.data.Status\"\n [pd]=\"'2px 6px'\"\n ></verbena-badge>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-workflow-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n [operations]=\"operations()\"\n [designerUrl]=\"designerUrl()\"\n ></lib-workflow-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div class=\"flex gap-2 items-center justify-end\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n\n <div column-content>\n <!-- <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column> -->\n\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterSet($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <!-- <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table> -->\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n [dataQueryFunction]=\"loadData\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WorkflowsComponent } from './workflows.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowFormComponent } from './workflow-form/workflow-form.component';\n\n@NgModule({\n declarations: [WorkflowsComponent, WorkflowFormComponent],\n imports: [CommonModule, SharedModule, RouterLink],\n exports: [WorkflowsComponent],\n})\nexport class WorkflowsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WorkflowsService","i2.WorkflowsState","i3","i1","i2","i1.WorkflowFacade","i5","i6.WorkflowFormComponent"],"mappings":";;;;;;;;;;;;;;;AAGO,MAAM,OAAO,GAAiC;AACnD,IAAA;AACE,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,WAAW,EAAE,MAAM;AACpB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,aAAa;AACjB,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,WAAW,EAAE,aAAa;AAC3B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,iBAAiB;AACrB,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,WAAW,EAAE,WAAW;AACzB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,kBAAkB;AACtB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,WAAW,EAAE,QAAQ;AACtB,KAAA;IACD,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;CAC1D;;AChCK,SAAU,8CAA8C,CAC5D,IAAoB,EAAA;IAEpB,QAAQ,IAAI;QACV,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,MAAM,CAAC;QACxC,KAAK,cAAc,CAAC,OAAO;YACzB,OAAO,uBAAuB,CAAC,GAAG,CAAC;QACrC,KAAK,cAAc,CAAC,OAAO;YACzB,OAAO,uBAAuB,CAAC,OAAO,CAAC;QACzC,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,KAAK,CAAC;QACvC,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,uBAAuB,CAAC,IAAI,CAAC;QACtC,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,uBAAuB,CAAC,IAAI,CAAC;QACtC,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,GAAG,CAAC;KACtC;AACH;;MCda,gBAAgB,CAAA;AAIjB,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;IAJO,QAAQ,GAAG,UAAU,CAAC;IAEvC,WACU,CAAA,WAAkC,EAClC,MAA0B,EAAA;QAD1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;KAC/B;AAEL;;;;;;;AAOG;AACH,IAAA,YAAY,CACV,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA6C,CAAC;KAC9E;AAED;;;;;;;;AAQG;AACH,IAAA,oBAAoB,CAClB,KAAa,EACb,IAAA,GAAe,CAAC,EAChB,KAAgB,GAAA,CAAC,EACjB,SAAA,GAAoB,WAAW,EAC/B,YAAoB,KAAK,EAAA;AAEzB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAA0B,uBAAA,EAAA,KAAK,CAAI,CAAA,EAAA,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;QACzG,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA6C,CAAC;KAC9E;AAED;;;;;;;;AAQG;IACH,yBAAyB,CACvB,MAA6B,EAC7B,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;AAEjB,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAA6C,CAAC;KACvF;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,QAA6B,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,gBAAgB,CAAC;;;;;;;;;QAS7C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;IACH,gBAAgB,CAAC,QAAoB,EAAE,UAAmB,EAAA;QACxD,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,UAAoB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,kBAAkB,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAG,EAAA,GAAG,CAAS,MAAA,EAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;KACvE;AAED;;;;;;;AAOG;AACH,IAAA,QAAQ,CACN,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA+C,CAAC;KAChF;AAED;;;;;;;AAOG;AACH,IAAA,OAAO,CACL,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AACtE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CACzB,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CACO,CAAC;KAC1C;AAED,IAAA,qBAAqB,CACnB,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QACxF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAwC,CAAC;KACzE;wGAxJU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,cAAc,CAAA;AACjB,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAChD,IAAA,SAAS,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC,CAAC;AAChD,IAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;IAC9C,YAAY,GAAG,IAAI,eAAe,CAAwB;AAChE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,aAAa,CAAC,IAAI;AAC9B,KAAA,CAAC,CAAC;AACK,IAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;AAEvD,IAAA,WAAW,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;IAEnE,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,UAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACjC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,QAAoB,EAAA;AAC9B,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,QAAQ,CAAC,CAAC;SACvE;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;KACF;AAED,IAAA,aAAa,CAAC,UAA+B,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,eAAe,CAAC,MAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;AACD,IAAA,cAAc,CAAC,WAAuB,EAAA;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;KAC3D;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACpC;AAED,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;IAED,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACrC;AAED,IAAA,iBAAiB,CAAC,MAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;KACxE;IAED,eAAe,GAAA;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,UAAU,CAAC,OAAiB,EAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;KACjD;AAED,IAAA,aAAa,CAAC,cAAwB,EAAA;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AACxE,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;SACpC;KACF;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;KACvE;wGArGU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,cAAc,CAAA;AAKf,IAAA,eAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,WAAA,CAAA;AANF,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AACtC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEvC,IAAA,WAAA,CACU,eAAiC,EACjC,aAA6B,EAC7B,WAAwB,EAAA;QAFxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;QACjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;;AAGhC,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CACH,YAAY,CAAC,IAAI,CAAC,EAClB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC3C,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACtD,oBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AAClE,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CACxB,0CAA0C,CAC3C,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;AACH,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;KAC5C;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;KAC9C;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;KAC7C;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;KAC5C;;AAGD,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEO,MAAM,YAAY,CAAC,UAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AAErC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE;AACrB,gBAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;aAC9C;iBAAM;AACL,gBAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;aAC3B;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvC,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,MAAM,CAAC,YAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;KAClD;;AAGD,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;;YAG3D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;YAGxD,MAAM,QAAQ,GAAG,UAAU;kBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC/C,UAAU,EACV,OAAO,EACP,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,SAAS,IAAI,aAAa,EACxC,aAAa,CAAC,SAAS,CACxB;kBACC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACvC,OAAO,EACP,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,SAAS,IAAI,aAAa,EACxC,aAAa,CAAC,SAAS,CACxB,CAAC;AAEJ,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;;AAGD,IAAA,MAAM,iBAAiB,CACrB,IAAY,EACZ,KAAa,EAAA;AAEb,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;;YAG3D,MAAM,QAAQ,GAAG,UAAU;AACzB,kBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC/C,UAAU,EACV,IAAI,EACJ,KAAK,EACL,SAAS,IAAI,aAAa,EAC1B,SAAS,CACV;AACD,kBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACvC,IAAI,EACJ,KAAK,EACL,SAAS,IAAI,aAAa,EAC1B,SAAS,CACV,CAAC;AAEJ,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,OAAO,QAAQ,CAAC,MAAM,CAAC;SACxB;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACtD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAC/D,CAAC,EACD,CAAC,EACD,aAAa,EACb,aAAa,CAAC,IAAI,CACnB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;SACT;KACF;IAED,MAAM,qBAAqB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAExD,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC9D,KAAK,EACL,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,0BAA0B,CAAC,YAA2B,EAAA;AAC1D,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAExD,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,yBAAyB,CACnE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;gBAC5B,YAAY,EAAE,MAAM,CAAC,IAAI;gBACzB,WAAW,EAAE,MAAM,CAAC,KAAK;AACzB,gBAAA,IAAI,EAAE,8CAA8C,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjE,QAAQ,EAAE,cAAc,CAAC,GAAG;gBAC5B,IAAI,EAAE,kBAAkB,CAAC,EAAE;aAC5B,CAAC,CAAC,EACH,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,iBAAiB,CAAC,MAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,MAAM,UAAU,CAAC,OAA0B,EAAA;AACzC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAc,CAAC;AAC9C,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C,YAAA,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;AACnB,YAAA,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAExE,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;;AAE7D,YAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;SAC3B;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,aAAa,CAAC,OAAiB,EAAA;AACnC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAErE,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,aAAa,CAAC,SAAiB,EAAA;AACnC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,cAAc,CAAC,OAAiB,EAAA;AACpC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAC1D,CAAC,OAAO,CAAC,EACT,IAAI,CACL,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;;AAGD,YAAA,MAAM,IAAI,GAAI,QAAuB,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACxC;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;wGArXU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAyXD,IAAK,eAIJ,CAAA;AAJD,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,IAA8B,CAAA;AAC9B,IAAA,eAAA,CAAA,IAAA,CAAA,GAAA,IAA0B,CAAA;AAC1B,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,IAA6B,CAAA;AAC/B,CAAC,EAJI,eAAe,KAAf,eAAe,GAInB,EAAA,CAAA,CAAA;;MCnYY,qBAAqB,CAAA;AAkCZ,IAAA,EAAA,CAAA;IAjCX,UAAU,GAAwB,EAAE,CAAC;AAC9C,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,KAAK,EAAE,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE;AACzC,gBAAA,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE;AAC/C,gBAAA,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;AACjC,gBAAA,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;AACrC,gBAAA,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;AAChC,aAAA,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;SACnB;KACF;IACO,YAAY,GAAoB,IAAI,CAAC;AAC7C,IAAA,WAAW,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;AAE9B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAa,CAAC;AAC3C,IAAA,MAAM,GAAG,IAAI,YAAY,EAAqB,CAAC;AAEzD,IAAA,IAAI,CAAY;AAChB,IAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpD,IAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;AAIjC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxD,YAAA,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,SAAS,EAAE,CAAC,EAAE,CAAC;AACf,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpD,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;;;;;;;;;QASN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KACrC;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;YAEnB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACF;IAED,QAAQ,GAAA;;AAEN,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;KACjC;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACzB;wGAxEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,2hBCblC,kqGA4HA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD/Ga,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,kqGAAA,EAAA,CAAA;kFAKpB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAuBI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AEfH,MAAO,kBAAmB,SAAQ,qBAA+B,CAAA;AA6B3D,IAAA,GAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,EAAA,CAAA;AA9BV,IAAA,WAAW,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;AACxC,IAAA,gBAAgB,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;AAExD,IAAA,MAAM,GAA6B;AACjC,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE,CAAC,IAAI,MAAM;AACzB,YAAA,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE;gBACJ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE;gBACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;gBACvC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;AACxD,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;AACF,QAAA,YAAY,EAAE,CAAC,IAAI,KAAI;;SAEtB;KACF,CAAC;AAEF,IAAA,SAAS,GAA2B,IAAI,GAAG,EAAE,CAAC;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpD,IAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,IAAA,UAAU,GAAwC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7D,IAAA,WAAA,CACU,GAAsB,EACtB,MAAsB,EACtB,EAAe,EAAA;AAEvB,QAAA,KAAK,EAAE,CAAC;QAJA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAIvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC5C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;;AAEzB,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9D,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,EAAE;AACpD,gBAAA,UAAU,CAAC,QAAQ;aACpB,CAAC;YACF,cAAc,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,cAAc,IAAI,EAAE,EAAE;AAC1D,gBAAA,UAAU,CAAC,QAAQ;aACpB,CAAC;;AAEF,YAAA,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;AAClC,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,SAAA,CAAC,CAAC;;AAEH,QAAA,OAAO,IAAI,CAAC;KACb;IAED,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAqB,CAAC;AAC1E,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC;KAClD;IAEQ,eAAe,GAAA;;;;;QAKtB,KAAK,CAAC,eAAe,EAAE,CAAC;;;;;AAOxB,QAAA,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAK;AACnC,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AAC/B,aAAC,CAAC,CAAC;;SAEJ;QAAC,OAAO,KAAK,EAAE;;SAEf;KACF;AAES,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;KACpE;IAED,QAAQ,GAAA;;KAEP;IAED,MAAM,MAAM,CAAC,IAAuB,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI;AACzB,YAAA,GAAG,IAAI;SACI,CAAC;QACd,IAAI,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE;AACzC,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACvC;aAAM;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC1C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC9B,gBAAA,GAAG,OAAO;gBACV,SAAS,EAAE,WAAW,CAAC,OAAO;AAC/B,aAAA,CAAC,CAAC;SACJ;KACF;AAED,IAAA,MAAM,eAAe,CACnB,QAAgB,EAChB,GAAa,EACb,UAAuB,EAAA;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAA0B,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,GAAG;AACN,gBAAA,GAAG,IAAI;aACI,CAAC;YACd,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;oBACtC,UAAU,IAAI,CAAC;AACjB,iBAAC,CAAC,CAAC;aACJ;iBAAM;AACL,gBAAA,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;oBACzC,UAAU,IAAI,CAAC;AACjB,iBAAC,CAAC,CAAC;aACJ;SACF;KACF;AAED,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,KAAqC,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACjC;AAEQ,IAAA,aAAa,CAAC,KAAsC,EAAA;AAC3D,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,KAAK,CAAC,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7B,gBAAA,IAAI,OAAO,GAAa;AACtB,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,kBAAkB,CAAC,SAAS;AAC5C,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;AACvB,oBAAA,EAAE,EAAE,EAAE;oBACN,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,SAAS,EAAE,WAAW,CAAC,GAAG;AAC1B,oBAAA,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,EAAE;iBACX,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;gBAE/C,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;IAED,MAAM,QAAQ,CAAC,KAAsC,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,IAAI,EAAE,CAAC;KACnB;wGAjMU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2XCxB/B,w+dA+aA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDvZa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,w+dAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,CAAA;;;MEPd,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAf,eAAe,EAAA,YAAA,EAAA,CAJX,kBAAkB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC9C,YAAY,EAAE,YAAY,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CACtC,kBAAkB,CAAA,EAAA,CAAA,CAAA;yGAEjB,eAAe,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;oBACjD,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"verben-workflow-ui-src-lib-components-workflows.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.helper.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.service.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.state.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflow-form/workflow-form.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.component.html","../../../projects/verben-workflow-ui/src/lib/components/workflows/workflows.module.ts","../../../projects/verben-workflow-ui/src/lib/components/workflows/verben-workflow-ui-src-lib-components-workflows.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Workflow>[] = [\n {\n id: 'name',\n header: 'Name',\n accessorKey: 'Name',\n },\n {\n id: 'description',\n header: 'Description',\n accessorKey: 'Description',\n },\n {\n id: 'assignment-type',\n header: 'Assignment Type',\n accessorKey: 'AssignmentType',\n },\n {\n id: 'operation',\n header: 'Operation',\n accessorKey: 'Operation',\n },\n {\n id: 'stage-entry-rule',\n header: 'StageEntryRule',\n accessorKey: 'StageEntryRule',\n },\n {\n id: 'status',\n header: 'Status',\n accessorKey: 'Status',\n },\n { id: 'actions', header: 'Actions', accessorKey: 'Code' },\n];\n","import { DataFilterType } from 'verben-ng-ui';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\n\nexport function convertDataFilterTypeToSearchPropertyValueType(\n type: DataFilterType\n) {\n switch (type) {\n case DataFilterType.String:\n return SearchPropertyValueType.String;\n case DataFilterType.Integer:\n return SearchPropertyValueType.Int;\n case DataFilterType.Decimal:\n return SearchPropertyValueType.Decimal;\n case DataFilterType.Credit:\n return SearchPropertyValueType.Float;\n case DataFilterType.Date:\n return SearchPropertyValueType.Date;\n case DataFilterType.Bool:\n return SearchPropertyValueType.Bool;\n case DataFilterType.Number:\n return SearchPropertyValueType.Int;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ErrorResponse, FormEntity, Paged, SearchPropertyValue, Tag, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService, HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsService {\n private readonly BASE_URL = 'Workflow';\n\n constructor(\n private httpService: HttpWebRequestService,\n private envSvc: EnvironmentService\n ) { }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getWorkflows(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/GetWorkflows/${skip}/${limit}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param param Search parameter\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowWithParam(\n param: string,\n skip: number = 0,\n limit: number = 1,\n sortParam: string = 'CreatedAt',\n sortOrder: string = 'Asc'\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/GetWorkflowsWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with additional parameter, pagination and sorting\n * @param params Filter parameters\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the filtered user access requests\n */\n getWorkflowByFilterParams(\n params: SearchPropertyValue[],\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Workflow> | ErrorResponse> {\n const url = `${this.BASE_URL}/SearchWorkflow/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.post(url, params) as Promise<Paged<Workflow> | ErrorResponse>;\n }\n\n /**\n * Save multiple user access requests\n * @param requests Array of user access requests to save\n * @returns Promise containing the save operation result\n */\n saveWorkflows(requests: Partial<Workflow>[]): Promise<any | ErrorResponse> {\n const url = `${this.BASE_URL}/SaveWorkflows`;\n // const payload = requests.map((wf) => {\n // delete wf[\"Id\"];\n // wf.Actions = wf.Actions.map((ac) => {\n // delete ac[\"Id\"];\n // return ac;\n // })\n // return wf;\n // })\n return this.httpService.post(url, requests);\n }\n\n /**\n * Approve or reject multiple user access requests\n * @param requests Array of user access requests to save\n * @param isApproval True for approval, false for decline\n * @returns Promise containing the save operation result\n */\n processWorkflows(requests: Workflow[], isApproval: boolean): Promise<any | ErrorResponse> {\n const url = `${this.BASE_URL}/WorkflowAction/${isApproval}`;\n return this.httpService.post(url, requests);\n }\n\n /**\n * Delete multiple user access requests\n * @param requestIds Array of request IDs to delete\n * @returns Observable containing the delete operation result\n */\n deleteWorkflows(requestIds: string[]): Observable<any | ErrorResponse> {\n const url = `${this.BASE_URL}/DeleteWorkflows`;\n return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getForms(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<FormEntity> | ErrorResponse> {\n const url = `Form/GetFormEntities/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<FormEntity> | ErrorResponse>;\n }\n\n /**\n * Get user access requests with pagination and sorting\n * @param skip Number of records to skip\n * @param limit Number of records to take\n * @param sortParam Sort parameter\n * @param sortOrder Sort order ('asc' or 'desc')\n * @returns Promise containing the user access requests\n */\n getTags(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `User/GetTags/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(\n url,\n this.envSvc.environment.AuthAPI\n ) as Promise<Paged<Tag> | ErrorResponse>;\n }\n\n getWorkflowOperations(\n skip: number,\n limit: number,\n sortParam: string,\n sortOrder: string\n ): Promise<Paged<Tag> | ErrorResponse> {\n const url = `Workflow/GetWorkflowOperations/${skip}/${limit}/${sortParam}/${sortOrder}`;\n return this.httpService.get(url) as Promise<Paged<Tag> | ErrorResponse>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IDataFilter } from 'verben-ng-ui';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { QueryParams } from 'verben-workflow-ui/src/lib/models';\nimport { SortDirection } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowsState {\n private updating$ = new BehaviorSubject<boolean>(false);\n private requests$ = new BehaviorSubject<Workflow[]>([]);\n private searchTerm$ = new BehaviorSubject<string>('');\n private queryParams$ = new BehaviorSubject<QueryParams<Workflow>>({\n skip: 0,\n limit: 20,\n sortParam: 'CreatedAt',\n sortOrder: SortDirection.Desc,\n });\n private filterParams$ = new BehaviorSubject<IDataFilter[]>([]);\n\n private operations$ = new BehaviorSubject<WorkflowOperation[]>([]);\n\n isUpdating$(): Observable<boolean> {\n return this.updating$.asObservable();\n }\n\n setUpdating(isUpdating: boolean): void {\n this.updating$.next(isUpdating);\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.requests$.asObservable();\n }\n\n setRequests(requests: Workflow[]): void {\n console.log('Setting requests:', requests);\n if (!Array.isArray(requests)) {\n console.error('Expected requests to be an array, but got:', requests);\n } else {\n this.requests$.next(requests);\n }\n }\n\n setOperations(operations: WorkflowOperation[]): void {\n this.operations$.next(operations);\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.operations$.asObservable();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.filterParams$.asObservable();\n }\n\n setFilterParams(params: IDataFilter[]): void {\n this.filterParams$.next(params);\n }\n appendRequests(newRequests: Workflow[]): void {\n const currentRequests = this.requests$.getValue();\n this.requests$.next([...currentRequests, ...newRequests]);\n }\n\n getSearchTerm$(): Observable<string> {\n return this.searchTerm$.asObservable();\n }\n\n getSearchTermValue(): string {\n return this.searchTerm$.getValue();\n }\n\n setSearchTerm(term: string): void {\n this.searchTerm$.next(term);\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.queryParams$.asObservable();\n }\n\n getQueryParamsValue(): QueryParams<Workflow> {\n return this.queryParams$.getValue();\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n }\n\n resetPagination(): void {\n const currentParams = this.queryParams$.getValue();\n this.queryParams$.next({ ...currentParams, skip: 0 });\n }\n\n addRequest(request: Workflow): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next([request, ...currentValue]);\n }\n\n updateRequest(updatedRequest: Workflow): void {\n const requests = this.requests$.getValue();\n const index = requests.findIndex((r) => r.Code === updatedRequest.Code);\n if (index !== -1) {\n requests[index] = updatedRequest;\n this.requests$.next([...requests]);\n }\n }\n\n removeRequest(requestId: string): void {\n const currentValue = this.requests$.getValue();\n this.requests$.next(currentValue.filter((r) => r.Code !== requestId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n debounceTime,\n distinctUntilChanged,\n lastValueFrom,\n takeUntil\n} from 'rxjs';\n\nimport { IDataFilter } from 'verben-ng-ui';\nimport { ErrorResponse, QueryParams, SearchOperator, SearchPropertySign, SortDirection, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { convertDataFilterTypeToSearchPropertyValueType } from './workflows.helper';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowsState } from './workflows.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n constructor(\n private workflowService: WorkflowsService,\n private workflowState: WorkflowsState,\n private utilService: UtilService\n ) {\n // Set up debounced search handling\n this.searchSubject\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe((searchTerm) => {\n this.handleSearch(searchTerm);\n });\n\n this.isUpdating$().subscribe((loading) => {\n this.utilService.sendBI(loading);\n });\n\n this.getFilterParams$().subscribe((params) => {\n if (params.length) {\n this.loadRequestsByFilterParams(params).catch((error) => {\n console.error('Failed to load requests by filter params:', error);\n this.utilService.showError(\n 'Failed to load requests by filter params'\n );\n });\n } else {\n this.loadRequests();\n }\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n isUpdating$(): Observable<boolean> {\n return this.workflowState.isUpdating$();\n }\n\n getRequests$(): Observable<Workflow[]> {\n return this.workflowState.getRequests$();\n }\n\n getOperations$(): Observable<WorkflowOperation[]> {\n return this.workflowState.getOperations$();\n }\n\n getFilterParams$(): Observable<IDataFilter[]> {\n return this.workflowState.getFilterParams$();\n }\n\n getQueryParams$(): Observable<QueryParams<Workflow>> {\n return this.workflowState.getQueryParams$();\n }\n\n getSearchTerm$(): Observable<string> {\n return this.workflowState.getSearchTerm$();\n }\n\n // Search handling\n search(term: string): void {\n this.searchSubject.next(term);\n }\n\n private async handleSearch(searchTerm: string): Promise<void> {\n this.workflowState.setSearchTerm(searchTerm);\n this.workflowState.resetPagination();\n\n try {\n this.workflowState.setUpdating(true);\n if (searchTerm.trim()) {\n await this.loadRequestsWithParam(searchTerm);\n } else {\n await this.loadRequests();\n }\n } catch (error) {\n console.error('Search failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async filter(filterParams: IDataFilter[]): Promise<void> {\n this.workflowState.resetPagination();\n this.workflowState.setFilterParams(filterParams);\n }\n\n // Load more handling\n async loadMore(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const currentParams = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Update skip value\n const newSkip = currentParams.skip + currentParams.limit;\n this.workflowState.updateQueryParams({ skip: newSkip });\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n )\n : await this.workflowService.getWorkflows(\n newSkip,\n currentParams.limit,\n currentParams.sortParam || 'createdDate',\n currentParams.sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.appendRequests(response.Result);\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n // Load more handling\n async loadDataForExport(\n skip: number,\n limit: number\n ): Promise<Workflow[] | void> {\n try {\n this.workflowState.setUpdating(true);\n const { sortParam, sortOrder } = this.workflowState.getQueryParamsValue();\n const searchTerm = this.workflowState.getSearchTermValue();\n\n // Load and append data\n const response = searchTerm\n ? await this.workflowService.getWorkflowWithParam(\n searchTerm,\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n )\n : await this.workflowService.getWorkflows(\n skip,\n limit,\n sortParam || 'createdDate',\n sortOrder\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n return response.Result;\n } catch (error) {\n console.error('Load more failed:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequests(): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflows(\n params.skip,\n params.limit,\n params.sortParam || 'CreatedDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadOperations(): Promise<void> {\n try {\n const response = await this.workflowService.getWorkflowOperations(\n 0,\n 0,\n 'CreatedDate',\n SortDirection.Desc\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.workflowState.setOperations(response.Result);\n } catch (error) {\n console.error('Failed to load requests:', error);\n throw error;\n } finally {\n }\n }\n\n async loadRequestsWithParam(param: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowWithParam(\n param,\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async loadRequestsByFilterParams(filterParams: IDataFilter[]): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const params = this.workflowState.getQueryParamsValue();\n\n const requests = await this.workflowService.getWorkflowByFilterParams(\n filterParams.map((filter) => ({\n PropertyName: filter.name,\n EntityValue: filter.value,\n type: convertDataFilterTypeToSearchPropertyValueType(filter.type),\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n })),\n params.skip,\n params.limit,\n params.sortParam || 'createdDate',\n params.sortOrder\n );\n\n if (requests instanceof ErrorResponse) {\n this.utilService.showError(requests.ErrorMsg);\n return;\n }\n\n this.workflowState.setRequests(requests.Result);\n } catch (error) {\n console.error('Failed to load requests with param:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n updateQueryParams(params: Partial<QueryParams<Workflow>>): void {\n this.workflowState.updateQueryParams(params);\n this.loadRequests();\n }\n\n async addRequest(request: Partial<Workflow>): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const newRequest = { ...request } as Workflow;\n this.workflowState.addRequest(newRequest);\n newRequest.Id = '';\n newRequest.Code = '';\n const response = await this.workflowService.saveWorkflows([newRequest]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows added successfully');\n // this.workflowState.updateRequest(newRequest);\n await this.loadRequests(); // Reload to get server-side changes\n } catch (error) {\n console.error('Failed to add request:', error);\n this.workflowState.removeRequest(request.Code!);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async updateRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.saveWorkflows([request]);\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n this.utilService.showSuccess('Workflows updated successfully');\n this.workflowState.updateRequest(request);\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async deleteRequest(requestId: string): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n await lastValueFrom(this.workflowService.deleteWorkflows([requestId]));\n this.workflowState.removeRequest(requestId);\n } catch (error) {\n console.error('Failed to delete request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n\n async approveRequest(request: Workflow): Promise<void> {\n try {\n this.workflowState.setUpdating(true);\n const response = await this.workflowService.processWorkflows(\n [request],\n true\n );\n\n if (response instanceof ErrorResponse) {\n this.utilService.showError(response.ErrorMsg);\n return;\n }\n\n // console.log(response);\n const data = (response as Workflow[])?.[0];\n if (data) {\n this.workflowState.updateRequest(data);\n }\n } catch (error) {\n console.error('Failed to update request:', error);\n throw error;\n } finally {\n this.workflowState.setUpdating(false);\n }\n }\n}\n\nenum DateFilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { TaskAssignmentType } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n selector: 'lib-workflow-form',\n templateUrl: './workflow-form.component.html',\n styleUrl: './workflow-form.component.css',\n})\nexport class WorkflowFormComponent {\n @Input() operations: WorkflowOperation[] = [];\n @Input()\n get currentData(): CardData | null {\n return this._currentData;\n }\n set currentData(value: CardData | null) {\n this._currentData = value;\n console.log(value?.data);\n if (value?.data) {\n this.form.patchValue({\n Name: value.data.Name || '',\n Description: value.data.Description || '',\n AssignmentType: value.data.AssignmentType || '',\n Service: value.data.Service || '',\n Operation: value.data.Operation || '',\n Status: value.data.Status || '',\n });\n } else {\n this.form.reset();\n }\n }\n private _currentData: CardData | null = null;\n designerUrl = input<string>('workflow');\n\n @Output() switchView = new EventEmitter<undefined>();\n @Output() onSave = new EventEmitter<Partial<Workflow>>();\n\n form: FormGroup;\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n\n // roles: WritableSignal<Role[]> = signal([]);\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({\n Name: ['', { validators: [Validators.required] }],\n Description: ['', { validators: [Validators.required] }],\n AssignmentType: ['', { validators: [Validators.required] }],\n Service: [''],\n Operation: [''],\n Status: ['', { validators: [Validators.required] }],\n });\n }\n\n ngOnInit(): void {\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n // try {\n // this.userAccessRequestFacade.loadRoles();\n // } catch (error) {\n // // Handle error\n // }\n console.log(this.currentData?.data);\n }\n\n handleSubmit(): void {\n if (this.form.valid) {\n // Emit save event with form value\n console.log('Form saved:', this.form.value);\n this.onSave.emit(this.form.value);\n }\n }\n\n onDelete(): void {\n // Emit delete event\n console.log('Delete requested');\n }\n\n disableProcessing(): boolean {\n return !this.form.valid;\n }\n}\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=\"assignment\">Assignment</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Assignment\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n id=\"assignment\"\n formControlName=\"AssignmentType\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <div class=\"space-y-1\">\n <label for=\"operation\">Operation</label>\n\n <verben-drop-down\n [showClear]=\"true\"\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations\"\n optionLabel=\"Description\"\n optionValue=\"Code\"\n id=\"operation\"\n formControlName=\"Operation\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- <div class=\"space-y-1\">\n <label for=\"object\">Object</label>\n\n <verbena-input\n id=\"object\"\n formControlName=\"Operation\"\n placeHolder=\"Enter Object\"\n />\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=\"#999999\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button> -->\n @if (currentData?.data?.Code) {\n <a [routerLink]=\"[designerUrl(), currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button text=\"Designer\" styleType=\"ylw-outline\"></verbena-button>\n </a>\n }\n <!-- <a [routerLink]=\"['/designer', currentData?.data.Code]\" class=\"ml-auto\">\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Designer\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n </a> -->\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n class=\"ml-auto\"\n ></verbena-button>\n <verbena-button\n type=\"submit\"\n text=\"Save\"\n bgColor=\"#FFE681\"\n textColor=\"#404040\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { CardData, IDataFilter } from 'verben-ng-ui';\nimport { ObjectState, PermissionConfig, Status, TaskAssignmentType, Workflow, WorkflowOperation } from 'verben-workflow-ui/src/lib/models';\nimport { BaseDataViewComponent, DataViewConfig } from 'verben-workflow-ui/src/lib/shared';\nimport { columns } from './workflows.columns';\nimport { WorkflowFacade } from './workflows.facade';\n\n@Component({\n selector: 'lib-workflows',\n templateUrl: './workflows.component.html',\n styleUrl: './workflows.component.css',\n})\nexport class WorkflowsComponent extends BaseDataViewComponent<Workflow> {\n designerUrl = input<string>('workflow');\n permissionConfig = input<PermissionConfig | null>(null);\n\n config: DataViewConfig<Workflow> = {\n dataSource: [],\n columns: columns,\n cardDataMapper: (task) => ({\n selected: false,\n title: task.Name,\n data: task,\n body: [\n { title: 'Name', value: task.Name },\n { title: 'Status', value: task.Status },\n { title: 'AssignmentType', value: task.AssignmentType },\n ],\n children: [],\n }),\n onDetailView: (task) => {\n // Custom detail view logic\n },\n };\n\n editForms: Map<number, FormGroup> = new Map();\n assignmentTypes = Object.values(TaskAssignmentType);\n statuses = Object.values(Status);\n operations: WritableSignal<WorkflowOperation[]> = signal([]);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private facade: WorkflowFacade,\n private fb: FormBuilder\n ) {\n super();\n\n this.loadData = this.loadData.bind(this);\n\n this.facade.getRequests$().subscribe((data) => {\n this.data.set(data);\n });\n\n this.facade.getOperations$().subscribe((data) => {\n this.operations.set(data);\n });\n }\n\n generateFormGroup(data?: Partial<Workflow>) {\n console.log(data);\n const form = this.fb.group({\n // Name: [data?.Name ?? '', { validators: [Validators.required] }],\n Name: new FormControl(data?.Name ?? '', [Validators.required]),\n Description: new FormControl(data?.Description ?? '', [\n Validators.required,\n ]),\n AssignmentType: new FormControl(data?.AssignmentType ?? '', [\n Validators.required,\n ]),\n // Service: [data?.Service ?? ''],\n Operation: [data?.Operation ?? ''],\n Status: new FormControl(data?.Status ?? '', [Validators.required]),\n });\n // console.log(form.value);\n return form;\n }\n\n getFormControl(index: number, field: string) {\n const control = this.editForms.get(index)?.get(field) as FormControl<any>;\n console.log(control);\n return control;\n }\n\n isRowValid(index: number): boolean {\n return this.editForms.get(index)?.valid || false;\n }\n\n override loadInitialData() {\n // this.userService.getRequests().subscribe(\n // tasks => this.data.set(tasks)\n // );\n // this.data.set(generateWorkflows(5));\n super.loadInitialData();\n // this.data = this.service.getMockUserRequests();\n\n // this.userAccessRequestFacade.getRoles$().subscribe((data) => {\n // this.roles.set(data);\n // });\n\n try {\n this.facade.loadRequests().then(() => {\n this.facade.loadOperations();\n });\n // this.userAccessRequestFacade.loadRoles();\n } catch (error) {\n // Handle error\n }\n }\n\n protected getCardDataByIdentifier(code: string): CardData | undefined {\n return this.cardData().find(({ data }) => data.data.Code === code);\n }\n\n loadMore() {\n // this.cardData = this.cardData.concat(this.cardData);\n }\n\n async onSave(data: Partial<Workflow>) {\n const payload = {\n ...this.currentData?.data,\n ...data,\n } as Workflow;\n if (payload.DataState === ObjectState.New) {\n console.log('Payload in new', payload);\n await this.facade.addRequest(payload);\n } else {\n console.log('Payload in update', payload);\n await this.facade.updateRequest({\n ...payload,\n DataState: ObjectState.Changed,\n });\n }\n }\n\n async commitRowChange(\n rowIndex: number,\n row: Workflow,\n postCommit?: () => void\n ) {\n const data = this.editForms.get(rowIndex)?.value as Partial<Workflow>;\n console.log();\n if (data) {\n const datum = {\n ...row,\n ...data,\n } as Workflow;\n if (datum.DataState === ObjectState.New) {\n this.facade.addRequest(datum).then(() => {\n postCommit?.();\n });\n } else {\n datum.DataState = ObjectState.Changed;\n this.facade.updateRequest(datum).then(() => {\n postCommit?.();\n });\n }\n }\n }\n\n onFilterSet(event: IDataFilter[]) {\n this.filterArray = event;\n this.config.filterOptions = event;\n this.facade.filter(event).then(() => {\n this.cdr.markForCheck();\n });\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.facade.search(event.value);\n }\n\n override onStateChange(event: { key: string; value: boolean }): void {\n console.log(`State changed for ${event.key}:`, event.value);\n switch (event.key) {\n case 'create':\n const timestamp = new Date();\n var newForm: Workflow = {\n Name: '',\n Description: '',\n StageEntryRule: '',\n AssignmentType: TaskAssignmentType.AutoRoute,\n TenantId: '',\n ServiceName: '',\n id: crypto.randomUUID(),\n Id: '',\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Status: Status.Active,\n Actions: [],\n Lanes: [],\n Stages: [],\n };\n this.data.update((prev) => [newForm, ...prev]);\n // console.log(newForm);\n break;\n default:\n break;\n }\n }\n\n async loadData(range: { skip: number; limit: number }) {\n const data = await this.facade.loadDataForExport(range.skip, range.limit);\n return data ?? [];\n }\n}\n","<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: !!permissionConfig()?.Actions?.['Export'],\n isSelect: true,\n isCreate: !!permissionConfig()?.Actions?.['Create'],\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"config.columns\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Name')\"\n ></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <div class=\"width-max\">\n <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Description')\"\n ></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"assignment-type\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"assignmentTypes\"\n [formControl]=\"getFormControl(rowIndex, 'AssignmentType')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"operation\">\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <!-- <verbena-input\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n ></verbena-input> -->\n <verben-drop-down\n label=\"Operation\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Select\"\n [options]=\"operations()\"\n optionLabel=\"Description\"\n optionValue=\"Description\"\n id=\"operation\"\n [formControl]=\"getFormControl(rowIndex, 'Operation')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"value == 'Active' ? '#CAE1CC' : '#FFDFDF'\"\n [textColor]=\"value == 'Active' ? '#4ABB54' : '#EB5757'\"\n fontSize=\"12px\"\n [text]=\"value\"\n [pd]=\"'2px 6px'\"\n ></verbena-badge>\n </ng-template>\n <ng-template #cellEdit let-rowIndex=\"rowIndex\">\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Null\"\n [options]=\"statuses\"\n [formControl]=\"getFormControl(rowIndex, 'Status')\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <verben-svg\n (click)=\"\n editForms.set(rowIndex, generateFormGroup(row));\n toggleRowEdit()\n \"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n }\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n @if (!!permissionConfig()?.Actions?.['Design']) {\n <a [routerLink]=\"[designerUrl(), value]\">\n <verben-svg\n icon=\"designer\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </a>\n }\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"commitRowChange(rowIndex, row, toggleRowEdit)\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"Code\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex justify-between gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 flex flex-col justify-between space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate line-clamp-1\"\n >{{ item.title }}</span\n >\n\n <span id=\"role\" class=\"text-sm line-clamp-1 truncate\">\n {{\n item.data?.Operation\n }}\n </span>\n\n <!-- <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Assignment:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.AssignmentType\n }}</span>\n </p> -->\n </div>\n\n <div class=\"grid gap-y-1 w-fit justify-items-end\">\n <!-- <p class=\"grid\">\n <span id=\"role\" class=\"text-sm font-medium line-clamp-1 truncate\">{{\n item.data?.Operation\n }}</span>\n </p> -->\n <span id=\"phone\" class=\"text-sm\">\n {{ item.data.AssignmentType }}\n </span>\n\n <div class=\"flex gap-4 items-center\">\n @if (!!permissionConfig()?.Actions?.['Design'] && item.data?.Code) {\n <a [routerLink]=\"[designerUrl(), item.data.Code]\">\n <verben-svg\n icon=\"designer\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"$event.stopPropagation()\"\n ></verben-svg>\n </a>\n }\n\n <verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"\n item.data.Status == 'Active' ? '#CAE1CC' : '#FFDFDF'\n \"\n [textColor]=\"\n item.data.Status == 'Active' ? '#4ABB54' : '#EB5757'\n \"\n fontSize=\"12px\"\n [text]=\"item.data.Status\"\n [pd]=\"'2px 6px'\"\n ></verbena-badge>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-workflow-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"\n [operations]=\"operations()\"\n [designerUrl]=\"designerUrl()\"\n ></lib-workflow-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div class=\"flex gap-2 items-center justify-end\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n\n <div column-content>\n <!-- <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column> -->\n\n <lib-data-columns\n [columns]=\"config.columns\"\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n ></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterSet($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <!-- <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table> -->\n <lib-data-sort\n [columns]=\"config.columns\"\n [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"\n ></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"config.columns\"\n [data]=\"data()\"\n [dataQueryFunction]=\"loadData\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WorkflowsComponent } from './workflows.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { WorkflowsService } from './workflows.service';\nimport { WorkflowFormComponent } from './workflow-form/workflow-form.component';\n\n@NgModule({\n declarations: [WorkflowsComponent, WorkflowFormComponent],\n imports: [CommonModule, SharedModule, RouterLink],\n exports: [WorkflowsComponent],\n})\nexport class WorkflowsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WorkflowsService","i2.WorkflowsState","i3","i1","i2","i1.WorkflowFacade","i5","i6.WorkflowFormComponent"],"mappings":";;;;;;;;;;;;;;;AAGO,MAAM,OAAO,GAAiC;AACnD,IAAA;AACE,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,WAAW,EAAE,MAAM;AACpB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,aAAa;AACjB,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,WAAW,EAAE,aAAa;AAC3B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,iBAAiB;AACrB,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,WAAW,EAAE,WAAW;AACzB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,kBAAkB;AACtB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,WAAW,EAAE,QAAQ;AACtB,KAAA;IACD,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;CAC1D;;AChCK,SAAU,8CAA8C,CAC5D,IAAoB,EAAA;IAEpB,QAAQ,IAAI;QACV,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,MAAM,CAAC;QACxC,KAAK,cAAc,CAAC,OAAO;YACzB,OAAO,uBAAuB,CAAC,GAAG,CAAC;QACrC,KAAK,cAAc,CAAC,OAAO;YACzB,OAAO,uBAAuB,CAAC,OAAO,CAAC;QACzC,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,KAAK,CAAC;QACvC,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,uBAAuB,CAAC,IAAI,CAAC;QACtC,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,uBAAuB,CAAC,IAAI,CAAC;QACtC,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,uBAAuB,CAAC,GAAG,CAAC;KACtC;AACH;;MCda,gBAAgB,CAAA;AAIjB,IAAA,WAAA,CAAA;AACA,IAAA,MAAA,CAAA;IAJO,QAAQ,GAAG,UAAU,CAAC;IAEvC,WACU,CAAA,WAAkC,EAClC,MAA0B,EAAA;QAD1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;KAC/B;AAEL;;;;;;;AAOG;AACH,IAAA,YAAY,CACV,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA6C,CAAC;KAC9E;AAED;;;;;;;;AAQG;AACH,IAAA,oBAAoB,CAClB,KAAa,EACb,IAAA,GAAe,CAAC,EAChB,KAAgB,GAAA,CAAC,EACjB,SAAA,GAAoB,WAAW,EAC/B,YAAoB,KAAK,EAAA;AAEzB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAA0B,uBAAA,EAAA,KAAK,CAAI,CAAA,EAAA,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;QACzG,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA6C,CAAC;KAC9E;AAED;;;;;;;;AAQG;IACH,yBAAyB,CACvB,MAA6B,EAC7B,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;AAEjB,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAA6C,CAAC;KACvF;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,QAA6B,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,gBAAgB,CAAC;;;;;;;;;QAS7C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;IACH,gBAAgB,CAAC,QAAoB,EAAE,UAAmB,EAAA;QACxD,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,UAAoB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,kBAAkB,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAG,EAAA,GAAG,CAAS,MAAA,EAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;KACvE;AAED;;;;;;;AAOG;AACH,IAAA,QAAQ,CACN,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAA+C,CAAC;KAChF;AAED;;;;;;;AAOG;AACH,IAAA,OAAO,CACL,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AACtE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CACzB,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CACO,CAAC;KAC1C;AAED,IAAA,qBAAqB,CACnB,IAAY,EACZ,KAAa,EACb,SAAiB,EACjB,SAAiB,EAAA;QAEjB,MAAM,GAAG,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QACxF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAwC,CAAC;KACzE;wGAxJU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,cAAc,CAAA;AACjB,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAChD,IAAA,SAAS,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC,CAAC;AAChD,IAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;IAC9C,YAAY,GAAG,IAAI,eAAe,CAAwB;AAChE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,aAAa,CAAC,IAAI;AAC9B,KAAA,CAAC,CAAC;AACK,IAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;AAEvD,IAAA,WAAW,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;IAEnE,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,UAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACjC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,QAAoB,EAAA;AAC9B,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,QAAQ,CAAC,CAAC;SACvE;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;KACF;AAED,IAAA,aAAa,CAAC,UAA+B,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,eAAe,CAAC,MAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;AACD,IAAA,cAAc,CAAC,WAAuB,EAAA;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;KAC3D;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACpC;AAED,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;IAED,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACrC;AAED,IAAA,iBAAiB,CAAC,MAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;KACxE;IAED,eAAe,GAAA;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,UAAU,CAAC,OAAiB,EAAA;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;KACjD;AAED,IAAA,aAAa,CAAC,cAAwB,EAAA;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AACxE,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;SACpC;KACF;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;KACvE;wGArGU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,cAAc,CAAA;AAKf,IAAA,eAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,WAAA,CAAA;AANF,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AACtC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEvC,IAAA,WAAA,CACU,eAAiC,EACjC,aAA6B,EAC7B,WAAwB,EAAA;QAFxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;QACjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;;AAGhC,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CACH,YAAY,CAAC,IAAI,CAAC,EAClB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC3C,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACtD,oBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AAClE,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CACxB,0CAA0C,CAC3C,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;AACH,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;KAC5C;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;KAC9C;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;KAC7C;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;KAC5C;;AAGD,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEO,MAAM,YAAY,CAAC,UAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AAErC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE;AACrB,gBAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;aAC9C;iBAAM;AACL,gBAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;aAC3B;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvC,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,MAAM,CAAC,YAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;KAClD;;AAGD,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;;YAG3D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;YAGxD,MAAM,QAAQ,GAAG,UAAU;kBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC/C,UAAU,EACV,OAAO,EACP,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,SAAS,IAAI,aAAa,EACxC,aAAa,CAAC,SAAS,CACxB;kBACC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACvC,OAAO,EACP,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,SAAS,IAAI,aAAa,EACxC,aAAa,CAAC,SAAS,CACxB,CAAC;AAEJ,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;;AAGD,IAAA,MAAM,iBAAiB,CACrB,IAAY,EACZ,KAAa,EAAA;AAEb,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;;YAG3D,MAAM,QAAQ,GAAG,UAAU;AACzB,kBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC/C,UAAU,EACV,IAAI,EACJ,KAAK,EACL,SAAS,IAAI,aAAa,EAC1B,SAAS,CACV;AACD,kBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACvC,IAAI,EACJ,KAAK,EACL,SAAS,IAAI,aAAa,EAC1B,SAAS,CACV,CAAC;AAEJ,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,OAAO,QAAQ,CAAC,MAAM,CAAC;SACxB;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACtD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAC/D,CAAC,EACD,CAAC,EACD,aAAa,EACb,aAAa,CAAC,IAAI,CACnB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;SACT;KACF;IAED,MAAM,qBAAqB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAExD,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC9D,KAAK,EACL,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,0BAA0B,CAAC,YAA2B,EAAA;AAC1D,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAExD,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,yBAAyB,CACnE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;gBAC5B,YAAY,EAAE,MAAM,CAAC,IAAI;gBACzB,WAAW,EAAE,MAAM,CAAC,KAAK;AACzB,gBAAA,IAAI,EAAE,8CAA8C,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjE,QAAQ,EAAE,cAAc,CAAC,GAAG;gBAC5B,IAAI,EAAE,kBAAkB,CAAC,EAAE;aAC5B,CAAC,CAAC,EACH,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,IAAI,aAAa,EACjC,MAAM,CAAC,SAAS,CACjB,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;AAED,IAAA,iBAAiB,CAAC,MAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,MAAM,UAAU,CAAC,OAA0B,EAAA;AACzC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAc,CAAC;AAC9C,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C,YAAA,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;AACnB,YAAA,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAExE,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;;AAE7D,YAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;SAC3B;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,aAAa,CAAC,OAAiB,EAAA;AACnC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAErE,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,aAAa,CAAC,SAAiB,EAAA;AACnC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,MAAM,cAAc,CAAC,OAAiB,EAAA;AACpC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAC1D,CAAC,OAAO,CAAC,EACT,IAAI,CACL,CAAC;AAEF,YAAA,IAAI,QAAQ,YAAY,aAAa,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO;aACR;;AAGD,YAAA,MAAM,IAAI,GAAI,QAAuB,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACxC;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACb;gBAAS;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;wGArXU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAyXD,IAAK,eAIJ,CAAA;AAJD,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,IAA8B,CAAA;AAC9B,IAAA,eAAA,CAAA,IAAA,CAAA,GAAA,IAA0B,CAAA;AAC1B,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,IAA6B,CAAA;AAC/B,CAAC,EAJI,eAAe,KAAf,eAAe,GAInB,EAAA,CAAA,CAAA;;MCnYY,qBAAqB,CAAA;AAkCZ,IAAA,EAAA,CAAA;IAjCX,UAAU,GAAwB,EAAE,CAAC;AAC9C,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,KAAK,EAAE,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE;AACzC,gBAAA,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE;AAC/C,gBAAA,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;AACjC,gBAAA,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;AACrC,gBAAA,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;AAChC,aAAA,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;SACnB;KACF;IACO,YAAY,GAAoB,IAAI,CAAC;AAC7C,IAAA,WAAW,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;AAE9B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAa,CAAC;AAC3C,IAAA,MAAM,GAAG,IAAI,YAAY,EAAqB,CAAC;AAEzD,IAAA,IAAI,CAAY;AAChB,IAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpD,IAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;AAIjC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjD,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxD,YAAA,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,SAAS,EAAE,CAAC,EAAE,CAAC;AACf,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACpD,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;;;;;;;;;QASN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KACrC;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;YAEnB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACF;IAED,QAAQ,GAAA;;AAEN,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;KACjC;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACzB;wGAxEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,2hBCblC,0tGA8HA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjHa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,0tGAAA,EAAA,CAAA;kFAKpB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAuBI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AEfH,MAAO,kBAAmB,SAAQ,qBAA+B,CAAA;AA6B3D,IAAA,GAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,EAAA,CAAA;AA9BV,IAAA,WAAW,GAAG,KAAK,CAAS,UAAU,CAAC,CAAC;AACxC,IAAA,gBAAgB,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;AAExD,IAAA,MAAM,GAA6B;AACjC,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE,CAAC,IAAI,MAAM;AACzB,YAAA,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE;gBACJ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE;gBACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;gBACvC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;AACxD,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE;SACb,CAAC;AACF,QAAA,YAAY,EAAE,CAAC,IAAI,KAAI;;SAEtB;KACF,CAAC;AAEF,IAAA,SAAS,GAA2B,IAAI,GAAG,EAAE,CAAC;AAC9C,IAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpD,IAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,IAAA,UAAU,GAAwC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7D,IAAA,WAAA,CACU,GAAsB,EACtB,MAAsB,EACtB,EAAe,EAAA;AAEvB,QAAA,KAAK,EAAE,CAAC;QAJA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAIvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC5C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;;AAEzB,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9D,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,EAAE;AACpD,gBAAA,UAAU,CAAC,QAAQ;aACpB,CAAC;YACF,cAAc,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,cAAc,IAAI,EAAE,EAAE;AAC1D,gBAAA,UAAU,CAAC,QAAQ;aACpB,CAAC;;AAEF,YAAA,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;AAClC,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,SAAA,CAAC,CAAC;;AAEH,QAAA,OAAO,IAAI,CAAC;KACb;IAED,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAqB,CAAC;AAC1E,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC;KAClD;IAEQ,eAAe,GAAA;;;;;QAKtB,KAAK,CAAC,eAAe,EAAE,CAAC;;;;;AAOxB,QAAA,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAK;AACnC,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AAC/B,aAAC,CAAC,CAAC;;SAEJ;QAAC,OAAO,KAAK,EAAE;;SAEf;KACF;AAES,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;KACpE;IAED,QAAQ,GAAA;;KAEP;IAED,MAAM,MAAM,CAAC,IAAuB,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI;AACzB,YAAA,GAAG,IAAI;SACI,CAAC;QACd,IAAI,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE;AACzC,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACvC;aAAM;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC1C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC9B,gBAAA,GAAG,OAAO;gBACV,SAAS,EAAE,WAAW,CAAC,OAAO;AAC/B,aAAA,CAAC,CAAC;SACJ;KACF;AAED,IAAA,MAAM,eAAe,CACnB,QAAgB,EAChB,GAAa,EACb,UAAuB,EAAA;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAA0B,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,GAAG;AACN,gBAAA,GAAG,IAAI;aACI,CAAC;YACd,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;oBACtC,UAAU,IAAI,CAAC;AACjB,iBAAC,CAAC,CAAC;aACJ;iBAAM;AACL,gBAAA,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;oBACzC,UAAU,IAAI,CAAC;AACjB,iBAAC,CAAC,CAAC;aACJ;SACF;KACF;AAED,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,KAAqC,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACjC;AAEQ,IAAA,aAAa,CAAC,KAAsC,EAAA;AAC3D,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,KAAK,CAAC,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7B,gBAAA,IAAI,OAAO,GAAa;AACtB,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,kBAAkB,CAAC,SAAS;AAC5C,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;AACvB,oBAAA,EAAE,EAAE,EAAE;oBACN,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,SAAS,EAAE,WAAW,CAAC,GAAG;AAC1B,oBAAA,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,EAAE;iBACX,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;gBAE/C,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;IAED,MAAM,QAAQ,CAAC,KAAsC,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,IAAI,EAAE,CAAC;KACnB;wGAjMU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2XCxB/B,w+dA+aA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,IAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDvZa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,w+dAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,CAAA;;;MEPd,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAf,eAAe,EAAA,YAAA,EAAA,CAJX,kBAAkB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC9C,YAAY,EAAE,YAAY,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CACtC,kBAAkB,CAAA,EAAA,CAAA,CAAA;yGAEjB,eAAe,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;oBACjD,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}