@yuuvis/bpm-management-app 1.0.4 → 1.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -6
- package/fesm2022/yuuvis-bpm-management-app.mjs +1707 -1800
- package/fesm2022/yuuvis-bpm-management-app.mjs.map +1 -1
- package/lib/assets/i18n/de.json +112 -65
- package/lib/assets/i18n/en.json +111 -65
- package/package.json +1 -1
- package/types/yuuvis-bpm-management-app.d.ts +80 -15
- package/yuv-manifest.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-bpm-management-app.mjs","sources":["../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.schema.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-filter.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.service.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/text-filter/text-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/number-filter/number-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/select-filter/select-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/date-filter/date-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/user-filter/user-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filter/user-filter/user-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/bpm-table/bpm-table.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/format-date-time.pipe.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-summary/deployment-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-process-definitions/deployment-process-definitions.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/deployment-details/deployment-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/deployments/deployments-page/deployments-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-summary/process-definition-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-definition-details/process-definition-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/checkbox-overlay/checkbox-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processdefinitions/processdefinitions-page/processdefinitions-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/user-display/user-display.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/user-display/user-display.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-summary/process-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-tasks/process-tasks.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-history/process-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/process-details/process-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/processes/processes-page/processes-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-summary/task-summary.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/editor-history/editor-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/task-details/task-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-assign-overlay/task-assign-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/overlays/task-candidates-overlay/task-candidates-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/pages/tasks/tasks-page/tasks-page.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/lib.routes.ts","../../../../../projects/yuuvis/bpm-management-app/src/yuuvis-bpm-management-app.ts"],"sourcesContent":["export const APP_ID = 'io.yuuvis.app.bpm-management';\n\nexport interface DeploymentInstance {\n id: string,\n name: string;\n category: string;\n deploymentTime: string;\n resources: DeploymentResourceData[];\n definitions: ProcessDefinitionInstance[];\n}\n\nexport interface DeploymentResourceData {\n id: string;\n mediaType: string;\n type: string;\n}\n\nexport interface ProcessDefinitionInstance {\n id: string,\n name: string;\n description: string;\n category: string;\n version: string;\n key: string;\n global: boolean;\n suspended: boolean;\n deploymentId: string;\n statistics: ProcessdefinitionStatisticsData;\n}\n\nexport interface ProcessdefinitionStatisticsData {\n processInstanceCount: ProcessinstanceCountData;\n}\n\nexport interface ProcessinstanceCountData {\n active: number;\n suspended: number;\n completed: number\n}\n\nexport interface ProcessVariable {\n name: string;\n type: string;\n value: any;\n scope: string;\n}\n\nexport interface ProcessInstance {\n id: string;\n name: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionName: string;\n processDefinitionDescription: string | null;\n startUserId: string;\n startTime: string;\n deleteReason: string | null;\n endActivityId: string | null;\n startActivityId: string;\n durationInMillis: number | null;\n endTime: string | null;\n suspended: boolean;\n variables: ProcessVariable[];\n}\n\nexport interface ProcessHistory {\n tasks: TaskInstance[];\n}\n\nexport interface TaskInstance {\n id: string;\n name: string;\n description: string | null;\n assignee: string;\n owner: string;\n createTime: string;\n endTime: string | null;\n claimTime: string | null;\n dueDate: string | null;\n processDefinitionId: string;\n processInstanceId: string | null;\n processInstanceName: string | null;\n parentTaskId: string | null;\n taskDefinitionKey: string;\n delegationState: string | null;\n suspended: boolean;\n hasForm: boolean;\n formKey: string | null;\n variables?: TaskVariable[];\n identityLinks?: TaskIdentityLinks;\n}\n\nexport interface TaskVariable {\n name: string;\n type: string;\n value: any;\n valueUrl?: string;\n scope: string;\n}\n\nexport interface TaskIdentityLinks {\n candidates: {\n users: string[];\n roles: string[];\n };\n assignmentHistory: TaskAssignmentHistoryEntry[];\n}\n\nexport interface TaskAssignmentHistoryEntry {\n type: 'ASSIGNMENT' | 'DELEGATION' | 'RESOLVE';\n assignee: string;\n owner?: string;\n timestamp: string;\n}\n\nexport const ProcessDefinitionScope = {\n GLOBAL: { value: 'GLOBAL', label: 'yuv.app.bpm-management.processdefinitions.scope.global', icon: 'globe' },\n TENANT: { value: 'TENANT', label: 'yuv.app.bpm-management.processdefinitions.scope.tenant', icon: 'tenant' }\n} as const;\n\nexport const ProcessDefinitionStatus = {\n ACTIVE: { value: 'ACTIVE', label: 'yuv.app.bpm-management.status.active' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' }\n} as const;\n\nexport const ProcessStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' },\n RUNNING_SUSPENDED: { value: 'RUNNING_SUSPENDED', label: 'yuv.app.bpm-management.status.runningORsuspended' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport const TaskStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport interface DeploymentsSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: DeploymentInstance[];\n}\n\nexport interface ProcessDefinitionSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessDefinitionInstance[];\n}\n\nexport interface ProcessesSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessInstance[];\n}\n\nexport interface TasksSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: TaskInstance[];\n}\n\nexport const APP_ICONS = {\n assign: 'person_add',\n cancel: 'cancel',\n unassign: 'person_remove',\n clearFilter: 'filter_alt_off',\n dockToLeft: 'dock_to_left',\n filterActive: 'filter_alt',\n filterEquals: 'equal',\n filterContains: 'find_in_page',\n filterStartsWith: 'subdirectory_arrow_right',\n filterEndsWith: 'subdirectory_arrow_left',\n filterGreaterThan: 'arrow_upward',\n filterLessThan: 'arrow_downward',\n filterAfter: 'east',\n filterBefore: 'west',\n filterBetween: 'compare_arrows',\n globe: 'public',\n info: 'info',\n refresh: 'refresh',\n radioButtonChecked: 'radio_button_checked',\n radioButtonUnchecked: 'radio_button_unchecked',\n tenant: 'groups',\n delegated: 'assignment',\n resolved: 'order_approve',\n activate: 'play_arrow',\n suspend: 'pause'\n}\n\nexport interface Pagination {\n total: number;\n pageSize: number;\n page: number;\n}\n\nexport interface Column {\n name: string;\n displayName: string;\n template?: any; // TemplateRef or function\n filter?: ColumnFilter;\n}\n\nexport type ColumnFilter =\n | TextColumnFilter\n | NumberColumnFilter\n | DateColumnFilter\n | SelectColumnFilter\n | UserColumnFilter;\n\nexport interface TextColumnFilter {\n type: typeof FILTER_TYPES.TEXT;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface NumberColumnFilter {\n type: typeof FILTER_TYPES.NUMBER;\n placeholder?: string;\n operators?: FilterOption[];\n minValue?: number;\n maxValue?: number;\n step?: number;\n}\n\nexport interface DateColumnFilter {\n type: typeof FILTER_TYPES.DATE;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface SelectColumnFilter {\n type: typeof FILTER_TYPES.SELECT;\n placeholder?: string;\n options: FilterOption[];\n enableMultiselect?: boolean;\n}\n\nexport interface UserColumnFilter {\n type: typeof FILTER_TYPES.USER;\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n icon?: string;\n}\n\nexport const FILTER_OPERATORS = {\n // Text operators\n CONTAINS: { value: 'contains', label: 'yuv.app.bpm-management.filters.operators.contains', icon: 'filterContains' },\n EQUALS: { value: 'equals', label: 'yuv.app.bpm-management.filters.operators.equals', icon: 'filterEquals' },\n STARTS_WITH: { value: 'startsWith', label: 'yuv.app.bpm-management.filters.operators.startsWith', icon: 'filterStartsWith' },\n ENDS_WITH: { value: 'endsWith', label: 'yuv.app.bpm-management.filters.operators.endsWith', icon: 'filterEndsWith' },\n\n // Number operators\n GREATER_THAN: { value: 'greaterThan', label: 'yuv.app.bpm-management.filters.operators.greaterThan', icon: 'filterGreaterThan' },\n LESS_THAN: { value: 'lessThan', label: 'yuv.app.bpm-management.filters.operators.lessThan', icon: 'filterLessThan' },\n // Date operators\n BEFORE: { value: 'before', label: 'yuv.app.bpm-management.filters.operators.before', icon: 'filterBefore' },\n AFTER: { value: 'after', label: 'yuv.app.bpm-management.filters.operators.after', icon: 'filterAfter' },\n BETWEEN: { value: 'between', label: 'yuv.app.bpm-management.filters.operators.between', icon: 'filterBetween' }\n} as const;\n\nexport const FILTER_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n DATE: 'date',\n SELECT: 'select',\n CHECKBOX: 'checkbox',\n USER: 'user'\n} as const;\n\nexport interface TableFilters {\n [columnName: string]: FilterValue;\n}\n\nexport interface FilterValue {\n type: typeof FILTER_TYPES.TEXT | typeof FILTER_TYPES.NUMBER | typeof FILTER_TYPES.DATE | typeof FILTER_TYPES.SELECT | typeof FILTER_TYPES.CHECKBOX;\n value: any;\n operator?: string;\n endDate?: Date | null; // Für date between\n}\n\nexport type DateFormatType = 'datetime' | 'date' | 'time';\n\nexport function formatDateTime(\n utcDateString: string, \n locale: string, \n type: DateFormatType = 'datetime'\n): string {\n if (!utcDateString) return '';\n \n try {\n const date = new Date(utcDateString);\n \n const formatOptions: Record<DateFormatType, Intl.DateTimeFormatOptions> = {\n datetime: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n },\n date: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n time: {\n hour: '2-digit',\n minute: '2-digit'\n }\n };\n\n return type === 'datetime' \n ? date.toLocaleString(locale, formatOptions[type])\n : type === 'date'\n ? date.toLocaleDateString(locale, formatOptions[type])\n : date.toLocaleTimeString(locale, formatOptions[type]);\n \n } catch (error) {\n console.error('Error formatting date:', error);\n return utcDateString;\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { Title } from '@angular/platform-browser';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { APP_ICONS, APP_ID } from '../bpm-management.schema';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\n@Component({\n selector: 'ymbpm-root',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n TranslatePipe,\n MatTabsModule,\n MatIconModule,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './bpm-management.component.html',\n styleUrl: './bpm-management.component.scss',\n})\nexport class YuvBpmManagementComponent implements OnInit {\n\n #shell = inject(ShellService);\n #titleService = inject(Title);\n #translateService = inject(TranslateService);\n \n #app = this.#shell.getApp(APP_ID);\n appName = this.#app?.title as string;\n appIcon = this.#app?.iconName;\n\n icons = {\n ...APP_ICONS,\n };\n\n ngOnInit() {\n // Browser-Tab-Titel lokalisiert setzen\n const translatedTitle = this.appName.startsWith('yuv.') \n ? this.#translateService.instant(this.appName) \n : this.appName\n this.#titleService.setTitle(translatedTitle);\n }\n}\n","<section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link\n routerLink=\"deployments\"\n routerLinkActive\n #rla1=\"routerLinkActive\"\n [active]=\"rla1.isActive\">\n {{ 'yuv.app.bpm-management.tabs.deployments' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processdefinitions\"\n routerLinkActive\n #rla2=\"routerLinkActive\"\n [active]=\"rla2.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processdefinitions' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"processes\"\n routerLinkActive\n #rla3=\"routerLinkActive\"\n [active]=\"rla3.isActive\">\n {{ 'yuv.app.bpm-management.tabs.processes' | translate }}\n </a>\n <a mat-tab-link\n routerLink=\"tasks\"\n routerLinkActive\n #rla4=\"routerLinkActive\"\n [active]=\"rla4.isActive\">\n {{ 'yuv.app.bpm-management.tabs.tasks' | translate }}\n </a>\n </nav>\n <mat-tab-nav-panel #tabPanel>\n <router-outlet></router-outlet>\n </mat-tab-nav-panel>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n","import { TranslateService } from \"@yuuvis/client-core\";\nimport { FILTER_OPERATORS, FILTER_TYPES, FilterValue, ProcessDefinitionScope, ProcessDefinitionStatus, ProcessStatus, TableFilters, TaskStatus } from \"./bpm-management.schema\";\nimport { formatDate } from \"@angular/common\";\n\n/**\n * Base class for BPM filter conversion with shared logic\n */\nabstract class BaseBpmFilter {\n /**\n * Converts AG Grid filter model to BPM filter format\n * @param tableFilters - The AG Grid table filters\n * @param ts - Optional TranslateService for date formatting\n * @returns The converted BPM filter instance\n */\n protected static convertFromAgFilterModel<T extends BaseBpmFilter>(\n filterInstance: T,\n tableFilters: TableFilters,\n ts?: TranslateService\n ): T {\n for (const columnFilter in tableFilters) {\n const columnFilterData = tableFilters[columnFilter];\n \n switch (columnFilterData['type']) {\n case FILTER_TYPES.TEXT:\n filterInstance[columnFilter] = this.handleTextFilter(columnFilterData);\n break;\n case FILTER_TYPES.NUMBER:\n filterInstance[columnFilter] = { value: columnFilterData.value, type: FILTER_TYPES.NUMBER };\n break;\n case FILTER_TYPES.DATE:\n this.handleDateFilter(filterInstance, columnFilter, columnFilterData, ts);\n break;\n case FILTER_TYPES.SELECT:\n this.handleSelectFilter(filterInstance, columnFilter, columnFilterData);\n break;\n }\n }\n\n return filterInstance;\n }\n\n private static handleTextFilter(columnFilterData: any): FilterValue {\n if (columnFilterData.operator === FILTER_OPERATORS.CONTAINS.value) {\n return { value: '%' + columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.STARTS_WITH.value) {\n return { value: columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.ENDS_WITH.value) {\n return { value: '%' + columnFilterData.value, type: FILTER_TYPES.TEXT };\n } else {\n return { value: columnFilterData.value, type: FILTER_TYPES.TEXT };\n }\n }\n\n private static handleDateFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any,\n ts?: TranslateService\n ): void {\n if (!ts) return;\n\n if (columnFilterData.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedStartDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedStartDate, type: FILTER_TYPES.DATE };\n }\n if (columnFilterData.endDate !== null && columnFilterData.endDate instanceof Date) {\n const formattedEndDate = formatDate(columnFilterData.endDate, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedEndDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.AFTER.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.BEFORE.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n }\n }\n\n protected static handleSelectFilter(\n _filterInstance: any,\n _columnFilter: string,\n _columnFilterData: any\n ): void {\n return;\n }\n}\n\nexport class DeploymentFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLike',\n category: 'category'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new DeploymentFilter(), tableFilters);\n }\n}\n\nexport class ProcessDefinitionFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n deploymentId: 'deploymentId',\n name: 'nameLikeIgnoreCase',\n category: 'categoryLike',\n version: 'version',\n key: 'keyLike',\n status: 'suspended',\n global: 'global',\n latest: 'latest'\n };\n id: FilterValue | undefined;\n deploymentId: FilterValue | undefined;\n name: FilterValue | undefined;\n category: FilterValue | undefined;\n version: FilterValue | undefined;\n key: FilterValue | undefined;\n status: FilterValue | undefined;\n global: FilterValue | undefined;\n latest: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new ProcessDefinitionFilter(), tableFilters);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessDefinitionStatus.ACTIVE.value || value === ProcessDefinitionScope.TENANT.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessDefinitionStatus.SUSPENDED.value || value === ProcessDefinitionScope.GLOBAL.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class ProcessFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'processInstanceId',\n processDefinitionId: 'processDefinitionId',\n name: 'nameLikeIgnoreCase',\n startUserId: 'startedBy',\n businessKey: 'businessKeyLike',\n startTimeBefore: 'startedBefore',\n startTimeAfter: 'startedAfter',\n endTimeBefore: 'finishedBefore',\n endTimeAfter: 'finishedAfter',\n status: 'isCompleted'\n };\n id: FilterValue | undefined;\n processDefinitionId: FilterValue | undefined;\n name: FilterValue | undefined;\n startUserId: FilterValue | undefined;\n startTimeBefore: FilterValue | undefined;\n startTimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n businessKey: FilterValue | undefined;\n status: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new ProcessFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessStatus.RUNNING_SUSPENDED.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class TaskFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLikeIgnoreCase',\n status: 'isCompleted',\n assignee: 'visibleTo',\n owner: 'owner',\n createTimeBefore: 'createdBefore',\n createTimeAfter: 'createdAfter',\n endTimeBefore: 'completedBefore',\n endTimeAfter: 'completedAfter'\n };\n id: FilterValue | undefined;\n name: FilterValue | undefined;\n status: FilterValue | undefined;\n assignee: FilterValue | undefined;\n owner: FilterValue | undefined;\n createTimeBefore: FilterValue | undefined;\n createimeAfter: FilterValue | undefined;\n endTimeBefore: FilterValue | undefined;\n endTimeAfter: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new TaskFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === TaskStatus.RUNNING.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === TaskStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, Utils } from '@yuuvis/client-core';\nimport { map, Observable } from 'rxjs';\nimport { DeploymentInstance, ProcessHistory, ProcessInstance, TaskInstance, ProcessDefinitionInstance } from './bpm-management.schema';\nimport { DeploymentFilter, ProcessDefinitionFilter, ProcessFilter, TaskFilter } from './bpm-filter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class YuvBpmAdminService {\n \n static DEFAULT_PAGE_SIZE = 15;\n private readonly bpmApiBase = '/bpm-engine/api';\n readonly #backendService = inject(BackendService);\n\n getDeployments(page: number, size: number, filter?: DeploymentFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(DeploymentFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n \n return this.#backendService\n .get(`${this.bpmApiBase}/deployments`, ApiBase.none, { params:filterParams } );\n }\n\n getDeployment(deploymentId: string): Observable<DeploymentInstance | null> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}`, ApiBase.none );\n }\n\n getDeploymentResources(deploymentId: string): Observable<any> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}/resources`, ApiBase.none );\n }\n\n getProcessDefinitions(page: number, size: number, filter?: ProcessDefinitionFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessDefinitionFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/process-definitions`, ApiBase.none, { params:filterParams } );\n }\n\n getProcessDefinition(processDefinitionInstanceId: string): Observable<ProcessDefinitionInstance | null> {\n const params = new HttpParams().set('includeStatistics', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n executeProcessDefinitionAction(processDefinitionInstanceId: string, action: string, includeProcesses: boolean): Observable<any> {\n const body = {\n 'action': action,\n 'includeProcessInstances': includeProcesses\n };\n\n return this.#backendService\n .patch(`${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`, body, ApiBase.none)\n .pipe(map(result => result))\n }\n\n getProcesses(page: number, size: number, filter?: ProcessFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(ProcessFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n }\n }\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes`,\n ApiBase.none,\n { params: filterParams }\n );\n }\n\n getProcess(processInstanceId: string): Observable<ProcessInstance | null> {\n const params = new HttpParams().set('includeProcessVariables', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n getProcessHistory(processInstanceId: string): Observable<ProcessHistory | null> {\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}/history`,\n ApiBase.none\n ).pipe(\n map((result: any) => {\n if (!result || !result.tasks) return result;\n \n return {\n ...result,\n tasks: result.tasks\n .sort(Utils.sortValues('createTime'))\n .reverse()\n };\n })\n );\n }\n\n getTasks(page: number, size: number, filter?: TaskFilter): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (filter) {\n for (const key in filter) {\n filterParams = filterParams.set(TaskFilter.bpmFilterToRestApiName[key], filter[key]['value']);\n\n if (key === 'assignee') {\n filterParams = filterParams.set('isAssigned', 'true');\n }\n }\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/tasks`, ApiBase.none, { params:filterParams } ); \n }\n\n getTask(taskId: string): Observable<TaskInstance | null> {\n const params = new HttpParams().set('includeIdentityLinks', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/tasks/${taskId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n assignTask(taskId: string, assignee: string | null): Observable<any> {\n const body = {\n action: 'claim',\n assignee: assignee\n };\n\n return this.#backendService.patch(\n `${this.bpmApiBase}/tasks/${taskId}`,\n body,\n ApiBase.none\n );\n }\n\n setTaskCandidates(taskId: string, body: { users?: string[], roles?: string[] }): Observable<any> {\n return this.#backendService.post(\n `${this.bpmApiBase}/tasks/${taskId}/candidates`,\n body,\n ApiBase.none\n );\n }\n}\n","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { FilterValue, APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-text-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ],\n templateUrl: './text-filter.component.html',\n styleUrl: './text-filter.component.scss'\n})\nexport class TextFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(''),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n\n icons = {\n ...APP_ICONS,\n };\n\n get textControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n\n private textInputSub: Subscription | null = null;\n private lastTextValue: string | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0].value);\n \n this.createTextInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0].value),\n pairwise()\n )\n .subscribe(([prev, next]: [string, string]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.textControl.value === this.lastTextValue) {\n return;\n }\n\n if (this.textInputSub) {\n this.textInputSub.unsubscribe();\n }\n\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else {\n if (this.isActiveFilter(this.lastTextValue) && (this.textControl.value.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n this.createTextInputSubscription();\n }\n\n createTextInputSubscription(): void {\n this.textInputSub = this.textControl.valueChanges\n .pipe(\n debounceTime(550),\n distinctUntilChanged(),\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else if (next !== null && next !== undefined) {\n if (this.isActiveFilter(prev) && (next.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n });\n }\n\n isActiveFilter(value = this.textControl.value): boolean {\n return value && value.toString().trim().length > 0;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n \n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.TEXT) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value ? String(value.value) : '',\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastTextValue = this.textControl.value;\n this.onChange({\n value: this.textControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput \n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"textControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-number-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ],\n templateUrl: './number-filter.component.html',\n styleUrl: './number-filter.component.scss'\n})\nexport class NumberFilterComponent implements ControlValueAccessor, OnInit {\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(null),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get numberControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n \n private numberInputSub: Subscription | null = null;\n private lastNumberValue: number | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.createNumberInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.numberControl.value === this.lastNumberValue) {\n return;\n }\n\n if (this.numberInputSub) {\n this.numberInputSub.unsubscribe();\n }\n\n this.fireOnChangeEvent();\n this.createNumberInputSubscription();\n }\n\n createNumberInputSubscription(): void {\n this.numberInputSub = this.numberControl.valueChanges\n .pipe(\n debounceTime(300),\n distinctUntilChanged()\n )\n .subscribe(() => this.fireOnChangeEvent());\n }\n \n isActiveFilter(): boolean {\n const value = this.numberControl.value;\n return value !== null && value !== undefined && !isNaN(Number(value))\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.NUMBER) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value,\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastNumberValue = this.numberControl.value;\n this.onChange({\n value: this.numberControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.NUMBER\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <input matInput type=\"number\"\n [placeholder]=\"('yuv.app.bpm-management.filters.search' | translate)\"\n [formControl]=\"numberControl\"\n (keydown.enter)=\"onEnter()\">\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n</div>","import { Component, input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-select-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n TranslatePipe,\n MatTooltipModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ],\n templateUrl: './select-filter.component.html',\n styleUrl: './select-filter.component.scss'\n})\nexport class SelectFilterComponent implements ControlValueAccessor, OnInit {\n options = input<FilterOption[]>([]);\n enableMultiselect = input<boolean>(false);\n \n selectControl = new FormControl();\n \n icons = {\n ...APP_ICONS,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n if (this.enableMultiselect()) {\n this.selectControl.setValue([]);\n } else {\n this.selectControl.setValue('');\n }\n \n this.selectControl.valueChanges.subscribe(() => {\n this.fireOnChangeEvent();\n });\n }\n\n isActiveFilter(): boolean {\n const value = this.selectControl.value;\n if (this.enableMultiselect()) {\n return value && Array.isArray(value) && value.length > 0;\n } else {\n return value && value !== '';\n }\n }\n\n getSelectedCount(): number {\n if (!this.enableMultiselect()) return 0;\n \n const values = this.selectControl.value || [];\n return Array.isArray(values) ? values.length : 0;\n }\n\n clearFilter(fireEvent = false): void {\n this.selectControl.setValue(null, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.SELECT ) {\n if (this.enableMultiselect()) {\n this.selectControl.setValue(Array.isArray(value.value) ? value.value : [], { emitEvent: false });\n } else {\n this.selectControl.setValue(value.value || '', { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.onChange({\n value: this.selectControl.value,\n type: FILTER_TYPES.SELECT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n <mat-select [formControl]=\"selectControl\"\n [placeholder]=\"('yuv.app.bpm-management.filters.select' | translate)\"\n [multiple]=\"enableMultiselect()\">\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\">\n {{option.label | translate}}\n </mat-option>\n }\n </mat-select>\n @if (enableMultiselect()) {\n <div matSuffix class=\"multi-select-suffix\">\n @if (getSelectedCount() > 0) {\n <mat-icon>check_circle</mat-icon>\n <span class=\"count\">{{getSelectedCount()}}</span>\n }\n </div>\n }\n </mat-form-field>\n</div>","import { Component, forwardRef, inject, input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { pairwise, startWith } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-date-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n TranslatePipe,\n MatTooltipModule,\n YuvDatepickerModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ],\n templateUrl: './date-filter.component.html',\n styleUrl: './date-filter.component.scss'\n})\nexport class DateFilterComponent implements ControlValueAccessor, OnInit {\n readonly translateService = inject(TranslateService);\n\n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n placeholder = input<string>();\n operators = input<FilterOption[]>([FILTER_OPERATORS.BEFORE]);\n \n filterForm = new FormGroup({\n value: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n operator: new FormControl<string>(FILTER_OPERATORS.BEFORE.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get valueControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n get endDateControl() { return this.filterForm.get('endDate') as FormControl; }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.valueControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n ) \n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.endDateControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n this.fireOnChangeEvent();\n }\n });\n }\n\n isActiveFilter(): boolean {\n const operator = this.operatorControl.value;\n \n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n return startDate !== null || endDate !== null;\n } else {\n const value = this.valueControl.value;\n return value !== null;\n }\n }\n\n isBetweenMode(): boolean {\n return this.operatorControl.value === FILTER_OPERATORS.BETWEEN.value;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value,\n endDate: null\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.DATE) {\n if (value.operator && value.operator === FILTER_OPERATORS.BETWEEN.value) {\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: FILTER_OPERATORS.BETWEEN.value,\n endDate: value.endDate instanceof Date ? value.endDate : null\n }, { emitEvent: false });\n } else {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: operator,\n endDate: null\n }, { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n const operator = this.operatorControl.value;\n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n\n this.onChange({\n value: startDate,\n endDate: endDate,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n } else {\n const value = this.valueControl.value;\n\n this.onChange({\n value: value,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n }\n }\n}","<div class=\"filter-input-group date-filter\" [class.active]=\"isActiveFilter()\">\n <div class=\"filter-operator-anchor\">\n @if (operators().length > 1) {\n <button mat-icon-button\n class=\"filter-options-btn\"\n (click)=\"toggleOperator()\"\n [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">\n <mat-icon>{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n </button>\n } @else {\n <mat-icon [matTooltip]=\"(getCurrentOperatorOption()?.label || '') | translate\">{{icons[getCurrentOperatorOption()?.icon || '']}}</mat-icon>\n }\n </div>\n\n @if (isBetweenMode()) {\n <div class=\"date-range\">\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n\n <yuv-datepicker\n [formControl]=\"endDateControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n </div>\n } @else {\n <yuv-datepicker\n [formControl]=\"valueControl\"\n [withTime]=\"true\"\n [calendar]=\"true\"\n [locale]=\"translateService.currentLang\">\n </yuv-datepicker>\n }\n</div>\n","import { Component, forwardRef, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { FilterValue, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\n\n@Component({\n selector: 'ymbpm-user-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatIconModule,\n TranslatePipe,\n OrganizationComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UserFilterComponent),\n multi: true\n }\n ],\n templateUrl: './user-filter.component.html',\n styleUrl: './user-filter.component.scss'\n})\nexport class UserFilterComponent implements ControlValueAccessor, OnInit {\n orgControl = new FormControl<string | null>(null);\n\n showOrganization = signal(true);\n\n private hasWrittenValue = false;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.orgControl.valueChanges.subscribe(value => this.fireOnChangeEvent(value));\n }\n\n writeValue(value: FilterValue | null): void {\n if (value && value.type === FILTER_TYPES.TEXT) {\n this.orgControl.setValue(value.value ? String(value.value) : null, { emitEvent: false });\n } else {\n this.orgControl.setValue(null, { emitEvent: false });\n if (this.hasWrittenValue) {\n this.showOrganization.set(false);\n setTimeout(() => this.showOrganization.set(true));\n }\n }\n this.hasWrittenValue = true;\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(value: string | null): void {\n this.onTouched();\n this.onChange({\n value: value || null,\n operator: FILTER_OPERATORS.EQUALS.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}\n","<div class=\"filter-input-group\" [class.active]=\"!!orgControl.value\">\n <mat-form-field appearance=\"outline\" class=\"filter-field\">\n @if (showOrganization()) {\n <yuv-organization [formControl]=\"orgControl\" [excludeMe]=\"false\" situation=\"SEARCH\" [placeholder]=\"orgControl.value ? '' : ('yuv.app.bpm-management.filters.search' | translate)\"></yuv-organization>\n }\n <mat-icon matSuffix>person_search</mat-icon>\n </mat-form-field>\n</div>\n","import { Component, computed, input, output, OnInit, signal } from '@angular/core';\nimport { Column, Pagination, TableFilters, FilterValue, APP_ICONS, FILTER_TYPES, FILTER_OPERATORS } from '../../bpm-management.schema';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TextFilterComponent, SelectFilterComponent, DateFilterComponent, NumberFilterComponent, UserFilterComponent } from '../filter';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'ymbpm-table',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n TranslatePipe,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatMenuModule,\n MatDividerModule,\n FormsModule,\n ReactiveFormsModule,\n TextFilterComponent,\n DateFilterComponent,\n SelectFilterComponent,\n NumberFilterComponent,\n UserFilterComponent,\n MatProgressBar\n],\n templateUrl: './bpm-table.component.html',\n styleUrls: ['./bpm-table.component.css']\n})\nexport class BpmTableComponent implements OnInit {\n columns = input<Column[]>([]);\n dataSource = input<any[]>([]);\n enableFilters = input<boolean>(false);\n pagination = input<Pagination>();\n selectedRow = input<any>();\n busy = input<boolean>(false);\n\n displayedColumns = computed(() => this.columns().map(c => c.name));\n \n filters = signal<TableFilters>({});\n filterControls: { [key: string]: FormControl<FilterValue | null> } = {};\n\n pageSizes = [10, 25, 50, 100];\n DEFAULT_PAGE_SIZE = 50;\n\n filtersChange = output<TableFilters>();\n pageChange = output<PageEvent>();\n rowSelected = output<any>();\n\n icons = {\n ...APP_ICONS,\n };\n\n FILTER_TYPES = FILTER_TYPES;\n\n private isClearing = false;\n\n ngOnInit(): void {\n this.initializeFilterControls();\n }\n\n getFilterControl(columnName: string): FormControl<FilterValue | null> {\n return this.filterControls[columnName];\n }\n\n clearColumnFilter(columnName: string): void {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n\n const currentFilters = { ...this.filters() };\n delete currentFilters[columnName];\n\n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n\n clearAllFilters(): void {\n if (Object.keys(this.filters()).length === 0) {\n return;\n }\n\n this.isClearing = true; \n\n Object.keys(this.filterControls).forEach(columnName => {\n const control = this.filterControls[columnName];\n if (control) {\n control.setValue(null);\n }\n });\n\n this.isClearing = false; \n this.filters.set({});\n this.filtersChange.emit({});\n }\n\n hasActiveFilter(columnName: string): boolean {\n return this.filters()[columnName] !== undefined;\n }\n\n isSelected(row: any): boolean {\n return this.selectedRow()?.id === row?.id;\n }\n\n selectRow(row: any): void {\n this.rowSelected.emit(row);\n }\n\n private initializeFilterControls(): void {\n this.columns().forEach(column => {\n if (column.filter) {\n this.filterControls[column.name] = new FormControl<FilterValue | null>(null);\n \n this.filterControls[column.name].valueChanges.subscribe(filterValue => {\n if (filterValue) {\n this.updateFilter(column.name, filterValue);\n }\n });\n }\n });\n }\n\n private updateFilter(columnName: string, filterValue: FilterValue | null): void {\n if (this.isClearing) return;\n\n const currentFilters = { ...this.filters() };\n \n if (!filterValue) {\n delete currentFilters[columnName];\n return;\n }\n\n if (filterValue.type === FILTER_TYPES.DATE && filterValue.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (filterValue.value !== null || filterValue.endDate !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n } else {\n if (filterValue.value !== null) {\n currentFilters[columnName] = filterValue;\n } else {\n delete currentFilters[columnName];\n }\n }\n \n this.filters.set(currentFilters);\n this.filtersChange.emit(currentFilters);\n }\n}\n","<div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource()\" class=\"bpm-table mat-elevation-z8\">\n @for (column of columns(); track column.name) {\n <ng-container [matColumnDef]=column.name>\n <!-- Header cell -->\n <th mat-header-cell *matHeaderCellDef>\n <div class=\"header-cell-content\">\n <div class=\"header-title\">\n <span>{{column.displayName | translate}}</span>\n @if (enableFilters() && column.filter && hasActiveFilter(column.name)) {\n <div class=\"header-actions\">\n <mat-icon class=\"filter-active-icon\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.activeFilter' | translate\">{{icons.filterActive}}</mat-icon>\n <button mat-icon-button \n class=\"filter-clear-btn\"\n (click)=\"clearColumnFilter(column.name)\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clearOne' | translate\">\n <mat-icon>{{icons.cancel}}</mat-icon>\n </button>\n </div>\n }\n </div>\n \n <!-- Filter inputs -->\n @if (enableFilters() && column.filter && getFilterControl(column.name)) {\n <div class=\"filter-container\">\n @switch (column.filter.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [formControl]=\"getFilterControl(column.name)\" [options]=\"column.filter.options || []\" [enableMultiselect]=\"column.filter.enableMultiselect || false\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [formControl]=\"getFilterControl(column.name)\" [operators]=\"column.filter.operators || []\"></ymbpm-date-filter>\n }\n @case (FILTER_TYPES.USER) {\n <ymbpm-user-filter [formControl]=\"getFilterControl(column.name)\"></ymbpm-user-filter>\n }\n }\n </div>\n }\n \n </div>\n </th>\n \n <!-- Data cells -->\n @if (column.template) {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{ $implicit: element }\"></ng-container>\n </div>\n </td>\n } @else {\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"cell-content\">\n {{element[column.name]}}\n </div>\n </td>\n }\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns();\" \n (click)=\"selectRow(row)\" \n [class.selected-row]=\"isSelected(row)\" \n class=\"process-row\">\n </tr>\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" [attr.colspan]=\"displayedColumns().length\">\n <p class=\"no-items-label\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n </td>\n </tr>\n</table>\n</div>\n@if (busy()) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n<div class=\"footer\">\n <mat-paginator class=\"paginator\" [length]=\"pagination()?.total\" [pageSize]=\"pagination()?.pageSize\" [pageSizeOptions]=\"pageSizes\" aria-label=\"Select page\"\n (page)=\"pageChange.emit($event)\"></mat-paginator>\n</div>","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { formatDateTime } from './bpm-management.schema';\n\n@Pipe({\n name: 'formatDateTime',\n standalone: true\n})\nexport class FormatDateTimePipe implements PipeTransform {\n readonly #translateService = inject(TranslateService);\n\n transform(value: string | null): string {\n if (!value) return '';\n return formatDateTime(value, this.#translateService.currentLang);\n }\n}\n","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\n\n@Component({\n selector: 'ymbpm-deployment-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe\n ],\n templateUrl: './deployment-summary.component.html',\n styleUrl: './deployment-summary.component.css'\n})\nexport class DeploymentSummaryComponent { \n deployment = input<DeploymentInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ deployment()?.category }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentTime' | translate }}</td>\n <td class=\"field-value\">{{ (deployment()?.deploymentTime ?? null) | formatDateTime }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"resources-section\">\n <h3 class=\"resources-title\">{{ 'yuv.app.bpm-management.deployment.details.resources' | translate }}</h3>\n\n <p *ngIf=\"!deployment()?.resources || deployment()?.resources?.length === 0\" class=\"no-resources-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"resources-table\" *ngIf=\"deployment()?.resources && deployment()?.resources?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.deployment.details.resourceMediaType' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (resource of deployment()!.resources; track resource.id) {\n <tr>\n <td class=\"resource-id\">{{ resource.id }}</td>\n <td class=\"resource-mediatype\">{{ resource.mediaType }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'ymbpm-deployment-process-definitions',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe\n ],\n templateUrl: './deployment-process-definitions.component.html',\n styleUrls: ['./deployment-process-definitions.component.css']\n})\nexport class DeploymentDefinitionsComponent {\n definitions = input<ProcessDefinitionInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!definitions() || definitions().length === 0\" class=\"no-definitions-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"definitions-table\" *ngIf=\"definitions() && definitions().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.key' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (definition of definitions(); track definition) {\n <tr>\n <td class=\"definition-id\">{{ definition.id }}</td>\n <td class=\"definition-key\">{{ definition.key }}</td>\n </tr>\n }\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, DeploymentInstance, FILTER_TYPES } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { DeploymentSummaryComponent } from './deployment-summary/deployment-summary.component';\nimport { DeploymentDefinitionsComponent } from './deployment-process-definitions/deployment-process-definitions.component';\nimport { ProcessDefinitionFilter } from '../../bpm-filter';\n\n@Component({\n selector: 'ymbpm-deployment-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n DeploymentSummaryComponent,\n DeploymentDefinitionsComponent,\n MatTabsModule,\n],\n templateUrl: './deployment-details.component.html',\n styleUrl: './deployment-details.component.css'\n})\nexport class DeploymentDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n deploymentId = input<string | undefined>();\n deployment = signal<DeploymentInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadDeploymentDetails();\n });\n }\n\n loadDeploymentDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.deploymentId();\n if (id) {\n\n const definitionsFilter = new ProcessDefinitionFilter();\n definitionsFilter.deploymentId = { value: id, type: FILTER_TYPES.TEXT };\n definitionsFilter.latest = { value: false, type: FILTER_TYPES.CHECKBOX };\n\n forkJoin({\n deployment: this.#bpmAdminService.getDeployment(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment details:', err);\n return of(null);\n })\n ),\n resources: this.#bpmAdminService.getDeploymentResources(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployment resources:', err);\n return of(null);\n })\n ),\n definitions: this.#bpmAdminService.getProcessDefinitions(0, 0, definitionsFilter).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading deployments process definitions:', err);\n return of(null);\n })\n )\n }).subscribe(({ deployment, resources, definitions }) => {\n this.deployment.set(deployment || undefined);\n if (deployment) {\n deployment.resources = resources || [];\n deployment.definitions = definitions.objects || [];\n }\n this.loading.set(false);\n });\n\n } else {\n this.deployment.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (deployment()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-deployment-summary [deployment]=\"deployment()\"></ymbpm-deployment-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.processdefinitions' | translate\">\n <ymbpm-deployment-process-definitions [definitions]=\"deployment()?.definitions ?? []\"></ymbpm-deployment-process-definitions>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, OnInit, signal, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, DeploymentInstance, DeploymentsSearchResponse, formatDateTime, TableFilters, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport { DeploymentFilter } from '../../../bpm-filter';\nimport { DeploymentDetailsComponent } from '../../../components/deployment-details/deployment-details.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-deployments-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckboxModule,\n DeploymentDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './deployments-page.component.html',\n styleUrl: './deployments-page.component.scss'\n})\nexport class YuvDeploymentsPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(DeploymentDetailsComponent) deploymentDetailsComponent?: DeploymentDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'deploymentTime', \n displayName: 'yuv.app.bpm-management.header.deploymentTime'\n }\n ];\n }\n\n // Filter state\n filter: DeploymentFilter = new DeploymentFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<DeploymentInstance[]>([]);\n selection = signal(new SelectionModel<DeploymentInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadDeploymentsList();\n }\n\n refresh() {\n this.#loadDeploymentsList();\n this.deploymentDetailsComponent?.loadDeploymentDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadDeploymentsList()\n }\n\n #loadDeploymentsList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getDeployments(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : DeploymentsSearchResponse) => {\n const formattedDeploymentObjects = response.objects.map(deployment => ({\n ...deployment,\n deploymentTime: deployment.deploymentTime ? formatDateTime(deployment.deploymentTime, this.#translateService.currentLang) : deployment.deploymentTime,\n }));\n\n this.dataSource.set(formattedDeploymentObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch deployments', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n \n onRowSelected(deployment: unknown): void {\n this.selection().select(deployment as DeploymentInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = DeploymentFilter.fromAgFilterModel(filters);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadDeploymentsList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\"\n [columns]=\"displayedColumns\"\n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDeployment = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDeployment ? 'inventory_2' : undefined\" [title]=\"selectedDeployment ? (selectedDeployment.name || '<unnamed>') : ''\" [subtitle]=\"selectedDeployment ? selectedDeployment.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDeployment) {\n <ymbpm-deployment-details [deploymentId]=\"selectedDeployment?.id\"></ymbpm-deployment-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, ProcessDefinitionInstance, ProcessDefinitionStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'ymbpm-process-definition-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatCheckboxModule,\n TranslatePipe\n ],\n templateUrl: './process-definition-summary.component.html',\n styleUrl: './process-definition-summary.component.css'\n})\nexport class ProcessDefinitionSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n processDefinition = input<ProcessDefinitionInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (processDefinition: ProcessDefinitionInstance | undefined): string => {\n if (!processDefinition) return '';\n if (processDefinition.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessDefinitionStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessDefinitionStatus.ACTIVE.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.deploymentId' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.deploymentId }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(processDefinition())\"></td>\n </tr>\n\n <tr> \n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.description' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.key' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.key || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.category' | translate }}</td>\n <td class=\"field-value\">{{ processDefinition()?.category || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.version' | translate }}</td>\n <td class=\"field-value\">{{ (processDefinition()?.version || '-') }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.processdefinitions.scope.global' | translate }}</td>\n <td class=\"field-value\">\n <mat-checkbox class=\"global-checkbox\" [disabled]=\"true\" [checked]=\"processDefinition()?.global\"></mat-checkbox>\n </td>\n </tr>\n\n <tr class=\"sub-row\">\n <td class=\"field-label\">\n {{'yuv.app.bpm-management.processdefinitions.details.processes'|translate}}\n </td>\n <td class=\"field-value\">\n {{(processDefinition()?.statistics?.processInstanceCount?.active || 0 )+ (processDefinition()?.statistics?.processInstanceCount?.suspended || 0) + (processDefinition()?.statistics?.processInstanceCount?.completed || 0)}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.running'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.active || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.suspended'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.suspended || 0}}\n </td>\n </tr>\n <tr class=\"sub-row\">\n <td class=\"sub-field-label\">\n {{'yuv.app.bpm-management.status.completed'|translate}}\n </td>\n <td class=\"sub-field-value\">\n {{processDefinition()?.statistics?.processInstanceCount?.completed || 0}}\n </td>\n </tr>\n </tbody>\n</table>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessDefinitionInstance, APP_ICONS } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { catchError, of } from 'rxjs';\nimport { ProcessDefinitionSummaryComponent } from './process-definition-summary/process-definition-summary.component';\n\n@Component({\n selector: 'ymbpm-process-definition-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessDefinitionSummaryComponent,\n MatTabsModule,\n],\n templateUrl: './process-definition-details.component.html',\n styleUrl: './process-definition-details.component.css'\n})\nexport class ProcessDefinitionDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processDefinitionId = input<string | undefined>();\n processDefinition = signal<ProcessDefinitionInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDefinitionDetails();\n });\n }\n\n loadProcessDefinitionDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processDefinitionId();\n if (id) {\n this.#bpmAdminService.getProcessDefinition(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process definition details:', err);\n this.loading.set(false);\n return of(null);\n })\n ).subscribe(processDefinition => {\n this.processDefinition.set(processDefinition || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.processDefinition.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (processDefinition()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-definition-summary [processDefinition]=\"processDefinition()\"></ymbpm-process-definition-summary>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { MatLabel } from '@angular/material/input';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-checkbox-overlay',\n standalone: true,\n imports: [\n YmtButtonDirective,\n DialogComponent,\n TranslatePipe,\n MatCheckbox,\n MatLabel\n],\n templateUrl: './checkbox-overlay.component.html',\n styleUrl: './checkbox-overlay.component.scss'\n})\nexport class CheckboxOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<CheckboxOverlayComponent>);\n readonly inputData = inject(MAT_DIALOG_DATA);\n\n @ViewChild('checkbox',) checkbox!: MatCheckbox;\n\n confirm() {\n this.#dialogRef.close(this.checkbox.checked);\n }\n\n close() {\n this.#dialogRef.close();\n }\n}\n","<yuv-dialog [headertitel]=\"this.inputData.title ?? ''\" []>\n <main class=\"yuv-dialog-content\">\n <mat-label>{{ this.inputData.message !== undefined ? this.inputData.message : '' }}</mat-label>\n <mat-checkbox #checkbox [checked]=\"false\">{{ this.inputData.checkboxMessage !== undefined ? this.inputData.checkboxMessage : '' }}</mat-checkbox>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\">\n {{ this.inputData.confirmBtnLabel !== undefined ? this.inputData.confirmBtnLabel : ('yuv.app.bpm-management.action.confirm.label' | translate) }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, signal, ViewChild, TemplateRef, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, ProcessDefinitionInstance, ProcessDefinitionSearchResponse, TableFilters, FILTER_OPERATORS, FILTER_TYPES, ProcessDefinitionStatus, ProcessDefinitionScope, ProcessInstance } from '../../../bpm-management.schema';\nimport { Logger, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { ProcessDefinitionFilter } from '../../../bpm-filter';\nimport { ProcessDefinitionDetailsComponent } from '../../../components/process-definition-details/process-definition-details.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CheckboxOverlayComponent } from '../../../components/overlays/checkbox-overlay/checkbox-overlay.component';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processdefinitions-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n MatCheckbox,\n ProcessDefinitionDetailsComponent,\n YmtLayoutModule,\n YmtPanesModule\n],\n templateUrl: './processdefinitions-page.component.html',\n styleUrl: './processdefinitions-page.component.scss'\n})\nexport class YuvProcessDefinitionsPageComponent implements OnInit {\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #translateService = inject(TranslateService);\n readonly #notificationService = inject(NotificationService);\n readonly #dialog = inject(MatDialog);\n\n @ViewChild(ProcessDefinitionDetailsComponent) processDefinitionDetailsComponent?: ProcessDefinitionDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('showOnlyLatestCheckbox',) showOnlyLatestCheckbox!: MatCheckbox;\n @ViewChild('globalTemplate', { static: true }) globalTemplate!: TemplateRef<unknown>;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n\n ProcessDefinitionScope = ProcessDefinitionScope;\n ProcessDefinitionStatus = ProcessDefinitionStatus;\n \n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'global', displayName: '',\n template: this.globalTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n enableMultiselect: false,\n options: [ProcessDefinitionScope.GLOBAL, ProcessDefinitionScope.TENANT]\n }\n },\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS],\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessDefinitionStatus.ACTIVE, ProcessDefinitionStatus.SUSPENDED]\n }\n },\n { \n name: 'category', \n displayName: 'yuv.app.bpm-management.header.category',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'version', \n displayName: 'yuv.app.bpm-management.header.version',\n filter: {\n type: FILTER_TYPES.NUMBER,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'key', \n displayName: 'yuv.app.bpm-management.header.key',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n tableFilter: ProcessDefinitionFilter = new ProcessDefinitionFilter;\n enableTableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessDefinitionInstance[]>([]);\n selection = signal(new SelectionModel<ProcessDefinitionInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessDefinitionList();\n }\n\n refresh() {\n this.#loadProcessDefinitionList();\n this.processDefinitionDetailsComponent?.loadProcessDefinitionDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessDefinitionList();\n }\n\n #loadProcessDefinitionList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcessDefinitions(this.pagination.page, this.pagination.pageSize, { ...this.tableFilter, latest: { value: this.showOnlyLatestCheckbox?.checked ?? true, type: FILTER_TYPES.CHECKBOX } }).subscribe(\n {\n next: (response : ProcessDefinitionSearchResponse) => {\n this.dataSource.set(response.objects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: Error) => {\n this.#logger.error('Failed to fetch process definitions', e);\n this.busy.set(false);\n },\n complete: () => {\n // const selected = this.selection().hasValue() ? this.selection().selected[0] : undefined;\n // if (selected) {\n // if (this.dataSource().some(u => u.id === selected.id)) {\n // const updatedSelected = this.dataSource().find(u => u.id === selected.id);\n // this.select(updatedSelected);\n // } else {\n // this.#userManagementService.getUserDetails(selected.id).subscribe({\n // next: (user) => {\n // this.select(user);\n // },\n // error: (e) => {\n // this.#logger.error(`Failed to fetch data for selected user with id '${selected.id}'. Deselecting user...`, e);\n // this.deselect();\n // }\n // });\n // }\n // this.refreshUserDetails();\n // } else {\n // this.deselect();\n // }\n this.busy.set(false);\n },\n });\n }\n\n onTableFiltersChange(filters: TableFilters | null): void {\n if (filters != null) {\n this.tableFilter = ProcessDefinitionFilter.fromAgFilterModel(filters);\n }\n this.pagination.page = 0;\n this.#loadProcessDefinitionList();\n }\n\n hasActiveTableFilters(): boolean {\n return this.tableFilter ? Object.keys(this.tableFilter).length > 0 : false;\n }\n\n onRowSelected(processDefinition: unknown): void {\n this.selection().select(processDefinition as ProcessDefinitionInstance);\n this.#updateActions(this.selection().selected.at(0));\n\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: ProcessDefinitionInstance | undefined) {\n this.actions = obj\n ? [ \n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.activate',\n icon: APP_ICONS.activate,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.activate.label'\n ),\n disabled: obj.suspended === false || obj.global === true,\n callback: () => this.executeAction(\"activate\"),\n },\n {\n id: 'yuv.app.bpm-management.processdefinitions.actions.suspend',\n icon: APP_ICONS.suspend,\n label: this.#translateService.instant(\n 'yuv.app.bpm-management.processdefinitions.actions.suspend.label'\n ),\n disabled: obj.suspended === true || obj.global === true,\n callback: () => this.executeAction(\"suspend\"),\n }\n ]\n : [];\n }\n\n executeAction(action: string) {\n const processDefinition = this.selection().selected.at(0);\n if (!processDefinition) {\n return;\n }\n\n this.#dialog.open(CheckboxOverlayComponent, {\n width: '600px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.message'),\n checkboxMessage: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.activateorsuspend.confirm.includeProcesses.label'),\n confirmBtnLabel: this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.confirm.button.label')\n },\n }).afterClosed().subscribe((result: boolean | undefined)=>{\n if (result !== undefined) {\n this.busy.set(true);\n this.#bpmAdminSerice.executeProcessDefinitionAction(processDefinition.id, action, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to ${action} process definition`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.processdefinitions.actions.' + action + '.error')\n );\n }\n });\n }\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\"\n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableTableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onTableFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedDefinition = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedDefinition ? 'flowchart' : undefined\" [title]=\"selectedDefinition ? (selectedDefinition.name || '<unnamed>') : ''\" [subtitle]=\"selectedDefinition ? selectedDefinition.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedDefinition) {\n <ymbpm-process-definition-details [processDefinitionId]=\"selectedDefinition?.id\"></ymbpm-process-definition-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"filter-actions\"> \n <mat-checkbox #showOnlyLatestCheckbox (change)=\"this.onTableFiltersChange(null)\" [checked]=\"true\">{{'yuv.app.bpm-management.processdefinitions.filter.onlyLatest' | translate}}</mat-checkbox>\n </div>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableTableFilters\" [disabled]=\"!hasActiveTableFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #globalTemplate let-processDefinition>\n @if (processDefinition.global) {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.GLOBAL.label | translate\">{{icons[ProcessDefinitionScope.GLOBAL.icon]}}</mat-icon>\n } @else {\n <mat-icon [matTooltip]=\"ProcessDefinitionScope.TENANT.label | translate\">{{icons[ProcessDefinitionScope.TENANT.icon]}}</mat-icon>\n }\n</ng-template>\n\n<ng-template #statusTemplate let-processDefinition>\n @if (processDefinition.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessDefinitionStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessDefinitionStatus.ACTIVE.label | translate}}</span>\n }\n</ng-template>","import { Component, input, inject, computed } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { switchMap, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IdmService, NotificationService, TranslatePipe, TranslateService } from '@yuuvis/client-core';\n\n@Component({\n selector: 'ymbpm-user-display',\n standalone: true,\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n TranslatePipe\n ],\n templateUrl: './user-display.component.html',\n styleUrl: './user-display.component.scss'\n})\nexport class UserDisplayComponent {\n private readonly idmService = inject(IdmService);\n private readonly notificationService = inject(NotificationService);\n private readonly translateService = inject(TranslateService);\n\n userId = input<string | null | undefined>();\n\n private readonly user = toSignal(\n toObservable(this.userId).pipe(\n switchMap(id => id ? this.idmService.getUserById(id) : of(null))\n ),\n { initialValue: null }\n );\n\n displayName = computed(() => this.user()?.getDisplayNameName() ?? this.userId() ?? '-');\n\n copyId(event: Event): void {\n event.stopPropagation();\n\n const id = this.userId();\n if (!id) {\n return;\n }\n\n navigator.clipboard.writeText(id).then(() => {\n this.notificationService.success(\n this.translateService.instant('yuv.app.bpm-management.user.copyId.success', { name: this.displayName() })\n );\n });\n }\n}\n","@if (userId()) {\n <span class=\"user-display\">\n <span class=\"user-name\">{{ displayName() }}</span>\n <button mat-icon-button\n type=\"button\"\n class=\"copy-id-btn\"\n (click)=\"copyId($event)\"\n [matTooltip]=\"'yuv.app.bpm-management.user.copyId.tooltip' | translate\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </span>\n} @else {\n <span>-</span>\n}\n","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, ProcessStatus } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-process-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './process-summary.component.html',\n styleUrl: './process-summary.component.css'\n})\nexport class ProcessSummaryComponent {\n readonly #translateService = inject(TranslateService);\n \n process = input<ProcessInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n\n processStatusTemplate = (process: ProcessInstance | undefined): string => {\n if (!process) return '';\n if (process.endTime) {\n return `<span class=\"yuv-bpmn-status completed\">${this.#translateService.instant(ProcessStatus.COMPLETED.label)}</span>`;\n } else if (process.suspended) {\n return `<span class=\"yuv-bpmn-status suspended\">${this.#translateService.instant(ProcessStatus.SUSPENDED.label)}</span>`;\n } else {\n return `<span class=\"yuv-bpmn-status running\">${this.#translateService.instant(ProcessStatus.RUNNING.label)}</span>`;\n }\n }\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.processDefinitionId' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionId }}</td>\n </tr>\n \n @if (process()?.processDefinitionDescription) {\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.process.details.processDefinitionDescription' | translate }}</td>\n <td class=\"field-value\">{{ process()?.processDefinitionDescription }}</td>\n </tr>\n }\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\" [innerHTML]=\"processStatusTemplate(process())\"></td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.businessKey' | translate }}</td>\n <td class=\"field-value\">{{ process()?.businessKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startedBy' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"process()?.startUserId\"></ymbpm-user-display></td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.startTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.startTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((process()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"variables-section\">\n <h3 class=\"variables-title\">{{ 'yuv.app.bpm-management.details.variables' | translate }}</h3>\n\n <p *ngIf=\"!process()?.variables || process()?.variables?.length === 0\" class=\"no-variables-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n </p>\n <table class=\"variables-table\" *ngIf=\"process()?.variables && process()?.variables?.length! > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.details.variableName' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableType' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableValue' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (variable of process()!.variables; track variable.name) {\n <tr>\n <td class=\"variable-name\">{{ variable.name }}</td>\n <td class=\"variable-type\">{{ variable.type }}</td>\n <td class=\"variable-value\">{{ variable.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Component, input, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-process-tasks',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './process-tasks.component.html',\n styleUrl: './process-tasks.component.css'\n})\nexport class ProcessTasksComponent {\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<table class=\"tasks-table\" *ngIf=\"tasks() && tasks().length > 0\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.header.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.name' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.assignee' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.owner' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.createTime' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.header.endTime' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (task of tasks(); track task) {\n <tr>\n <td class=\"task-id\">{{ task.id }}</td>\n <td class=\"task-name\">{{ task.name }}</td>\n <td class=\"task-assignee\"><ymbpm-user-display [userId]=\"task.assignee\"></ymbpm-user-display></td>\n <td class=\"task-owner\"><ymbpm-user-display [userId]=\"task.owner\"></ymbpm-user-display></td>\n <td class=\"task-createTime\">{{ task.createTime | formatDateTime }}</td>\n <td class=\"task-endTime\">{{ task.endTime | formatDateTime }}</td>\n </tr>\n }\n </tbody>\n </table>","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-process-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './process-history.component.html',\n styleUrl: './process-history.component.css'\n})\nexport class ProcessHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n formatDateTime = formatDateTime;\n\n tasks = input<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<p *ngIf=\"!tasks() || tasks().length === 0\" class=\"no-tasks-label\">\n {{ 'yuv.app.bpm-management.emptyResult' | translate }}\n</p>\n\n<div class=\"process-history-container\">\n <div class=\"timeline-container\" *ngIf=\"tasks() && tasks().length > 0\" [ngClass]=\"{singleEntry: tasks().length === 1}\">\n <div class=\"timeline-item\" *ngFor=\"let task of tasks()\">\n <div class=\"timeline-datetime\" [matTooltip]=\"'yuv.app.bpm-management.header.startTime' | translate\">\n <div class=\"date\">{{ formatDateTime(task.createTime, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(task.createTime, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"task-card\">\n <div class=\"task-title\" [matTooltip]=\"'yuv.app.bpm-management.header.name' | translate\">{{ task.name || '<unnamed>' }}</div>\n <div class=\"task-details\">\n <div class=\"task-assignee\" [matTooltip]=\"'yuv.app.bpm-management.header.assignee' | translate\">\n <mat-icon>person</mat-icon>\n <ymbpm-user-display [userId]=\"task.assignee\"></ymbpm-user-display>\n </div>\n <div class=\"task-owner\" *ngIf=\"task.owner\" [matTooltip]=\"'yuv.app.bpm-management.header.owner' | translate\">\n <mat-icon>supervisor_account</mat-icon>\n <ymbpm-user-display [userId]=\"task.owner\"></ymbpm-user-display>\n </div>\n <div class=\"task-endtime\" *ngIf=\"task.endTime\" [matTooltip]=\"'yuv.app.bpm-management.header.endTime' | translate\">\n <mat-icon>event_available</mat-icon>\n <span>{{ task.endTime | formatDateTime }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, input, inject, effect, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { ProcessInstance, APP_ICONS, TaskInstance } from '../../bpm-management.schema';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { CommonModule } from '@angular/common';\nimport { ProcessSummaryComponent } from './process-summary/process-summary.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ProcessTasksComponent } from './process-tasks/process-tasks.component';\nimport { ProcessHistoryComponent } from './process-history/process-history.component';\nimport { catchError, forkJoin, of } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-process-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n ProcessSummaryComponent,\n ProcessTasksComponent,\n ProcessHistoryComponent,\n MatTabsModule\n],\n templateUrl: './process-details.component.html',\n styleUrl: './process-details.component.css'\n})\nexport class ProcessDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n \n processInstanceId = input<string | undefined>();\n process = signal<ProcessInstance | undefined>(undefined);\n tasks = signal<TaskInstance[]>([]);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n icons = {\n ...APP_ICONS\n };\n\n constructor() {\n effect(() => {\n this.loadProcessDetails();\n });\n }\n\n loadProcessDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.processInstanceId();\n if (id) {\n forkJoin({\n process: this.#bpmAdminService.getProcess(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n ),\n history: this.#bpmAdminService.getProcessHistory(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process history:', err);\n return of(null);\n })\n )\n }).subscribe(({ process, history }) => {\n this.process.set(process || undefined);\n this.tasks.set(history?.tasks || []);\n this.loading.set(false);\n });\n\n } else {\n this.process.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (process() && tasks()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.summary' | translate\">\n <ymbpm-process-summary [process]=\"process()\"></ymbpm-process-summary>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.tasks' | translate\">\n <ymbpm-process-tasks [tasks]=\"tasks()\"></ymbpm-process-tasks>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.tabs.history' | translate\">\n <ymbpm-process-history [tasks]=\"tasks()\"></ymbpm-process-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, ProcessesSearchResponse, ProcessInstance, Column, Pagination, TableFilters, formatDateTime, FILTER_TYPES, FILTER_OPERATORS, ProcessStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { ProcessDetailsComponent } from '../../../components/process-details/process-details.component';\nimport { UserDisplayComponent } from '../../../components/user-display/user-display.component';\nimport { ProcessFilter } from '../../../bpm-filter';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-processes-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n ProcessDetailsComponent,\n UserDisplayComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './processes-page.component.html',\n styleUrl: './processes-page.component.scss'\n})\nexport class YuvProcessesPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n\n @ViewChild(ProcessDetailsComponent) processDetailsComponent?: ProcessDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n @ViewChild('userTemplate', { static: true }) userTemplate!: TemplateRef<unknown>;\n\n ProcessStatus = ProcessStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'processDefinitionId', \n displayName: 'yuv.app.bpm-management.header.processDefinitionId',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [ProcessStatus.RUNNING_SUSPENDED, ProcessStatus.COMPLETED]\n }\n },\n {\n name: 'startUserId',\n displayName: 'yuv.app.bpm-management.header.startedBy',\n template: this.userTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n { \n name: 'startTime', \n displayName: 'yuv.app.bpm-management.header.startTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'businessKey', \n displayName: 'yuv.app.bpm-management.header.businessKey',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n ];\n }\n\n // Filter state\n filter: ProcessFilter = new ProcessFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<ProcessInstance[]>([]);\n selection = signal(new SelectionModel<ProcessInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadProcessList();\n }\n\n refresh() {\n this.#loadProcessList();\n this.processDetailsComponent?.loadProcessDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadProcessList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = ProcessFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0;\n this.#loadProcessList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadProcessList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getProcesses(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : ProcessesSearchResponse) => {\n\n const formattedProcessObjects = response.objects.map(process => ({\n ...process,\n startTime: process.startTime ? formatDateTime(process.startTime, this.#translateService.currentLang) : process.startTime,\n endTime: process.endTime ? formatDateTime(process.endTime, this.#translateService.currentLang) : process.endTime\n }));\n\n this.dataSource.set(formattedProcessObjects);\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch processes', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(process: unknown): void {\n this.selection().select(process as ProcessInstance);\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [busy]=\"busy()\"\n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n\n <ng-template ymtLayoutPane role=\"details\">\n @let selectedProcess = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedProcess ? 'timeline' : undefined\" [title]=\"selectedProcess ? (selectedProcess.name || '<unnamed>') : ''\" [subtitle]=\"selectedProcess ? selectedProcess.id : ''\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedProcess) {\n <ymbpm-process-details [processInstanceId]=\"selectedProcess?.id\"></ymbpm-process-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-process>\n @if (process.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ProcessStatus.COMPLETED.label | translate}}</span>\n } @else if (process.suspended) {\n <span class=\"yuv-bpmn-status suspended\">{{ProcessStatus.SUSPENDED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ProcessStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>\n\n<ng-template #userTemplate let-process>\n <ymbpm-user-display [userId]=\"process.startUserId\"></ymbpm-user-display>\n</ng-template>","import { Component, input, inject, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { FormatDateTimePipe } from '../../../format-date-time.pipe';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-task-summary',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n FormatDateTimePipe,\n UserDisplayComponent\n ],\n templateUrl: './task-summary.component.html',\n styleUrl: './task-summary.component.scss'\n})\nexport class TaskSummaryComponent {\n \n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n icons = {\n ...APP_ICONS\n };\n}\n","<table class=\"details-table\">\n <tbody>\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceId' | translate }}</td>\n <td class=\"field-value\">\n @if (task()?.processInstanceId) {\n {{ task()?.processInstanceId }}\n } @else {\n <span class=\"standalone-task-indicator\">\n <span>-</span>\n <mat-icon [matTooltip]=\"'yuv.app.bpm-management.task.details.standaloneTask.tooltip' | translate\">{{ icons.info }}</mat-icon>\n </span>\n }\n </td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.processInstanceName' | translate }}</td>\n <td class=\"field-value\">{{ task()?.processInstanceName || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.status' | translate }}</td>\n <td class=\"field-value\">\n @if (task()?.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{ 'yuv.app.bpm-management.status.completed' | translate }}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{ 'yuv.app.bpm-management.status.running' | translate }}</span>\n }\n @if (task()?.delegationState) {\n @if (task()?.delegationState === 'pending') {\n <span class=\"yuv-bpmn-status running\">\n <mat-icon>{{ icons.delegated }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.pending' | translate }}\n </span>\n } @else {\n <span class=\"yuv-bpmn-status completed\">\n <mat-icon>{{ icons.resolved }}</mat-icon>\n {{ 'yuv.app.bpm-management.task.delegationState.resolved' | translate }}\n </span>\n }\n }\n </td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.description' | translate }}</td>\n <td class=\"field-value\">{{ task()?.description || '-' }}</td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"task()?.assignee\"></ymbpm-user-display></td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}</td>\n <td class=\"field-value\"><ymbpm-user-display [userId]=\"task()?.owner\"></ymbpm-user-display></td>\n </tr>\n\n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.taskDefinitionKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.taskDefinitionKey }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.formKey' | translate }}</td>\n <td class=\"field-value\">{{ task()?.formKey || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.createTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.createTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.claimTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.claimTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.dueDate' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.dueDate ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n <tr>\n <td class=\"field-label\">{{ 'yuv.app.bpm-management.header.endTime' | translate }}</td>\n <td class=\"field-value\">{{ ((task()?.endTime ?? null) | formatDateTime) || '-' }}</td>\n </tr>\n \n </tbody>\n</table>\n","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime, TaskAssignmentHistoryEntry } from '../../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { UserDisplayComponent } from '../../user-display/user-display.component';\n\n@Component({\n selector: 'ymbpm-editor-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n UserDisplayComponent\n ],\n templateUrl: './editor-history.component.html',\n styleUrl: './editor-history.component.scss'\n})\nexport class EditorHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n formatDateTime = formatDateTime;\n\n icons = {\n ...APP_ICONS\n };\n\n get candidateUsers(): string[] {\n return this.task()?.identityLinks?.candidates?.users || [];\n }\n\n get candidateRoles(): string[] {\n return this.task()?.identityLinks?.candidates?.roles || [];\n }\n\n get assignmentHistory(): TaskAssignmentHistoryEntry[] {\n return this.task()?.identityLinks?.assignmentHistory || [];\n }\n\n getActionIcon(type: string, assignee?: string): string {\n switch (type) {\n case 'ASSIGNMENT':\n return assignee !== null ? 'person_add' : 'person_off';\n case 'DELEGATION':\n return this.icons.delegated;\n case 'RESOLVE':\n return this.icons.resolved;\n default:\n return 'info';\n }\n }\n\n getActionLabel(type: string, assignee?: string): string {\n if (type === 'ASSIGNMENT') {\n return assignee !== null ?\n 'yuv.app.bpm-management.task.details.actionType.assignment'\n : 'yuv.app.bpm-management.task.details.actionType.assignmentRemoved';\n }\n return `yuv.app.bpm-management.task.details.actionType.${type.toLowerCase()}`;\n }\n}\n","<div class=\"editor-history-container\">\n <!-- Candidate Users Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>person</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}\n </h3>\n @if (candidateUsers.length > 0) {\n <div class=\"candidates-list\">\n @for (user of candidateUsers; track user) {\n <span class=\"candidate-chip\">\n <mat-icon>person</mat-icon>\n <ymbpm-user-display [userId]=\"user\"></ymbpm-user-display>\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateUsers' | translate }}</p>\n }\n </div>\n\n <!-- Candidate Roles Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>group</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}\n </h3>\n @if (candidateRoles.length > 0) {\n <div class=\"candidates-list\">\n @for (role of candidateRoles; track role) {\n <span class=\"candidate-chip\">\n <mat-icon>group</mat-icon>\n {{ role }}\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateRoles' | translate }}</p>\n }\n </div>\n\n <!-- Assignment History Section -->\n <div class=\"history-section\">\n <h3 class=\"section-title\">\n <mat-icon>history</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.assignmentHistory' | translate }}\n </h3>\n \n @if (assignmentHistory.length === 0) {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noAssignmentHistory' | translate }}</p>\n } @else {\n <div class=\"timeline-container\" [ngClass]=\"{singleEntry: assignmentHistory.length === 1}\">\n @for (entry of assignmentHistory; track entry.timestamp) {\n <div class=\"timeline-item\">\n <div class=\"timeline-datetime\">\n <div class=\"date\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"history-card\">\n <div class=\"action-header\">\n <mat-icon class=\"action-icon\">{{ getActionIcon(entry.type, entry.assignee) }}</mat-icon>\n <span class=\"action-label\">{{ getActionLabel(entry.type, entry.assignee) | translate }}</span>\n </div>\n @if (entry.assignee) {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}:</span>\n <ymbpm-user-display [userId]=\"entry.assignee\"></ymbpm-user-display>\n </div>\n }\n @if (entry.owner && entry.type !== 'RESOLVE') {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}:</span>\n <ymbpm-user-display [userId]=\"entry.owner\"></ymbpm-user-display>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YuvBpmAdminService } from '../../bpm-management.service';\nimport { TaskInstance } from '../../bpm-management.schema';\nimport { catchError, forkJoin, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TaskSummaryComponent } from './task-summary/task-summary.component';\nimport { EditorHistoryComponent } from './editor-history/editor-history.component';\n\n@Component({\n selector: 'ymbpm-task-details',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n MatTabsModule,\n TaskSummaryComponent,\n EditorHistoryComponent\n ],\n templateUrl: './task-details.component.html',\n styleUrl: './task-details.component.scss'\n})\nexport class TaskDetailsComponent {\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminService = inject(YuvBpmAdminService);\n\n taskId = input<string | undefined>();\n task = signal<TaskInstance | undefined>(undefined);\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n selectedTabIndex = 0;\n\n constructor() {\n effect(() => {\n this.loadTaskDetails();\n });\n }\n\n loadTaskDetails(): void {\n this.loading.set(true);\n this.error.set(undefined);\n\n const id = this.taskId();\n if (id) {\n forkJoin({\n task: this.#bpmAdminService.getTask(id).pipe(\n catchError(err => {\n this.error.set(this.#translateService.instant('yuv.app.bpm-management.details.error'));\n console.error('Error loading process details:', err);\n return of(null);\n })\n )\n }).subscribe(({ task }) => {\n this.task.set(task || undefined);\n this.loading.set(false);\n });\n\n } else {\n this.task.set(undefined);\n }\n }\n}\n","@if (loading()) {\n <div class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n} @else if (error()) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error() }}</p>\n </div>\n} @else if (task()) {\n <section class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n <mat-tab-group [(selectedIndex)]=\"selectedTabIndex\">\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.summary' | translate }}\">\n <ymbpm-task-summary [task]=\"task()\"></ymbpm-task-summary>\n </mat-tab>\n <mat-tab label=\"{{ 'yuv.app.bpm-management.tabs.editorHistory' | translate }}\">\n <ymbpm-editor-history [task]=\"task()\"></ymbpm-editor-history>\n </mat-tab>\n </mat-tab-group>\n </section>\n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms'\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-task-assign-overlay',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n standalone: true,\n templateUrl: './task-assign-overlay.component.html',\n styleUrl: './task-assign-overlay.component.css'\n})\nexport class TaskAssignOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskAssignOverlayComponent>);\n readonly data = inject(MAT_DIALOG_DATA);\n\n userControl = new FormControl('');\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const assignee = this.userControl.value;\n if (assignee && assignee.trim()) {\n this.#dialogRef.close(assignee.trim());\n }\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.assign.label' | translate\">\n <main >\n <mat-label>{{ 'yuv.app.bpm-management.task.actions.assign.assignee.label' | translate }}</mat-label>\n <yuv-organization [formControl]=\"userControl\" [excludeMe]='false' />\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\" [disabled]=\"this.userControl.touched && this.userControl.dirty\">\n {{ 'yuv.app.bpm-management.task.actions.assign.confirm' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\nexport interface TaskCandidatesOverlayData {\n currentUsers: string[];\n currentRoles: string[];\n}\n\nexport interface TaskCandidatesOverlayResult {\n users: string[];\n roles: string[];\n}\n\n@Component({\n selector: 'ymbpm-task-candidates-overlay',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './task-candidates-overlay.component.html',\n styleUrl: './task-candidates-overlay.component.css'\n})\nexport class TaskCandidatesOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskCandidatesOverlayComponent>);\n readonly data: TaskCandidatesOverlayData = inject(MAT_DIALOG_DATA);\n\n readonly usersControl = new FormControl<string | string[] | null>(\n this.data.currentUsers?.length ? this.data.currentUsers : null\n );\n\n readonly rolesControl = new FormControl<string | string[] | null>(\n this.data.currentRoles?.length ? this.data.currentRoles : null\n );\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const usersValue = this.usersControl.value;\n const rolesValue = this.rolesControl.value;\n\n const result: TaskCandidatesOverlayResult = {\n users: Array.isArray(usersValue) ? usersValue.filter(Boolean) : usersValue ? [usersValue] : [],\n roles: Array.isArray(rolesValue) ? rolesValue.filter(Boolean) : rolesValue ? [rolesValue] : []\n };\n this.#dialogRef.close(result);\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <label class=\"field-label\">{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject, OnInit, signal, ViewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { APP_ID, APP_ICONS, Column, Pagination, TasksSearchResponse, TaskInstance, formatDateTime, TableFilters, FILTER_TYPES, FILTER_OPERATORS, TaskStatus } from '../../../bpm-management.schema';\nimport { Logger, TranslateService, NotificationService } from '@yuuvis/client-core';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-components/master-details'\nimport { OverflowMenuItem, YuvOverflowMenuModule } from '@yuuvis/client-components/overflow-menu'\nimport { YuvBpmAdminService } from '../../../bpm-management.service';\nimport { BpmTableComponent } from '../../../components/bpm-table/bpm-table.component';\nimport { TaskFilter } from '../../../bpm-filter';\nimport { TaskDetailsComponent } from '../../../components/task-details/task-details.component';\nimport { UserDisplayComponent } from '../../../components/user-display/user-display.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmComponent } from '@yuuvis/client-components/common';\nimport { TaskAssignOverlayComponent } from '../../../components/overlays/task-assign-overlay/task-assign-overlay.component';\nimport { TaskCandidatesOverlayComponent, TaskCandidatesOverlayResult } from '../../../components/overlays/task-candidates-overlay/task-candidates-overlay.component';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { MasterDetailsPaneLayoutOptions, YmtLayoutModule } from '@yuuvis/material/layout';\nimport { SelectionModel } from '@angular/cdk/collections'\n\n@Component({\n selector: 'ymbpm-tasks-page',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n RouterModule,\n TranslatePipe,\n YuvClientShellModule,\n YuvMasterDetailsModule,\n YuvOverflowMenuModule,\n BpmTableComponent,\n TaskDetailsComponent,\n UserDisplayComponent,\n YmtLayoutModule,\n YmtPanesModule\n ],\n templateUrl: './tasks-page.component.html',\n styleUrl: './tasks-page.component.scss'\n})\nexport class YuvTasksPageComponent implements OnInit{\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n\n readonly #logger = inject(Logger);\n readonly #translateService = inject(TranslateService);\n readonly #bpmAdminSerice = inject(YuvBpmAdminService);\n readonly #dialog = inject(MatDialog);\n readonly #notificationService = inject(NotificationService);\n\n @ViewChild(TaskDetailsComponent) taskDetailsComponent?: TaskDetailsComponent;\n @ViewChild(BpmTableComponent) bpmTableComponent?: BpmTableComponent;\n @ViewChild('statusTemplate', { static: true }) statusTemplate!: TemplateRef<unknown>;\n @ViewChild('assigneeTemplate', { static: true }) assigneeTemplate!: TemplateRef<unknown>;\n @ViewChild('ownerTemplate', { static: true }) ownerTemplate!: TemplateRef<unknown>;\n \n TaskStatus = TaskStatus;\n\n pagination: Pagination = {\n total: 0,\n pageSize: 50,\n page: 0\n };\n\n actions: OverflowMenuItem[] = [];\n\n icons = {\n ...APP_ICONS,\n };\n\n get displayedColumns(): Column[] {\n return [\n { \n name: 'id', \n displayName: 'yuv.app.bpm-management.header.id',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.EQUALS]\n }\n },\n { \n name: 'name', \n displayName: 'yuv.app.bpm-management.header.name',\n filter: {\n type: FILTER_TYPES.TEXT,\n operators: [FILTER_OPERATORS.CONTAINS, FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH]\n }\n },\n { \n name: 'status', \n displayName: 'yuv.app.bpm-management.header.status', \n template: this.statusTemplate,\n filter: {\n type: FILTER_TYPES.SELECT,\n options: [TaskStatus.RUNNING, TaskStatus.COMPLETED]\n }\n },\n {\n name: 'assignee',\n displayName: 'yuv.app.bpm-management.header.assignee',\n template: this.assigneeTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n {\n name: 'owner',\n displayName: 'yuv.app.bpm-management.header.owner',\n template: this.ownerTemplate,\n filter: {\n type: FILTER_TYPES.USER\n }\n },\n { \n name: 'createTime', \n displayName: 'yuv.app.bpm-management.header.createTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n },\n { \n name: 'endTime', \n displayName: 'yuv.app.bpm-management.header.endTime',\n filter: {\n type: FILTER_TYPES.DATE,\n operators: [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN]\n }\n }\n ];\n }\n\n // Filter state\n filter: TaskFilter = new TaskFilter();\n enableFilters = true;\n\n enableDetails = signal<boolean>(false);\n layoutOptions = signal<MasterDetailsPaneLayoutOptions>({\n resizable: true,\n detailsSize: 25,\n detailsMaxSize: 75\n });\n busy = signal<boolean>(false);\n\n dataSource = signal<TaskInstance[]>([]);\n selection = signal(new SelectionModel<TaskInstance>(false, undefined));\n\n currentPageSize = 50;\n\n ngOnInit() {\n this.#loadTaskList();\n }\n\n refresh() {\n this.#loadTaskList();\n this.taskDetailsComponent?.loadTaskDetails();\n }\n \n onChangePage($event: PageEvent) {\n this.pagination.page = $event.pageIndex;\n this.pagination.pageSize = $event.pageSize;\n this.#loadTaskList()\n }\n\n onFiltersChange(filters: TableFilters): void {\n this.filter = TaskFilter.fromAgFilterModel(filters, this.#translateService);\n this.pagination.page = 0; // Reset to first page when filtering\n this.#loadTaskList();\n }\n\n hasActiveFilters(): boolean {\n return this.filter ? Object.keys(this.filter).length > 0 : false;\n }\n\n #loadTaskList() {\n this.busy.set(true);\n\n this.#bpmAdminSerice.getTasks(this.pagination.page, this.pagination.pageSize, this.filter).subscribe(\n {\n next: (response : TasksSearchResponse) => {\n const formattedTaskObjects = response.objects.map(task => ({\n ...task,\n createTime: task.createTime ? formatDateTime(task.createTime, this.#translateService.currentLang) : task.createTime,\n endTime: task.endTime ? formatDateTime(task.endTime, this.#translateService.currentLang) : task.endTime\n }));\n\n this.dataSource.set(formattedTaskObjects);\n\n const selectedId = this.selection().selected.at(0)?.id;\n if (selectedId) {\n const updatedSelected = this.dataSource().find(pd => pd.id === selectedId);\n if (updatedSelected) {\n this.selection().select(updatedSelected);\n this.#updateActions(updatedSelected);\n }\n }\n\n this.pagination.total = response.totalNumItems;\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch tasks', e);\n this.busy.set(false);\n },\n complete: () => {\n this.busy.set(false);\n },\n });\n }\n\n onRowSelected(task: unknown): void {\n this.selection().select(task as TaskInstance);\n this.#updateActions(this.selection().selected.at(0));\n if (!this.enableDetails()) {\n this.enableDetails.set(true);\n }\n }\n\n #updateActions(obj: TaskInstance | undefined) {\n if (!obj) {\n this.actions = [];\n return;\n }\n this.actions = [\n {\n id: 'yuv.app.bpm-management.task.actions.assign',\n icon: APP_ICONS.assign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.label'),\n disabled: obj.assignee != null || obj.endTime != null,\n callback: () => this.assign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.unassign',\n icon: APP_ICONS.unassign,\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n disabled: obj.assignee == null || obj.endTime != null,\n callback: () => this.unassign(),\n },\n {\n id: 'yuv.app.bpm-management.task.actions.editCandidates',\n icon: 'manage_accounts',\n label: this.#translateService.instant('yuv.app.bpm-management.task.actions.editCandidates.label'),\n disabled: obj.endTime != null,\n callback: () => this.editCandidates(),\n }\n ];\n }\n \n unassign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(ConfirmComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n title: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n message: this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.confirm.message')\n },\n }).afterClosed().subscribe((confirm: boolean)=>{\n if (confirm) {\n this.#bpmAdminSerice.assignTask(task.id, null).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.unassign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to unassign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n assign() {\n const task = this.selection().selected.at(0);\n if (!task) {\n return;\n }\n\n this.#dialog.open(TaskAssignOverlayComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n taskId: task.id,\n taskName: task.name\n },\n }).afterClosed().subscribe((assignee: string) => {\n if (assignee) {\n this.#bpmAdminSerice.assignTask(task.id, assignee).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.success')\n );\n\n this.refresh();\n },\n error: (e: Error) => {\n this.busy.set(false);\n this.#logger.error(`Failed to assign task`, e);\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.actions.assign.error')\n );\n }\n });\n }\n });\n }\n\n editCandidates() {\n const task = this.selection().selected.at(0);\n if (!task) return;\n\n const detailTask = this.taskDetailsComponent?.task();\n const currentUsers = detailTask?.identityLinks?.candidates?.users ?? [];\n const currentRoles = detailTask?.identityLinks?.candidates?.roles ?? [];\n\n this.#dialog.open(TaskCandidatesOverlayComponent, {\n width: '600px',\n maxWidth: '95vw',\n data: { currentUsers: [...currentUsers], currentRoles: [...currentRoles] }\n }).afterClosed().subscribe((result: TaskCandidatesOverlayResult | undefined) => {\n if (result === undefined) return;\n this.#bpmAdminSerice.setTaskCandidates(task.id, result).subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.success')\n );\n this.taskDetailsComponent?.loadTaskDetails();\n },\n error: () => {\n this.#notificationService.error(\n this.#translateService.instant('yuv.app.bpm-management.task.candidates.update.error')\n );\n }\n });\n });\n }\n}\n","<ng-template yuvAppHeaderSlot=\"actions\">\n</ng-template>\n\n<ymt-master-details-layout\n [detailsActive]=\"enableDetails()\"\n [options]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n\n <ng-template ymtLayoutPane role=\"master\" [topBarActions]=\"masterPaneActions\">\n <ymt-pane-body>\n <ymbpm-table \n [dataSource]=\"dataSource()\" \n [columns]=\"displayedColumns\" \n [pagination]=\"pagination\" \n [selectedRow]=\"selection().selected.at(0)\"\n [enableFilters]=\"enableFilters\"\n (pageChange)=\"onChangePage($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (filtersChange)=\"onFiltersChange($event)\"\n [busy]=\"busy()\">\n </ymbpm-table>\n </ymt-pane-body>\n </ng-template>\n \n <ng-template ymtLayoutPane role=\"details\">\n @let selectedTask = selection().selected.at(0);\n <ymt-pane-header [icon]=\"selectedTask ? 'task' : undefined\" [title]=\"selectedTask ? (selectedTask.name || '<unnamed>') : ''\" [subtitle]=\"selectedTask ? selectedTask.id : ''\" [actions]=\"listActions\"></ymt-pane-header>\n <ymt-pane-body>\n <div class=\"detailsPaneContainer\">\n @if (selectedTask) {\n <ymbpm-task-details [taskId]=\"selectedTask?.id\"></ymbpm-task-details>\n } @else {\n <div class=\"no-selection\">\n <mat-icon>{{icons.info}}</mat-icon>\n <p>{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </div>\n </ymt-pane-body>\n </ng-template>\n</ymt-master-details-layout>\n\n<ng-template #masterPaneActions>\n <div class=\"table-actions\">\n <button mat-icon-button *ngIf=\"this.enableFilters\" [disabled]=\"!hasActiveFilters()\" (click)=\"bpmTableComponent?.clearAllFilters()\" [matTooltip]=\"'yuv.app.bpm-management.filters.clearAll' | translate\">\n <mat-icon>{{icons.clearFilter}}</mat-icon>\n </button>\n <button mat-icon-button (click)=\"refresh()\" [matTooltip]=\"'yuv.app.bpm-management.navigation.refresh.tooltip' | translate\">\n <mat-icon>{{icons.refresh}}</mat-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #listActions>\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n</ng-template>\n\n<!-- Templates for table cells -->\n<ng-template #statusTemplate let-task>\n @if (task.endTime) {\n <span class=\"yuv-bpmn-status completed\">{{TaskStatus.COMPLETED.label | translate}}</span>\n } @else {\n <span class=\"yuv-bpmn-status running\">{{TaskStatus.RUNNING.label | translate}}</span>\n }\n</ng-template>\n\n<ng-template #assigneeTemplate let-task>\n <ymbpm-user-display [userId]=\"task.assignee\"></ymbpm-user-display>\n</ng-template>\n\n<ng-template #ownerTemplate let-task>\n <ymbpm-user-display [userId]=\"task.owner\"></ymbpm-user-display>\n</ng-template>","import { Route } from '@angular/router';\nimport { YuvBpmManagementComponent } from './container/bpm-management.component';\nimport { YuvDeploymentsPageComponent } from './pages/deployments/deployments-page/deployments-page.component';\nimport { YuvProcessDefinitionsPageComponent } from './pages/processdefinitions/processdefinitions-page/processdefinitions-page.component';\nimport { YuvProcessesPageComponent } from './pages/processes/processes-page/processes-page.component';\nimport { YuvTasksPageComponent } from './pages/tasks/tasks-page/tasks-page.component';\n\nexport const YuvBpmManagementRoutes: Route[] = [\n {\n path: '',\n component: YuvBpmManagementComponent,\n children: [\n { path: 'deployments', component: YuvDeploymentsPageComponent },\n { path: 'processdefinitions', component: YuvProcessDefinitionsPageComponent },\n { path: 'processes', component: YuvProcessesPageComponent },\n { path: 'tasks', component: YuvTasksPageComponent },\n { path: '', redirectTo: 'processes', pathMatch: 'full' }\n ]\n }\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5","i6","i3","i7"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,MAAM,GAAG;AAmHf,MAAM,sBAAsB,GAAG;AACpC,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,wDAAwD,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3G,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,wDAAwD,EAAE,IAAI,EAAE,QAAQ;;AAGrG,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,sCAAsC,EAAE;IAC1E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC;;AAG5E,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE;IAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACnF,iBAAiB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,kDAAkD,EAAE;IAC5G,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC;;AAG5E,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE;IAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC;;AA+B5E,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,cAAc,EAAE,cAAc;AAC9B,IAAA,gBAAgB,EAAE,0BAA0B;AAC5C,IAAA,cAAc,EAAE,yBAAyB;AACzC,IAAA,iBAAiB,EAAE,cAAc;AACjC,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,oBAAoB,EAAE,wBAAwB;AAC9C,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE;;AA6DJ,MAAM,gBAAgB,GAAG;;AAE9B,IAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;AACnH,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,cAAc,EAAE;AAC3G,IAAA,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,qDAAqD,EAAE,IAAI,EAAE,kBAAkB,EAAE;AAC5H,IAAA,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;;AAGpH,IAAA,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,sDAAsD,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAChI,IAAA,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;;AAEpH,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,cAAc,EAAE;AAC3G,IAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gDAAgD,EAAE,IAAI,EAAE,aAAa,EAAE;AACvG,IAAA,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,kDAAkD,EAAE,IAAI,EAAE,eAAe;;AAGxG,MAAM,YAAY,GAAG;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE;;AAgBF,SAAU,cAAc,CAC5B,aAAqB,EACrB,MAAc,EACd,OAAuB,UAAU,EAAA;AAEjC,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,EAAE;AAE7B,IAAA,IAAI;AACF,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC;AAEpC,QAAA,MAAM,aAAa,GAAuD;AACxE,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE;AACT,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE;AACT;SACF;QAED,OAAO,IAAI,KAAK;cACZ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;cAC/C,IAAI,KAAK;kBACP,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;AACrD,kBAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5D;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,QAAA,OAAO,aAAa;IACtB;AACF;;MC7Sa,yBAAyB,CAAA;AAEpC,IAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACjC,IAAA,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAe;AACpC,IAAA,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ;AAE7B,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;IAED,QAAQ,GAAA;;QAEN,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;cAChD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAC7C,cAAE,IAAI,CAAC,OAAO;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9C;wGApBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BtC,otCAqCA,EAAA,MAAA,EAAA,CAAA,ogCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBI,YAAY,8BACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,0BAJd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FASJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,otCAAA,EAAA,MAAA,EAAA,CAAA,ogCAAA,CAAA,EAAA;;;AEnBH;;AAEG;AACH,MAAe,aAAa,CAAA;AACxB;;;;;AAKG;AACO,IAAA,OAAO,wBAAwB,CACrC,cAAiB,EACjB,YAA0B,EAC1B,EAAqB,EAAA;AAErB,QAAA,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE;AACrC,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,YAAY,CAAC;AAEnD,YAAA,QAAQ,gBAAgB,CAAC,MAAM,CAAC;gBAC5B,KAAK,YAAY,CAAC,IAAI;oBAClB,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;oBACtE;gBACJ,KAAK,YAAY,CAAC,MAAM;AACpB,oBAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;oBAC3F;gBACJ,KAAK,YAAY,CAAC,IAAI;oBAClB,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,CAAC;oBACzE;gBACJ,KAAK,YAAY,CAAC,MAAM;oBACpB,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC;oBACvE;;QAEZ;AAEA,QAAA,OAAO,cAAc;IACzB;IAEQ,OAAO,gBAAgB,CAAC,gBAAqB,EAAA;QACjD,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/D,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QACjF;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE;AACzE,YAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3E;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE;AACvE,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3E;aAAO;AACH,YAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QACrE;IACJ;IAEQ,OAAO,gBAAgB,CAC3B,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EACrB,EAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9D,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,kBAAkB,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AAC3G,gBAAA,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YACnG;AACA,YAAA,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,OAAO,YAAY,IAAI,EAAE;AAC/E,gBAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AAC3G,gBAAA,cAAc,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAClG;QACJ;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE;AACnE,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AACtG,gBAAA,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAC9F;QACJ;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE;AACpE,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AACtG,gBAAA,cAAc,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAC/F;QACJ;IACJ;AAEU,IAAA,OAAO,kBAAkB,CAC/B,eAAoB,EACpB,aAAqB,EACrB,iBAAsB,EAAA;QAEtB;IACJ;AACH;AAEK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE;KACb;AACD,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,QAAQ;IAER,OAAO,iBAAiB,CAAC,YAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,gBAAgB,EAAE,EAAE,YAAY,CAAC;IAC9E;;AAGE,MAAO,uBAAwB,SAAQ,aAAa,CAAA;IACtD,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE;KACX;AACD,IAAA,EAAE;AACF,IAAA,YAAY;AACZ,IAAA,IAAI;AACJ,IAAA,QAAQ;AACR,IAAA,OAAO;AACP,IAAA,GAAG;AACH,IAAA,MAAM;AACN,IAAA,MAAM;AACN,IAAA,MAAM;IAEN,OAAO,iBAAiB,CAAC,YAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,uBAAuB,EAAE,EAAE,YAAY,CAAC;IACrF;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;AAEpC,QAAA,IAAI,KAAK,KAAK,uBAAuB,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE;AACjG,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;AAAO,aAAA,IAAI,KAAK,KAAK,uBAAuB,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3G,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;AAGE,MAAO,aAAc,SAAQ,aAAa,CAAA;IAC5C,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,mBAAmB;AACvB,QAAA,mBAAmB,EAAE,qBAAqB;AAC1C,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,eAAe,EAAE,eAAe;AAChC,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,aAAa,EAAE,gBAAgB;AAC/B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,MAAM,EAAE;KACX;AACD,IAAA,EAAE;AACF,IAAA,mBAAmB;AACnB,IAAA,IAAI;AACJ,IAAA,WAAW;AACX,IAAA,eAAe;AACf,IAAA,cAAc;AACd,IAAA,aAAa;AACb,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,MAAM;AAEN,IAAA,OAAO,iBAAiB,CAAC,YAA0B,EAAE,EAAoB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,aAAa,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;IAC/E;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;QAEpC,IAAI,KAAK,KAAK,aAAa,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACjD,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;aAAO,IAAI,KAAK,KAAK,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE;AAChD,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;AAGE,MAAO,UAAW,SAAQ,aAAa,CAAA;IACzC,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,gBAAgB,EAAE,eAAe;AACjC,QAAA,eAAe,EAAE,cAAc;AAC/B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE;KACjB;AACD,IAAA,EAAE;AACF,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,QAAQ;AACR,IAAA,KAAK;AACL,IAAA,gBAAgB;AAChB,IAAA,cAAc;AACd,IAAA,aAAa;AACb,IAAA,YAAY;AAEZ,IAAA,OAAO,iBAAiB,CAAC,YAA0B,EAAE,EAAoB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5E;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;QAEpC,IAAI,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;AACpC,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;aAAO,IAAI,KAAK,KAAK,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE;AAC7C,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;;MC1OS,kBAAkB,CAAA;AAE7B,IAAA,OAAO,iBAAiB,GAAG,EAAE;IACZ,UAAU,GAAG,iBAAiB;AACtC,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAEjD,IAAA,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,MAAyB,EAAA;AAClE,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,MAAM,EAAE;AACV,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YACrG;QACF;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAClF;AAEA,IAAA,aAAa,CAAC,YAAoB,EAAA;QAChC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,aAAA,EAAgB,YAAY,CAAA,CAAE,EAAE,OAAO,CAAC,IAAI,CAAE;IACzE;AAEA,IAAA,sBAAsB,CAAC,YAAoB,EAAA;QACzC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,aAAA,EAAgB,YAAY,CAAA,UAAA,CAAY,EAAE,OAAO,CAAC,IAAI,CAAE;IACnF;AAEA,IAAA,qBAAqB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAgC,EAAA;AAChF,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,MAAM,EAAE;AACV,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5G;QACF;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,sBAAsB,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAC1F;AAEA,IAAA,oBAAoB,CAAC,2BAAmC,EAAA;AACtD,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAE9D,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,qBAAA,EAAwB,2BAA2B,EAAE,EACvE,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;AAEA,IAAA,8BAA8B,CAAC,2BAAmC,EAAE,MAAc,EAAE,gBAAyB,EAAA;AAC3G,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,yBAAyB,EAAE;SAC5B;QAED,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,qBAAA,EAAwB,2BAA2B,CAAA,CAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;aACjG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB,EAAA;AAC7D,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,MAAM,EAAE;AACV,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAClG;QACF;QAEA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,UAAA,CAAY,EAC9B,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB;IACH;AAEA,IAAA,UAAU,CAAC,iBAAyB,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC;QAEpE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,EAAc,iBAAiB,EAAE,EACnD,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;AAEA,IAAA,iBAAiB,CAAC,iBAAyB,EAAA;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,EAAc,iBAAiB,CAAA,QAAA,CAAU,EAC3D,OAAO,CAAC,IAAI,CACb,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,MAAW,KAAI;AAClB,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK;AAAE,gBAAA,OAAO,MAAM;YAE3C,OAAO;AACL,gBAAA,GAAG,MAAM;gBACT,KAAK,EAAE,MAAM,CAAC;AACX,qBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AACnC,qBAAA,OAAO;aACX;QACH,CAAC,CAAC,CACH;IACH;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,MAAmB,EAAA;AACtD,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,MAAM,EAAE;AACV,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AAE7F,gBAAA,IAAI,GAAG,KAAK,UAAU,EAAE;oBACtB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC;gBACvD;YACF;QACF;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAC5E;AAEA,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;QAEjE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,OAAA,EAAU,MAAM,EAAE,EACpC,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;IAEA,UAAU,CAAC,MAAc,EAAE,QAAuB,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE;SACX;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAC/B,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,MAAM,CAAA,CAAE,EACpC,IAAI,EACJ,OAAO,CAAC,IAAI,CACb;IACH;IAEA,iBAAiB,CAAC,MAAc,EAAE,IAA4C,EAAA;QAC5E,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,MAAM,CAAA,WAAA,CAAa,EAC/C,IAAI,EACJ,OAAO,CAAC,IAAI,CACb;IACH;wGArJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC8BY,mBAAmB,CAAA;IAC9B,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAErC,IAAA,OAAO;IAE9B,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,WAAW,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AACxE,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;IAEvE,YAAY,GAAwB,IAAI;IACxC,aAAa,GAAkB,IAAI;;AAGnC,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAExD,IAAI,CAAC,2BAA2B,EAAE;QAElC,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACpC,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAmB,KAAI;AAC5C,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACzB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;YACF;AACF,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YACjD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACjC;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;QAC1B;aAAO;YACL,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACtG,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxB;QACF;QACA,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEA,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACzB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;iBAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;gBAC9C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACtE,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;YACF;AACF,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAA;AAC3C,QAAA,OAAO,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IACpD;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEA,IAAA,UAAU,CAAC,KAAyB,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;YAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;kBACtF,KAAK,CAAC;kBACN,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AAE7B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AAC7C,gBAAA,QAAQ,EAAE;AACX,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;QAC3C,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACpC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGAtJW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOU,UAAU,gDC1CvB,03BAmBM,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,iYACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,8BACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAYJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAzB/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,03BAAA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA;;sBAOA,SAAS;uBAAC,UAAU;;;MEHV,qBAAqB,CAAA;IAChC,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAErC,IAAA,OAAO;IAE9B,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,aAAa,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AAC1E,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;IAEvE,cAAc,GAAwB,IAAI;IAC1C,eAAe,GAAkB,IAAI;;AAGrC,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,6BAA6B,EAAE;QAEpC,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACzB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;YACF;AACF,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YACrD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACnC;QAEA,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,6BAA6B,EAAE;IACtC;IAEA,6BAA6B,GAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;aACtC,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE;aAEvB,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9C;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACtC,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEA,IAAA,UAAU,CAAC,KAAyB,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;kBACtF,KAAK,CAAC;kBACN,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AAE7B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACvB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,QAAQ,EAAE;AACX,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QAC/C,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACpC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGAvIW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOU,UAAU,gDC1CvB,24BAmBM,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,iYACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,8BACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAYJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzBjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,24BAAA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA;;sBAOA,SAAS;uBAAC,UAAU;;;MERV,qBAAqB,CAAA;AAChC,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,8EAAC;AACnC,IAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,wFAAC;AAEzC,IAAA,aAAa,GAAG,IAAI,WAAW,EAAE;AAEjC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;;AAGO,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC;QAEA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC7C,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACtC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1D;aAAO;AACL,YAAA,OAAO,KAAK,IAAI,KAAK,KAAK,EAAE;QAC9B;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAAE,YAAA,OAAO,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;AAC7C,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;IAClD;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAEA,IAAA,UAAU,CAAC,KAAyB,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAG;AAChD,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClG;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACtE;QACF;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;YAC/B,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGA5EW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,kzBAoBM,EAAA,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,6TACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEf,gBAAgB,0BADhB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;qBACjB,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,kzBAAA,EAAA,MAAA,EAAA,CAAA,iZAAA,CAAA,EAAA;;;MEeU,mBAAmB,CAAA;AACrB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE7B,IAAA,OAAO;IAE9B,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC7B,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE5D,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACzC,QAAA,OAAO,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;QAC3C,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,YAAY,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AACzE,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;AAC/E,IAAA,IAAI,cAAc,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAgB,CAAC,CAAC;;AAGrE,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,CAAC;aACf,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC;aACjB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACN;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;QAE3C,IAAI,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AACzC,YAAA,OAAO,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAC/C;aAAO;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;YACrC,OAAO,KAAK,KAAK,IAAI;QACvB;IACF;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK;IACtE;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AACnC,YAAA,OAAO,EAAE;AACV,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEA,IAAA,UAAU,CAAC,KAAyB,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AACvE,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AACvD,oBAAA,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK;AACxC,oBAAA,OAAO,EAAE,KAAK,CAAC,OAAO,YAAY,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG;AAC1D,iBAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC1B;iBAAO;gBACL,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;sBACxF,KAAK,CAAC;sBACN,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AAE3B,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AACvD,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE;AACV,iBAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC1B;QACF;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;QAC3C,IAAI,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;YAEzC,IAAI,CAAC,QAAQ,CAAC;AACZ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,YAAY,CAAC;AACpB,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;YAErC,IAAI,CAAC,QAAQ,CAAC;AACZ,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,YAAY,CAAC;AACpB,aAAA,CAAC;QACJ;IACF;wGAzKW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOU,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDvB,+yCAuCA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEhB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFnB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAcJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA5B/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,+yCAAA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA;;sBAOA,SAAS;uBAAC,UAAU;;;MElBV,mBAAmB,CAAA;AAC9B,IAAA,UAAU,GAAG,IAAI,WAAW,CAAgB,IAAI,CAAC;AAEjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,uFAAC;IAEvB,eAAe,GAAG,KAAK;;AAGvB,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChF;AAEA,IAAA,UAAU,CAAC,KAAyB,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1F;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD;QACF;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEQ,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QAC5C,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,KAAK,IAAI,IAAI;AACpB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK;YACvC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGA5CW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAVnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BH,ydAQA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADrB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBArB/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA;;;ME4BU,iBAAiB,CAAA;AAC5B,IAAA,OAAO,GAAG,KAAK,CAAW,EAAE,8EAAC;AAC7B,IAAA,UAAU,GAAG,KAAK,CAAQ,EAAE,iFAAC;AAC7B,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;IACrC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;IAChC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAO;AAC1B,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;IAE5B,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAElE,IAAA,OAAO,GAAG,MAAM,CAAe,EAAE,8EAAC;IAClC,cAAc,GAAuD,EAAE;IAEvE,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC7B,iBAAiB,GAAG,EAAE;IAEtB,aAAa,GAAG,MAAM,EAAgB;IACtC,UAAU,GAAG,MAAM,EAAa;IAChC,WAAW,GAAG,MAAM,EAAO;AAE3B,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;IAED,YAAY,GAAG,YAAY;IAEnB,UAAU,GAAG,KAAK;IAE1B,QAAQ,GAAA;QACN,IAAI,CAAC,wBAAwB,EAAE;IACjC;AAEA,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;IACxC;AAEA,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAC/C,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB;QAEA,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,QAAA,OAAO,cAAc,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;IACzC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YAC/C,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7B;AAEA,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,SAAS;IACjD;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE;IAC3C;AAEA,IAAA,SAAS,CAAC,GAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;IAEQ,wBAAwB,GAAA;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,IAAG;AAC9B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,CAAqB,IAAI,CAAC;AAE5E,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,IAAG;oBACpE,IAAI,WAAW,EAAE;wBACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;oBAC7C;AACF,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,CAAC,UAAkB,EAAE,WAA+B,EAAA;QACtE,IAAI,IAAI,CAAC,UAAU;YAAE;QAErB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;QAE5C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,cAAc,CAAC,UAAU,CAAC;YACjC;QACF;AAEA,QAAA,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AACrG,YAAA,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE;AAC9D,gBAAA,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW;YAC1C;iBAAO;AACL,gBAAA,OAAO,cAAc,CAAC,UAAU,CAAC;YACnC;QACF;aAAO;AACL,YAAA,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;AAC9B,gBAAA,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW;YAC1C;iBAAO;AACL,gBAAA,OAAO,cAAc,CAAC,UAAU,CAAC;YACnC;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;IACzC;wGAxHW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtD9B,6rJAoFM,EAAA,MAAA,EAAA,CAAA,knFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1DF,YAAY,uMACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,8BAEb,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,8BACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,8BACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,EACnB,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,uFACrB,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAjBd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAsBJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhC7B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,iBAAiB;wBACjB,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,eAAe;wBACf,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB;AACH,qBAAA,EAAA,QAAA,EAAA,6rJAAA,EAAA,MAAA,EAAA,CAAA,knFAAA,CAAA,EAAA;;;ME1CY,kBAAkB,CAAA;AACpB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErD,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;QACrB,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAClE;wGANW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCoBY,0BAA0B,CAAA;IACrC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAkC;AACpD,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;wGAPU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,uOC3BvC,w5CAoCM,EAAA,MAAA,EAAA,CAAA,84DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,aAAa,6CACb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAKT,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,w5CAAA,EAAA,MAAA,EAAA,CAAA,84DAAA,CAAA,EAAA;;;MEIU,8BAA8B,CAAA;AACzC,IAAA,WAAW,GAAG,KAAK,CAA8B,EAAE,kFAAC;AACpD,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;wGAPU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,sPC3B3C,wqBAmBQ,EAAA,MAAA,EAAA,CAAA,k5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJJ,YAAY,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,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,0BACb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAKJ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhB1C,SAAS;+BACE,sCAAsC,EAAA,UAAA,EACpC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,wqBAAA,EAAA,MAAA,EAAA,CAAA,k5CAAA,CAAA,EAAA;;;MEWU,0BAA0B,CAAA;AAC5B,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEtD,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAiC,SAAS,iFAAC;AAC9D,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAC7C,gBAAgB,GAAG,CAAC;AAEpB,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAEzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QAC9B,IAAI,EAAE,EAAE;AAEN,YAAA,MAAM,iBAAiB,GAAG,IAAI,uBAAuB,EAAE;AACvD,YAAA,iBAAiB,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;AACvE,YAAA,iBAAiB,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;AAExE,YAAA,QAAQ,CAAC;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CACtD,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC;AACvD,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC,CACH;AACD,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,IAAI,CAC9D,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC,CACH;gBACD,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,IAAI,CACpF,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC;AACpE,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC;AAEL,aAAA,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,KAAI;gBACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;gBAC5C,IAAI,UAAU,EAAE;AACd,oBAAA,UAAU,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;oBACtC,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE;gBACpD;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;QAEJ;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC;IACF;wGAjEW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCvC,05BAoBA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,YAAY,8BACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,0BAA0B,6FAC1B,8BAA8B,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC9B,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAQJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAlBtC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,0BAA0B;wBAC1B,8BAA8B;wBAC9B,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,05BAAA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA;;;MEmBY,2BAA2B,CAAA;AAC7B,IAAA,gBAAgB,GAAG,MAAM,GAAG,uBAAuB;AAEnD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEd,IAAA,0BAA0B;AACnC,IAAA,iBAAiB;AAE/C,IAAA,UAAU,GAAe;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE;KACP;IAED,OAAO,GAAuB,EAAE;AAEhC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,WAAW,EAAE,kCAAkC;AAC/C,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,oCAAoC;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,wCAAwC;AACrD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,WAAW,EAAE;AACd;SACF;IACH;;AAGA,IAAA,MAAM,GAAqB,IAAI,gBAAgB,EAAE;IACjD,aAAa,GAAG,IAAI;AAEpB,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,oFAAC;IACtC,aAAa,GAAG,MAAM,CAAiC;AACrD,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,cAAc,EAAE;AACjB,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAE7B,IAAA,UAAU,GAAG,MAAM,CAAuB,EAAE,iFAAC;IAC7C,SAAS,GAAG,MAAM,CAAC,IAAI,cAAc,CAAqB,KAAK,EAAE,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE5E,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,0BAA0B,EAAE,qBAAqB,EAAE;IAC1D;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAEnB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CACxG;AACE,YAAA,IAAI,EAAE,CAAC,QAAoC,KAAI;AAC7C,gBAAA,MAAM,0BAA0B,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK;AACrE,oBAAA,GAAG,UAAU;oBACb,cAAc,EAAE,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,cAAc;AACtJ,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,0BAA0B,CAAC;gBAE/C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa;YAChD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAM,KAAI;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,MAAK;;;;;;;;;;;;;;;;;;;;;AAqBb,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,aAAa,CAAC,UAAmB,EAAA;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,UAAgC,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA,IAAA,eAAe,CAAC,OAAqB,EAAA;QACnC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;IAClE;wGAnJW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,8IAO3B,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC1B,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzD9B,qrEAmDc,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBV,YAAY,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,UAAA,EAAA,IAAA,EACZ,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,oBAAoB,oKACpB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,iBAAiB,+BACjB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,4PARd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAzBvC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,iBAAiB;wBACjB,0BAA0B;wBAC1B,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,qrEAAA,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA;;sBAWA,SAAS;uBAAC,0BAA0B;;sBACpC,SAAS;uBAAC,iBAAiB;;;ME9BjB,iCAAiC,CAAA;AACnC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErD,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAyC;AAClE,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,qBAAqB,GAAG,CAAC,iBAAwD,KAAY;AAC3F,QAAA,IAAI,CAAC,iBAAiB;AAAE,YAAA,OAAO,EAAE;AACjC,QAAA,IAAI,iBAAiB,CAAC,SAAS,EAAE;AAC/B,YAAA,OAAO,CAAA,wCAAA,EAA2C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS;QACpI;aAAO;AACL,YAAA,OAAO,CAAA,sCAAA,EAAyC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;QAC/H;AACF,IAAA,CAAC;wGAlBU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,oQC3B9C,02FAwEQ,EAAA,MAAA,EAAA,CAAA,4hCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzDJ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,iBAAiB,ibACjB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAKJ,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAhB7C,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,iBAAiB;wBACjB;AACD,qBAAA,EAAA,QAAA,EAAA,02FAAA,EAAA,MAAA,EAAA,CAAA,4hCAAA,CAAA,EAAA;;;MEQU,iCAAiC,CAAA;AACnC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEtD,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AACjD,IAAA,iBAAiB,GAAG,MAAM,CAAwC,SAAS,wFAAC;AAC5E,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAC7C,gBAAgB,GAAG,CAAC;AAEpB,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,4BAA4B,EAAE;AACrC,QAAA,CAAC,CAAC;IACJ;IAEA,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAEzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACrC,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,CACjD,UAAU,CAAC,GAAG,IAAG;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,gBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AAC/D,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,YAAA,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,iBAAiB,IAAG;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;AAC1D,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;QAEJ;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;QACvC;IACF;wGAzCW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,0QC/B9C,ysBAiBA,EAAA,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,8BACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,8BACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,iCAAiC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjC,aAAa,gqBAFb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAOJ,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAjB7C,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,iCAAiC;wBACjC,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,ysBAAA,EAAA,MAAA,EAAA,CAAA,skBAAA,CAAA,EAAA;;;MENY,wBAAwB,CAAA;AAC1B,IAAA,UAAU,GAAG,MAAM,EAAC,YAAsC,EAAC;AAC3D,IAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;AAEpB,IAAA,QAAQ;IAEhC,OAAO,GAAA;QACL,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9C;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;wGAZW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBrC,2wBAcA,EAAA,MAAA,EAAA,CAAA,wUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFI,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFR,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAOJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,WAAW;wBACX;AACH,qBAAA,EAAA,QAAA,EAAA,2wBAAA,EAAA,MAAA,EAAA,CAAA,wUAAA,CAAA,EAAA;;sBAQE,SAAS;uBAAC,UAAU;;;ME0BV,kCAAkC,CAAA;AACpC,IAAA,gBAAgB,GAAG,MAAM,GAAG,uBAAuB;AAEnD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAEU,IAAA,iCAAiC;AACjD,IAAA,iBAAiB;AACT,IAAA,sBAAsB;AACb,IAAA,cAAc;AACd,IAAA,cAAc;IAE7D,sBAAsB,GAAG,sBAAsB;IAC/C,uBAAuB,GAAG,uBAAuB;AAEjD,IAAA,UAAU,GAAe;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE;KACP;IAED,OAAO,GAAuB,EAAE;AAEhC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;gBAC/B,QAAQ,EAAE,IAAI,CAAC,cAAc;AAC7B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;AACzB,oBAAA,iBAAiB,EAAE,KAAK;oBACxB,OAAO,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACvE;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,WAAW,EAAE,kCAAkC;AAC/C,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACrC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,oCAAoC;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,sCAAsC;gBACnD,QAAQ,EAAE,IAAI,CAAC,cAAc;AAC7B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;oBACzB,OAAO,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,CAAC,SAAS;AAC5E;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,wCAAwC;AACrD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,WAAW,EAAE,uCAAuC;AACpD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;AACzB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,WAAW,EAAE,mCAAmC;AAChD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;SACF;IACH;;IAGA,WAAW,GAA4B,IAAI,uBAAuB;IAClE,kBAAkB,GAAG,IAAI;AAEzB,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,oFAAC;IACtC,aAAa,GAAG,MAAM,CAAiC;AACrD,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,cAAc,EAAE;AACjB,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAE7B,IAAA,UAAU,GAAG,MAAM,CAA8B,EAAE,iFAAC;IACpD,SAAS,GAAG,MAAM,CAAC,IAAI,cAAc,CAA4B,KAAK,EAAE,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEnF,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,iCAAiC,EAAE,4BAA4B,EAAE;IACxE;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEA,0BAA0B,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAEnB,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CACzN;AACE,YAAA,IAAI,EAAE,CAAC,QAA0C,KAAI;gBACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AAErC,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtD,IAAI,UAAU,EAAE;AACd,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC;oBAC1E,IAAI,eAAe,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;AACxC,wBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;oBACtC;gBACF;gBAEA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa;YAChD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;gBAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC;AAC5D,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,MAAK;;;;;;;;;;;;;;;;;;;;;AAqBb,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,oBAAoB,CAAC,OAA4B,EAAA;AAC/C,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACvE;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QACxB,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEA,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;IAC5E;AAEA,IAAA,aAAa,CAAC,iBAA0B,EAAA;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,iBAA8C,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA,IAAA,cAAc,CAAC,GAA0C,EAAA;QACvD,IAAI,CAAC,OAAO,GAAG;AACb,cAAE;AACE,gBAAA;AACE,oBAAA,EAAE,EAAE,4DAA4D;oBAChE,IAAI,EAAE,SAAS,CAAC,QAAQ;oBACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnC,kEAAkE,CACnE;oBACD,QAAQ,EAAE,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;oBACxD,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/C,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,2DAA2D;oBAC/D,IAAI,EAAE,SAAS,CAAC,OAAO;oBACvB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnC,iEAAiE,CAClE;oBACD,QAAQ,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;oBACvD,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC9C;AACF;cACD,EAAE;IACR;AAEA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAC1C,YAAA,KAAK,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC/G,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,GAAG,MAAM,GAAG,kBAAkB,CAAC;gBAC3H,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oGAAoG,CAAC;AACrJ,gBAAA,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,GAAG,MAAM,GAAG,uBAAuB;AACxI,aAAA;SACJ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAA2B,KAAG;AACxD,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;oBAClG,IAAI,EAAE,MAAK;AACT,wBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,GAAG,MAAM,GAAG,UAAU,CAAC,CAC3G;wBAED,IAAI,CAAC,OAAO,EAAE;oBAChB,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;AAClB,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;wBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,MAAM,CAAA,mBAAA,CAAqB,EAAE,CAAC,CAAC;AAC/D,wBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,GAAG,MAAM,GAAG,QAAQ,CAAC,CACzG;oBACH;AACD,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;wGAhQW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,4JASlC,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACjC,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7D9B,g1GA2Ec,EAAA,MAAA,EAAA,CAAA,m0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7CV,YAAY,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,UAAA,EAAA,IAAA,EACZ,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,oBAAoB,oKACpB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,WAAW,uYACX,iCAAiC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,4PARd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAzB9C,SAAS;+BACE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,WAAW;wBACX,iCAAiC;wBACjC,eAAe;wBACf;AACH,qBAAA,EAAA,QAAA,EAAA,g1GAAA,EAAA,MAAA,EAAA,CAAA,m0BAAA,CAAA,EAAA;;sBAaE,SAAS;uBAAC,iCAAiC;;sBAC3C,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;uBAAC,wBAAwB;;sBAClC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ME1ClC,oBAAoB,CAAA;AACd,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5D,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA6B;IAE1B,IAAI,GAAG,QAAQ,CAC9B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC5B,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CACjE,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB;IAED,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEvF,IAAA,MAAM,CAAC,KAAY,EAAA;QACjB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,EAAE;YACP;QACF;QAEA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAK;YAC1C,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAC1G;AACH,QAAA,CAAC,CAAC;IACJ;wGA7BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjC,+aAcA,EAAA,MAAA,EAAA,CAAA,icAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAKJ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,icAAA,CAAA,EAAA;;;MEWU,uBAAuB,CAAA;AACzB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErD,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA+B;AAC9C,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,qBAAqB,GAAG,CAAC,OAAoC,KAAY;AACvE,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,EAAE;AACvB,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,OAAO,CAAA,wCAAA,EAA2C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS;QAC1H;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AAC5B,YAAA,OAAO,CAAA,wCAAA,EAA2C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS;QAC1H;aAAO;AACL,YAAA,OAAO,CAAA,sCAAA,EAAyC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;QACtH;AACF,IAAA,CAAC;wGApBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2NC7BpC,srFAiEM,EAAA,MAAA,EAAA,CAAA,gnEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjDF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,8BACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,8BACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFpB,aAAa,6CACb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAMT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,srFAAA,EAAA,MAAA,EAAA,CAAA,gnEAAA,CAAA,EAAA;;;MEMU,qBAAqB,CAAA;AAChC,IAAA,KAAK,GAAG,KAAK,CAAiB,EAAE,4EAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;wGAPU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BlC,6yCA2BU,EAAA,MAAA,EAAA,CAAA,6/CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVN,YAAY,oIACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,+BAGb,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFpB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAMT,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,6yCAAA,EAAA,MAAA,EAAA,CAAA,6/CAAA,CAAA,EAAA;;;MEEU,uBAAuB,CAAA;AACzB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEpD,cAAc,GAAG,cAAc;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAiB,EAAE,4EAAC;AACjC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;wGAXU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qNC7BpC,g5DAmCM,EAAA,MAAA,EAAA,CAAA,gvIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,UAAA,EAAA,IAAA,EACZ,aAAa,8BACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,qLACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFpB,aAAa,6CACb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAMT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,g5DAAA,EAAA,MAAA,EAAA,CAAA,gvIAAA,CAAA,EAAA;;;MEUU,uBAAuB,CAAA;AACzB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEtD,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAC/C,IAAA,OAAO,GAAG,MAAM,CAA8B,SAAS,8EAAC;AACxD,IAAA,KAAK,GAAG,MAAM,CAAiB,EAAE,4EAAC;AAClC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAC7C,gBAAgB,GAAG,CAAC;AAEpB,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAEzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACnC,IAAI,EAAE,EAAE;AACN,YAAA,QAAQ,CAAC;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAChD,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC,CACH;AACD,gBAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CACvD,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC;aAEL,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAI;gBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;QAEJ;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC7B;IACF;wGAnDW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCpC,q/BAsBC,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFG,YAAY,8BACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,qBAAqB,mFACrB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAJb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FASJ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,uBAAuB;wBACvB,qBAAqB;wBACrB,uBAAuB;wBACvB;AACH,qBAAA,EAAA,QAAA,EAAA,q/BAAA,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA;;;MEkBY,yBAAyB,CAAA;AAC3B,IAAA,gBAAgB,GAAG,MAAM,GAAG,uBAAuB;AAEnD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEjB,IAAA,uBAAuB;AAC7B,IAAA,iBAAiB;AACA,IAAA,cAAc;AAChB,IAAA,YAAY;IAEzD,aAAa,GAAG,aAAa;AAE7B,IAAA,UAAU,GAAe;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE;KACP;IAED,OAAO,GAAuB,EAAE;AAEhC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,WAAW,EAAE,kCAAkC;AAC/C,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,WAAW,EAAE,mDAAmD;AAChE,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,oCAAoC;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,sCAAsC;gBACnD,QAAQ,EAAE,IAAI,CAAC,cAAc;AAC7B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;oBACzB,OAAO,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,aAAa,CAAC,SAAS;AACnE;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,WAAW,EAAE,yCAAyC;gBACtD,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC;AACpB;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,WAAW,EAAE,yCAAyC;AACtD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO;AACtF;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,WAAW,EAAE,uCAAuC;AACpD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO;AACtF;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,WAAW,EAAE,2CAA2C;AACxD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;SACF;IACH;;AAGA,IAAA,MAAM,GAAkB,IAAI,aAAa,EAAE;IAC3C,aAAa,GAAG,IAAI;AAEpB,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,oFAAC;IACtC,aAAa,GAAG,MAAM,CAAiC;AACrD,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,cAAc,EAAE;AACjB,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAE7B,IAAA,UAAU,GAAG,MAAM,CAAoB,EAAE,iFAAC;IAC1C,SAAS,GAAG,MAAM,CAAC,IAAI,cAAc,CAAkB,KAAK,EAAE,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAEzE,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,uBAAuB,EAAE,kBAAkB,EAAE;IACpD;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,eAAe,CAAC,OAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC9E,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;IAClE;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAEnB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CACtG;AACE,YAAA,IAAI,EAAE,CAAC,QAAkC,KAAI;AAE3C,gBAAA,MAAM,uBAAuB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK;AAC/D,oBAAA,GAAG,OAAO;oBACV,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS;oBACxH,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;AAC1G,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC;gBAE5C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa;YAChD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAM,KAAI;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,aAAa,CAAC,OAAgB,EAAA;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAA0B,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B;IACF;wGA1KW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yIAOzB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACvB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzD9B,+vFAkEc,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtCV,YAAY,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,UAAA,EAAA,IAAA,EACZ,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,oBAAoB,oKACpB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,uBAAuB,iGACvB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,4PARd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzBrC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB,oBAAoB;wBACpB,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,+vFAAA,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA;;sBAWA,SAAS;uBAAC,uBAAuB;;sBACjC,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ME9BhC,oBAAoB,CAAA;IAE/B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4B;AACxC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;AAE7C,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;wGARU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+MC7BjC,ywHA4FA,EAAA,MAAA,EAAA,CAAA,m9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5EI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,8BACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,qLACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFpB,aAAa,6CACb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAMT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,ywHAAA,EAAA,MAAA,EAAA,CAAA,m9EAAA,CAAA,EAAA;;;MEEU,sBAAsB,CAAA;AACxB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEpD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4B;AACxC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAE7C,cAAc,GAAG,cAAc;AAE/B,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;IAC5D;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;IAC5D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,iBAAiB,IAAI,EAAE;IAC5D;IAEA,aAAa,CAAC,IAAY,EAAE,QAAiB,EAAA;QAC3C,QAAQ,IAAI;AACV,YAAA,KAAK,YAAY;gBACf,OAAO,QAAQ,KAAK,IAAI,GAAG,YAAY,GAAG,YAAY;AACxD,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;AAC7B,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC5B,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;IAEA,cAAc,CAAC,IAAY,EAAE,QAAiB,EAAA;AAC5C,QAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACzB,YAAA,OAAO,QAAQ,KAAK,IAAI;gBACtB;kBACG,kEAAkE;QACzE;AACA,QAAA,OAAO,kDAAkD,IAAI,CAAC,WAAW,EAAE,EAAE;IAC/E;wGA7CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,iNC3BnC,2gHAuFA,EAAA,MAAA,EAAA,CAAA,s0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,oBAAoB,8EADpB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAMJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,2gHAAA,EAAA,MAAA,EAAA,CAAA,s0KAAA,CAAA,EAAA;;;MEUU,oBAAoB,CAAA;AACtB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEtD,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AACpC,IAAA,IAAI,GAAG,MAAM,CAA2B,SAAS,2EAAC;AAClD,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAC7C,gBAAgB,GAAG,CAAC;AAEpB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAEzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,EAAE;AACN,YAAA,QAAQ,CAAC;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAC1C,UAAU,CAAC,GAAG,IAAG;AACf,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACtF,oBAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,gBAAA,CAAC,CAAC;aAEL,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;AAChC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;QAEJ;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1B;IACF;wGAtCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCjC,+zBAoBA,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,YAAY,8BACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEhB,aAAa,qqBACb,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHtB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAQJ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,oBAAoB;wBACpB;AACD,qBAAA,EAAA,QAAA,EAAA,+zBAAA,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA;;;MECU,0BAA0B,CAAA;AAC5B,IAAA,UAAU,GAAG,MAAM,EAAC,YAAwC,EAAC;AAC7D,IAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAA,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;IAEjC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AACvC,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC;IACF;wGAfW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BvC,kuBAcA,EAAA,MAAA,EAAA,CAAA,mNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCI,YAAY,8BACZ,mBAAmB,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,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,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,iGAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,qBAAqB,gLACrB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHlB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FASJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAlBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAC5B;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,qBAAqB;wBACrB,eAAe;wBACf;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,kuBAAA,EAAA,MAAA,EAAA,CAAA,mNAAA,CAAA,EAAA;;;MEUL,8BAA8B,CAAA;AAChC,IAAA,UAAU,GAAG,MAAM,EAAC,YAA4C,EAAC;AACjE,IAAA,IAAI,GAA8B,MAAM,CAAC,eAAe,CAAC;IAEzD,YAAY,GAAG,IAAI,WAAW,CACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAC/D;IAEQ,YAAY,GAAG,IAAI,WAAW,CACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAC/D;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAE1C,QAAA,MAAM,MAAM,GAAgC;AAC1C,YAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AAC9F,YAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG;SAC7F;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/B;wGAzBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,yFCpC3C,6lCAoBA,EAAA,MAAA,EAAA,CAAA,6jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDII,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,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,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,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,+BAEf,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,kLAHlB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAQJ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhB1C,SAAS;+BACE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,qBAAqB;wBACrB,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,6lCAAA,EAAA,MAAA,EAAA,CAAA,6jBAAA,CAAA,EAAA;;;MEqBU,qBAAqB,CAAA;AACvB,IAAA,gBAAgB,GAAG,MAAM,GAAG,uBAAuB;AAEnD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE1B,IAAA,oBAAoB;AACvB,IAAA,iBAAiB;AACA,IAAA,cAAc;AACZ,IAAA,gBAAgB;AACnB,IAAA,aAAa;IAE3D,UAAU,GAAG,UAAU;AAEvB,IAAA,UAAU,GAAe;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE;KACP;IAED,OAAO,GAAuB,EAAE;AAEhC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,WAAW,EAAE,kCAAkC;AAC/C,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM;AACpC;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,oCAAoC;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS;AACzH;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,sCAAsC;gBACnD,QAAQ,EAAE,IAAI,CAAC,cAAc;AAC7B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;oBACzB,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS;AACnD;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,wCAAwC;gBACrD,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC/B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC;AACpB;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,qCAAqC;gBAClD,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC5B,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC;AACpB;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,WAAW,EAAE,0CAA0C;AACvD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO;AACtF;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,WAAW,EAAE,uCAAuC;AACpD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,IAAI;AACvB,oBAAA,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO;AACtF;AACF;SACF;IACH;;AAGA,IAAA,MAAM,GAAe,IAAI,UAAU,EAAE;IACrC,aAAa,GAAG,IAAI;AAEpB,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,oFAAC;IACtC,aAAa,GAAG,MAAM,CAAiC;AACrD,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,cAAc,EAAE;AACjB,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAE7B,IAAA,UAAU,GAAG,MAAM,CAAiB,EAAE,iFAAC;IACrC,SAAS,GAAG,MAAM,CAAC,IAAI,cAAc,CAAe,KAAK,EAAE,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAExE,eAAe,GAAG,EAAE;IAEpB,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,oBAAoB,EAAE,eAAe,EAAE;IAC9C;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,eAAe,CAAC,OAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;IAClE;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAEnB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CACnG;AACE,YAAA,IAAI,EAAE,CAAC,QAA8B,KAAI;AACvC,gBAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK;AACzD,oBAAA,GAAG,IAAI;oBACP,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU;oBACnH,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AACjG,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAEzC,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtD,IAAI,UAAU,EAAE;AACd,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC;oBAC1E,IAAI,eAAe,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;AACxC,wBAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;oBACtC;gBACF;gBAEA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa;YAChD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAM,KAAI;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,aAAa,CAAC,IAAa,EAAA;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAoB,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA,IAAA,cAAc,CAAC,GAA6B,EAAA;QAC1C,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;YACjB;QACF;QACA,IAAI,CAAC,OAAO,GAAG;AACb,YAAA;AACE,gBAAA,EAAE,EAAE,4CAA4C;gBAChD,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,kDAAkD,CAAC;gBACzF,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI;AACrD,gBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,8CAA8C;gBAClD,IAAI,EAAE,SAAS,CAAC,QAAQ;gBACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,CAAC;gBAC3F,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI;AACrD,gBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,oDAAoD;AACxD,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,0DAA0D,CAAC;AACjG,gBAAA,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;AAC7B,gBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AACtC;SACF;IACH;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAClC,YAAA,KAAK,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,CAAC;gBAC3F,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,8DAA8D;AACvG,aAAA;SACJ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,OAAgB,KAAG;YAC7C,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;oBACvD,IAAI,EAAE,MAAK;AACT,wBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sDAAsD,CAAC,CACvF;wBAED,IAAI,CAAC,OAAO,EAAE;oBAChB,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;AAClB,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;wBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,uBAAA,CAAyB,EAAE,CAAC,CAAC;AAChD,wBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,kDAAkD,CAAC,CACnF;oBACH;AACD,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC5C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC;AAChB,aAAA;SACF,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,QAAgB,KAAI;YAC9C,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;oBAC3D,IAAI,EAAE,MAAK;AACT,wBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oDAAoD,CAAC,CACrF;wBAED,IAAI,CAAC,OAAO,EAAE;oBAChB,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;AAClB,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;wBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,qBAAA,CAAuB,EAAE,CAAC,CAAC;AAC9C,wBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,kDAAkD,CAAC,CACnF;oBACH;AACD,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE;QACpD,MAAM,YAAY,GAAG,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,YAAY,GAAG,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;AAEvE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;AAChD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;SACzE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAA+C,KAAI;YAC7E,IAAI,MAAM,KAAK,SAAS;gBAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;gBAChE,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,uDAAuD,CAAC,CACxF;AACD,oBAAA,IAAI,CAAC,oBAAoB,EAAE,eAAe,EAAE;gBAC9C,CAAC;gBACD,KAAK,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,qDAAqD,CAAC,CACtF;gBACH;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;wGAhTW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,kIASrB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/D9B,o0FAwEc,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxCV,YAAY,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,UAAA,EAAA,IAAA,EACZ,eAAe,uNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,oBAAoB,oKACpB,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,mFACpB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,4PARd,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAaJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzBjC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,oBAAoB;wBACpB,oBAAoB;wBACpB,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,o0FAAA,EAAA,MAAA,EAAA,CAAA,ksBAAA,CAAA,EAAA;;sBAaA,SAAS;uBAAC,oBAAoB;;sBAC9B,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAC9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AE3DvC,MAAM,sBAAsB,GAAY;AAC7C,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,QAAQ,EAAE;AACR,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,2BAA2B,EAAE;AAC/D,YAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,kCAAkC,EAAE;AAC7E,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE;AAC3D,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE;YACnD,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM;AACvD;AACF;;;AClBH;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"yuuvis-bpm-management-app.mjs","sources":["../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.schema.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.config.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-filter.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.service.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/bpm-management.state.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/entity-switch/entity-switch.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/entity-switch/entity-switch.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/filter-clear/filter-clear.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/date-time-field/date-time-field.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/date-time-range-field/date-time-range-field.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/filter-operator/filter-operator.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/date-filter/date-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/date-filter/date-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/number-filter/number-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/number-filter/number-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/select-filter/select-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/select-filter/select-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/text-filter/text-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/text-filter/text-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/user-filter/user-filter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/user-filter/user-filter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/filter-bar/filter-bar.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/filters/filter-bar/filter-bar.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/pane-gutter/pane-gutter.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/pane-gutter/pane-gutter.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/pane-toggle-button/pane-toggle-button.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/pane-toggle-button/pane-toggle-button.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/pipes/format-date-time.pipe.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/deployment-details/deployment-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/deployment-details/deployment-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/process-definition-details/process-definition-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/process-definition-details/process-definition-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/process-details/process-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/process-details/process-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/editor-history/editor-history.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/editor-history/editor-history.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/task-details/task-details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/components/details/task-details/task-details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/checkbox-overlay/checkbox-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/checkbox-overlay/checkbox-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/task-assign-overlay/task-assign-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/task-assign-overlay/task-assign-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/task-candidates-overlay/task-candidates-overlay.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/overlays/task-candidates-overlay/task-candidates-overlay.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/areas/details/details.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/areas/details/details.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.ts","../../../../../projects/yuuvis/bpm-management-app/src/lib/container/bpm-management.component.html","../../../../../projects/yuuvis/bpm-management-app/src/lib/lib.routes.ts","../../../../../projects/yuuvis/bpm-management-app/src/yuuvis-bpm-management-app.ts"],"sourcesContent":["export const APP_ID = 'io.yuuvis.app.bpm-management';\n\n/**\n * Custom data a shell client can set on the app's route (`App.data`) to configure the app.\n */\nexport interface BpmManagementAppData {\n /** Show the deployments tab. Shown unless set to `false`. */\n showDeployments?: boolean;\n /** Show the process definitions tab. Shown unless set to `false`. */\n showProcessDefinitions?: boolean;\n}\n\nexport interface DeploymentInstance {\n id: string,\n name: string;\n category: string;\n deploymentTime: string;\n resources?: DeploymentResourceData[];\n definitions?: ProcessDefinitionInstance[];\n}\n\nexport interface DeploymentResourceData {\n id: string;\n mediaType: string;\n type: string;\n}\n\nexport interface ProcessDefinitionInstance {\n id: string,\n name: string;\n description: string;\n category: string;\n version: string;\n key: string;\n global: boolean;\n suspended: boolean;\n deploymentId: string;\n statistics: ProcessdefinitionStatisticsData;\n}\n\nexport interface ProcessdefinitionStatisticsData {\n processInstanceCount: ProcessinstanceCountData;\n}\n\nexport interface ProcessinstanceCountData {\n active: number;\n suspended: number;\n completed: number\n}\n\nexport interface ProcessVariable {\n name: string;\n type: string;\n value: any;\n scope: string;\n}\n\nexport interface ProcessInstance {\n id: string;\n name: string;\n businessKey: string;\n processDefinitionId: string;\n processDefinitionName: string;\n processDefinitionDescription: string | null;\n startUserId: string;\n startTime: string;\n deleteReason: string | null;\n endActivityId: string | null;\n startActivityId: string;\n durationInMillis: number | null;\n endTime: string | null;\n suspended: boolean;\n variables?: ProcessVariable[];\n}\n\nexport interface ProcessHistory {\n tasks: TaskInstance[];\n}\n\nexport interface TaskInstance {\n id: string;\n name: string;\n description: string | null;\n assignee: string;\n owner: string;\n createTime: string;\n endTime: string | null;\n claimTime: string | null;\n dueDate: string | null;\n processDefinitionId: string;\n processInstanceId: string | null;\n processInstanceName: string | null;\n parentTaskId: string | null;\n taskDefinitionKey: string;\n delegationState: string | null;\n suspended: boolean;\n hasForm: boolean;\n formKey: string | null;\n variables?: TaskVariable[];\n identityLinks?: TaskIdentityLinks;\n}\n\nexport interface TaskVariable {\n name: string;\n type: string;\n value: any;\n valueUrl?: string;\n scope: string;\n}\n\nexport interface TaskIdentityLinks {\n candidates: {\n users: string[];\n roles: string[];\n };\n assignmentHistory: TaskAssignmentHistoryEntry[];\n}\n\nexport interface TaskAssignmentHistoryEntry {\n type: 'ASSIGNMENT' | 'DELEGATION' | 'RESOLVE';\n assignee: string;\n owner?: string;\n timestamp: string;\n}\n\nexport const ProcessDefinitionScope = {\n GLOBAL: { value: 'GLOBAL', label: 'yuv.app.bpm-management.definitions.scope.global', icon: 'globe' },\n TENANT: { value: 'TENANT', label: 'yuv.app.bpm-management.definitions.scope.tenant', icon: 'tenant' }\n} as const;\n\nexport const ProcessDefinitionStatus = {\n ACTIVE: { value: 'ACTIVE', label: 'yuv.app.bpm-management.status.active' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' }\n} as const;\n\nexport const ProcessStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' },\n RUNNING_SUSPENDED: { value: 'RUNNING_SUSPENDED', label: 'yuv.app.bpm-management.status.runningORsuspended' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' },\n /** Display only, not a filter value: an ended process with a delete reason was cancelled. */\n CANCELED: { value: 'CANCELED', label: 'yuv.app.bpm-management.status.canceled' }\n} as const;\n\nexport const TaskStatus = {\n RUNNING: { value: 'RUNNING', label: 'yuv.app.bpm-management.status.running' },\n /** Display only, not a filter value: the task (or its process) is suspended. */\n SUSPENDED: { value: 'SUSPENDED', label: 'yuv.app.bpm-management.status.suspended' },\n COMPLETED: { value: 'COMPLETED', label: 'yuv.app.bpm-management.status.completed' }\n} as const;\n\nexport interface DeploymentsSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: DeploymentInstance[];\n}\n\nexport interface ProcessDefinitionSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessDefinitionInstance[];\n}\n\nexport interface ProcessesSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: ProcessInstance[];\n}\n\nexport interface TasksSearchResponse {\n hasMoreItems: boolean;\n numItems: number;\n totalNumItems: number;\n objects: TaskInstance[];\n}\n\nexport const APP_ICONS = {\n assign: 'person_add',\n cancel: 'cancel',\n unassign: 'person_remove',\n clearFilter: 'filter_alt_off',\n dockToLeft: 'dock_to_left',\n filterActive: 'filter_alt',\n filterEquals: 'equal',\n filterContains: 'match_word',\n filterStartsWith: 'text_select_jump_to_beginning',\n filterEndsWith: 'text_select_jump_to_end',\n filterGreaterThan: 'arrow_upward',\n filterLessThan: 'arrow_downward',\n filterAfter: 'east',\n filterBefore: 'west',\n filterBetween: 'compare_arrows',\n globe: 'public',\n info: 'info',\n refresh: 'refresh',\n radioButtonChecked: 'radio_button_checked',\n radioButtonUnchecked: 'radio_button_unchecked',\n tenant: 'groups',\n delegated: 'assignment',\n resolved: 'order_approve',\n activate: 'not_started',\n suspend: 'hourglass_pause'\n}\n\nexport interface Pagination {\n total: number;\n pageSize: number;\n page: number;\n}\n\nexport interface Column {\n name: string;\n displayName: string;\n template?: any; // TemplateRef or function\n filter?: ColumnFilter;\n}\n\nexport type ColumnFilter =\n | TextColumnFilter\n | NumberColumnFilter\n | DateColumnFilter\n | SelectColumnFilter\n | UserColumnFilter;\n\nexport interface TextColumnFilter {\n type: typeof FILTER_TYPES.TEXT;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface NumberColumnFilter {\n type: typeof FILTER_TYPES.NUMBER;\n placeholder?: string;\n operators?: FilterOption[];\n minValue?: number;\n maxValue?: number;\n step?: number;\n}\n\nexport interface DateColumnFilter {\n type: typeof FILTER_TYPES.DATE;\n placeholder?: string;\n operators?: FilterOption[];\n}\n\nexport interface SelectColumnFilter {\n type: typeof FILTER_TYPES.SELECT;\n placeholder?: string;\n options: FilterOption[];\n enableMultiselect?: boolean;\n}\n\nexport interface UserColumnFilter {\n type: typeof FILTER_TYPES.USER;\n}\n\nexport interface FilterOption {\n value: string;\n label: string;\n icon?: string;\n}\n\nexport const FILTER_OPERATORS = {\n // Text operators\n CONTAINS: { value: 'contains', label: 'yuv.app.bpm-management.filters.operators.contains', icon: 'filterContains' },\n EQUALS: { value: 'equals', label: 'yuv.app.bpm-management.filters.operators.equals', icon: 'filterEquals' },\n STARTS_WITH: { value: 'startsWith', label: 'yuv.app.bpm-management.filters.operators.startsWith', icon: 'filterStartsWith' },\n ENDS_WITH: { value: 'endsWith', label: 'yuv.app.bpm-management.filters.operators.endsWith', icon: 'filterEndsWith' },\n\n // Number operators\n GREATER_THAN: { value: 'greaterThan', label: 'yuv.app.bpm-management.filters.operators.greaterThan', icon: 'filterGreaterThan' },\n LESS_THAN: { value: 'lessThan', label: 'yuv.app.bpm-management.filters.operators.lessThan', icon: 'filterLessThan' },\n \n // Date operators\n BEFORE: { value: 'before', label: 'yuv.app.bpm-management.filters.operators.before', icon: 'filterBefore' },\n AFTER: { value: 'after', label: 'yuv.app.bpm-management.filters.operators.after', icon: 'filterAfter' },\n BETWEEN: { value: 'between', label: 'yuv.app.bpm-management.filters.operators.between', icon: 'filterBetween' }\n} as const;\n\nexport const FILTER_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n DATE: 'date',\n SELECT: 'select',\n CHECKBOX: 'checkbox',\n USER: 'user'\n} as const;\n\nexport interface TableFilters {\n [columnName: string]: FilterValue;\n}\n\nexport interface FilterValue {\n type: typeof FILTER_TYPES.TEXT | typeof FILTER_TYPES.NUMBER | typeof FILTER_TYPES.DATE | typeof FILTER_TYPES.SELECT | typeof FILTER_TYPES.CHECKBOX;\n value: any;\n operator?: string;\n endDate?: Date | null; // Für date between\n}\n\nexport type DateFormatType = 'datetime' | 'date' | 'time';\n\nexport function formatDateTime(\n utcDateString: string,\n locale: string,\n type: DateFormatType = 'datetime'\n): string {\n if (!utcDateString) return '';\n\n try {\n const date = new Date(utcDateString);\n\n const formatOptions: Record<DateFormatType, Intl.DateTimeFormatOptions> = {\n datetime: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n },\n date: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n time: {\n hour: '2-digit',\n minute: '2-digit'\n }\n };\n\n return type === 'datetime'\n ? date.toLocaleString(locale, formatOptions[type])\n : type === 'date'\n ? date.toLocaleDateString(locale, formatOptions[type])\n : date.toLocaleTimeString(locale, formatOptions[type]);\n\n } catch (error) {\n console.error('Error formatting date:', error);\n return utcDateString;\n }\n}\n\n/** The entities of the app. The value is also the route path. */\nexport type BpmEntity = 'deployments' | 'definitions' | 'processes' | 'tasks';\n\nexport const BPM_ENTITIES: BpmEntity[] = ['deployments', 'definitions', 'processes', 'tasks'];\n\n/** `icon` stands for the entity as a whole (navigation, list header), `itemIcon` for one item of it (details header, list row, references from other lists). */\nexport const BPM_ENTITY_META: Record<BpmEntity, { icon: string; itemIcon: string; label: string }> = {\n deployments: { icon: 'inventory_2', itemIcon: 'deployed_code', label: 'yuv.app.bpm-management.entity.deployments' },\n definitions: { icon: 'stacks', itemIcon: 'flowchart', label: 'yuv.app.bpm-management.entity.definitions' },\n processes: { icon: 'view_timeline', itemIcon: 'route', label: 'yuv.app.bpm-management.entity.processes' },\n tasks: { icon: 'inbox', itemIcon: 'assignment_ind', label: 'yuv.app.bpm-management.entity.tasks' }\n};\n\n/** An item of any entity of the app. */\nexport type BpmItem = DeploymentInstance | ProcessDefinitionInstance | ProcessInstance | TaskInstance;\n\n/** Severity of a status badge (see `ymt-badge`). */\nexport type BadgeSeverity = 'primary' | 'success' | 'warning' | 'neutral';\n\nexport function processSeverity(p: ProcessInstance): BadgeSeverity {\n return p.endTime ? (p.deleteReason ? 'warning' : 'success') : p.suspended ? 'neutral' : 'primary';\n}\n\n/** Material icon for the status badge of a process. */\nexport function processStatusIcon(p: ProcessInstance): string {\n return p.endTime ? (p.deleteReason ? 'cancel' : 'task_alt') : p.suspended ? 'pause_circle' : 'autorenew';\n}\n\nexport function processStatusLabel(p: ProcessInstance): string {\n return (p.endTime ? (p.deleteReason ? ProcessStatus.CANCELED : ProcessStatus.COMPLETED) : p.suspended ? ProcessStatus.SUSPENDED : ProcessStatus.RUNNING).label;\n}\n\nexport function taskSeverity(t: TaskInstance): BadgeSeverity {\n return t.endTime ? 'success' : t.suspended ? 'neutral' : 'primary';\n}\n\n/** Material icon for the status badge of a task. */\nexport function taskStatusIcon(t: TaskInstance): string {\n return t.endTime ? 'task_alt' : t.suspended ? 'pause_circle' : 'autorenew';\n}\n\nexport function taskStatusLabel(t: TaskInstance): string {\n return (t.endTime ? TaskStatus.COMPLETED : t.suspended ? TaskStatus.SUSPENDED : TaskStatus.RUNNING).label;\n}\n\nexport function definitionSeverity(d: ProcessDefinitionInstance): BadgeSeverity {\n return d.suspended ? 'neutral' : 'primary';\n}\n\n/** The icon of a process definition. Always the default for now, definitions will get custom icons. */\nexport function definitionIcon(_d: ProcessDefinitionInstance): string {\n return BPM_ENTITY_META.definitions.itemIcon;\n}\n\nexport function definitionStatusLabel(d: ProcessDefinitionInstance): string {\n return (d.suspended ? ProcessDefinitionStatus.SUSPENDED : ProcessDefinitionStatus.ACTIVE).label;\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { App } from '@yuuvis/client-shell-core';\nimport { BPM_ENTITIES, BpmEntity, BpmManagementAppData } from './bpm-management.schema';\n\n/**\n * Resolves the configuration of the app entry a route was loaded through. The same app can be\n * registered multiple times by a shell client (with different `data`), so the configuration is\n * taken from the route and not from a fixed app id.\n *\n * @returns The id of the app entry (if any) and the merged `data` of the route's ancestors.\n */\nexport function resolveAppConfig(route: ActivatedRouteSnapshot): { appId?: string; data: BpmManagementAppData } {\n let appId: string | undefined;\n let data: BpmManagementAppData = {};\n for (const r of route.pathFromRoot) {\n const cfg = r.routeConfig as Partial<App> | null;\n if (cfg?.id) appId = cfg.id;\n if (cfg?.data) data = { ...data, ...cfg.data };\n }\n return { appId, data };\n}\n\n/**\n * Whether the host shell client enabled the deployments tab unless `data: { showDeployments: false }` hides it (shown by default).\n */\nexport function isDeploymentsEnabled(route: ActivatedRouteSnapshot): boolean {\n return resolveAppConfig(route).data.showDeployments !== false;\n}\n\n/**\n * Whether the host shell client enabled the process definitions tab unless `data: { showProcessDefinitions: false }` hides it (shown by default).\n */\nexport function isProcessDefinitionsEnabled(route: ActivatedRouteSnapshot): boolean {\n return resolveAppConfig(route).data.showProcessDefinitions !== false;\n}\n\n/**\n * The entities the host shell client enabled (deployments and process definitions are optional, both on by default).\n */\nexport function enabledEntities(route: ActivatedRouteSnapshot): BpmEntity[] {\n const { showDeployments, showProcessDefinitions } = resolveAppConfig(route).data;\n return BPM_ENTITIES.filter(e => (e !== 'deployments' || showDeployments !== false) && (e !== 'definitions' || showProcessDefinitions !== false));\n}\n\n/**\n * Guard for an optional tab's route. If the tab is not enabled, redirects to the processes page.\n */\nfunction optionalTabGuard(path: string, isEnabled: (route: ActivatedRouteSnapshot) => boolean): CanActivateFn {\n const pathRegex = new RegExp(`/${path}(?=[/?#]|$)`);\n return (route, state) =>\n isEnabled(route) || inject(Router).parseUrl(state.url.replace(pathRegex, '/processes').split(/[?#]/)[0]);\n}\n\n/**\n * Guard for the empty path of the app: redirects to the first enabled entity (deployments, process\n * definitions, processes, tasks), keeping the query string.\n */\nexport const defaultEntityGuard: CanActivateFn = (route, state) => {\n const [path, query] = state.url.split('#')[0].split('?');\n const base = path.replace(/\\/+$/, '');\n return inject(Router).parseUrl(`${base}/${enabledEntities(route)[0]}${query ? '?' + query : ''}`);\n};\n\nexport const deploymentsGuard = optionalTabGuard('deployments', isDeploymentsEnabled);\nexport const processDefinitionsGuard = optionalTabGuard('definitions', isProcessDefinitionsEnabled);\n","import { TranslateService } from \"@yuuvis/client-core\";\nimport { FILTER_OPERATORS, FILTER_TYPES, FilterValue, ProcessDefinitionScope, ProcessDefinitionStatus, ProcessStatus, TableFilters, TaskStatus } from \"./bpm-management.schema\";\nimport { formatDate } from \"@angular/common\";\nimport { HttpParams } from \"@angular/common/http\";\n\n/**\n * Appends the set criteria of a filter to the REST parameters.\n * Skips unset (undefined/null) criteria and keys without a REST name, but keeps falsy values such as `false`.\n */\nexport function applyBpmFilterParams(params: HttpParams, filter: object | undefined, restNames: Record<string, string>): HttpParams {\n for (const [key, criterion] of Object.entries(filter ?? {}) as [string, FilterValue | undefined][]) {\n const value = criterion?.value;\n if (value === undefined || value === null || !restNames[key]) continue;\n params = params.set(restNames[key], value as string | number | boolean);\n }\n return params;\n}\n\n/**\n * Base class for BPM filter conversion with shared logic\n */\nabstract class BaseBpmFilter {\n /**\n * Converts AG Grid filter model to BPM filter format\n * @param tableFilters - The AG Grid table filters\n * @param ts - Optional TranslateService for date formatting\n * @returns The converted BPM filter instance\n */\n protected static convertFromAgFilterModel<T extends BaseBpmFilter>(\n filterInstance: T,\n tableFilters: TableFilters,\n ts?: TranslateService\n ): T {\n for (const columnFilter in tableFilters) {\n const columnFilterData = tableFilters[columnFilter];\n \n switch (columnFilterData['type']) {\n case FILTER_TYPES.TEXT:\n filterInstance[columnFilter] = this.handleTextFilter(columnFilterData);\n break;\n case FILTER_TYPES.NUMBER:\n filterInstance[columnFilter] = { value: columnFilterData.value, type: FILTER_TYPES.NUMBER };\n break;\n case FILTER_TYPES.DATE:\n this.handleDateFilter(filterInstance, columnFilter, columnFilterData, ts);\n break;\n case FILTER_TYPES.SELECT:\n this.handleSelectFilter(filterInstance, columnFilter, columnFilterData);\n break;\n }\n }\n\n return filterInstance;\n }\n\n private static handleTextFilter(columnFilterData: any): FilterValue {\n if (columnFilterData.operator === FILTER_OPERATORS.CONTAINS.value) {\n return { value: '%' + columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.STARTS_WITH.value) {\n return { value: columnFilterData.value + '%', type: FILTER_TYPES.TEXT };\n } else if (columnFilterData.operator === FILTER_OPERATORS.ENDS_WITH.value) {\n return { value: '%' + columnFilterData.value, type: FILTER_TYPES.TEXT };\n } else {\n return { value: columnFilterData.value, type: FILTER_TYPES.TEXT };\n }\n }\n\n private static handleDateFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any,\n ts?: TranslateService\n ): void {\n if (!ts) return;\n\n if (columnFilterData.operator === FILTER_OPERATORS.BETWEEN.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedStartDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedStartDate, type: FILTER_TYPES.DATE };\n }\n if (columnFilterData.endDate !== null && columnFilterData.endDate instanceof Date) {\n const formattedEndDate = formatDate(columnFilterData.endDate, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedEndDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.AFTER.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'After'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n } else if (columnFilterData.operator === FILTER_OPERATORS.BEFORE.value) {\n if (columnFilterData.value !== null && columnFilterData.value instanceof Date) {\n const formattedDate = formatDate(columnFilterData.value, 'yyyy-MM-ddTHH:mm:ss', ts.currentLang, 'UTC');\n filterInstance[columnFilter + 'Before'] = { value: formattedDate, type: FILTER_TYPES.DATE };\n }\n }\n }\n\n protected static handleSelectFilter(\n _filterInstance: any,\n _columnFilter: string,\n _columnFilterData: any\n ): void {\n return;\n }\n}\n\nexport class DeploymentFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLike',\n category: 'category'\n };\n declare id: FilterValue | undefined;\n declare name: FilterValue | undefined;\n declare category: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new DeploymentFilter(), tableFilters);\n }\n}\n\nexport class ProcessDefinitionFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n deploymentId: 'deploymentId',\n name: 'nameLikeIgnoreCase',\n category: 'categoryLike',\n version: 'version',\n key: 'keyLike',\n status: 'suspended',\n global: 'global',\n latest: 'latest'\n };\n declare id: FilterValue | undefined;\n declare deploymentId: FilterValue | undefined;\n declare name: FilterValue | undefined;\n declare category: FilterValue | undefined;\n declare version: FilterValue | undefined;\n declare key: FilterValue | undefined;\n declare status: FilterValue | undefined;\n declare global: FilterValue | undefined;\n declare latest: FilterValue | undefined;\n \n static fromAgFilterModel(tableFilters: TableFilters) {\n return this.convertFromAgFilterModel(new ProcessDefinitionFilter(), tableFilters);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessDefinitionStatus.ACTIVE.value || value === ProcessDefinitionScope.TENANT.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessDefinitionStatus.SUSPENDED.value || value === ProcessDefinitionScope.GLOBAL.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class ProcessFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'processInstanceId',\n processDefinitionId: 'processDefinitionId',\n name: 'nameLikeIgnoreCase',\n startUserId: 'startedBy',\n businessKey: 'businessKeyLike',\n startTimeBefore: 'startedBefore',\n startTimeAfter: 'startedAfter',\n endTimeBefore: 'finishedBefore',\n endTimeAfter: 'finishedAfter',\n status: 'isCompleted'\n };\n declare id: FilterValue | undefined;\n declare processDefinitionId: FilterValue | undefined;\n declare name: FilterValue | undefined;\n declare startUserId: FilterValue | undefined;\n declare startTimeBefore: FilterValue | undefined;\n declare startTimeAfter: FilterValue | undefined;\n declare endTimeBefore: FilterValue | undefined;\n declare endTimeAfter: FilterValue | undefined;\n declare businessKey: FilterValue | undefined;\n declare status: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new ProcessFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === ProcessStatus.RUNNING_SUSPENDED.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === ProcessStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}\n\nexport class TaskFilter extends BaseBpmFilter {\n static bpmFilterToRestApiName = {\n id: 'id',\n name: 'nameLikeIgnoreCase',\n status: 'isCompleted',\n processDefinitionId: 'processDefinitionId',\n processInstanceId: 'processInstanceId',\n assignee: 'visibleTo',\n owner: 'owner',\n createTimeBefore: 'createdBefore',\n createTimeAfter: 'createdAfter',\n endTimeBefore: 'completedBefore',\n endTimeAfter: 'completedAfter'\n };\n declare id: FilterValue | undefined;\n declare name: FilterValue | undefined;\n declare status: FilterValue | undefined;\n declare processDefinitionId: FilterValue | undefined;\n declare processInstanceId: FilterValue | undefined;\n declare assignee: FilterValue | undefined;\n declare owner: FilterValue | undefined;\n declare createTimeBefore: FilterValue | undefined;\n declare createTimeAfter: FilterValue | undefined;\n declare endTimeBefore: FilterValue | undefined;\n declare endTimeAfter: FilterValue | undefined;\n\n static fromAgFilterModel(tableFilters: TableFilters, ts: TranslateService) {\n return this.convertFromAgFilterModel(new TaskFilter(), tableFilters, ts);\n }\n\n protected static override handleSelectFilter(\n filterInstance: any,\n columnFilter: string,\n columnFilterData: any\n ): void {\n if (Array.isArray(columnFilterData.value)) {\n // Not supported in current implementation\n return;\n }\n\n const value = columnFilterData.value;\n \n if (value === TaskStatus.RUNNING.value) {\n filterInstance[columnFilter] = { value: 'false', type: FILTER_TYPES.SELECT };\n } else if (value === TaskStatus.COMPLETED.value) {\n filterInstance[columnFilter] = { value: 'true', type: FILTER_TYPES.SELECT };\n }\n }\n}","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, Utils } from '@yuuvis/client-core';\nimport { map, Observable } from 'rxjs';\nimport { DeploymentInstance, ProcessHistory, ProcessInstance, TaskInstance, ProcessDefinitionInstance } from './bpm-management.schema';\nimport { applyBpmFilterParams, DeploymentFilter, ProcessDefinitionFilter, ProcessFilter, TaskFilter } from './bpm-filter';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class YuvBpmManagementService {\n \n static DEFAULT_PAGE_SIZE = 15;\n private readonly bpmApiBase = '/bpm-engine/api';\n readonly #backendService = inject(BackendService);\n\n getDeployments(page: number, size: number, filter?: DeploymentFilter, sort?: { by: string; order: 'asc' | 'desc' }): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (sort) {\n filterParams = filterParams.set('sort', `${sort.by},${sort.order}`);\n }\n filterParams = applyBpmFilterParams(filterParams, filter, DeploymentFilter.bpmFilterToRestApiName);\n \n return this.#backendService\n .get(`${this.bpmApiBase}/deployments`, ApiBase.none, { params:filterParams } );\n }\n\n getDeployment(deploymentId: string): Observable<DeploymentInstance | null> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}`, ApiBase.none );\n }\n\n getDeploymentResources(deploymentId: string): Observable<any> {\n return this.#backendService\n .get(`${this.bpmApiBase}/deployments/${deploymentId}/resources`, ApiBase.none );\n }\n\n getProcessDefinitions(page: number, size: number, filter?: ProcessDefinitionFilter, sort?: { by: string; order: 'asc' | 'desc' }): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (sort) {\n // Spring Pageable format: one parameter, \"field,direction\"\n filterParams = filterParams.set('sort', `${sort.by},${sort.order}`);\n }\n filterParams = applyBpmFilterParams(filterParams, filter, ProcessDefinitionFilter.bpmFilterToRestApiName);\n\n return this.#backendService\n .get(`${this.bpmApiBase}/process-definitions`, ApiBase.none, { params:filterParams } );\n }\n\n getProcessDefinition(processDefinitionInstanceId: string): Observable<ProcessDefinitionInstance | null> {\n const params = new HttpParams().set('includeStatistics', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n executeProcessDefinitionAction(processDefinitionInstanceId: string, action: string, includeProcesses: boolean): Observable<any> {\n const body = {\n 'action': action,\n 'includeProcessInstances': includeProcesses\n };\n\n return this.#backendService\n .patch(`${this.bpmApiBase}/process-definitions/${processDefinitionInstanceId}`, body, ApiBase.none)\n .pipe(map(result => result))\n }\n\n executeProcessAction(processInstanceId: string, action: 'suspend' | 'activate'): Observable<any> {\n return this.#backendService.patch(`${this.bpmApiBase}/processes/${processInstanceId}`, { action }, ApiBase.none);\n }\n\n getProcesses(page: number, size: number, filter?: ProcessFilter, sort?: { by: string; order: 'asc' | 'desc' }): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (sort) {\n filterParams = filterParams.set('sort', `${sort.by},${sort.order}`);\n }\n filterParams = applyBpmFilterParams(filterParams, filter, ProcessFilter.bpmFilterToRestApiName);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes`,\n ApiBase.none,\n { params: filterParams }\n );\n }\n\n getProcess(processInstanceId: string): Observable<ProcessInstance | null> {\n const params = new HttpParams().set('includeProcessVariables', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n getProcessHistory(processInstanceId: string): Observable<ProcessHistory | null> {\n return this.#backendService.get(\n `${this.bpmApiBase}/processes/${processInstanceId}/history`,\n ApiBase.none\n ).pipe(\n map((result: any) => {\n if (!result || !result.tasks) return result;\n \n return {\n ...result,\n tasks: result.tasks\n .sort(Utils.sortValues('createTime'))\n .reverse()\n };\n })\n );\n }\n\n getTasks(page: number, size: number, filter?: TaskFilter, sort?: { by: string; order: 'asc' | 'desc' }): Observable<any> {\n let filterParams = new HttpParams().set('page', page).set('size', size);\n if (sort) {\n filterParams = filterParams.set('sort', `${sort.by},${sort.order}`);\n }\n filterParams = applyBpmFilterParams(filterParams, filter, TaskFilter.bpmFilterToRestApiName);\n if (filter?.assignee?.value != null) {\n filterParams = filterParams.set('isAssigned', 'true');\n }\n\n return this.#backendService\n .get(`${this.bpmApiBase}/tasks`, ApiBase.none, { params:filterParams } ); \n }\n\n getTask(taskId: string): Observable<TaskInstance | null> {\n const params = new HttpParams().set('includeIdentityLinks', true);\n\n return this.#backendService.get(\n `${this.bpmApiBase}/tasks/${taskId}`,\n ApiBase.none,\n { params: params }\n );\n }\n\n assignTask(taskId: string, assignee: string | null): Observable<any> {\n const body = {\n action: 'claim',\n assignee: assignee\n };\n\n return this.#backendService.patch(\n `${this.bpmApiBase}/tasks/${taskId}`,\n body,\n ApiBase.none\n );\n }\n\n setTaskCandidates(taskId: string, body: { users?: string[], roles?: string[] }): Observable<any> {\n return this.#backendService.post(\n `${this.bpmApiBase}/tasks/${taskId}/candidates`,\n body,\n ApiBase.none\n );\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { LayoutSettingsService } from '@yuuvis/client-components/common';\nimport { APP_ID, BPM_ENTITIES, BpmEntity, TableFilters } from './bpm-management.schema';\n\nexport type QuickFilter = 'active' | 'open' | 'suspended' | 'completed' | 'all';\n\n/** What the lists can be sorted by (which of these an entity offers is up to the backend). */\nexport type SortBy = 'name' | 'key' | 'definitionKey' | 'businessKey' | 'startTime' | 'createTime' | 'dueDate' | 'endTime' | 'deployTime';\nexport type SortOrder = 'asc' | 'desc';\n\nexport const PAGE_SIZE_OPTIONS: number[] = [10, 25, 50, 100];\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface ViewState {\n quick: QuickFilter;\n advanced: TableFilters;\n /** Process definitions only: hide older versions. */\n latestOnly: boolean;\n sortBy: SortBy;\n sortOrder: SortOrder;\n page: number;\n pageSize: number;\n}\n\nexport const initialView = (entity: BpmEntity): ViewState => ({\n quick: 'all',\n advanced: {},\n latestOnly: true,\n // processes and tasks: newest first\n sortBy: entity === 'processes' ? 'startTime' : entity === 'tasks' ? 'createTime' : 'name',\n sortOrder: entity === 'processes' || entity === 'tasks' ? 'desc' : 'asc',\n page: 0,\n pageSize: DEFAULT_PAGE_SIZE\n});\n\n/**\n * Holds the list state (filters, paging) of all entities; the search term is in the URL. Every entity is a separate\n * route, so the page component is recreated when switching — this keeps the state.\n */\n@Injectable({ providedIn: 'root' })\nexport class BpmManagementStateService {\n readonly #layoutSettings = inject(LayoutSettingsService);\n readonly #pageSizeSettingsKey = APP_ID + '#work.pageSize';\n\n /** The page size is one setting for all entities and remembered across sessions. */\n readonly pageSize = this.#loadStoredPageSize();\n\n readonly views = signal<Record<BpmEntity, ViewState>>(\n Object.fromEntries(BPM_ENTITIES.map(e => [e, { ...initialView(e), pageSize: this.pageSize }])) as Record<BpmEntity, ViewState>\n );\n\n /** Remembers the page size and applies it to all entities. */\n savePageSize(pageSize: number): void {\n this.#layoutSettings.saveSettings(this.#pageSizeSettingsKey, { pageSize });\n this.views.update(v => Object.fromEntries(BPM_ENTITIES.map(e => [e, { ...v[e], pageSize, page: 0 }])) as Record<BpmEntity, ViewState>);\n }\n\n /** Falls back to the default for anything unexpected (nothing stored, or a size no longer offered). */\n #loadStoredPageSize(): number {\n const stored = this.#layoutSettings.getSettings(this.#pageSizeSettingsKey) as { pageSize?: number } | undefined;\n const pageSize = Number(stored?.pageSize);\n return PAGE_SIZE_OPTIONS.includes(pageSize) ? pageSize : DEFAULT_PAGE_SIZE;\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { BPM_ENTITY_META, BpmEntity } from '../../bpm-management.schema';\n\n/**\n * Switch between the entities of the app (deployments, process definitions, processes, tasks).\n * Meant to be rendered in the shell's app header, so it is as high as the header's buttons. The header\n * is shared with the search, so the switch shrinks with the window: labels first, then one menu button.\n */\n@Component({\n selector: 'ymbpm-entity-switch',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonToggleModule, MatIconModule, MatMenuModule, MatTooltipModule, TranslatePipe],\n templateUrl: './entity-switch.component.html',\n styleUrl: './entity-switch.component.scss'\n})\nexport class EntitySwitchComponent {\n readonly ENTITY_META = BPM_ENTITY_META;\n\n /** The entities to offer, in the order they are shown. */\n entities = input.required<BpmEntity[]>();\n value = input.required<BpmEntity>();\n valueChange = output<BpmEntity>();\n}\n","<div class=\"bar\">\n<mat-button-toggle-group\n class=\"toggles\"\n hideSingleSelectionIndicator\n [value]=\"value()\"\n (change)=\"valueChange.emit($event.value)\"\n [attr.aria-label]=\"'yuv.app.bpm-management.entity.switch.aria' | translate\"\n>\n @for (entity of entities(); track entity) {\n <mat-button-toggle [value]=\"entity\" [matTooltip]=\"ENTITY_META[entity].label | translate\">\n <mat-icon aria-hidden=\"true\">{{ ENTITY_META[entity].icon }}</mat-icon>\n <span class=\"label\">{{ ENTITY_META[entity].label | translate }}</span>\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n\n<!-- little space: the toggles collapse into one toggle with the current entity, which opens the menu -->\n<mat-button-toggle-group class=\"compact\" hideSingleSelectionIndicator [value]=\"value()\">\n <mat-button-toggle\n [value]=\"value()\"\n [matMenuTriggerFor]=\"entityMenu\"\n [matTooltip]=\"ENTITY_META[value()].label | translate\"\n [aria-label]=\"('yuv.app.bpm-management.entity.switch.aria' | translate) + ': ' + (ENTITY_META[value()].label | translate)\"\n >\n <mat-icon aria-hidden=\"true\">{{ ENTITY_META[value()].icon }}</mat-icon>\n <mat-icon aria-hidden=\"true\">arrow_drop_down</mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<mat-menu #entityMenu=\"matMenu\">\n @for (entity of entities(); track entity) {\n <button mat-menu-item role=\"menuitemradio\" [attr.aria-checked]=\"entity === value()\" (click)=\"valueChange.emit(entity)\">\n <mat-icon aria-hidden=\"true\">{{ ENTITY_META[entity].icon }}</mat-icon>\n {{ ENTITY_META[entity].label | translate }}\n </button>\n }\n</mat-menu>\n</div>\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n/**\n * Button to remove the value of a single filter. Meant to be used as suffix of a filter field\n * (`<ymbpm-filter-clear matSuffix>`), shown while the filter has a value.\n */\n@Component({\n selector: 'ymbpm-filter-clear',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [YmtIconButtonDirective, MatIconModule, MatTooltipModule, TranslatePipe],\n template: `\n <button\n ymtIconButton\n icon-button-size=\"small\"\n type=\"button\"\n [attr.aria-label]=\"'yuv.app.bpm-management.filters.clear' | translate\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.clear' | translate\"\n (click)=\"cleared.emit(); $event.stopPropagation()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n /* keeps the button off the border of the field, like the operator on the other side */\n padding-inline: var(--ymt-spacing-2xs);\n }\n `\n})\nexport class FilterClearComponent {\n cleared = output<void>();\n}\n","import { ChangeDetectionStrategy, Component, DestroyRef, forwardRef, inject, OnDestroy } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { Subject } from 'rxjs';\n\nlet nextId = 0;\n\n/**\n * A date and time input that can be used in a `mat-form-field` (label, border and states like any\n * other form field). It wraps the shell's `yuv-datepicker`, which only is a bare input.\n */\n@Component({\n selector: 'ymbpm-date-time-field',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, YuvDatepickerModule],\n providers: [{ provide: MatFormFieldControl, useExisting: forwardRef(() => DateTimeFieldComponent) }],\n host: {\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut()'\n },\n template: `<yuv-datepicker [formControl]=\"inner\" [withTime]=\"true\" [calendar]=\"true\" [locale]=\"locale\" />`,\n styles: `\n :host {\n display: flex;\n align-items: center;\n min-width: 0;\n padding-inline-end: var(--ymt-spacing-2xs);\n }\n yuv-datepicker {\n flex: 1;\n min-width: 0;\n }\n `\n})\nexport class DateTimeFieldComponent implements MatFormFieldControl<Date | null>, ControlValueAccessor, OnDestroy {\n readonly #translate = inject(TranslateService);\n\n readonly inner = new FormControl<Date | null>(null);\n\n // ---- MatFormFieldControl ---------------------------------------------------------------------\n // the control and the value accessor are the same, so the form control is not asked for one\n readonly ngControl: NgControl | null = (ngControl => (ngControl ? ((ngControl.valueAccessor = this), ngControl) : null))(\n inject(NgControl, { self: true, optional: true })\n );\n readonly stateChanges = new Subject<void>();\n readonly id = `ymbpm-date-time-field-${nextId++}`;\n readonly controlType = 'ymbpm-date-time-field';\n readonly placeholder = '';\n readonly required = false;\n readonly autofilled = false;\n focused = false;\n disabled = false;\n describedBy = '';\n value: Date | null = null;\n\n get empty(): boolean {\n return !this.value;\n }\n\n /** The inputs of the date show a mask, so the label must not sit on top of them. */\n get shouldLabelFloat(): boolean {\n return true;\n }\n\n get errorState(): boolean {\n return !!this.ngControl?.invalid && !!this.ngControl?.touched;\n }\n\n get locale(): string {\n return this.#translate.currentLang;\n }\n\n constructor() {\n this.inner.valueChanges.pipe(takeUntilDestroyed(inject(DestroyRef))).subscribe(value => {\n this.value = value;\n this.#onChange(value);\n this.stateChanges.next();\n });\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(): void {\n // the inputs of the date picker take the focus themselves\n }\n\n onFocusIn(): void {\n this.focused = true;\n this.stateChanges.next();\n }\n\n onFocusOut(): void {\n this.focused = false;\n this.#onTouched();\n this.stateChanges.next();\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n\n // ---- ControlValueAccessor --------------------------------------------------------------------\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onChange: (value: Date | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onTouched: () => void = () => {};\n\n writeValue(value: Date | null): void {\n this.value = value instanceof Date ? value : null;\n this.inner.setValue(this.value, { emitEvent: false });\n this.stateChanges.next();\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.#onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled) {\n this.inner.disable({ emitEvent: false });\n } else {\n this.inner.enable({ emitEvent: false });\n }\n this.stateChanges.next();\n }\n}\n","import { ChangeDetectionStrategy, Component, DestroyRef, forwardRef, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { merge, Subject } from 'rxjs';\n\nlet nextId = 0;\n\n/**\n * Start and end of a period as one form field control: one border and one label around both date\n * and time inputs. The values live in the two controls handed in, so it is no value accessor.\n */\n@Component({\n selector: 'ymbpm-date-time-range-field',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, YuvDatepickerModule],\n providers: [{ provide: MatFormFieldControl, useExisting: forwardRef(() => DateTimeRangeFieldComponent) }],\n host: {\n '[id]': 'id',\n '[attr.aria-describedby]': 'describedBy',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut()'\n },\n template: `\n <yuv-datepicker [formControl]=\"start()\" [withTime]=\"true\" [calendar]=\"true\" [locale]=\"locale\" />\n <span class=\"separator\" aria-hidden=\"true\">–</span>\n <yuv-datepicker [formControl]=\"end()\" [withTime]=\"true\" [calendar]=\"true\" [locale]=\"locale\" />\n `,\n styles: `\n :host {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--ymt-spacing-2xs) var(--ymt-spacing-xs);\n min-width: 0;\n padding-inline-end: var(--ymt-spacing-2xs);\n }\n yuv-datepicker {\n flex: 1 1 0;\n min-width: 0;\n }\n .separator {\n color: var(--ymt-text-color-subtle);\n }\n `\n})\nexport class DateTimeRangeFieldComponent implements MatFormFieldControl<null>, OnInit, OnDestroy {\n readonly #translate = inject(TranslateService);\n readonly #destroyRef = inject(DestroyRef);\n\n readonly start = input.required<FormControl>();\n readonly end = input.required<FormControl>();\n\n // ---- MatFormFieldControl ---------------------------------------------------------------------\n readonly ngControl = null;\n readonly stateChanges = new Subject<void>();\n readonly id = `ymbpm-date-time-range-field-${nextId++}`;\n readonly controlType = 'ymbpm-date-time-range-field';\n readonly placeholder = '';\n readonly required = false;\n readonly errorState = false;\n readonly autofilled = false;\n readonly value = null;\n focused = false;\n describedBy = '';\n\n get disabled(): boolean {\n return this.start().disabled && this.end().disabled;\n }\n\n get empty(): boolean {\n return !this.start().value && !this.end().value;\n }\n\n /** The inputs of the dates show a mask, so the label must not sit on top of them. */\n get shouldLabelFloat(): boolean {\n return true;\n }\n\n get locale(): string {\n return this.#translate.currentLang;\n }\n\n ngOnInit(): void {\n merge(this.start().valueChanges, this.end().valueChanges)\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => this.stateChanges.next());\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick(): void {\n // the inputs of the date pickers take the focus themselves\n }\n\n onFocusIn(): void {\n this.focused = true;\n this.stateChanges.next();\n }\n\n onFocusOut(): void {\n this.focused = false;\n this.stateChanges.next();\n }\n\n ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { APP_ICONS, FilterOption } from '../../../bpm-management.schema';\n\n/**\n * The comparison of a filter field (equals, contains, ...). With several operators the user picks\n * one from a menu, with a single one it is only shown. Both take the same space, so the fields of\n * all filters line up.\n */\n@Component({\n selector: 'ymbpm-filter-operator',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [YmtIconButtonDirective, MatIconModule, MatMenuModule, MatTooltipModule, TranslatePipe],\n template: `\n @if (current(); as current) {\n @if (operators().length > 1) {\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" [matMenuTriggerFor]=\"menu\" [attr.aria-label]=\"current.label | translate\" [matTooltip]=\"current.label | translate\">\n <mat-icon>{{ icons[current.icon || ''] }}</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n @for (operator of operators(); track operator.value) {\n <button mat-menu-item (click)=\"valueChange.emit(operator.value)\">\n <mat-icon>{{ icons[operator.icon || ''] }}</mat-icon>\n {{ operator.label | translate }}\n </button>\n }\n </mat-menu>\n } @else {\n <!-- not interactive, but the same button as the menu trigger so both take the same space -->\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"fixed\" aria-disabled=\"true\" tabindex=\"-1\" [attr.aria-label]=\"current.label | translate\" [matTooltip]=\"current.label | translate\">\n <mat-icon>{{ icons[current.icon || ''] }}</mat-icon>\n </button>\n }\n }\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n /* like the buttons of the date control: a little air between the button and the value */\n padding-inline: var(--ymt-spacing-2xs);\n }\n .fixed {\n color: var(--ymt-text-color-subtle);\n cursor: default;\n }\n `\n})\nexport class FilterOperatorComponent {\n readonly icons: Record<string, string> = { ...APP_ICONS };\n\n operators = input.required<FilterOption[]>();\n value = input<string | null>(null);\n valueChange = output<string>();\n\n readonly current = computed(() => this.operators().find(o => o.value === this.value()) ?? this.operators()[0]);\n}\n","import { FilterClearComponent } from '../filter-clear/filter-clear.component';\nimport { DateTimeFieldComponent } from '../date-time-field/date-time-field.component';\nimport { DateTimeRangeFieldComponent } from '../date-time-range-field/date-time-range-field.component';\nimport { FilterOperatorComponent } from '../filter-operator/filter-operator.component';\nimport { Component, forwardRef, inject, input, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { pairwise, startWith } from 'rxjs';\n\n@Component({\n selector: 'ymbpm-date-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n TranslatePipe,\n FilterClearComponent,\n FilterOperatorComponent,\n DateTimeFieldComponent,\n DateTimeRangeFieldComponent,\n MatTooltipModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterComponent),\n multi: true\n }\n ],\n host: { '[class.between]': 'isBetweenMode()' },\n templateUrl: './date-filter.component.html',\n styleUrl: './date-filter.component.scss'\n})\nexport class DateFilterComponent implements ControlValueAccessor, OnInit {\n readonly translateService = inject(TranslateService);\n\n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n /** Translation key of the field label. */\n label = input<string>('');\n placeholder = input<string>();\n operators = input<FilterOption[]>([FILTER_OPERATORS.BEFORE]);\n \n filterForm = new FormGroup({\n value: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n operator: new FormControl<string>(FILTER_OPERATORS.BEFORE.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get valueControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n get endDateControl() { return this.filterForm.get('endDate') as FormControl; }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.valueControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n ) \n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.endDateControl.valueChanges\n .pipe(\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter() || prev !== null && next === null) {\n this.fireOnChangeEvent();\n }\n });\n\n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n this.fireOnChangeEvent();\n }\n });\n }\n\n isActiveFilter(): boolean {\n const operator = this.operatorControl.value;\n \n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate = this.endDateControl.value;\n return startDate !== null || endDate !== null;\n } else {\n const value = this.valueControl.value;\n return value !== null;\n }\n }\n\n isBetweenMode(): boolean {\n return this.operatorControl.value === FILTER_OPERATORS.BETWEEN.value;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value,\n endDate: null\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n private cdr = inject(ChangeDetectorRef);\n\n writeValue(value: FilterValue | null): void {\n // the filter bar is OnPush, so a value that is set from outside needs a check to update the clear button\n this.cdr.markForCheck();\n if (value && value.type === FILTER_TYPES.DATE) {\n if (value.operator && value.operator === FILTER_OPERATORS.BETWEEN.value) {\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: FILTER_OPERATORS.BETWEEN.value,\n endDate: value.endDate instanceof Date ? value.endDate : null\n }, { emitEvent: false });\n } else {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n\n this.filterForm.setValue({\n value: value.value instanceof Date ? value.value : null,\n operator: operator,\n endDate: null\n }, { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n const operator = this.operatorControl.value;\n if (operator === FILTER_OPERATORS.BETWEEN.value) {\n const startDate = this.valueControl.value;\n const endDate: Date | null = this.endDateControl.value;\n\n this.onChange({\n value: startDate,\n endDate: endDate,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n } else {\n const value = this.valueControl.value;\n\n this.onChange({\n value: value,\n operator: operator,\n type: FILTER_TYPES.DATE\n });\n }\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field class=\"filter-field\">\n <mat-label>{{ label() | translate }}</mat-label>\n <ymbpm-filter-operator matPrefix [operators]=\"operators()\" [value]=\"operatorControl.value\" (valueChange)=\"setOperator($event)\" />\n @if (isBetweenMode()) {\n <ymbpm-date-time-range-field [start]=\"valueControl\" [end]=\"endDateControl\" />\n } @else {\n <ymbpm-date-time-field [formControl]=\"valueControl\" />\n }\n @if (isActiveFilter()) {\n <ymbpm-filter-clear matSuffix (cleared)=\"clearFilter(true)\" />\n }\n </mat-form-field>\n</div>\n","import { FilterClearComponent } from '../filter-clear/filter-clear.component';\nimport { FilterOperatorComponent } from '../filter-operator/filter-operator.component';\nimport { Component, input, OnInit, forwardRef, ViewChild, ChangeDetectorRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-number-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe,\n FilterClearComponent,\n FilterOperatorComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFilterComponent),\n multi: true\n }\n ],\n templateUrl: './number-filter.component.html',\n styleUrl: './number-filter.component.scss'\n})\nexport class NumberFilterComponent implements ControlValueAccessor, OnInit {\n /** Translation key of the field label. */\n label = input<string>('');\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n /** The smallest value that is accepted, lower values are raised to it. */\n min = input<number | null>(null);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(null),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n \n icons = {\n ...APP_ICONS,\n };\n\n get numberControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n \n private numberInputSub: Subscription | null = null;\n private lastNumberValue: number | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.operators()[0]);\n \n this.createNumberInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.operators()[0]),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.numberControl.value === this.lastNumberValue) {\n return;\n }\n\n if (this.numberInputSub) {\n this.numberInputSub.unsubscribe();\n }\n\n this.clampToMin();\n this.fireOnChangeEvent();\n this.createNumberInputSubscription();\n }\n\n createNumberInputSubscription(): void {\n this.numberInputSub = this.numberControl.valueChanges\n .pipe(\n debounceTime(300),\n distinctUntilChanged()\n )\n .subscribe(() => {\n this.clampToMin();\n this.fireOnChangeEvent();\n });\n }\n\n private clampToMin(): void {\n const min = this.min();\n const value = this.numberControl.value;\n if (min !== null && value !== null && value !== '' && Number(value) < min) {\n this.numberControl.setValue(min, { emitEvent: false });\n }\n }\n \n isActiveFilter(): boolean {\n const value = this.numberControl.value;\n return value !== null && value !== undefined && !isNaN(Number(value))\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.operators()[0].value\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n\n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n \n private cdr = inject(ChangeDetectorRef);\n\n writeValue(value: FilterValue | null): void {\n // the filter bar is OnPush, so a value that is set from outside needs a check to update the clear button\n this.cdr.markForCheck();\n if (value && value.type === FILTER_TYPES.NUMBER) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.operators()[0].value;\n \n this.filterForm.setValue({\n value: value.value,\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastNumberValue = this.numberControl.value;\n this.onChange({\n value: this.numberControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.NUMBER\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field class=\"filter-field\">\n <mat-label>{{ label() | translate }}</mat-label>\n <ymbpm-filter-operator matPrefix [operators]=\"operators()\" [value]=\"operatorControl.value\" (valueChange)=\"setOperator($event)\" />\n <input matInput type=\"number\" [attr.min]=\"min()\"\n [formControl]=\"numberControl\"\n (keydown.enter)=\"onEnter()\">\n @if (isActiveFilter()) {\n <ymbpm-filter-clear matSuffix (cleared)=\"clearFilter(true)\" />\n }\n </mat-form-field>\n</div>","import { FilterClearComponent } from '../filter-clear/filter-clear.component';\nimport { FilterOperatorComponent } from '../filter-operator/filter-operator.component';\nimport { Component, input, OnInit, forwardRef, ChangeDetectorRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterValue, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-select-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n TranslatePipe,\n MatTooltipModule,\n FilterClearComponent,\n FilterOperatorComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectFilterComponent),\n multi: true\n }\n ],\n templateUrl: './select-filter.component.html',\n styleUrl: './select-filter.component.scss'\n})\nexport class SelectFilterComponent implements ControlValueAccessor, OnInit {\n /** Translation key of the field label. */\n label = input<string>('');\n options = input<FilterOption[]>([]);\n enableMultiselect = input<boolean>(false);\n /** Translation key of what the field shows while nothing is selected. */\n placeholder = input<string>('yuv.app.bpm-management.filters.select');\n \n /** A single choice is compared for equality, shown like the fixed operator of the other filters. */\n readonly equals = [FILTER_OPERATORS.EQUALS];\n\n selectControl = new FormControl();\n \n icons = {\n ...APP_ICONS,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n if (this.enableMultiselect()) {\n this.selectControl.setValue([]);\n } else {\n this.selectControl.setValue('');\n }\n \n this.selectControl.valueChanges.subscribe(() => {\n this.fireOnChangeEvent();\n });\n }\n\n isActiveFilter(): boolean {\n const value = this.selectControl.value;\n if (this.enableMultiselect()) {\n return value && Array.isArray(value) && value.length > 0;\n } else {\n return value && value !== '';\n }\n }\n\n /** The chosen option of a single select (shown with its icon). */\n selectedOption(): FilterOption | undefined {\n return this.options().find(o => o.value === this.selectControl.value);\n }\n\n getSelectedCount(): number {\n if (!this.enableMultiselect()) return 0;\n \n const values = this.selectControl.value || [];\n return Array.isArray(values) ? values.length : 0;\n }\n\n clearFilter(fireEvent = false): void {\n this.selectControl.setValue(null, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n private cdr = inject(ChangeDetectorRef);\n\n writeValue(value: FilterValue | null): void {\n // the filter bar is OnPush, so a value that is set from outside needs a check to update the clear button\n this.cdr.markForCheck();\n if (value && value.type === FILTER_TYPES.SELECT ) {\n if (this.enableMultiselect()) {\n this.selectControl.setValue(Array.isArray(value.value) ? value.value : [], { emitEvent: false });\n } else {\n this.selectControl.setValue(value.value || '', { emitEvent: false });\n }\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n const value = this.selectControl.value;\n const isEmpty = value == null || value === '' || (Array.isArray(value) && value.length === 0);\n // no selection is no filter (the filter bar drops filters without a value)\n this.onChange(isEmpty ? null : { value, type: FILTER_TYPES.SELECT });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field class=\"filter-field\" floatLabel=\"always\">\n <mat-label>{{ label() | translate }}</mat-label>\n @if (!enableMultiselect()) {\n <ymbpm-filter-operator matPrefix [operators]=\"equals\" value=\"equals\" />\n }\n <mat-select [formControl]=\"selectControl\"\n [placeholder]=\"placeholder() ? (placeholder() | translate) : ''\"\n [multiple]=\"enableMultiselect()\">\n @if (!enableMultiselect()) {\n <mat-select-trigger>\n @if (selectedOption(); as selected) {\n @if (selected.icon) {\n <mat-icon class=\"option-icon\">{{ icons[selected.icon] }}</mat-icon>\n }\n {{ selected.label | translate }}\n }\n </mat-select-trigger>\n }\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\">\n @if (option.icon) {\n <mat-icon class=\"option-icon\">{{ icons[option.icon] }}</mat-icon>\n }\n {{option.label | translate}}\n </mat-option>\n }\n </mat-select>\n @if (isActiveFilter()) {\n <ymbpm-filter-clear matSuffix (cleared)=\"clearFilter(true)\" />\n }\n @if (enableMultiselect()) {\n <div matSuffix class=\"multi-select-suffix\">\n @if (getSelectedCount() > 0) {\n <mat-icon>check_circle</mat-icon>\n <span class=\"count\">{{getSelectedCount()}}</span>\n }\n </div>\n }\n </mat-form-field>\n</div>\n","import { FilterClearComponent } from '../filter-clear/filter-clear.component';\nimport { FilterOperatorComponent } from '../filter-operator/filter-operator.component';\nimport { Component, input, OnInit, forwardRef, ViewChild, ChangeDetectorRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormGroup, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, pairwise, startWith, Subscription } from 'rxjs';\nimport { FilterValue, APP_ICONS, FILTER_OPERATORS, FILTER_TYPES, FilterOption } from '../../../bpm-management.schema';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'ymbpm-text-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDividerModule,\n MatTooltipModule,\n TranslatePipe,\n FilterClearComponent,\n FilterOperatorComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFilterComponent),\n multi: true\n }\n ],\n templateUrl: './text-filter.component.html',\n styleUrl: './text-filter.component.scss'\n})\nexport class TextFilterComponent implements ControlValueAccessor, OnInit {\n /** Translation key of the field label. */\n label = input<string>('');\n operators = input<FilterOption[]>([FILTER_OPERATORS.EQUALS]);\n \n @ViewChild(MatTooltip) tooltip?: MatTooltip;\n \n filterForm = new FormGroup({\n value: new FormControl(''),\n operator: new FormControl<string>(FILTER_OPERATORS.EQUALS.value)\n });\n\n icons = {\n ...APP_ICONS,\n };\n\n /** The operator a filter starts with: contains if it is offered, otherwise the first one. */\n defaultOperator(): string {\n return (this.operators().find(op => op.value === FILTER_OPERATORS.CONTAINS.value) ?? this.operators()[0]).value;\n }\n\n get textControl() { return this.filterForm.get('value') as FormControl; }\n get operatorControl() { return this.filterForm.get('operator') as FormControl; }\n\n private textInputSub: Subscription | null = null;\n private lastTextValue: string | null = null;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.operatorControl.setValue(this.defaultOperator());\n \n this.createTextInputSubscription();\n \n this.operatorControl.valueChanges\n .pipe(\n startWith(this.defaultOperator()),\n pairwise()\n )\n .subscribe(([prev, next]: [string, string]) => {\n if (prev !== next) {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n }\n }\n });\n }\n\n onEnter(): void {\n if (this.textControl.value === this.lastTextValue) {\n return;\n }\n\n if (this.textInputSub) {\n this.textInputSub.unsubscribe();\n }\n\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else {\n if (this.isActiveFilter(this.lastTextValue) && (this.textControl.value.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n this.createTextInputSubscription();\n }\n\n createTextInputSubscription(): void {\n this.textInputSub = this.textControl.valueChanges\n .pipe(\n debounceTime(550),\n distinctUntilChanged(),\n startWith(null),\n pairwise()\n )\n .subscribe(([prev, next]: [any, any]) => {\n if (this.isActiveFilter()) {\n this.fireOnChangeEvent();\n } else if (next !== null && next !== undefined) {\n if (this.isActiveFilter(prev) && (next.toString().trim().length === 0)) {\n this.clearFilter(true);\n }\n }\n });\n }\n\n isActiveFilter(value = this.textControl.value): boolean {\n return value && value.toString().trim().length > 0;\n }\n\n getCurrentOperatorOption(): FilterOption | null {\n const operator = this.operatorControl.value;\n return this.operators().find(op => op.value === operator) || null;\n }\n\n setOperator(operator: string): void {\n this.operatorControl.setValue(operator);\n }\n\n clearFilter(fireEvent = false): void {\n this.filterForm.reset({\n value: null,\n operator: this.defaultOperator()\n }, { emitEvent: false });\n\n if (fireEvent) {\n this.fireOnChangeEvent();\n }\n }\n\n toggleOperator(): void {\n const currentOperator = this.operatorControl.value;\n const currentIndex = this.operators().findIndex(op => op.value === currentOperator);\n const nextIndex = (currentIndex + 1) % this.operators().length;\n this.operatorControl.setValue(this.operators()[nextIndex].value);\n \n if (this.tooltip) {\n this.tooltip.hide();\n setTimeout(() => {\n this.tooltip?.show();\n }, 0);\n }\n }\n\n private cdr = inject(ChangeDetectorRef);\n\n writeValue(value: FilterValue | null): void {\n // the filter bar is OnPush, so a value that is set from outside needs a check to update the clear button\n this.cdr.markForCheck();\n if (value && value.type === FILTER_TYPES.TEXT) {\n const operator = value.operator && this.operators().find(op => op.value === value.operator)\n ? value.operator\n : this.defaultOperator();\n \n this.filterForm.setValue({\n value: value.value ? String(value.value) : '',\n operator: operator\n }, { emitEvent: false });\n } else {\n this.clearFilter();\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(): void {\n this.lastTextValue = this.textControl.value;\n this.onChange({\n value: this.textControl.value,\n operator: this.operatorControl.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}","<div class=\"filter-input-group\" [class.active]=\"isActiveFilter()\">\n <mat-form-field class=\"filter-field\">\n <mat-label>{{ label() | translate }}</mat-label>\n <ymbpm-filter-operator matPrefix [operators]=\"operators()\" [value]=\"operatorControl.value\" (valueChange)=\"setOperator($event)\" />\n <input matInput \n [formControl]=\"textControl\"\n (keydown.enter)=\"onEnter()\">\n @if (isActiveFilter()) {\n <ymbpm-filter-clear matSuffix (cleared)=\"clearFilter(true)\" />\n }\n </mat-form-field>\n</div>","import { FilterClearComponent } from '../filter-clear/filter-clear.component';\nimport { Component, forwardRef, input, OnInit, signal, ChangeDetectorRef, inject } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { FilterValue, FILTER_OPERATORS, FILTER_TYPES } from '../../../bpm-management.schema';\nimport { FilterOperatorComponent } from '../filter-operator/filter-operator.component';\n\n@Component({\n selector: 'ymbpm-user-filter',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatIconModule,\n TranslatePipe,\n OrganizationComponent,\n FilterClearComponent,\n FilterOperatorComponent\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UserFilterComponent),\n multi: true\n }\n ],\n templateUrl: './user-filter.component.html',\n styleUrl: './user-filter.component.scss'\n})\nexport class UserFilterComponent implements ControlValueAccessor, OnInit {\n /** Translation key of the field label. */\n label = input<string>('');\n /** A user is compared for equality, shown like the fixed operator of the other filters. */\n readonly equals = [FILTER_OPERATORS.EQUALS];\n orgControl = new FormControl<string | null>(null);\n\n showOrganization = signal(true);\n\n private hasWrittenValue = false;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (value: FilterValue | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.orgControl.valueChanges.subscribe(value => this.fireOnChangeEvent(value));\n }\n\n private cdr = inject(ChangeDetectorRef);\n\n writeValue(value: FilterValue | null): void {\n // the filter bar is OnPush, so a value that is set from outside needs a check to update the clear button\n this.cdr.markForCheck();\n if (value && value.type === FILTER_TYPES.TEXT) {\n this.orgControl.setValue(value.value ? String(value.value) : null, { emitEvent: false });\n } else {\n this.orgControl.setValue(null, { emitEvent: false });\n if (this.hasWrittenValue) {\n this.showOrganization.set(false);\n setTimeout(() => this.showOrganization.set(true));\n }\n }\n this.hasWrittenValue = true;\n }\n\n clearFilter(fireEvent = false): void {\n this.orgControl.setValue(null, { emitEvent: false });\n // the organization field keeps its own state, so it is recreated\n this.showOrganization.set(false);\n setTimeout(() => this.showOrganization.set(true));\n if (fireEvent) {\n this.fireOnChangeEvent(null);\n }\n }\n\n registerOnChange(fn: (value: FilterValue | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private fireOnChangeEvent(value: string | null): void {\n this.onTouched();\n this.onChange({\n value: value || null,\n operator: FILTER_OPERATORS.EQUALS.value,\n type: FILTER_TYPES.TEXT\n });\n }\n}\n","<div class=\"filter-input-group\" [class.active]=\"!!orgControl.value\">\n <mat-form-field class=\"filter-field\">\n <mat-label>{{ label() | translate }}</mat-label>\n <ymbpm-filter-operator matPrefix [operators]=\"equals\" value=\"equals\" />\n @if (showOrganization()) {\n <yuv-organization [formControl]=\"orgControl\" [excludeMe]=\"false\" situation=\"SEARCH\"></yuv-organization>\n }\n @if (orgControl.value) {\n <ymbpm-filter-clear matSuffix (cleared)=\"clearFilter(true)\" />\n }\n </mat-form-field>\n</div>\n","import { CdkConnectedOverlay, ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Injector,\n input,\n OnDestroy,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { Subscription } from 'rxjs';\nimport { Column, FILTER_OPERATORS, FILTER_TYPES, FilterOption, FilterValue, formatDateTime, TableFilters } from '../../../bpm-management.schema';\nimport { OrganizationRendererComponent } from '@yuuvis/client-framework/renderer';\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\nimport { SelectFilterComponent } from '../select-filter/select-filter.component';\nimport { TextFilterComponent } from '../text-filter/text-filter.component';\nimport { UserFilterComponent } from '../user-filter/user-filter.component';\n\nconst OPERATORS = new Map<string, FilterOption>(Object.values(FILTER_OPERATORS).map(o => [o.value, o]));\n\n/** Operators shown as a sign before the value; the text operators are wildcards around it instead. */\nconst OPERATOR_SIGNS: Record<string, string> = {\n [FILTER_OPERATORS.EQUALS.value]: '=',\n [FILTER_OPERATORS.GREATER_THAN.value]: '>',\n [FILTER_OPERATORS.LESS_THAN.value]: '<',\n [FILTER_OPERATORS.BEFORE.value]: '<',\n [FILTER_OPERATORS.AFTER.value]: '>'\n};\n\n/** What a chip shows: the criterion with operator signs, and in words for its tooltip. */\ninterface Chip {\n column: Column;\n /** Set for user criteria, which show the user instead of `text`. */\n userId: string | null;\n text: string;\n title: string;\n}\n\n/**\n * Strip of the list pane with one chip for every active criterion (and the search); empty it takes\n * no space. New criteria are added with `edit()` from outside (the \"add filter\" menu of the pane\n * header). A chip opens the editor of its criterion, which is the filter control of the column in a\n * popover; changes apply while typing, so there is nothing to confirm.\n */\n@Component({\n selector: 'ymbpm-filter-bar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class.empty]': '!hasChips()' },\n imports: [\n OverlayModule,\n ReactiveFormsModule,\n MatIconModule,\n TranslatePipe,\n OrganizationRendererComponent,\n TextFilterComponent,\n NumberFilterComponent,\n SelectFilterComponent,\n DateFilterComponent,\n UserFilterComponent\n ],\n templateUrl: './filter-bar.component.html',\n styleUrl: './filter-bar.component.scss'\n})\nexport class FilterBarComponent implements OnDestroy {\n readonly #translate = inject(TranslateService);\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #injector = inject(Injector);\n\n /** The columns that can be filtered (the ones without a filter are ignored). */\n columns = input.required<Column[]>();\n filters = input<TableFilters>({});\n /** The search term of the list (it is entered in the app header and shown as a chip here). */\n search = input('');\n filtersChange = output<TableFilters>();\n searchClear = output<void>();\n\n readonly FILTER_TYPES = FILTER_TYPES;\n readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 }\n ];\n\n private readonly overlay = viewChild(CdkConnectedOverlay);\n\n readonly editing = signal<{ column: Column; origin: HTMLElement } | null>(null);\n readonly overlayOrigin = computed(() => this.editing()?.origin ?? this.#host.nativeElement);\n control = new FormControl<FilterValue | null>(null);\n #sub?: Subscription;\n\n readonly #filterable = computed(() => this.columns().filter(c => c.filter));\n readonly addableColumns = computed(() => this.#filterable().filter(c => !this.filters()[c.name]));\n /** Built once per change of the filters, not on every check of the template. */\n readonly chips = computed<Chip[]>(() =>\n this.#filterable()\n .filter(c => this.filters()[c.name])\n .map(column => {\n const filter = this.filters()[column.name];\n const label = this.#translate.instant(column.displayName);\n return {\n column,\n userId: column.filter?.type === FILTER_TYPES.USER ? filter.value : null,\n text: this.#describe(column, filter, true),\n title: `${label}: ${this.#describe(column, filter, false)}`\n };\n })\n );\n readonly hasChips = computed(() => !!this.search() || this.chips().length > 0);\n\n ngOnDestroy(): void {\n this.#sub?.unsubscribe();\n }\n\n edit(column: Column, origin: HTMLElement): void {\n this.#sub?.unsubscribe();\n this.control = new FormControl<FilterValue | null>(this.filters()[column.name] ?? null);\n this.#sub = this.control.valueChanges.subscribe(value => {\n this.#update(column.name, value);\n // a user is picked from a list in one go, there is nothing left to type\n if (column.filter?.type === FILTER_TYPES.USER && value?.value) {\n this.close(true);\n }\n });\n this.editing.set({ column, origin });\n }\n\n /** `restoreFocus` puts the focus back on what opened the editor (the add-filter button or the chip). */\n close(restoreFocus = false): void {\n const origin = this.editing()?.origin;\n this.#sub?.unsubscribe();\n this.editing.set(null);\n if (restoreFocus) {\n afterNextRender(() => origin?.isConnected && origin.focus(), { injector: this.#injector });\n }\n }\n\n /** Escape cancels the popover, Enter in a text field confirms the value (it is applied already while typing). */\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' || (event.key === 'Enter' && !event.defaultPrevented && event.target instanceof HTMLInputElement)) {\n this.close(true);\n }\n }\n\n /** The editor takes the focus once it is rendered (the menu that opens it does not restore its own). */\n focusEditor(): void {\n afterNextRender(() => this.overlay()?.overlayRef?.overlayElement.querySelector<HTMLElement>('input')?.focus(), {\n injector: this.#injector\n });\n }\n\n remove(column: Column): void {\n if (this.editing()?.column === column) {\n this.close();\n }\n const filters = { ...this.filters() };\n delete filters[column.name];\n this.filtersChange.emit(filters);\n }\n\n /** Operator and value of a criterion: with signs (`= x`, `*x*`, `> x`) or in words. */\n #describe(column: Column, filter: FilterValue, signs: boolean): string {\n const operator = filter.operator ? OPERATORS.get(filter.operator) : undefined;\n const word = operator ? this.#translate.instant(operator.label) : '';\n switch (column.filter?.type) {\n case FILTER_TYPES.SELECT:\n return this.#selectText(column, filter.value);\n case FILTER_TYPES.DATE:\n return filter.operator === FILTER_OPERATORS.BETWEEN.value\n ? `${signs ? '' : word + ' '}${this.#date(filter.value)} – ${this.#date(filter.endDate)}`\n : `${signs ? OPERATOR_SIGNS[filter.operator ?? ''] ?? '' : word} ${this.#date(filter.value)}`.trim();\n default:\n return signs ? this.#withSign(filter.operator, String(filter.value)) : `${word} ${filter.value}`.trim();\n }\n }\n\n /** Wildcards for the text operators, a leading sign for the others. */\n #withSign(operator: string | undefined, value: string): string {\n switch (operator) {\n case FILTER_OPERATORS.CONTAINS.value:\n return `*${value}*`;\n case FILTER_OPERATORS.STARTS_WITH.value:\n return `${value}*`;\n case FILTER_OPERATORS.ENDS_WITH.value:\n return `*${value}`;\n default:\n return `${OPERATOR_SIGNS[operator ?? ''] ?? ''} ${value}`.trim();\n }\n }\n\n #selectText(column: Column, value: unknown): string {\n const options = column.filter?.type === FILTER_TYPES.SELECT ? (column.filter.options ?? []) : [];\n const values = Array.isArray(value) ? value : [value];\n return values.map(v => this.#translate.instant(options.find(o => o.value === v)?.label ?? String(v))).join(', ');\n }\n\n /** Same format as the dates of the lists and details. */\n #date(value: Date | string | null | undefined): string {\n return value ? formatDateTime(new Date(value).toISOString(), this.#translate.currentLang) : '';\n }\n\n #update(name: string, value: FilterValue | null): void {\n const filters = { ...this.filters() };\n const isBetween = value?.type === FILTER_TYPES.DATE && value.operator === FILTER_OPERATORS.BETWEEN.value;\n const isEmpty = !value || (isBetween ? value.value == null && value.endDate == null : value.value == null);\n if (isEmpty) {\n delete filters[name];\n } else {\n filters[name] = value;\n }\n this.filtersChange.emit(filters);\n }\n}\n","<div class=\"chips\" role=\"group\" [attr.aria-label]=\"'yuv.app.bpm-management.filters.title' | translate\">\n @if (search()) {\n <span class=\"chip\">\n <span class=\"chip__main chip__main--static\">\n <span class=\"chip__name\">{{ 'yuv.app.bpm-management.filters.search' | translate }}</span>\n <span class=\"chip__value\">{{ search() }}</span>\n </span>\n <button type=\"button\" class=\"chip__remove\" [attr.aria-label]=\"('yuv.app.bpm-management.filters.remove' | translate) + ': ' + ('yuv.app.bpm-management.filters.search' | translate)\" (click)=\"searchClear.emit()\">\n <mat-icon>close</mat-icon>\n </button>\n </span>\n }\n @for (chip of chips(); track chip.column.name) {\n <span class=\"chip\" [class.chip--editing]=\"editing()?.column === chip.column\">\n <button type=\"button\" class=\"chip__main\" #chipButton [attr.title]=\"chip.userId ? null : chip.title\" (click)=\"edit(chip.column, chipButton)\">\n <span class=\"chip__name\">{{ chip.column.displayName | translate }}</span>\n @if (chip.userId) {\n <yuv-organization-renderer propertyName=\"user\" [value]=\"chip.userId ?? null\"></yuv-organization-renderer>\n } @else {\n <span class=\"chip__value\">{{ chip.text }}</span>\n }\n </button>\n <button type=\"button\" class=\"chip__remove\" [attr.aria-label]=\"('yuv.app.bpm-management.filters.remove' | translate) + ': ' + (chip.column.displayName | translate)\" (click)=\"remove(chip.column)\">\n <mat-icon>close</mat-icon>\n </button>\n </span>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"!!editing()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"close()\"\n (overlayKeydown)=\"onKeydown($event)\"\n (attach)=\"focusEditor()\"\n>\n @if (editing(); as current) {\n <div class=\"popover\" role=\"dialog\" [attr.aria-label]=\"current.column.displayName | translate\">\n @let column = current.column;\n @switch (column.filter?.type) {\n @case (FILTER_TYPES.TEXT) {\n <ymbpm-text-filter [label]=\"column.displayName\" [formControl]=\"control\" [operators]=\"$any(column.filter).operators || []\"></ymbpm-text-filter>\n }\n @case (FILTER_TYPES.NUMBER) {\n <ymbpm-number-filter [label]=\"column.displayName\" [formControl]=\"control\" [min]=\"$any(column.filter).minValue ?? null\" [operators]=\"$any(column.filter).operators || []\"></ymbpm-number-filter>\n }\n @case (FILTER_TYPES.SELECT) {\n <ymbpm-select-filter [label]=\"column.displayName\" [placeholder]=\"$any(column.filter).placeholder ?? 'yuv.app.bpm-management.filters.select'\" [formControl]=\"control\" [options]=\"$any(column.filter).options || []\" [enableMultiselect]=\"!!$any(column.filter).enableMultiselect\"></ymbpm-select-filter>\n }\n @case (FILTER_TYPES.DATE) {\n <ymbpm-date-filter [label]=\"column.displayName\" [formControl]=\"control\" [operators]=\"$any(column.filter).operators || []\"></ymbpm-date-filter>\n }\n @case (FILTER_TYPES.USER) {\n <ymbpm-user-filter [label]=\"column.displayName\" [formControl]=\"control\"></ymbpm-user-filter>\n }\n }\n </div>\n }\n</ng-template>\n","import { Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\n/**\n * The narrow icon+label strip a `yuv-split-view` area collapses to instead of disappearing\n * entirely (`hideArea()`/`showArea()` still drive the actual split-view visibility - this is\n * just the \"way back in\" rendered as a sibling of the split-view while an area is hidden).\n *\n * The gutter div is the whole interactive target (click, Enter, Space all expand it) - the inner\n * icon is `aria-hidden` and has no click handler of its own, so it's purely decorative rather\n * than a second, independently-focusable interactive control.\n */\n@Component({\n selector: 'ymbpm-pane-gutter',\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, YmtPanesModule],\n templateUrl: './pane-gutter.component.html',\n styleUrl: './pane-gutter.component.scss',\n})\nexport class PaneGutterComponent {\n icon = input.required<string>();\n label = input.required<string>();\n tooltip = input.required<string>();\n /** Flips the label to read bottom-to-top (`vertical-rl` reads top-to-bottom by default) - for a\n * gutter whose collapsed pane sits to the left, so the label flows outward toward that edge. */\n flipLabel = input<boolean>(false);\n expand = output<void>();\n}\n","<ymt-pane>\n <ymt-pane-body>\n <div\n class=\"pane-gutter\"\n role=\"button\"\n tabindex=\"0\"\n [matTooltip]=\"tooltip()\"\n [attr.aria-label]=\"tooltip()\"\n (click)=\"expand.emit()\"\n (keydown.enter)=\"expand.emit()\"\n (keydown.space)=\"$event.preventDefault(); expand.emit()\"\n >\n <mat-icon class=\"icon\" aria-hidden=\"true\">{{ icon() }}</mat-icon>\n <span class=\"label\" [class.label--btt]=\"flipLabel()\">{{ label() }}</span>\n </div>\n </ymt-pane-body>\n</ymt-pane>\n","import { Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n/**\n * A small icon button for a `ymt-pane`'s top bar that hides or toggles a sibling area (e.g. in a\n * `yuv-split-view`).\n */\n@Component({\n selector: 'ymbpm-pane-toggle-button',\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, YmtIconButtonDirective],\n templateUrl: './pane-toggle-button.component.html',\n styleUrl: './pane-toggle-button.component.scss',\n})\nexport class PaneToggleButtonComponent {\n icon = input.required<string>();\n tooltip = input.required<string>();\n toggled = output<void>();\n}\n","<button\n ymtIconButton\n icon-button-size=\"small\"\n [matTooltip]=\"tooltip()\"\n [attr.aria-label]=\"tooltip()\"\n (click)=\"toggled.emit()\"\n>\n <mat-icon>{{ icon() }}</mat-icon>\n</button>\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@yuuvis/client-core';\nimport { formatDateTime } from '../bpm-management.schema';\n\n@Pipe({\n name: 'formatDateTime',\n standalone: true\n})\nexport class FormatDateTimePipe implements PipeTransform {\n readonly #translateService = inject(TranslateService);\n\n transform(value: string | null): string {\n if (!value) return '';\n return formatDateTime(value, this.#translateService.currentLang);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { YmtBadge } from '@yuuvis/material/badge';\nimport { definitionSeverity, definitionStatusLabel, DeploymentInstance } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../pipes/format-date-time.pipe';\n\n/** Deployment details: facts on top, then tabs for the contained process definitions and resources. */\n@Component({\n selector: 'ymbpm-deployment-details',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, MatTabsModule, TranslatePipe, YmtBadge, FormatDateTimePipe],\n templateUrl: './deployment-details.component.html',\n styleUrl: './deployment-details.component.scss'\n})\nexport class DeploymentDetailsComponent {\n deployment = input.required<DeploymentInstance>();\n /** Whether the process definitions page is enabled, so definitions can be linked. */\n canOpenDefinition = input(false);\n openDefinition = output<string>();\n\n readonly definitionSeverity = definitionSeverity;\n readonly definitionStatusLabel = definitionStatusLabel;\n}\n","<section class=\"facts\">\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.deploymentTime' | translate }}</span>\n <span>{{ (deployment().deploymentTime | formatDateTime) || '-' }}</span>\n </div>\n @if (deployment().category; as category) {\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.category' | translate }}</span>\n <ymt-badge class=\"category\" [outline]=\"true\">{{ category }}</ymt-badge>\n </div>\n }\n</section>\n\n<mat-tab-group class=\"tabs\" animationDuration=\"0ms\">\n <mat-tab>\n <ng-template mat-tab-label>\n {{ 'yuv.app.bpm-management.entity.definitions' | translate }}\n <ymt-badge class=\"count\">{{ deployment().definitions?.length ?? 0 }}</ymt-badge>\n </ng-template>\n <ng-template matTabContent>\n <div class=\"tab-content\">\n @if (!deployment().definitions?.length) {\n <p class=\"empty\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n } @else {\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.column.name' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.column.key' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.column.version' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.column.status' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (definition of deployment().definitions; track definition.id) {\n <tr>\n <td>\n @if (canOpenDefinition()) {\n <a class=\"link\" tabindex=\"0\" role=\"link\" (click)=\"openDefinition.emit(definition.id)\" (keydown.enter)=\"openDefinition.emit(definition.id)\">\n {{ definition.name || definition.id }}<mat-icon>arrow_forward</mat-icon>\n </a>\n } @else {\n {{ definition.name || definition.id }}\n }\n </td>\n <td class=\"mono\">{{ definition.key }}</td>\n <td>{{ definition.version }}</td>\n <td>\n <ymt-badge [severity]=\"definitionSeverity(definition)\">\n {{ definitionStatusLabel(definition) | translate }}\n </ymt-badge>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n {{ 'yuv.app.bpm-management.deployment.details.resources' | translate }}\n <ymt-badge class=\"count\">{{ deployment().resources?.length ?? 0 }}</ymt-badge>\n </ng-template>\n <ng-template matTabContent>\n <div class=\"tab-content\">\n @if (!deployment().resources?.length) {\n <p class=\"empty\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n } @else {\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.column.id' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.deployment.details.resourceMediaType' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (resource of deployment().resources; track resource.id) {\n <tr>\n <td class=\"mono\">{{ resource.id }}</td>\n <td>{{ resource.mediaType }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n </ng-template>\n </mat-tab>\n</mat-tab-group>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { YmtBadge } from '@yuuvis/material/badge';\nimport { ProcessDefinitionInstance } from '../../../bpm-management.schema';\nimport { QuickFilter } from '../../../bpm-management.state';\n\n/** The processes of a definition to show in the processes list; no status shows all of them. */\nexport interface ShowProcessesRequest {\n definitionId: string;\n quick: QuickFilter;\n}\n\n/** Process definition details: facts on top, then a tab with the process statistics. */\n@Component({\n selector: 'ymbpm-process-definition-details',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, MatTabsModule, TranslatePipe, YmtBadge, YmtButtonDirective],\n templateUrl: './process-definition-details.component.html',\n styleUrl: './process-definition-details.component.scss'\n})\nexport class ProcessDefinitionDetailsComponent {\n definition = input.required<ProcessDefinitionInstance>();\n /** Whether the deployments page is enabled, so the deployment can be linked. */\n canOpenDeployment = input(false);\n openDeployment = output<string>();\n /** Show the processes of this definition, optionally of one status, in the processes list. */\n showProcesses = output<ShowProcessesRequest>();\n\n /** The list can only tell ended from not ended, so running and suspended are one \"active\" status. */\n cards = computed(() => {\n const c = this.definition().statistics?.processInstanceCount;\n const running = c?.active ?? 0;\n const suspended = c?.suspended ?? 0;\n return [\n {\n quick: 'active' as const,\n icon: 'hourglass_top',\n label: 'yuv.app.bpm-management.statusFilter.processes.active',\n count: running + suspended,\n hint: 'yuv.app.bpm-management.definitions.details.activeBreakdown',\n hintParams: { running, suspended }\n },\n {\n quick: 'completed' as const,\n icon: 'flag',\n label: 'yuv.app.bpm-management.statusFilter.processes.completed',\n count: c?.completed ?? 0,\n hint: 'yuv.app.bpm-management.definitions.details.completedHint',\n hintParams: {}\n }\n ];\n });\n\n /** The tab badge: all processes of the definition. */\n total = computed(() => this.cards().reduce((sum, card) => sum + card.count, 0));\n\n show(quick: QuickFilter): void {\n this.showProcesses.emit({ definitionId: this.definition().id, quick });\n }\n}\n","<section class=\"facts\">\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.deploymentId' | translate }}</span>\n @if (canOpenDeployment() && !definition().global && definition().deploymentId; as deploymentId) {\n <a class=\"link mono\" tabindex=\"0\" role=\"link\" (click)=\"openDeployment.emit(deploymentId)\" (keydown.enter)=\"openDeployment.emit(deploymentId)\">\n {{ deploymentId }}<mat-icon>arrow_forward</mat-icon>\n </a>\n } @else {\n <span class=\"mono\">{{ definition().deploymentId || '-' }}</span>\n }\n </div>\n <div class=\"fact fact--column\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.key' | translate }}</span>\n <span class=\"mono\">{{ definition().key || '-' }}</span>\n </div>\n <div class=\"fact fact--column\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.version' | translate }}</span>\n <span>{{ definition().version || '-' }}</span>\n </div>\n <div class=\"fact fact--column\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.category' | translate }}</span>\n <span>{{ definition().category || '-' }}</span>\n </div>\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.description' | translate }}</span>\n <span>{{ definition().description || '-' }}</span>\n </div>\n</section>\n\n<mat-tab-group class=\"tabs\" animationDuration=\"0ms\">\n <mat-tab>\n <ng-template mat-tab-label>\n {{ 'yuv.app.bpm-management.entity.processes' | translate }}\n <ymt-badge class=\"count\">{{ total() }}</ymt-badge>\n </ng-template>\n <ng-template matTabContent>\n <div class=\"tab-content\">\n <div class=\"cards\">\n @for (card of cards(); track card.quick) {\n <button type=\"button\" class=\"card\" (click)=\"show(card.quick)\">\n <span class=\"card__status\"><mat-icon aria-hidden=\"true\">{{ card.icon }}</mat-icon>{{ card.label | translate }}</span>\n <span class=\"card__count\">{{ card.count }}</span>\n <span class=\"card__hint\">{{ card.hint | translate: card.hintParams }}</span>\n <span class=\"card__link\">{{ 'yuv.app.bpm-management.definitions.showProcesses' | translate }}<mat-icon aria-hidden=\"true\">arrow_forward</mat-icon></span>\n </button>\n }\n </div>\n <button type=\"button\" ymtButton=\"secondary\" class=\"all-link\" (click)=\"show('all')\">\n {{ 'yuv.app.bpm-management.definitions.details.showAll' | translate }}<mat-icon aria-hidden=\"true\">arrow_forward</mat-icon>\n </button>\n </div>\n </ng-template>\n </mat-tab>\n</mat-tab-group>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YmtBadge } from '@yuuvis/material/badge';\nimport { ProcessInstance, TaskInstance, taskSeverity, taskStatusLabel } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../pipes/format-date-time.pipe';\nimport { OrganizationRendererComponent } from '@yuuvis/client-framework/renderer';\n\n/**\n * Process details: facts on top, then tabs for the progress timeline and the variables.\n */\n@Component({\n selector: 'ymbpm-process-details',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, MatTabsModule, MatTooltipModule, TranslatePipe, YmtBadge, FormatDateTimePipe, OrganizationRendererComponent],\n templateUrl: './process-details.component.html',\n styleUrl: './process-details.component.scss'\n})\nexport class ProcessDetailsComponent {\n readonly #translate = inject(TranslateService);\n\n readonly taskSeverity = taskSeverity;\n readonly taskStatusLabel = taskStatusLabel;\n\n process = input.required<ProcessInstance>();\n tasks = input<TaskInstance[]>([]);\n /** Whether the process definitions page is enabled, so the definition can be linked. */\n canOpenDefinition = input(false);\n openTask = output<string>();\n openDefinition = output<string>();\n\n /** The open tasks of a suspended process are suspended too (the history does not say so). */\n shownTasks = computed(() => (this.process().suspended ? this.tasks().map(t => (t.endTime ? t : { ...t, suspended: true })) : this.tasks()));\n\n variableFilter = signal('');\n variables = computed(() => {\n const q = this.variableFilter().trim().toLowerCase();\n const vars = this.process().variables ?? [];\n return q ? vars.filter(v => `${v.name} ${v.value}`.toLowerCase().includes(q)) : vars;\n });\n\n /** Elapsed time between two timestamps (until now without `to`) as its two largest units, e.g. `2 d 1 h`. */\n duration(from: string | null, to?: string | null): string {\n const ms = (to ? Date.parse(to) : Date.now()) - Date.parse(from ?? '');\n if (!Number.isFinite(ms) || ms < 0) return '';\n const minutes = Math.floor(ms / 60000);\n const units: [string, number][] = [\n ['days', Math.floor(minutes / 1440)],\n ['hours', Math.floor((minutes % 1440) / 60)],\n ['minutes', minutes % 60]\n ];\n const first = Math.max(\n units.findIndex(([, n]) => n > 0),\n 0\n );\n return units\n .slice(first, first + 2)\n .filter(([, n], i) => i === 0 || n > 0)\n .map(([unit, n]) => this.#translate.instant(`yuv.app.bpm-management.duration.${unit}`, { n }))\n .join(' ');\n }\n}\n","<section class=\"facts\">\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.processDefinitionId' | translate }}</span>\n @if (canOpenDefinition()) {\n <a class=\"link mono\" tabindex=\"0\" role=\"link\" [matTooltip]=\"process().processDefinitionName || ''\" (click)=\"openDefinition.emit(process().processDefinitionId)\" (keydown.enter)=\"openDefinition.emit(process().processDefinitionId)\">\n {{ process().processDefinitionId }}<mat-icon>arrow_forward</mat-icon>\n </a>\n } @else {\n <span class=\"mono\" [matTooltip]=\"process().processDefinitionName || ''\">{{ process().processDefinitionId }}</span>\n }\n </div>\n @if (process().processDefinitionDescription) {\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.process.details.processDefinitionDescription' | translate }}</span>\n <span>{{ process().processDefinitionDescription }}</span>\n </div>\n }\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.businessKey' | translate }}</span>\n <span>{{ process().businessKey || '-' }}</span>\n </div>\n</section>\n\n<mat-tab-group class=\"tabs\" animationDuration=\"0ms\">\n <mat-tab [label]=\"'yuv.app.bpm-management.process.details.history' | translate\">\n <ng-template matTabContent>\n <div class=\"tab-content timeline-tab\">\n <ol class=\"timeline\">\n <li class=\"timeline__item\">\n <div class=\"timeline__when\">{{ process().startTime | formatDateTime }}</div>\n <div class=\"timeline__rail\"><span class=\"timeline__dot timeline__dot--start\"><mat-icon aria-hidden=\"true\">play_arrow</mat-icon></span></div>\n <div class=\"timeline__card\">\n <div class=\"timeline__head\"><strong>{{ 'yuv.app.bpm-management.process.details.started' | translate }}</strong></div>\n <div class=\"timeline__people\">\n <yuv-organization-renderer propertyName=\"user\" [value]=\"process().startUserId ?? null\"></yuv-organization-renderer>\n </div>\n </div>\n </li>\n @for (task of shownTasks(); track task.id) {\n <li class=\"timeline__item\">\n <div class=\"timeline__when\">{{ (task.endTime ?? task.createTime) | formatDateTime }}</div>\n <div class=\"timeline__rail\"><span class=\"timeline__dot\" [class.timeline__dot--done]=\"task.endTime\" [class.timeline__dot--suspended]=\"!task.endTime && task.suspended\">\n @if (task.endTime) {\n <mat-icon aria-hidden=\"true\">check</mat-icon>\n } @else if (task.suspended) {\n <mat-icon aria-hidden=\"true\">pause</mat-icon>\n }\n </span></div>\n <div class=\"timeline__card\">\n <div class=\"timeline__head\">\n <a class=\"link timeline__task\" tabindex=\"0\" role=\"link\"\n [attr.aria-label]=\"('yuv.app.bpm-management.task.open' | translate) + ': ' + (task.name || '')\"\n (click)=\"openTask.emit(task.id)\" (keydown.enter)=\"openTask.emit(task.id)\">\n <strong>{{ task.name || '<unnamed>' }}</strong>\n </a>\n <ymt-badge class=\"timeline__state\" [severity]=\"taskSeverity(task)\">\n {{ taskStatusLabel(task) | translate }}\n </ymt-badge>\n </div>\n @if (task.description) {\n <p class=\"timeline__description\">{{ task.description }}</p>\n }\n @if (task.claimTime || task.dueDate) {\n <dl class=\"timeline__life\">\n @if (task.claimTime) {\n <div>\n <dt>{{ 'yuv.app.bpm-management.task.details.claimTime' | translate }}</dt>\n <dd>{{ task.claimTime | formatDateTime }}</dd>\n </div>\n }\n @if (task.dueDate) {\n <div>\n <dt>{{ 'yuv.app.bpm-management.task.details.dueDate' | translate }}</dt>\n <dd>{{ task.dueDate | formatDateTime }}</dd>\n </div>\n }\n </dl>\n }\n @if (task.assignee || task.owner) {\n <div class=\"timeline__people\">\n @if (task.assignee) {\n <yuv-organization-renderer propertyName=\"user\" [value]=\"task.assignee ?? null\"></yuv-organization-renderer>\n }\n @if (task.owner) {\n <span class=\"timeline__label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"task.owner ?? null\"></yuv-organization-renderer>\n }\n </div>\n }\n <!-- a suspended task has no meaningful running time: the suspension is not part of the data -->\n @if (task.endTime || !task.suspended) {\n <div class=\"timeline__foot\">\n {{ (task.endTime ? 'yuv.app.bpm-management.process.details.took' : 'yuv.app.bpm-management.process.details.openFor') | translate: { duration: duration(task.createTime, task.endTime) } }}\n </div>\n }\n </div>\n </li>\n }\n @if (process().endTime) {\n <li class=\"timeline__item\">\n <div class=\"timeline__when\">{{ process().endTime | formatDateTime }}</div>\n <div class=\"timeline__rail\"><span class=\"timeline__dot\" [class.timeline__dot--done]=\"!process().deleteReason\" [class.timeline__dot--canceled]=\"process().deleteReason\">\n <mat-icon aria-hidden=\"true\">{{ process().deleteReason ? 'close' : 'check' }}</mat-icon>\n </span></div>\n <div class=\"timeline__card\">\n <div class=\"timeline__head\">\n <strong>{{ (process().deleteReason ? 'yuv.app.bpm-management.process.details.canceled' : 'yuv.app.bpm-management.process.details.completed') | translate }}</strong>\n </div>\n @if (process().deleteReason) {\n <p class=\"timeline__description\">{{ process().deleteReason }}</p>\n }\n <div class=\"timeline__foot\">{{ 'yuv.app.bpm-management.process.details.took' | translate: { duration: duration(process().startTime, process().endTime) } }}</div>\n </div>\n </li>\n } @else {\n <li class=\"timeline__item\">\n <div class=\"timeline__when\"></div>\n @if (process().suspended) {\n <!-- the time of the suspension is not part of the data, so no running time is shown -->\n <div class=\"timeline__rail\"><span class=\"timeline__dot timeline__dot--suspended\"><mat-icon aria-hidden=\"true\">pause</mat-icon></span></div>\n <div class=\"timeline__card\">\n <div class=\"timeline__head\">\n <strong>{{ 'yuv.app.bpm-management.status.suspended' | translate }}</strong>\n </div>\n </div>\n } @else {\n <div class=\"timeline__rail\"><span class=\"timeline__dot timeline__dot--now\"></span></div>\n <div class=\"timeline__card\">\n <div class=\"timeline__head\">\n <strong>{{ 'yuv.app.bpm-management.process.details.running' | translate }}</strong>\n <ymt-badge severity=\"primary\">{{ duration(process().startTime) }}</ymt-badge>\n </div>\n </div>\n }\n </li>\n }\n </ol>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.app.bpm-management.details.variables' | translate\">\n <ng-template matTabContent>\n <div class=\"tab-content\">\n @if (!process().variables?.length) {\n <p class=\"empty\">{{ 'yuv.app.bpm-management.emptyResult' | translate }}</p>\n } @else {\n <input class=\"variables__filter\" type=\"search\"\n [attr.aria-label]=\"'yuv.app.bpm-management.details.variableFilter' | translate\"\n [placeholder]=\"'yuv.app.bpm-management.details.variableFilter' | translate\"\n (input)=\"variableFilter.set($any($event.target).value)\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.details.variableName' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableType' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableValue' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (variable of variables(); track variable.name) {\n <tr>\n <td class=\"mono\">{{ variable.name }}</td>\n <td>{{ variable.type }}</td>\n <td class=\"mono\">{{ variable.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n </ng-template>\n </mat-tab>\n</mat-tab-group>\n","import { Component, input, signal, inject } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { APP_ICONS, TaskInstance, formatDateTime, TaskAssignmentHistoryEntry } from '../../bpm-management.schema';\nimport { CommonModule } from '@angular/common';\nimport { OrganizationRendererComponent } from '@yuuvis/client-framework/renderer';\n\n@Component({\n selector: 'ymbpm-editor-history',\n standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n TranslatePipe,\n OrganizationRendererComponent\n ],\n templateUrl: './editor-history.component.html',\n styleUrl: './editor-history.component.scss'\n})\nexport class EditorHistoryComponent {\n readonly translateService = inject(TranslateService);\n\n task = input<TaskInstance | undefined>();\n loading = signal<boolean>(false);\n error = signal<string | undefined>(undefined);\n\n formatDateTime = formatDateTime;\n\n icons = {\n ...APP_ICONS\n };\n\n get candidateUsers(): string[] {\n return this.task()?.identityLinks?.candidates?.users || [];\n }\n\n get candidateRoles(): string[] {\n return this.task()?.identityLinks?.candidates?.roles || [];\n }\n\n get assignmentHistory(): TaskAssignmentHistoryEntry[] {\n return this.task()?.identityLinks?.assignmentHistory || [];\n }\n\n getActionIcon(type: string, assignee?: string): string {\n switch (type) {\n case 'ASSIGNMENT':\n return assignee !== null ? 'person_add' : 'person_off';\n case 'DELEGATION':\n return this.icons.delegated;\n case 'RESOLVE':\n return this.icons.resolved;\n default:\n return 'info';\n }\n }\n\n getActionLabel(type: string, assignee?: string): string {\n if (type === 'ASSIGNMENT') {\n return assignee !== null ?\n 'yuv.app.bpm-management.task.details.actionType.assignment'\n : 'yuv.app.bpm-management.task.details.actionType.assignmentRemoved';\n }\n return `yuv.app.bpm-management.task.details.actionType.${type.toLowerCase()}`;\n }\n}\n","<div class=\"editor-history-container\">\n <!-- Candidate Users Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>person</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}\n </h3>\n @if (candidateUsers.length > 0) {\n <div class=\"candidates-list\">\n @for (user of candidateUsers; track user) {\n <span class=\"candidate-chip\">\n <yuv-organization-renderer propertyName=\"user\" [value]=\"user ?? null\"></yuv-organization-renderer>\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateUsers' | translate }}</p>\n }\n </div>\n\n <!-- Candidate Roles Section -->\n <div class=\"candidates-section\">\n <h3 class=\"section-title\">\n <mat-icon>group</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}\n </h3>\n @if (candidateRoles.length > 0) {\n <div class=\"candidates-list\">\n @for (role of candidateRoles; track role) {\n <span class=\"candidate-chip\">\n <mat-icon>group</mat-icon>\n {{ role }}\n </span>\n }\n </div>\n } @else {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noCandidateRoles' | translate }}</p>\n }\n </div>\n\n <!-- Assignment History Section -->\n <div class=\"history-section\">\n <h3 class=\"section-title\">\n <mat-icon>history</mat-icon>\n {{ 'yuv.app.bpm-management.task.details.assignmentHistory' | translate }}\n </h3>\n \n @if (assignmentHistory.length === 0) {\n <p class=\"no-data\">{{ 'yuv.app.bpm-management.task.details.noAssignmentHistory' | translate }}</p>\n } @else {\n <div class=\"timeline-container\" [ngClass]=\"{singleEntry: assignmentHistory.length === 1}\">\n @for (entry of assignmentHistory; track entry.timestamp) {\n <div class=\"timeline-item\">\n <div class=\"timeline-datetime\">\n <div class=\"date\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'date') }}</div>\n <div class=\"time\">{{ formatDateTime(entry.timestamp, translateService.currentLang, 'time') }}</div>\n </div>\n \n <div class=\"timeline-line\"></div>\n \n <div class=\"timeline-content\">\n <div class=\"history-card\">\n <div class=\"action-header\">\n <mat-icon class=\"action-icon\">{{ getActionIcon(entry.type, entry.assignee) }}</mat-icon>\n <span class=\"action-label\">{{ getActionLabel(entry.type, entry.assignee) | translate }}</span>\n </div>\n @if (entry.assignee) {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}:</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"entry.assignee ?? null\"></yuv-organization-renderer>\n </div>\n }\n @if (entry.owner && entry.type !== 'RESOLVE') {\n <div class=\"assignee-info\">\n <span class=\"label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}:</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"entry.owner ?? null\"></yuv-organization-renderer>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { TaskInstance } from '../../../bpm-management.schema';\nimport { FormatDateTimePipe } from '../../../pipes/format-date-time.pipe';\nimport { EditorHistoryComponent } from '../../editor-history/editor-history.component';\nimport { OrganizationRendererComponent } from '@yuuvis/client-framework/renderer';\n\n/**\n * Task details: all properties once in the facts block, then tabs for the assignment (candidates +\n * history) and the variables (if the task has any).\n * Actions (assign, unassign, candidates) live in the pane header of the page.\n */\n@Component({\n selector: 'ymbpm-task-details',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, MatTabsModule, MatTooltipModule, TranslatePipe, FormatDateTimePipe, OrganizationRendererComponent, EditorHistoryComponent],\n templateUrl: './task-details.component.html',\n styleUrl: './task-details.component.scss'\n})\nexport class TaskDetailsComponent {\n task = input.required<TaskInstance>();\n openProcess = output<string>();\n}\n","<section class=\"facts\">\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.processInstanceId' | translate }}</span>\n @if (task().processInstanceId; as processId) {\n <a class=\"link mono\" tabindex=\"0\" role=\"link\" [matTooltip]=\"task().processInstanceName || ''\" (click)=\"openProcess.emit(processId)\" (keydown.enter)=\"openProcess.emit(processId)\">\n {{ processId }}<mat-icon>arrow_forward</mat-icon>\n </a>\n } @else {\n <span [matTooltip]=\"'yuv.app.bpm-management.task.details.standaloneTask.tooltip' | translate\">- <mat-icon class=\"inline\">info</mat-icon></span>\n }\n </div>\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.taskDefinitionKey' | translate }}</span>\n <span class=\"mono\">{{ task().taskDefinitionKey }}</span>\n </div>\n <div class=\"fact-row\">\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.createTime' | translate }}</span>\n <span>{{ task().createTime | formatDateTime }}</span>\n </div>\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.dueDate' | translate }}</span>\n <span>{{ (task().dueDate | formatDateTime) || '-' }}</span>\n </div>\n @if (task().endTime) {\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.column.endTime' | translate }}</span>\n <span>{{ task().endTime | formatDateTime }}</span>\n </div>\n }\n </div>\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.assignee' | translate }}</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"task().assignee ?? null\"></yuv-organization-renderer>\n </div>\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.owner' | translate }}</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"task().owner ?? null\"></yuv-organization-renderer>\n </div>\n @if (task().claimTime) {\n <div class=\"fact\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.claimTime' | translate }}</span>\n <span>{{ task().claimTime | formatDateTime }}</span>\n </div>\n }\n @if (task().description) {\n <div class=\"fact fact--wide\">\n <span class=\"fact__label\">{{ 'yuv.app.bpm-management.task.details.description' | translate }}</span>\n <span>{{ task().description }}</span>\n </div>\n }\n</section>\n\n<mat-tab-group class=\"tabs\" animationDuration=\"0ms\">\n <mat-tab [label]=\"'yuv.app.bpm-management.task.assignment' | translate\">\n <ng-template matTabContent>\n <div class=\"tab-content\">\n <ymbpm-editor-history [task]=\"task()\"></ymbpm-editor-history>\n </div>\n </ng-template>\n </mat-tab>\n @if (task().variables?.length) {\n <mat-tab [label]=\"'yuv.app.bpm-management.details.variables' | translate\">\n <ng-template matTabContent>\n <div class=\"tab-content\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'yuv.app.bpm-management.details.variableName' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableType' | translate }}</th>\n <th>{{ 'yuv.app.bpm-management.details.variableValue' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (variable of task().variables; track variable.name) {\n <tr>\n <td class=\"mono\">{{ variable.name }}</td>\n <td>{{ variable.type }}</td>\n <td class=\"mono\">{{ variable.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </ng-template>\n </mat-tab>\n }\n</mat-tab-group>\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { MatLabel } from '@angular/material/input';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-checkbox-overlay',\n standalone: true,\n imports: [\n YmtButtonDirective,\n DialogComponent,\n TranslatePipe,\n MatSlideToggle,\n MatLabel\n],\n templateUrl: './checkbox-overlay.component.html',\n styleUrl: './checkbox-overlay.component.scss'\n})\nexport class CheckboxOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<CheckboxOverlayComponent>);\n readonly inputData = inject(MAT_DIALOG_DATA);\n\n @ViewChild('toggle') toggle!: MatSlideToggle;\n\n confirm() {\n this.#dialogRef.close(this.toggle.checked);\n }\n\n close() {\n this.#dialogRef.close();\n }\n}\n","<yuv-dialog [headertitle]=\"this.inputData.title ?? ''\" []>\n <main class=\"yuv-dialog-content\">\n <mat-label>{{ this.inputData.message !== undefined ? this.inputData.message : '' }}</mat-label>\n </main>\n <footer>\n <mat-slide-toggle #toggle class=\"footer-toggle\" [checked]=\"false\">{{ this.inputData.checkboxMessage !== undefined ? this.inputData.checkboxMessage : '' }}</mat-slide-toggle>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\">\n {{ this.inputData.confirmBtnLabel !== undefined ? this.inputData.confirmBtnLabel : ('yuv.app.bpm-management.action.confirm.label' | translate) }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms'\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'ymbpm-task-assign-overlay',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective\n ],\n standalone: true,\n templateUrl: './task-assign-overlay.component.html',\n styleUrl: './task-assign-overlay.component.scss'\n})\nexport class TaskAssignOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskAssignOverlayComponent>);\n readonly data = inject(MAT_DIALOG_DATA);\n\n userControl = new FormControl('');\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const assignee = this.userControl.value;\n if (assignee && assignee.trim()) {\n this.#dialogRef.close(assignee.trim());\n }\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.assign.label' | translate\">\n <main >\n <mat-label>{{ 'yuv.app.bpm-management.task.actions.assign.assignee.label' | translate }}</mat-label>\n <yuv-organization [formControl]=\"userControl\" [excludeMe]='false' />\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ \"yuv.app.bpm-management.action.cancel.label\" | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\" [disabled]=\"this.userControl.touched && this.userControl.dirty\">\n {{ 'yuv.app.bpm-management.task.actions.assign.confirm' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@yuuvis/client-core';\nimport { OrganizationComponent } from '@yuuvis/client-framework/forms';\nimport { DialogComponent } from '@yuuvis/client-components/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { MatLabel } from '@angular/material/select';\n\nexport interface TaskCandidatesOverlayData {\n currentUsers: string[];\n currentRoles: string[];\n}\n\nexport interface TaskCandidatesOverlayResult {\n users: string[];\n roles: string[];\n}\n\n@Component({\n selector: 'ymbpm-task-candidates-overlay',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n TranslatePipe,\n OrganizationComponent,\n DialogComponent,\n YmtButtonDirective,\n MatLabel\n],\n templateUrl: './task-candidates-overlay.component.html',\n styleUrl: './task-candidates-overlay.component.scss'\n})\nexport class TaskCandidatesOverlayComponent {\n readonly #dialogRef = inject(MatDialogRef<TaskCandidatesOverlayComponent>);\n readonly data: TaskCandidatesOverlayData = inject(MAT_DIALOG_DATA);\n\n readonly usersControl = new FormControl<string | string[] | null>(\n this.data.currentUsers?.length ? this.data.currentUsers : null\n );\n\n readonly rolesControl = new FormControl<string | string[] | null>(\n this.data.currentRoles?.length ? this.data.currentRoles : null\n );\n\n close(): void {\n this.#dialogRef.close();\n }\n\n confirm(): void {\n const usersValue = this.usersControl.value;\n const rolesValue = this.rolesControl.value;\n\n const result: TaskCandidatesOverlayResult = {\n users: Array.isArray(usersValue) ? usersValue.filter(Boolean) : usersValue ? [usersValue] : [],\n roles: Array.isArray(rolesValue) ? rolesValue.filter(Boolean) : rolesValue ? [rolesValue] : []\n };\n this.#dialogRef.close(result);\n }\n}\n","<yuv-dialog [headertitle]=\"'yuv.app.bpm-management.task.actions.editCandidates.label' | translate\">\n <main>\n <div class=\"field-group\">\n <mat-label>{{ 'yuv.app.bpm-management.task.details.candidateUsers' | translate }}</mat-label>\n <yuv-organization [formControl]=\"usersControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[user]']\" />\n </div>\n <div class=\"field-group\">\n <mat-label>{{ 'yuv.app.bpm-management.task.details.candidateRoles' | translate }}</mat-label>\n <yuv-organization [formControl]=\"rolesControl\" [multiselect]=\"true\" [excludeMe]=\"false\" [classifications]=\"['id:organization:set[role]']\" />\n </div>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.cancel.label' | translate }}\n </button>\n <button ymtButton=\"primary\" (click)=\"confirm()\" type=\"button\">\n {{ 'yuv.app.bpm-management.action.confirm.label' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, TemplateRef } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ConfirmComponent } from '@yuuvis/client-components/common';\nimport { Logger, NotificationService, TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { YmtBadge } from '@yuuvis/material/badge';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport {\n APP_ICONS,\n BPM_ENTITY_META,\n BpmEntity,\n BpmItem,\n definitionSeverity,\n definitionStatusLabel,\n DeploymentInstance,\n ProcessDefinitionInstance,\n ProcessDefinitionScope,\n ProcessInstance,\n processSeverity,\n processStatusIcon,\n processStatusLabel,\n TaskInstance,\n taskSeverity,\n taskStatusIcon,\n taskStatusLabel\n} from '../../../bpm-management.schema';\nimport { YuvBpmManagementService } from '../../../bpm-management.service';\nimport { DeploymentDetailsComponent } from '../../../components/details/deployment-details/deployment-details.component';\nimport { ProcessDefinitionDetailsComponent, ShowProcessesRequest } from '../../../components/details/process-definition-details/process-definition-details.component';\nimport { ProcessDetailsComponent } from '../../../components/details/process-details/process-details.component';\nimport { TaskDetailsComponent } from '../../../components/details/task-details/task-details.component';\nimport { CheckboxOverlayComponent } from '../../../overlays/checkbox-overlay/checkbox-overlay.component';\nimport { TaskAssignOverlayComponent } from '../../../overlays/task-assign-overlay/task-assign-overlay.component';\nimport {\n TaskCandidatesOverlayComponent,\n TaskCandidatesOverlayResult\n} from '../../../overlays/task-candidates-overlay/task-candidates-overlay.component';\n\n/**\n * The details pane of the selected deployment, process definition, process or task. Owns the\n * header (title, status badges) and the actions of the item, the content is rendered by the\n * component of the entity.\n */\n@Component({\n selector: 'ymbpm-details',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIconModule,\n TranslatePipe,\n YmtPanesModule,\n YmtBadge,\n YmtIconButtonDirective,\n MatTooltipModule,\n DeploymentDetailsComponent,\n ProcessDefinitionDetailsComponent,\n ProcessDetailsComponent,\n TaskDetailsComponent\n ],\n templateUrl: './details.component.html',\n styleUrl: './details.component.scss'\n})\nexport class DetailsComponent {\n readonly #dialog = inject(MatDialog);\n readonly #service = inject(YuvBpmManagementService);\n readonly #translate = inject(TranslateService);\n readonly #notifications = inject(NotificationService);\n readonly #logger = inject(Logger);\n\n readonly icons = { ...APP_ICONS };\n readonly ProcessDefinitionScope = ProcessDefinitionScope;\n readonly processSeverity = processSeverity;\n readonly processStatusIcon = processStatusIcon;\n readonly processStatusLabel = processStatusLabel;\n readonly taskSeverity = taskSeverity;\n readonly taskStatusIcon = taskStatusIcon;\n readonly taskStatusLabel = taskStatusLabel;\n readonly definitionSeverity = definitionSeverity;\n readonly definitionStatusLabel = definitionStatusLabel;\n\n entity = input.required<BpmEntity>();\n detail = input<BpmItem | undefined>();\n /** The row of the item in the list, which has the status long before the details (with statistics) are loaded. */\n listItem = input<BpmItem | undefined>();\n /** Tasks of the selected process. */\n processTasks = input<TaskInstance[]>([]);\n busy = input(false);\n error = input(false);\n selectedId = input<string | null>(null);\n /** Whether the process definitions / deployments are enabled, so they can be linked. */\n canOpenDefinition = input(false);\n canOpenDeployment = input(false);\n topBarActions = input<TemplateRef<unknown>>();\n\n /** An action changed the item, the owner has to reload (the list too, if it shows what changed). */\n changed = output<'details' | 'both'>();\n openItem = output<{ entity: BpmEntity; id: string }>();\n showProcesses = output<ShowProcessesRequest>();\n\n readonly deployment = computed(() => (this.entity() === 'deployments' ? (this.detail() as DeploymentInstance | undefined) : undefined));\n readonly definition = computed(() => (this.entity() === 'definitions' ? (this.detail() as ProcessDefinitionInstance | undefined) : undefined));\n /** The definition the actions are for: the list row is there at once and is reloaded first after an action. */\n readonly actionDefinition = computed(() => {\n if (this.entity() !== 'definitions') return undefined;\n return (this.listItem() ?? this.detail()) as ProcessDefinitionInstance | undefined;\n });\n readonly process = computed(() => (this.entity() === 'processes' ? (this.detail() as ProcessInstance | undefined) : undefined));\n readonly task = computed(() => (this.entity() === 'tasks' ? (this.detail() as TaskInstance | undefined) : undefined));\n\n readonly headerIcon = computed(() => BPM_ENTITY_META[this.entity()].itemIcon);\n readonly headerTitle = computed(() => {\n const item = this.detail();\n return item ? item.name || '<unnamed>' : '';\n });\n readonly headerSubtitle = computed(() => this.detail()?.id ?? '');\n\n // ---- process definition actions ------------------------------------------------------------\n /** Activates or suspends the definition, optionally together with its processes. */\n executeDefinitionAction(action: 'activate' | 'suspend'): void {\n const definition = this.actionDefinition();\n if (!definition) return;\n const key = `yuv.app.bpm-management.definitions.actions.${action}`;\n this.#dialog\n .open(CheckboxOverlayComponent, {\n width: '600px',\n maxWidth: '90vw',\n data: {\n title: this.#translate.instant(`${key}.label`),\n message: this.#translate.instant(`${key}.confirm.message`),\n checkboxMessage: this.#translate.instant(`${key}.confirm.includeProcesses.label`),\n confirmBtnLabel: this.#translate.instant(`${key}.confirm.button.label`)\n }\n })\n .afterClosed()\n .subscribe((includeProcesses: boolean | undefined) => {\n if (includeProcesses === undefined) return;\n this.#service.executeProcessDefinitionAction(definition.id, action, includeProcesses).subscribe({\n next: () => {\n this.#notifications.success(this.#translate.instant(`${key}.success`));\n // the status is shown in the list too, and the process counts change\n this.changed.emit('both');\n },\n error: (e: Error) => {\n this.#logger.error(`Failed to ${action} the process definition`, e);\n this.#notifications.error(this.#translate.instant(`${key}.error`));\n }\n });\n });\n }\n\n // ---- process actions -----------------------------------------------------------------------\n /** Suspends or resumes a running process. */\n executeProcessAction(action: 'activate' | 'suspend'): void {\n const process = this.process();\n if (!process) return;\n const key = `yuv.app.bpm-management.process.actions.${action}`;\n this.#dialog\n .open(ConfirmComponent, {\n width: '600px',\n maxWidth: '90vw',\n data: {\n title: this.#translate.instant(`${key}.label`),\n message: this.#translate.instant(`${key}.confirm.message`),\n confirmBtnLabel: this.#translate.instant(`${key}.confirm.button.label`)\n }\n })\n .afterClosed()\n .subscribe((confirm: boolean) => {\n if (!confirm) return;\n this.#service.executeProcessAction(process.id, action).subscribe({\n next: () => {\n this.#notifications.success(this.#translate.instant(`${key}.success`));\n // the status is shown in the list too\n this.changed.emit('both');\n },\n error: (e: Error) => {\n this.#logger.error(`Failed to ${action} the process`, e);\n this.#notifications.error(this.#translate.instant(`${key}.error`));\n }\n });\n });\n }\n\n // ---- task actions --------------------------------------------------------------------------\n assign(): void {\n const task = this.task();\n if (!task) return;\n this.#dialog\n .open(TaskAssignOverlayComponent, { width: '400px', maxWidth: '90vw', data: { taskId: task.id, taskName: task.name } })\n .afterClosed()\n .subscribe((assignee: string) => {\n if (assignee) {\n this.#updateAssignee(task.id, assignee, 'yuv.app.bpm-management.task.actions.assign.success');\n }\n });\n }\n\n unassign(): void {\n const task = this.task();\n if (!task) return;\n this.#dialog\n .open(ConfirmComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: {\n title: this.#translate.instant('yuv.app.bpm-management.task.actions.unassign.label'),\n message: this.#translate.instant('yuv.app.bpm-management.task.actions.unassign.confirm.message')\n }\n })\n .afterClosed()\n .subscribe((confirm: boolean) => {\n if (confirm) {\n this.#updateAssignee(task.id, null, 'yuv.app.bpm-management.task.actions.unassign.success');\n }\n });\n }\n\n editCandidates(): void {\n const task = this.task();\n if (!task) return;\n this.#dialog\n .open(TaskCandidatesOverlayComponent, {\n width: '600px',\n maxWidth: '95vw',\n data: {\n currentUsers: [...(task.identityLinks?.candidates?.users ?? [])],\n currentRoles: [...(task.identityLinks?.candidates?.roles ?? [])]\n }\n })\n .afterClosed()\n .subscribe((result: TaskCandidatesOverlayResult | undefined) => {\n if (result === undefined) return;\n this.#service.setTaskCandidates(task.id, result).subscribe({\n next: () => {\n this.#notifications.success(this.#translate.instant('yuv.app.bpm-management.task.candidates.update.success'));\n // candidates are not shown in the list\n this.changed.emit('details');\n },\n error: () => this.#notifications.error(this.#translate.instant('yuv.app.bpm-management.task.candidates.update.error'))\n });\n });\n }\n\n #updateAssignee(taskId: string, assignee: string | null, successKey: string): void {\n this.#service.assignTask(taskId, assignee).subscribe({\n next: () => {\n this.#notifications.success(this.#translate.instant(successKey));\n this.changed.emit('both');\n },\n error: (e: Error) => {\n this.#logger.error('Failed to change the assignee of the task', e);\n this.#notifications.error(this.#translate.instant('yuv.app.bpm-management.task.actions.assign.error'));\n }\n });\n }\n}\n","<ymt-pane\n [busy]=\"busy()\"\n [topBarActions]=\"topBarActions()\"\n role=\"region\"\n [attr.aria-label]=\"'yuv.app.bpm-management.details.aria' | translate\"\n>\n <ymt-pane-header\n [icon]=\"headerTitle() ? headerIcon() : undefined\"\n [title]=\"headerTitle()\"\n [subtitle]=\"headerSubtitle()\"\n [badges]=\"detail() ? headerBadges : undefined\"\n [actions]=\"task() ? taskActions : actionDefinition() ? definitionActions : process() ? processActions : undefined\"\n ></ymt-pane-header>\n\n <ymt-pane-body>\n @if (error()) {\n <div class=\"empty-state\">\n <span class=\"empty-state-icon\"><mat-icon aria-hidden=\"true\">error_outline</mat-icon></span>\n <p class=\"empty-state-description\">{{ 'yuv.app.bpm-management.details.error' | translate }}</p>\n </div>\n } @else if (deployment(); as deployment) {\n <ymbpm-deployment-details\n [deployment]=\"deployment\"\n [canOpenDefinition]=\"canOpenDefinition()\"\n (openDefinition)=\"openItem.emit({ entity: 'definitions', id: $event })\"\n ></ymbpm-deployment-details>\n } @else if (definition(); as definition) {\n <ymbpm-process-definition-details\n [definition]=\"definition\"\n [canOpenDeployment]=\"canOpenDeployment()\"\n (openDeployment)=\"openItem.emit({ entity: 'deployments', id: $event })\"\n (showProcesses)=\"showProcesses.emit($event)\"\n ></ymbpm-process-definition-details>\n } @else if (process(); as process) {\n <ymbpm-process-details\n [process]=\"process\"\n [tasks]=\"processTasks()\"\n [canOpenDefinition]=\"canOpenDefinition()\"\n (openTask)=\"openItem.emit({ entity: 'tasks', id: $event })\"\n (openDefinition)=\"openItem.emit({ entity: 'definitions', id: $event })\"\n ></ymbpm-process-details>\n } @else if (task(); as task) {\n <ymbpm-task-details\n [task]=\"task\"\n (openProcess)=\"openItem.emit({ entity: 'processes', id: $event })\"\n ></ymbpm-task-details>\n } @else if (!busy() && !selectedId()) {\n <div class=\"empty-state\">\n <span class=\"empty-state-icon\"><mat-icon aria-hidden=\"true\">{{ icons.info }}</mat-icon></span>\n <p class=\"empty-state-description\">{{ 'yuv.app.bpm-management.details.noSelection.label' | translate }}</p>\n </div>\n }\n </ymt-pane-body>\n</ymt-pane>\n\n<!-- header: status badges -->\n<ng-template #headerBadges>\n @if (process(); as p) {\n <ymt-badge [severity]=\"processSeverity(p)\"><mat-icon>{{ processStatusIcon(p) }}</mat-icon>{{ processStatusLabel(p) | translate }}</ymt-badge>\n } @else if (task(); as t) {\n <ymt-badge [severity]=\"taskSeverity(t)\"><mat-icon>{{ taskStatusIcon(t) }}</mat-icon>{{ taskStatusLabel(t) | translate }}</ymt-badge>\n @if (t.delegationState) {\n <ymt-badge [outline]=\"true\" [severity]=\"t.delegationState === 'pending' ? 'warning' : 'success'\">\n {{ (t.delegationState === 'pending' ? 'yuv.app.bpm-management.task.delegationState.pending' : 'yuv.app.bpm-management.task.delegationState.resolved') | translate }}\n </ymt-badge>\n }\n } @else if (definition(); as d) {\n <!-- only global definitions are marked, tenant specific ones are the normal case -->\n @if (d.global) {\n <ymt-badge [outline]=\"true\">\n <mat-icon>{{ icons.globe }}</mat-icon>{{ ProcessDefinitionScope.GLOBAL.label | translate }}\n </ymt-badge>\n }\n <ymt-badge [severity]=\"definitionSeverity(d)\">{{ definitionStatusLabel(d) | translate }}</ymt-badge>\n }\n</ng-template>\n\n<!-- header: one button switches the status of a definition (it offers what is not the case yet); global definitions are shared and cannot be changed, so they get no button -->\n<ng-template #definitionActions>\n @let d = actionDefinition();\n @if (d && !d.global) {\n @let action = d.suspended ? 'activate' : 'suspend';\n @let label = ('yuv.app.bpm-management.definitions.actions.' + action + '.label') | translate;\n <button ymt-icon-button [matTooltip]=\"label\" [attr.aria-label]=\"label\" (click)=\"executeDefinitionAction(action)\">\n <mat-icon>{{ icons[action] }}</mat-icon>\n </button>\n }\n</ng-template>\n\n<!-- header: one button switches a running process between suspended and active; ended processes have no actions -->\n<ng-template #processActions>\n @let p = process();\n @if (p && !p.endTime) {\n @let action = p.suspended ? 'activate' : 'suspend';\n @let label = ('yuv.app.bpm-management.process.actions.' + action + '.label') | translate;\n <button ymt-icon-button [matTooltip]=\"label\" [attr.aria-label]=\"label\" (click)=\"executeProcessAction(action)\">\n <mat-icon>{{ icons[action] }}</mat-icon>\n </button>\n }\n</ng-template>\n\n<!-- header: actions are visible buttons instead of an overflow menu -->\n<ng-template #taskActions>\n @let t = task();\n <!-- completed tasks have no actions -->\n @if (t && !t.endTime) {\n @let assignLabel = 'yuv.app.bpm-management.task.actions.assign.label' | translate;\n @let unassignLabel = 'yuv.app.bpm-management.task.actions.unassign.label' | translate;\n @let candidatesLabel = 'yuv.app.bpm-management.task.actions.editCandidates.label' | translate;\n <button ymt-icon-button [matTooltip]=\"assignLabel\" [attr.aria-label]=\"assignLabel\" (click)=\"assign()\">\n <mat-icon>{{ icons.assign }}</mat-icon>\n </button>\n <button ymt-icon-button [disabled]=\"!t.assignee\" [matTooltip]=\"unassignLabel\" [attr.aria-label]=\"unassignLabel\" (click)=\"unassign()\">\n <mat-icon>{{ icons.unassign }}</mat-icon>\n </button>\n <button ymt-icon-button [matTooltip]=\"candidatesLabel\" [attr.aria-label]=\"candidatesLabel\" (click)=\"editCandidates()\">\n <mat-icon>manage_accounts</mat-icon>\n </button>\n }\n</ng-template>\n","import { afterRenderEffect, Component, computed, effect, ElementRef, inject, OnInit, signal, untracked, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { YuvListModule } from '@yuuvis/client-components/list';\nimport { YuvSplitViewModule } from '@yuuvis/client-components/split-view';\nimport { Logger, SearchQuery, TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { SimpleSearchComponent } from '@yuuvis/client-framework/simple-search';\nimport { YuvClientShellModule } from '@yuuvis/client-shell';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective, YmtIconButtonDirective } from '@yuuvis/material';\nimport { YmtBadge } from '@yuuvis/material/badge';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\nimport { catchError, forkJoin, map, Observable, of, Subscription } from 'rxjs';\nimport { DeploymentFilter, ProcessDefinitionFilter, ProcessFilter, TaskFilter } from '../bpm-filter';\nimport { enabledEntities, isDeploymentsEnabled, isProcessDefinitionsEnabled, resolveAppConfig } from '../bpm-management.config';\nimport {\n APP_ICONS,\n APP_ID,\n BPM_ENTITY_META,\n BpmEntity,\n BpmItem,\n Column,\n ColumnFilter,\n definitionSeverity,\n definitionStatusLabel,\n DeploymentInstance,\n FILTER_OPERATORS,\n FILTER_TYPES,\n FilterValue,\n ProcessDefinitionInstance,\n ProcessDefinitionScope,\n ProcessDefinitionStatus,\n ProcessInstance,\n processSeverity,\n processStatusLabel,\n ProcessStatus,\n TableFilters,\n TaskInstance,\n taskSeverity,\n taskStatusLabel,\n TaskStatus\n} from '../bpm-management.schema';\nimport { YuvBpmManagementService } from '../bpm-management.service';\nimport { ShowProcessesRequest } from '../components/details/process-definition-details/process-definition-details.component';\nimport { BpmManagementStateService, initialView, PAGE_SIZE_OPTIONS, QuickFilter, SortBy, SortOrder, ViewState } from '../bpm-management.state';\nimport { EntitySwitchComponent } from '../components/entity-switch/entity-switch.component';\nimport { FilterBarComponent } from '../components/filters/filter-bar/filter-bar.component';\nimport { PaneGutterComponent } from '../components/pane-gutter/pane-gutter.component';\nimport { PaneToggleButtonComponent } from '../components/pane-toggle-button/pane-toggle-button.component';\nimport { OrganizationRendererComponent } from '@yuuvis/client-framework/renderer';\nimport { FormatDateTimePipe } from '../pipes/format-date-time.pipe';\nimport { DetailsComponent } from './areas/details/details.component';\n\n/**\n * Deployments, process definitions, processes and tasks in one master/details page. The entity\n * is selected by the route (the same paths the former tabs used), the selected item and the way\n * the user got there by the query param `id`, so every state is a deep link.\n */\n@Component({\n selector: 'ymbpm-root',\n standalone: true,\n imports: [\n MatButtonToggleModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatPaginatorModule,\n MatTooltipModule,\n TranslatePipe,\n YuvClientShellModule,\n SimpleSearchComponent,\n YuvListModule,\n YuvSplitViewModule,\n YmtPanesModule,\n YmtBadge,\n YmtButtonDirective,\n YmtIconButtonDirective,\n FormatDateTimePipe,\n OrganizationRendererComponent,\n PaneGutterComponent,\n PaneToggleButtonComponent,\n EntitySwitchComponent,\n FilterBarComponent,\n DetailsComponent\n ],\n templateUrl: './bpm-management.component.html',\n styleUrl: './bpm-management.component.scss'\n})\nexport class YuvBpmManagementComponent implements OnInit {\n readonly layoutSettingsID = APP_ID + '#root.layout.settings';\n readonly pageSizeOptions = PAGE_SIZE_OPTIONS;\n /** The fields the backend can sort each entity by (entities without an entry are not sortable). */\n readonly #sortFieldsByEntity: Partial<Record<BpmEntity, { value: SortBy; label: string }[]>> = {\n deployments: [sortField('name'), sortField('deployTime')],\n definitions: [sortField('name'), sortField('key')],\n processes: [sortField('name'), sortField('startTime'), sortField('endTime'), sortField('definitionKey'), sortField('businessKey')],\n tasks: [sortField('name'), sortField('createTime'), sortField('dueDate')]\n };\n readonly sortFields = computed(() => this.#sortFieldsByEntity[this.entity()] ?? []);\n readonly sortOrders: { value: SortOrder; label: string }[] = [\n { value: 'asc', label: 'yuv.sort.ascending' },\n { value: 'desc', label: 'yuv.sort.descending' }\n ];\n /** `yuv-split-view` area indices, so the top bar buttons can hide/show the panes. */\n readonly Area = { MASTER: 0, DETAILS: 1 } as const;\n readonly icons = { ...APP_ICONS };\n readonly ENTITY_META = BPM_ENTITY_META;\n readonly ProcessDefinitionScope = ProcessDefinitionScope;\n readonly processSeverity = processSeverity;\n readonly processStatusLabel = processStatusLabel;\n readonly taskSeverity = taskSeverity;\n readonly taskStatusLabel = taskStatusLabel;\n readonly definitionSeverity = definitionSeverity;\n readonly definitionStatusLabel = definitionStatusLabel;\n\n readonly #shell = inject(ShellService);\n readonly #titleService = inject(Title);\n readonly #route = inject(ActivatedRoute);\n readonly #router = inject(Router);\n readonly #service = inject(YuvBpmManagementService);\n readonly #translate = inject(TranslateService);\n readonly #logger = inject(Logger);\n readonly #state = inject(BpmManagementStateService);\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // the same app may be registered several times, so use the entry this route was loaded through\n readonly #appConfig = resolveAppConfig(this.#route.snapshot);\n readonly #app = this.#shell.getApp(this.#appConfig.appId ?? APP_ID);\n readonly appName = this.#app?.title as string;\n\n /** The chips of the active filters; the \"add filter\" menu of the pane header adds to them. */\n readonly filterBar = viewChild(FilterBarComponent);\n\n /** Deployments and process definitions are optional, the host shell client enables them. */\n readonly deploymentsEnabled = isDeploymentsEnabled(this.#route.snapshot);\n readonly definitionsEnabled = isProcessDefinitionsEnabled(this.#route.snapshot);\n readonly availableEntities = enabledEntities(this.#route.snapshot);\n\n // ---- routing state -------------------------------------------------------------------------\n readonly entity = toSignal(this.#route.data.pipe(map(d => d['entity'] as BpmEntity)), { initialValue: 'processes' as BpmEntity });\n readonly selectedId = toSignal(this.#route.queryParamMap.pipe(map(p => p.get('id'))), { initialValue: null });\n /** The search term lives in the URL (`?search=`), so links and browser back/forward restore it. */\n readonly searchTerm = toSignal(this.#route.queryParamMap.pipe(map(p => p.get('search') ?? '')), { initialValue: '' });\n\n // ---- list state (kept per entity, so switching back restores the filters) --------------------\n readonly views = this.#state.views;\n readonly view = computed(() => this.views()[this.entity()]);\n readonly items = signal<BpmItem[]>([]);\n /** The list row of the selected item: it is there before the details are, and a reload of the list is quick. */\n readonly selectedItem = computed(() => this.items().find(i => i.id === this.selectedId()));\n readonly total = signal(0);\n readonly busy = signal(false);\n\n readonly searchQuery = computed<SearchQuery>(() => ({ term: this.searchTerm() }));\n readonly quickFilters = computed(() => QUICK_FILTERS[this.entity()]);\n readonly filterColumns = computed(() => this.#columns[this.entity()]);\n /**\n * \"Latest versions only\" is a checkable option of the filter menu, not a filter criterion: it has\n * no chip, and clearing the filters never changes it.\n */\n readonly showLatestOnly = computed(() => this.entity() === 'definitions');\n readonly hasActiveFilters = computed(() => {\n const v = this.view();\n const initial = initialView(this.entity());\n return !!this.searchTerm() || Object.keys(v.advanced).length > 0 || v.quick !== initial.quick;\n });\n\n // ---- details state -------------------------------------------------------------------------\n readonly detail = signal<BpmItem | undefined>(undefined);\n readonly processTasks = signal<TaskInstance[]>([]);\n readonly detailsBusy = signal(false);\n readonly detailsError = signal(false);\n\n #listSub?: Subscription;\n #detailSub?: Subscription;\n #detailKey: string | null = null;\n /** Whether the list was loaded once (the component shows one entity, every entity has its own route). */\n #landed = false;\n\n constructor() {\n effect(() => {\n const entity = this.entity();\n const view = this.view();\n const search = this.searchTerm();\n // a changed view of the already shown entity (not landing on it) may drop the selected item\n untracked(() => this.#loadList(entity, view, search, this.#landed ? 'change' : 'landing'));\n });\n effect(() => {\n const entity = this.entity();\n const id = this.selectedId();\n untracked(() => this.#loadDetails(entity, id));\n });\n // bring the selected row into view once it is rendered (a link or a reload can select a row\n // below the fold); `nearest` leaves a row that is already visible where it is\n afterRenderEffect(() => {\n const id = this.selectedId();\n if (!this.items().length || !id) return;\n this.#host.nativeElement.querySelector<HTMLElement>(`yuv-list [data-item-id=\"${CSS.escape(id)}\"]`)?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n ngOnInit() {\n // set the browser tab title localized\n const translatedTitle = this.appName.startsWith('yuv.') ? this.#translate.instant(this.appName) : this.appName;\n this.#titleService.setTitle(translatedTitle);\n }\n\n // ---- list ----------------------------------------------------------------------------------\n patchView(patch: Partial<ViewState>, resetPage = true): void {\n const entity = this.entity();\n this.views.update(v => ({ ...v, [entity]: { ...v[entity], ...patch, ...(resetPage ? { page: 0 } : {}) } }));\n }\n\n /** Search term submitted in the app header (Enter / search button / clear). */\n onQueryChange(query: SearchQuery): void {\n const term = (query.term ?? '').trim();\n if (term !== this.searchTerm()) {\n this.#router.navigate([], { relativeTo: this.#route, queryParams: { search: term || null }, queryParamsHandling: 'merge' });\n }\n }\n\n onQuick(value: QuickFilter | undefined): void {\n this.patchView({ quick: value ?? 'all' });\n }\n\n onAdvancedFilters(filters: TableFilters): void {\n this.patchView({ advanced: filters });\n }\n\n toggleLatestOnly(): void {\n this.patchView({ latestOnly: !this.view().latestOnly });\n }\n\n onChangePage(event: PageEvent): void {\n if (event.pageSize !== this.view().pageSize) {\n // a different page size shifts what \"page N\" means - restart from the first page\n this.#state.savePageSize(event.pageSize);\n } else {\n this.patchView({ page: event.pageIndex }, false);\n }\n }\n\n clearFilters(): void {\n // the checkable options of the filter menu stay as they are\n const { quick } = initialView(this.entity());\n this.patchView({ advanced: {}, quick });\n // the search term is applied from the URL, so it is cleared there\n this.onQueryChange({ term: '' });\n }\n\n /** Reloads after an action of the details pane; the list only if it shows what changed. */\n onDetailsChanged(scope: 'details' | 'both'): void {\n if (scope === 'both') {\n this.#loadList(this.entity(), this.view(), this.searchTerm());\n }\n this.#loadDetails(this.entity(), this.selectedId());\n }\n\n /** Selection follows the active item (arrow keys and clicks). */\n onItemFocus(index: number): void {\n const item = this.items()[index];\n if (item && item.id !== this.selectedId()) {\n this.#navigate(this.entity(), item.id, true);\n }\n }\n\n switchEntity(entity: BpmEntity): void {\n if (entity !== this.entity()) {\n this.#navigate(entity, null);\n }\n }\n\n // ---- cross navigation ----------------------------------------------------------------------\n /** Opens an item of another entity. */\n openItem(entity: BpmEntity, id: string | null): void {\n this.#navigate(entity, id);\n }\n\n showProcessesOfDefinition({ definitionId, quick }: ShowProcessesRequest): void {\n const filter: FilterValue = { type: FILTER_TYPES.TEXT, operator: FILTER_OPERATORS.EQUALS.value, value: definitionId };\n this.views.update(v => ({ ...v, processes: { ...initialView('processes'), quick, pageSize: v.processes.pageSize, advanced: { processDefinitionId: filter } } }));\n this.openItem('processes', null);\n }\n\n // ---- row presentation (the list is typed loosely, the entity decides which type an item is) -\n /** Process definitions, processes and tasks can be suspended. */\n isSuspended(item: BpmItem): boolean {\n return 'suspended' in item && item.suspended === true;\n }\n\n asDeployment(item: BpmItem): DeploymentInstance {\n return item as DeploymentInstance;\n }\n\n asDefinition(item: BpmItem): ProcessDefinitionInstance {\n return item as ProcessDefinitionInstance;\n }\n\n asProcess(item: BpmItem): ProcessInstance {\n return item as ProcessInstance;\n }\n\n asTask(item: BpmItem): TaskInstance {\n return item as TaskInstance;\n }\n\n // ---- loading -------------------------------------------------------------------------------\n #navigate(entity: BpmEntity, id: string | null, replaceUrl = false): void {\n // the search term belongs to the entity it was entered for: another entity starts without one\n const search = entity === this.entity() ? undefined : null;\n this.#router.navigate(entity === this.entity() ? [] : ['../', entity], {\n relativeTo: this.#route,\n queryParams: { id, ...(search === undefined ? {} : { search }) },\n queryParamsHandling: 'merge',\n replaceUrl\n });\n }\n\n #effectiveFilters(entity: BpmEntity, view: ViewState, search: string): TableFilters {\n const filters: TableFilters = { ...view.advanced };\n if (search) {\n filters['name'] = { type: FILTER_TYPES.TEXT, operator: FILTER_OPERATORS.CONTAINS.value, value: search };\n }\n const status = this.#statusFilter(entity, view.quick);\n if (status) {\n filters['status'] = { type: FILTER_TYPES.SELECT, value: status };\n }\n return filters;\n }\n\n /** The value of the status filter the quick filter stands for (if any). */\n #statusFilter(entity: BpmEntity, quick: QuickFilter): string | undefined {\n switch (entity) {\n case 'processes':\n return quick === 'completed' ? ProcessStatus.COMPLETED.value : quick === 'active' ? ProcessStatus.RUNNING_SUSPENDED.value : undefined;\n case 'tasks':\n return quick === 'completed' ? TaskStatus.COMPLETED.value : quick === 'open' ? TaskStatus.RUNNING.value : undefined;\n case 'definitions':\n return quick === 'active' ? ProcessDefinitionStatus.ACTIVE.value : quick === 'suspended' ? ProcessDefinitionStatus.SUSPENDED.value : undefined;\n default:\n return undefined;\n }\n }\n\n #listRequest(entity: BpmEntity, view: ViewState, search: string): Observable<{ objects: BpmItem[]; totalNumItems: number }> {\n const filters = this.#effectiveFilters(entity, view, search);\n switch (entity) {\n case 'deployments':\n return this.#service.getDeployments(view.page, view.pageSize, DeploymentFilter.fromAgFilterModel(filters), { by: view.sortBy, order: view.sortOrder });\n case 'definitions': {\n const filter = ProcessDefinitionFilter.fromAgFilterModel(filters);\n filter.latest = { value: view.latestOnly, type: FILTER_TYPES.CHECKBOX };\n return this.#service.getProcessDefinitions(view.page, view.pageSize, filter, { by: view.sortBy, order: view.sortOrder });\n }\n case 'processes':\n return this.#service.getProcesses(view.page, view.pageSize, ProcessFilter.fromAgFilterModel(filters, this.#translate), {\n by: view.sortBy === 'definitionKey' ? 'processDefinitionKey' : view.sortBy,\n order: view.sortOrder\n });\n case 'tasks':\n return this.#service.getTasks(view.page, view.pageSize, TaskFilter.fromAgFilterModel(filters, this.#translate), { by: view.sortBy, order: view.sortOrder });\n }\n }\n\n /**\n * @param mode `landing`: the entity was just opened. A linked item (`id`) that is not in the list\n * gets an id filter, so it shows up in the list. `change`: the view of the shown entity changed, a\n * selected item that is not part of the result any more gives way to the first one. `reload`: after\n * an action, nothing about the selection changes.\n */\n #loadList(entity: BpmEntity, view: ViewState, search: string, mode: 'landing' | 'change' | 'reload' = 'reload'): void {\n this.#listSub?.unsubscribe();\n this.busy.set(true);\n this.#listSub = this.#listRequest(entity, view, search).subscribe({\n next: response => {\n this.items.set(response.objects);\n this.total.set(response.totalNumItems);\n this.busy.set(false);\n this.#landed = true;\n const selectedId = this.selectedId();\n const listed = !!selectedId && response.objects.some(o => o.id === selectedId);\n if (selectedId && !listed && mode === 'landing' && !view.advanced['id']) {\n // the linked item is not in the list (e.g. beyond the first page): filter by its id. An older\n // version of a definition is hidden by \"latest only\", so that is switched off for the link.\n const id: FilterValue = { type: FILTER_TYPES.TEXT, operator: FILTER_OPERATORS.EQUALS.value, value: selectedId };\n this.patchView({ advanced: { ...view.advanced, id }, ...(entity === 'definitions' ? { latestOnly: false } : {}) });\n return;\n }\n // landing without a requested item selects the first one (replacing the history entry, so back still leaves the view)\n const first = response.objects[0];\n if (first && (!selectedId || (mode === 'change' && !listed))) {\n this.#navigate(entity, first.id, true);\n }\n },\n error: (e: unknown) => {\n this.#logger.error(`Failed to fetch ${entity}`, e);\n this.busy.set(false);\n }\n });\n }\n\n #detailRequest(entity: BpmEntity, id: string): Observable<{ item?: BpmItem | null; tasks?: TaskInstance[] }> {\n switch (entity) {\n case 'deployments': {\n const definitionsFilter = new ProcessDefinitionFilter();\n definitionsFilter.deploymentId = { value: id, type: FILTER_TYPES.TEXT };\n definitionsFilter.latest = { value: false, type: FILTER_TYPES.CHECKBOX };\n return forkJoin({\n deployment: this.#service.getDeployment(id),\n resources: this.#service.getDeploymentResources(id).pipe(catchError(() => of([]))),\n definitions: this.#service.getProcessDefinitions(0, 0, definitionsFilter).pipe(catchError(() => of({ objects: [] })))\n }).pipe(\n map(({ deployment, resources, definitions }) => ({\n item: deployment && { ...deployment, resources: resources || [], definitions: definitions?.objects || [] }\n }))\n );\n }\n case 'definitions':\n return this.#service.getProcessDefinition(id).pipe(map(item => ({ item })));\n case 'processes':\n return forkJoin({ process: this.#service.getProcess(id), history: this.#service.getProcessHistory(id) }).pipe(\n map(({ process, history }) => ({ item: process && this.#withSuspended(process, id), tasks: history?.tasks ?? [] }))\n );\n case 'tasks':\n return this.#service.getTask(id).pipe(map(task => ({ item: task && this.#withSuspended(task, id) })));\n }\n }\n\n /** The detail endpoint may omit the suspended flag - then the list row (which has it) decides. */\n #withSuspended<T extends ProcessInstance | TaskInstance>(item: T, id: string): T {\n if (typeof item.suspended === 'boolean') {\n return item;\n }\n const row = this.items().find(i => i.id === id) as T | undefined;\n return { ...item, suspended: !!row?.suspended };\n }\n\n #loadDetails(entity: BpmEntity, id: string | null): void {\n this.#detailSub?.unsubscribe();\n this.detailsError.set(false);\n const key = id && `${entity}:${id}`;\n if (key !== this.#detailKey) {\n // another item: don't show the previous one while loading (a reload of the same item keeps it)\n this.#detailKey = key;\n this.detail.set(undefined);\n this.processTasks.set([]);\n }\n if (!id) {\n this.detailsBusy.set(false);\n return;\n }\n this.detailsBusy.set(true);\n this.#detailSub = this.#detailRequest(entity, id).subscribe({\n next: ({ item, tasks }) => {\n this.detail.set(item ?? undefined);\n this.processTasks.set(tasks ?? []);\n this.detailsBusy.set(false);\n },\n error: (e: unknown) => {\n this.#logger.error(`Failed to load ${entity} details`, e);\n this.detailsError.set(true);\n this.detailsBusy.set(false);\n }\n });\n }\n\n // ---- filter panel columns (status is covered by the quick filters, the name by the search) --\n readonly #textOperators = [FILTER_OPERATORS.EQUALS, FILTER_OPERATORS.STARTS_WITH, FILTER_OPERATORS.ENDS_WITH, FILTER_OPERATORS.CONTAINS];\n readonly #dateOperators = [FILTER_OPERATORS.BEFORE, FILTER_OPERATORS.AFTER, FILTER_OPERATORS.BETWEEN];\n readonly #h = (key: string) => `yuv.app.bpm-management.column.${key}`;\n readonly #equals: ColumnFilter = { type: FILTER_TYPES.TEXT, operators: [FILTER_OPERATORS.EQUALS] };\n\n readonly #columns: Record<BpmEntity, Column[]> = {\n deployments: [\n { name: 'id', displayName: this.#h('id'), filter: this.#equals },\n { name: 'category', displayName: this.#h('category'), filter: this.#equals }\n ],\n definitions: [\n { name: 'id', displayName: this.#h('id'), filter: this.#equals },\n { name: 'key', displayName: this.#h('key'), filter: { type: FILTER_TYPES.TEXT, operators: this.#textOperators } },\n { name: 'version', displayName: this.#h('version'), filter: { type: FILTER_TYPES.NUMBER, operators: [FILTER_OPERATORS.EQUALS], minValue: 1 } },\n { name: 'category', displayName: this.#h('category'), filter: { type: FILTER_TYPES.TEXT, operators: this.#textOperators } },\n {\n name: 'global',\n displayName: 'yuv.app.bpm-management.definitions.scope.label',\n filter: {\n type: FILTER_TYPES.SELECT,\n enableMultiselect: false,\n // no text while nothing is selected\n placeholder: '',\n options: [ProcessDefinitionScope.GLOBAL, ProcessDefinitionScope.TENANT]\n }\n }\n ],\n processes: [\n { name: 'id', displayName: this.#h('id'), filter: this.#equals },\n { name: 'processDefinitionId', displayName: this.#h('processDefinitionId'), filter: this.#equals },\n { name: 'businessKey', displayName: this.#h('businessKey'), filter: { type: FILTER_TYPES.TEXT, operators: this.#textOperators } },\n { name: 'startUserId', displayName: this.#h('startedBy'), filter: { type: FILTER_TYPES.USER } },\n { name: 'startTime', displayName: this.#h('startTime'), filter: { type: FILTER_TYPES.DATE, operators: this.#dateOperators } },\n { name: 'endTime', displayName: this.#h('endTime'), filter: { type: FILTER_TYPES.DATE, operators: this.#dateOperators } }\n ],\n tasks: [\n { name: 'id', displayName: this.#h('id'), filter: this.#equals },\n { name: 'processDefinitionId', displayName: this.#h('processDefinitionId'), filter: this.#equals },\n { name: 'processInstanceId', displayName: this.#h('processInstanceId'), filter: this.#equals },\n { name: 'assignee', displayName: this.#h('assignee'), filter: { type: FILTER_TYPES.USER } },\n { name: 'owner', displayName: this.#h('owner'), filter: { type: FILTER_TYPES.USER } },\n { name: 'createTime', displayName: this.#h('createTime'), filter: { type: FILTER_TYPES.DATE, operators: this.#dateOperators } },\n { name: 'endTime', displayName: this.#h('endTime'), filter: { type: FILTER_TYPES.DATE, operators: this.#dateOperators } }\n ]\n };\n}\n\nconst sortField = (value: SortBy): { value: SortBy; label: string } => ({ value, label: `yuv.app.bpm-management.sort.${value}` });\n\nconst quickFilters = (entity: BpmEntity, ...values: QuickFilter[]): { value: QuickFilter; label: string }[] =>\n values.map(value => ({ value, label: `yuv.app.bpm-management.statusFilter.${entity}.${value}` }));\n\nconst QUICK_FILTERS: Record<BpmEntity, { value: QuickFilter; label: string }[]> = {\n deployments: [],\n definitions: quickFilters('definitions', 'active', 'suspended', 'all'),\n processes: quickFilters('processes', 'active', 'completed', 'all'),\n tasks: quickFilters('tasks', 'open', 'completed', 'all')\n};\n","<!-- the entity switch lives in the shell's app header -->\n<ng-template yuvAppHeaderSlot=\"actions\">\n <ymbpm-entity-switch [entities]=\"availableEntities\" [value]=\"entity()\" (valueChange)=\"switchEntity($event)\" />\n</ng-template>\n\n<!-- search lives in the shell's app header -->\n<ng-template yuvAppHeaderSlot=\"search\">\n <yuv-simple-search [query]=\"searchQuery()\" (querySubmit)=\"onQueryChange($event)\" (clearInput)=\"onQueryChange({ term: '' })\"></yuv-simple-search>\n</ng-template>\n\n<!-- A named region, not <main>: the shell already wraps the routed app in its own main landmark. -->\n<div role=\"region\" class=\"bpmmgmt-main__content\" [attr.aria-label]=\"'yuv.app.bpm-management.content.aria.label' | translate\">\n @if (!split.isAreaVisible(Area.MASTER)) {\n <ymbpm-pane-gutter\n icon=\"left_panel_open\"\n [flipLabel]=\"true\"\n [label]=\"ENTITY_META[entity()].label | translate\"\n [tooltip]=\"'yuv.app.bpm-management.pane.showList.tooltip' | translate\"\n (expand)=\"split.showArea(Area.MASTER)\" />\n }\n\n <yuv-split-view #split [layoutSettingsID]=\"layoutSettingsID\" class=\"content-split\">\n\n <!-- ===================================== MASTER ===================================== -->\n <ng-template yuvSplitArea [size]=\"61.8\">\n <ymt-pane [busy]=\"busy()\" [topBarActions]=\"masterActions\" role=\"region\" [attr.aria-label]=\"ENTITY_META[entity()].label | translate\">\n <ymt-pane-header\n [icon]=\"ENTITY_META[entity()].icon\"\n [title]=\"ENTITY_META[entity()].label | translate\"\n [actions]=\"listActions\"\n ></ymt-pane-header>\n\n <ymt-pane-body class=\"list-body\">\n <ymbpm-filter-bar\n [columns]=\"filterColumns()\"\n [filters]=\"view().advanced\"\n [search]=\"searchTerm()\"\n (filtersChange)=\"onAdvancedFilters($event)\"\n (searchClear)=\"onQueryChange({ term: '' })\" />\n @if (items().length === 0 && !busy()) {\n <div class=\"empty-state\">\n <span class=\"empty-state-icon\"><mat-icon aria-hidden=\"true\">search_off</mat-icon></span>\n <p class=\"empty-state-description\">{{ 'yuv.app.bpm-management.list.empty' | translate }}</p>\n @if (hasActiveFilters()) {\n <button ymtButton=\"secondary\" (click)=\"clearFilters()\">{{ 'yuv.app.bpm-management.filters.clearAll' | translate }}</button>\n }\n </div>\n } @else {\n <yuv-list class=\"items\" [attr.aria-label]=\"ENTITY_META[entity()].label | translate\" [externalSelectionVisuals]=\"true\" (itemFocus)=\"onItemFocus($event)\">\n @for (item of items(); track item.id) {\n <div yuvListItem role=\"option\" class=\"item\" [attr.data-item-id]=\"item.id\" [class.item--suspended]=\"isSuspended(item)\" [selected]=\"item.id === selectedId()\">\n @switch (entity()) {\n @case ('deployments') {\n @let d = asDeployment(item);\n <mat-icon class=\"item__icon\" aria-hidden=\"true\">{{ ENTITY_META.deployments.itemIcon }}</mat-icon>\n <div class=\"item__main\">\n <span class=\"item__title\">{{ d.name || '<unnamed>' }}</span>\n </div>\n <span class=\"item__time\">{{ d.deploymentTime | formatDateTime }}</span>\n }\n @case ('definitions') {\n @let pd = asDefinition(item);\n @let definitionStatus = definitionStatusLabel(pd) | translate;\n <span class=\"item__marker\" role=\"img\" [attr.data-severity]=\"definitionSeverity(pd)\" [matTooltip]=\"definitionStatus\" matTooltipPosition=\"right\" [attr.aria-label]=\"definitionStatus\"></span>\n <div class=\"item__main\">\n <span class=\"item__heading item__heading--split\">\n <span class=\"item__title\">{{ pd.name || '<unnamed>' }}</span>\n <!-- only global definitions are marked, tenant specific ones are the normal case -->\n @if (pd.global) {\n <ymt-badge class=\"item__scope\" [outline]=\"true\">\n <mat-icon>{{ icons.globe }}</mat-icon>{{ ProcessDefinitionScope.GLOBAL.label | translate }}\n </ymt-badge>\n }\n </span>\n <span class=\"item__meta\">\n <span class=\"item__key\"><mat-icon>key</mat-icon><span class=\"item__key-text\" [title]=\"pd.key\">{{ pd.key }}</span></span>\n <span class=\"item__version\"><mat-icon>layers</mat-icon>v{{ pd.version }}</span>\n <!-- always rendered, so key and category keep their equal columns -->\n <span class=\"item__category\">\n @if (pd.category) {\n <mat-icon>category</mat-icon><span class=\"item__key-text\" [title]=\"pd.category\">{{ pd.category }}</span>\n }\n </span>\n </span>\n </div>\n }\n @case ('processes') {\n @let p = asProcess(item);\n @let statusLabel = processStatusLabel(p) | translate;\n <span class=\"item__marker\" role=\"img\" [attr.data-severity]=\"processSeverity(p)\" [matTooltip]=\"statusLabel\" matTooltipPosition=\"right\" [attr.aria-label]=\"statusLabel\"></span>\n <div class=\"item__main\">\n <span class=\"item__heading item__heading--split\">\n <span class=\"item__title\">{{ p.name || '<unnamed>' }}</span>\n <ymt-badge class=\"item__definition\" [outline]=\"true\" [title]=\"p.processDefinitionName || ''\">\n <mat-icon>{{ ENTITY_META.definitions.itemIcon }}</mat-icon><span class=\"item__key-text\">{{ p.processDefinitionName || '-' }}</span>\n </ymt-badge>\n </span>\n <span class=\"item__meta item__meta--process\">\n <span class=\"item__started\">\n <mat-icon>schedule</mat-icon>{{ p.startTime | formatDateTime }}\n <span class=\"item__started-by\">{{ 'yuv.app.bpm-management.process.startedByShort' | translate }}</span>\n <yuv-organization-renderer propertyName=\"user\" [value]=\"p.startUserId ?? null\"></yuv-organization-renderer>\n </span>\n @if (p.businessKey) {\n <span class=\"item__business-key\">\n <mat-icon>tag</mat-icon><span class=\"item__key-text\" [title]=\"p.businessKey\">{{ p.businessKey }}</span>\n </span>\n }\n @if (p.endTime) {\n <span class=\"item__ended\"><mat-icon>flag</mat-icon>{{ p.endTime | formatDateTime }}</span>\n }\n </span>\n </div>\n }\n @case ('tasks') {\n @let t = asTask(item);\n @let taskStatus = taskStatusLabel(t) | translate;\n <span class=\"item__marker\" role=\"img\" [attr.data-severity]=\"taskSeverity(t)\" [matTooltip]=\"taskStatus\" matTooltipPosition=\"right\" [attr.aria-label]=\"taskStatus\"></span>\n <div class=\"item__main\">\n <span class=\"item__title\">{{ t.name || '<unnamed>' }}</span>\n <span class=\"item__meta item__meta--slots item__meta--task\">\n <span class=\"item__started\">\n <mat-icon>schedule</mat-icon>{{ t.createTime | formatDateTime }}\n <yuv-organization-renderer propertyName=\"user\" [value]=\"t.assignee ?? null\"></yuv-organization-renderer>\n </span>\n <span>\n <mat-icon>{{ ENTITY_META.processes.itemIcon }}</mat-icon><span class=\"item__key-text\" [title]=\"t.processInstanceName || ''\">{{ t.processInstanceName || '-' }}</span>\n </span>\n <span>\n @if (t.endTime) {\n <mat-icon>flag</mat-icon>{{ t.endTime | formatDateTime }}\n }\n </span>\n </span>\n </div>\n }\n }\n </div>\n }\n </yuv-list>\n }\n </ymt-pane-body>\n\n <ymt-pane-footer>\n <mat-paginator class=\"paginator\"\n [length]=\"total()\"\n [pageIndex]=\"view().page\"\n [pageSize]=\"view().pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [attr.aria-label]=\"'yuv.app.bpm-management.pagination.aria' | translate\"\n (page)=\"onChangePage($event)\">\n </mat-paginator>\n </ymt-pane-footer>\n\n </ymt-pane>\n </ng-template>\n\n <!-- ===================================== DETAILS ==================================== -->\n <ng-template yuvSplitArea [size]=\"38.2\">\n <ymbpm-details\n [entity]=\"entity()\"\n [detail]=\"detail()\"\n [listItem]=\"selectedItem()\"\n [processTasks]=\"processTasks()\"\n [busy]=\"detailsBusy()\"\n [error]=\"detailsError()\"\n [selectedId]=\"selectedId()\"\n [canOpenDefinition]=\"definitionsEnabled\"\n [canOpenDeployment]=\"deploymentsEnabled\"\n [topBarActions]=\"detailsTopBarActions\"\n (changed)=\"onDetailsChanged($event)\"\n (openItem)=\"openItem($event.entity, $event.id)\"\n (showProcesses)=\"showProcessesOfDefinition($event)\" ></ymbpm-details>\n </ng-template>\n </yuv-split-view>\n\n @if (!split.isAreaVisible(Area.DETAILS)) {\n <ymbpm-pane-gutter\n icon=\"right_panel_open\"\n [label]=\"'yuv.app.bpm-management.details.aria' | translate\"\n [tooltip]=\"'yuv.app.bpm-management.pane.showDetails.tooltip' | translate\"\n (expand)=\"split.showArea(Area.DETAILS)\" />\n }\n</div>\n\n<!-- master header: filter panel toggle -->\n<ng-template #listActions>\n @if (quickFilters().length) {\n <mat-button-toggle-group class=\"quick-toggle\" [value]=\"view().quick\" (change)=\"onQuick($event.value)\"\n [attr.aria-label]=\"'yuv.app.bpm-management.statusFilter.aria' | translate\">\n @for (quick of quickFilters(); track quick.value) {\n <mat-button-toggle [value]=\"quick.value\">{{ quick.label | translate }}</mat-button-toggle>\n }\n </mat-button-toggle-group>\n }\n @let bar = filterBar();\n @let addable = bar?.addableColumns() ?? [];\n <button ymt-icon-button #addFilter\n [matMenuTriggerFor]=\"addFilterMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"!addable.length && !showLatestOnly()\"\n [matTooltip]=\"'yuv.app.bpm-management.filters.add' | translate\"\n [attr.aria-label]=\"'yuv.app.bpm-management.filters.add' | translate\">\n <mat-icon>filter_list</mat-icon>\n </button>\n <mat-menu #addFilterMenu=\"matMenu\">\n @for (column of addable; track column.name) {\n <button mat-menu-item (click)=\"bar?.edit(column, addFilter)\">{{ column.displayName | translate }}</button>\n }\n @if (showLatestOnly()) {\n @if (addable.length) {\n <mat-divider></mat-divider>\n }\n <button mat-menu-item role=\"menuitemcheckbox\" [attr.aria-checked]=\"view().latestOnly\" (click)=\"toggleLatestOnly()\">\n <mat-icon>{{ view().latestOnly ? 'check' : '' }}</mat-icon>{{ 'yuv.app.bpm-management.definitions.filter.onlyLatest' | translate }}\n </button>\n }\n </mat-menu>\n @if (sortFields().length) {\n <button ymt-icon-button\n [matMenuTriggerFor]=\"sortMenu\"\n [matTooltip]=\"'yuv.sort.tooltip' | translate\"\n [attr.aria-label]=\"'yuv.sort.tooltip' | translate\">\n <mat-icon>swap_vert</mat-icon>\n </button>\n <mat-menu #sortMenu=\"matMenu\">\n @for (field of sortFields(); track field.value) {\n <button mat-menu-item class=\"radio-item\" role=\"menuitemradio\" [attr.aria-checked]=\"view().sortBy === field.value\" (click)=\"patchView({ sortBy: field.value })\">\n <mat-icon>{{ view().sortBy === field.value ? icons.radioButtonChecked : '' }}</mat-icon>{{ field.label | translate }}\n </button>\n }\n <mat-divider></mat-divider>\n @for (order of sortOrders; track order.value) {\n <button mat-menu-item class=\"radio-item\" role=\"menuitemradio\" [attr.aria-checked]=\"view().sortOrder === order.value\" (click)=\"patchView({ sortOrder: order.value })\">\n <mat-icon>{{ view().sortOrder === order.value ? icons.radioButtonChecked : '' }}</mat-icon>{{ order.label | translate }}\n </button>\n }\n </mat-menu>\n }\n</ng-template>\n\n<!-- list pane top bar: hides the list (right aligned, next to the gutter it collapses into) -->\n<ng-template #masterActions>\n <ymbpm-pane-toggle-button\n icon=\"left_panel_close\"\n [tooltip]=\"'yuv.app.bpm-management.pane.hideList.tooltip' | translate\"\n (toggled)=\"split.hideArea(Area.MASTER)\" />\n</ng-template>\n\n<!-- details pane top bar: hides the details (left aligned, next to the gutter it collapses into) -->\n<ng-template #detailsTopBarActions>\n <ymbpm-pane-toggle-button\n align=\"start\"\n icon=\"right_panel_close\"\n [tooltip]=\"'yuv.app.bpm-management.pane.hideDetails.tooltip' | translate\"\n (toggled)=\"split.hideArea(Area.DETAILS)\" />\n</ng-template>\n","import { Route } from '@angular/router';\nimport { defaultEntityGuard, deploymentsGuard, processDefinitionsGuard } from './bpm-management.config';\nimport { YuvBpmManagementComponent } from './container/bpm-management.component';\n\n/**\n * Deployments, process definitions, processes and tasks are rendered by the same master/details\n * container, the entity comes from the route data. Deployments and process definitions are optional. The empty path opens the first enabled entity.\n */\nexport const YuvBpmManagementRoutes: Route[] = [\n { path: 'deployments', component: YuvBpmManagementComponent, data: { entity: 'deployments' }, canActivate: [deploymentsGuard] },\n { path: 'definitions', component: YuvBpmManagementComponent, data: { entity: 'definitions' }, canActivate: [processDefinitionsGuard] },\n { path: 'processes', component: YuvBpmManagementComponent, data: { entity: 'processes' } },\n { path: 'tasks', component: YuvBpmManagementComponent, data: { entity: 'tasks' } },\n { path: '', pathMatch: 'full', children: [], canActivate: [defaultEntityGuard] }\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i4","i1","nextId","i3","MatLabel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,MAAM,GAAG;AA6Hf,MAAM,sBAAsB,GAAG;AACpC,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,OAAO,EAAE;AACpG,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,QAAQ;;AAG9F,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,sCAAsC,EAAE;IAC1E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC;;AAG5E,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE;IAC7E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACnF,iBAAiB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,kDAAkD,EAAE;IAC5G,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE;;IAEnF,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,wCAAwC;;AAGzE,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE;;IAE7E,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACnF,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC;;AA+B5E,MAAM,SAAS,GAAG;AACvB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,OAAO;AACrB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,cAAc,EAAE,yBAAyB;AACzC,IAAA,iBAAiB,EAAE,cAAc;AACjC,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,oBAAoB,EAAE,wBAAwB;AAC9C,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,OAAO,EAAE;;AA6DJ,MAAM,gBAAgB,GAAG;;AAE9B,IAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;AACnH,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,cAAc,EAAE;AAC3G,IAAA,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,qDAAqD,EAAE,IAAI,EAAE,kBAAkB,EAAE;AAC5H,IAAA,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;;AAGpH,IAAA,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,sDAAsD,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAChI,IAAA,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE;;AAGpH,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,cAAc,EAAE;AAC3G,IAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gDAAgD,EAAE,IAAI,EAAE,aAAa,EAAE;AACvG,IAAA,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,kDAAkD,EAAE,IAAI,EAAE,eAAe;;AAGxG,MAAM,YAAY,GAAG;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE;;AAgBF,SAAU,cAAc,CAC5B,aAAqB,EACrB,MAAc,EACd,OAAuB,UAAU,EAAA;AAEjC,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,EAAE;AAE7B,IAAA,IAAI;AACF,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC;AAEpC,QAAA,MAAM,aAAa,GAAuD;AACxE,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE;AACT,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE;AACT;SACF;QAED,OAAO,IAAI,KAAK;cACZ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;cAC/C,IAAI,KAAK;kBACP,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;AACrD,kBAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5D;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,QAAA,OAAO,aAAa;IACtB;AACF;AAKO,MAAM,YAAY,GAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO;AAE5F;AACO,MAAM,eAAe,GAAyE;AACnG,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,2CAA2C,EAAE;AACnH,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,2CAA2C,EAAE;AAC1G,IAAA,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,yCAAyC,EAAE;AACzG,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,qCAAqC;;AAS5F,SAAU,eAAe,CAAC,CAAkB,EAAA;AAChD,IAAA,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;AACnG;AAEA;AACM,SAAU,iBAAiB,CAAC,CAAkB,EAAA;AAClD,IAAA,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,GAAG,QAAQ,GAAG,UAAU,IAAI,CAAC,CAAC,SAAS,GAAG,cAAc,GAAG,WAAW;AAC1G;AAEM,SAAU,kBAAkB,CAAC,CAAkB,EAAA;IACnD,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK;AAChK;AAEM,SAAU,YAAY,CAAC,CAAe,EAAA;IAC1C,OAAO,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;AACpE;AAEA;AACM,SAAU,cAAc,CAAC,CAAe,EAAA;IAC5C,OAAO,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,cAAc,GAAG,WAAW;AAC5E;AAEM,SAAU,eAAe,CAAC,CAAe,EAAA;AAC7C,IAAA,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK;AAC3G;AAEM,SAAU,kBAAkB,CAAC,CAA4B,EAAA;IAC7D,OAAO,CAAC,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;AAC5C;AAEA;AACM,SAAU,cAAc,CAAC,EAA6B,EAAA;AAC1D,IAAA,OAAO,eAAe,CAAC,WAAW,CAAC,QAAQ;AAC7C;AAEM,SAAU,qBAAqB,CAAC,CAA4B,EAAA;AAChE,IAAA,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,uBAAuB,CAAC,SAAS,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK;AACjG;;AC5YA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,KAA6B,EAAA;AAC5D,IAAA,IAAI,KAAyB;IAC7B,IAAI,IAAI,GAAyB,EAAE;AACnC,IAAA,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,WAAkC;QAChD,IAAI,GAAG,EAAE,EAAE;AAAE,YAAA,KAAK,GAAG,GAAG,CAAC,EAAE;QAC3B,IAAI,GAAG,EAAE,IAAI;YAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE;IAChD;AACA,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACxB;AAEA;;AAEG;AACG,SAAU,oBAAoB,CAAC,KAA6B,EAAA;IAChE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,KAAK;AAC/D;AAEA;;AAEG;AACG,SAAU,2BAA2B,CAAC,KAA6B,EAAA;IACvE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,KAAK,KAAK;AACtE;AAEA;;AAEG;AACG,SAAU,eAAe,CAAC,KAA6B,EAAA;AAC3D,IAAA,MAAM,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI;AAChF,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,aAAa,IAAI,eAAe,KAAK,KAAK,MAAM,CAAC,KAAK,aAAa,IAAI,sBAAsB,KAAK,KAAK,CAAC,CAAC;AAClJ;AAEA;;AAEG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAqD,EAAA;IAC3F,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,CAAa,CAAC;AACnD,IAAA,OAAO,CAAC,KAAK,EAAE,KAAK,KAClB,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5G;AAEA;;;AAGG;AACI,MAAM,kBAAkB,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;IAChE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACrC,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAA,CAAE,CAAC;AACnG,CAAC;AAEM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,CAAC;AAC9E,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,aAAa,EAAE,2BAA2B,CAAC;;AC5DnG;;;AAGG;SACa,oBAAoB,CAAC,MAAkB,EAAE,MAA0B,EAAE,SAAiC,EAAA;AAClH,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAwC,EAAE;AAChG,QAAA,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK;AAC9B,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE;AAC9D,QAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAkC,CAAC;IAC3E;AACA,IAAA,OAAO,MAAM;AACjB;AAEA;;AAEG;AACH,MAAe,aAAa,CAAA;AACxB;;;;;AAKG;AACO,IAAA,OAAO,wBAAwB,CACrC,cAAiB,EACjB,YAA0B,EAC1B,EAAqB,EAAA;AAErB,QAAA,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE;AACrC,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,YAAY,CAAC;AAEnD,YAAA,QAAQ,gBAAgB,CAAC,MAAM,CAAC;gBAC5B,KAAK,YAAY,CAAC,IAAI;oBAClB,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;oBACtE;gBACJ,KAAK,YAAY,CAAC,MAAM;AACpB,oBAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;oBAC3F;gBACJ,KAAK,YAAY,CAAC,IAAI;oBAClB,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,CAAC;oBACzE;gBACJ,KAAK,YAAY,CAAC,MAAM;oBACpB,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC;oBACvE;;QAEZ;AAEA,QAAA,OAAO,cAAc;IACzB;IAEQ,OAAO,gBAAgB,CAAC,gBAAqB,EAAA;QACjD,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/D,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QACjF;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE;AACzE,YAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3E;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE;AACvE,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QAC3E;aAAO;AACH,YAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QACrE;IACJ;IAEQ,OAAO,gBAAgB,CAC3B,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EACrB,EAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9D,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,kBAAkB,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AAC3G,gBAAA,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YACnG;AACA,YAAA,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,OAAO,YAAY,IAAI,EAAE;AAC/E,gBAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AAC3G,gBAAA,cAAc,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAClG;QACJ;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE;AACnE,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AACtG,gBAAA,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAC9F;QACJ;aAAO,IAAI,gBAAgB,CAAC,QAAQ,KAAK,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE;AACpE,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;AAC3E,gBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;AACtG,gBAAA,cAAc,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAC/F;QACJ;IACJ;AAEU,IAAA,OAAO,kBAAkB,CAC/B,eAAoB,EACpB,aAAqB,EACrB,iBAAsB,EAAA;QAEtB;IACJ;AACH;AAEK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAC/C,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE;KACb;IAKD,OAAO,iBAAiB,CAAC,YAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,gBAAgB,EAAE,EAAE,YAAY,CAAC;IAC9E;;AAGE,MAAO,uBAAwB,SAAQ,aAAa,CAAA;IACtD,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE;KACX;IAWD,OAAO,iBAAiB,CAAC,YAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,uBAAuB,EAAE,EAAE,YAAY,CAAC;IACrF;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;AAEpC,QAAA,IAAI,KAAK,KAAK,uBAAuB,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE;AACjG,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;AAAO,aAAA,IAAI,KAAK,KAAK,uBAAuB,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3G,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;AAGE,MAAO,aAAc,SAAQ,aAAa,CAAA;IAC5C,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,mBAAmB;AACvB,QAAA,mBAAmB,EAAE,qBAAqB;AAC1C,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,eAAe,EAAE,eAAe;AAChC,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,aAAa,EAAE,gBAAgB;AAC/B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,MAAM,EAAE;KACX;AAYD,IAAA,OAAO,iBAAiB,CAAC,YAA0B,EAAE,EAAoB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,aAAa,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;IAC/E;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;QAEpC,IAAI,KAAK,KAAK,aAAa,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACjD,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;aAAO,IAAI,KAAK,KAAK,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE;AAChD,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;AAGE,MAAO,UAAW,SAAQ,aAAa,CAAA;IACzC,OAAO,sBAAsB,GAAG;AAC5B,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,mBAAmB,EAAE,qBAAqB;AAC1C,QAAA,iBAAiB,EAAE,mBAAmB;AACtC,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,gBAAgB,EAAE,eAAe;AACjC,QAAA,eAAe,EAAE,cAAc;AAC/B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE;KACjB;AAaD,IAAA,OAAO,iBAAiB,CAAC,YAA0B,EAAE,EAAoB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5E;AAEU,IAAA,OAAgB,kBAAkB,CACxC,cAAmB,EACnB,YAAoB,EACpB,gBAAqB,EAAA;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;;YAEvC;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK;QAEpC,IAAI,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;AACpC,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAChF;aAAO,IAAI,KAAK,KAAK,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE;AAC7C,YAAA,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;QAC/E;IACJ;;;MC5PS,uBAAuB,CAAA;AAElC,IAAA,OAAO,iBAAiB,GAAG,EAAE;IACZ,UAAU,GAAG,iBAAiB;AACtC,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAEjD,IAAA,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,MAAyB,EAAE,IAA4C,EAAA;AAChH,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,IAAI,EAAE;AACR,YAAA,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACrE;QACA,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,CAAC,sBAAsB,CAAC;QAElG,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAClF;AAEA,IAAA,aAAa,CAAC,YAAoB,EAAA;QAChC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,aAAA,EAAgB,YAAY,CAAA,CAAE,EAAE,OAAO,CAAC,IAAI,CAAE;IACzE;AAEA,IAAA,sBAAsB,CAAC,YAAoB,EAAA;QACzC,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,aAAA,EAAgB,YAAY,CAAA,UAAA,CAAY,EAAE,OAAO,CAAC,IAAI,CAAE;IACnF;AAEA,IAAA,qBAAqB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAgC,EAAE,IAA4C,EAAA;AAC9H,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,IAAI,EAAE;;AAER,YAAA,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACrE;QACA,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,uBAAuB,CAAC,sBAAsB,CAAC;QAEzG,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,sBAAsB,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAC1F;AAEA,IAAA,oBAAoB,CAAC,2BAAmC,EAAA;AACtD,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAE9D,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,qBAAA,EAAwB,2BAA2B,EAAE,EACvE,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;AAEA,IAAA,8BAA8B,CAAC,2BAAmC,EAAE,MAAc,EAAE,gBAAyB,EAAA;AAC3G,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,yBAAyB,EAAE;SAC5B;QAED,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,qBAAA,EAAwB,2BAA2B,CAAA,CAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;aACjG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IAChC;IAEA,oBAAoB,CAAC,iBAAyB,EAAE,MAA8B,EAAA;QAC5E,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,EAAc,iBAAiB,CAAA,CAAE,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;IAClH;AAEA,IAAA,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,MAAsB,EAAE,IAA4C,EAAA;AAC3G,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,IAAI,EAAE;AACR,YAAA,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACrE;QACA,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC;QAE/F,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,UAAA,CAAY,EAC9B,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB;IACH;AAEA,IAAA,UAAU,CAAC,iBAAyB,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC;QAEpE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,EAAc,iBAAiB,EAAE,EACnD,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;AAEA,IAAA,iBAAiB,CAAC,iBAAyB,EAAA;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,EAAc,iBAAiB,CAAA,QAAA,CAAU,EAC3D,OAAO,CAAC,IAAI,CACb,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,MAAW,KAAI;AAClB,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK;AAAE,gBAAA,OAAO,MAAM;YAE3C,OAAO;AACL,gBAAA,GAAG,MAAM;gBACT,KAAK,EAAE,MAAM,CAAC;AACX,qBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AACnC,qBAAA,OAAO;aACX;QACH,CAAC,CAAC,CACH;IACH;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,MAAmB,EAAE,IAA4C,EAAA;AACpG,QAAA,IAAI,YAAY,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACvE,IAAI,IAAI,EAAE;AACR,YAAA,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACrE;QACA,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,sBAAsB,CAAC;QAC5F,IAAI,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI,EAAE;YACnC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC;QACvD;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAC,YAAY,EAAE,CAAE;IAC5E;AAEA,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;QAEjE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAC7B,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,OAAA,EAAU,MAAM,EAAE,EACpC,OAAO,CAAC,IAAI,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB;IACH;IAEA,UAAU,CAAC,MAAc,EAAE,QAAuB,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE;SACX;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAC/B,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,MAAM,CAAA,CAAE,EACpC,IAAI,EACJ,OAAO,CAAC,IAAI,CACb;IACH;IAEA,iBAAiB,CAAC,MAAc,EAAE,IAA4C,EAAA;QAC5E,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,MAAM,CAAA,WAAA,CAAa,EAC/C,IAAI,EACJ,OAAO,CAAC,IAAI,CACb;IACH;wGArJW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACCM,MAAM,iBAAiB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACrD,MAAM,iBAAiB,GAAG,EAAE;AAa5B,MAAM,WAAW,GAAG,CAAC,MAAiB,MAAiB;AAC5D,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,UAAU,EAAE,IAAI;;IAEhB,MAAM,EAAE,MAAM,KAAK,WAAW,GAAG,WAAW,GAAG,MAAM,KAAK,OAAO,GAAG,YAAY,GAAG,MAAM;AACzF,IAAA,SAAS,EAAE,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK;AACxE,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,QAAQ,EAAE;AACX,CAAA,CAAC;AAEF;;;AAGG;MAEU,yBAAyB,CAAA;AAC3B,IAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,IAAA,oBAAoB,GAAG,MAAM,GAAG,gBAAgB;;AAGhD,IAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAErC,IAAA,KAAK,GAAG,MAAM,CACrB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAiC,4EAC/H;;AAGD,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAiC,CAAC;IACxI;;IAGA,mBAAmB,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAsC;QAC/G,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;AACzC,QAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,iBAAiB;IAC5E;wGAtBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA;;4FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC/BlC;;;;AAIG;MASU,qBAAqB,CAAA;IACvB,WAAW,GAAG,eAAe;;AAGtC,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAe;AACxC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAa;IACnC,WAAW,GAAG,MAAM,EAAa;wGANtB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBlC,upDAqCA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAInF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,upDAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;;AEXjG;;;AAGG;MA6BU,oBAAoB,CAAA;IAC/B,OAAO,GAAG,MAAM,EAAQ;wGADb,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBrB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAZS,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,0TAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAwBrE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5BhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAA,QAAA,EACvE;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4HAAA,CAAA,EAAA;;;AClBH,IAAIC,QAAM,GAAG,CAAC;AAEd;;;AAGG;MA2BU,sBAAsB,CAAA;AACxB,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,IAAA,KAAK,GAAG,IAAI,WAAW,CAAc,IAAI,CAAC;;;IAI1C,SAAS,GAAqB,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,EACrH,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAClD;AACQ,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC,IAAA,EAAE,GAAG,CAAA,sBAAA,EAAyBA,QAAM,EAAE,EAAE;IACxC,WAAW,GAAG,uBAAuB;IACrC,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,UAAU,GAAG,KAAK;IAC3B,OAAO,GAAG,KAAK;IACf,QAAQ,GAAG,KAAK;IAChB,WAAW,GAAG,EAAE;IAChB,KAAK,GAAgB,IAAI;AAEzB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;IACpB;;AAGA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;IAC/D;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW;IACpC;AAEA,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACrF,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAClC;IAEA,gBAAgB,GAAA;;IAEhB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;;;AAIA,IAAA,SAAS,GAAiC,MAAK,EAAE,CAAC;;AAElD,IAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAgC,EAAA;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;QAC1B,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1C;aAAO;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACzC;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;wGAjGW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EArBtB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,CAAC,0BAO1F,CAAA,8FAAA,CAAgG,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARhG,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsBvC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA1BlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EACxC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,sBAAuB,CAAC,EAAE,CAAC,EAAA,IAAA,EAC9F;AACJ,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,yBAAyB,EAAE,aAAa;AACxC,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,YAAY,EAAE;AACf,qBAAA,EAAA,QAAA,EACS,CAAA,8FAAA,CAAgG,EAAA,MAAA,EAAA,CAAA,kIAAA,CAAA,EAAA;;;AClB5G,IAAI,MAAM,GAAG,CAAC;AAEd;;;AAGG;MAoCU,2BAA2B,CAAA;AAC7B,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAe;AACrC,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAe;;IAGnC,SAAS,GAAG,IAAI;AAChB,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC,IAAA,EAAE,GAAG,CAAA,4BAAA,EAA+B,MAAM,EAAE,EAAE;IAC9C,WAAW,GAAG,6BAA6B;IAC3C,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,UAAU,GAAG,KAAK;IAClB,UAAU,GAAG,KAAK;IAClB,KAAK,GAAG,IAAI;IACrB,OAAO,GAAG,KAAK;IACf,WAAW,GAAG,EAAE;AAEhB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ;IACrD;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK;IACjD;;AAGA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW;IACpC;IAEA,QAAQ,GAAA;AACN,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY;AACrD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C;AAEA,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAClC;IAEA,gBAAgB,GAAA;;IAEhB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;wGA/DW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,idA9B3B,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAO/F;;;;GAIT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZS,mBAAmB,6TAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA+BvC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAnCvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EACxC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,2BAA4B,CAAC,EAAE,CAAC,EAAA,IAAA,EACnG;AACJ,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,yBAAyB,EAAE,aAAa;AACxC,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,YAAY,EAAE;qBACf,EAAA,QAAA,EACS;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oPAAA,CAAA,EAAA;;;ACtBH;;;;AAIG;MA2CU,uBAAuB,CAAA;AACzB,IAAA,KAAK,GAA2B,EAAE,GAAG,SAAS,EAAE;AAEzD,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAkB;AAC5C,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,4EAAC;IAClC,WAAW,GAAG,MAAM,EAAU;AAErB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,8EAAC;wGAPnG,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCxB;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtBS,sBAAsB,gOAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,0TAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsCpF,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA1CnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,WACtC,CAAC,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAA,QAAA,EACtF;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA;;;MCSU,mBAAmB,CAAA;AACrB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE7B,IAAA,OAAO;;AAG9B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IACzB,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC7B,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE5D,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACzC,QAAA,OAAO,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;QAC3C,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,YAAY,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AACzE,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;AAC/E,IAAA,IAAI,cAAc,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAgB,CAAC,CAAC;;AAGrE,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,CAAC;aACf,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC;aACjB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACN;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;QAE3C,IAAI,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AACzC,YAAA,OAAO,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAC/C;aAAO;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;YACrC,OAAO,KAAK,KAAK,IAAI;QACvB;IACF;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK;IACtE;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AACnC,YAAA,OAAO,EAAE;AACV,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEQ,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,UAAU,CAAC,KAAyB,EAAA;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AACvE,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AACvD,oBAAA,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK;AACxC,oBAAA,OAAO,EAAE,KAAK,CAAC,OAAO,YAAY,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG;AAC1D,iBAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC1B;iBAAO;gBACL,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;sBACxF,KAAK,CAAC;sBACN,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AAE3B,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,oBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AACvD,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE;AACV,iBAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC1B;QACF;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;QAC3C,IAAI,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACzC,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,cAAc,CAAC,KAAK;YAEtD,IAAI,CAAC,QAAQ,CAAC;AACZ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,YAAY,CAAC;AACpB,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;YAErC,IAAI,CAAC,QAAQ,CAAC;AACZ,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,YAAY,CAAC;AACpB,aAAA,CAAC;QACJ;IACF;wGA/KW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAXnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQU,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDvB,8oBAcA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,sBAAsB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,2BAA2B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,gBAAgB,0BALhB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAkBJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA9B/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,uBAAuB;wBACvB,sBAAsB;wBACtB,2BAA2B;wBAC3B;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,8oBAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA;;sBAO7C,SAAS;uBAAC,UAAU;;;MERV,qBAAqB,CAAA;;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IACzB,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAE5D,IAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,0EAAC;AAET,IAAA,OAAO;IAE9B,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;AAED,IAAA,IAAI,aAAa,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AAC1E,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;IAEvE,cAAc,GAAwB,IAAI;IAC1C,eAAe,GAAkB,IAAI;;AAGrC,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,6BAA6B,EAAE;QAEpC,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACzB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;YACF;AACF,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YACrD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACnC;QAEA,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,6BAA6B,EAAE;IACtC;IAEA,6BAA6B,GAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;aACtC,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE;aAEvB,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACtC,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;AACzE,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACxD;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACtC,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEQ,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,UAAU,CAAC,KAAyB,EAAA;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;kBACtF,KAAK,CAAC;kBACN,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AAE7B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACvB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,QAAQ,EAAE;AACX,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QAC/C,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACpC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGA3JW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWU,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDvB,mlBAWM,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,8BACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFvB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAcJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA3BjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,mlBAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA;;sBAWA,SAAS;uBAAC,UAAU;;;MEZV,qBAAqB,CAAA;;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,8EAAC;AACnC,IAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,wFAAC;;AAEzC,IAAA,WAAW,GAAG,KAAK,CAAS,uCAAuC,kFAAC;;AAG3D,IAAA,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAE3C,IAAA,aAAa,GAAG,IAAI,WAAW,EAAE;AAEjC,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;;AAGO,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC;QAEA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC7C,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AACtC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1D;aAAO;AACL,YAAA,OAAO,KAAK,IAAI,KAAK,KAAK,EAAE;QAC9B;IACF;;IAGA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IACvE;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAAE,YAAA,OAAO,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;AAC7C,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;IAClD;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAEQ,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,UAAU,CAAC,KAAyB,EAAA;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAG;AAChD,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClG;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACtE;QACF;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QACtC,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;;QAE7F,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;IACtE;wGA5FW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCH,uiDAyCA,gbDxBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,ojBAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,8BAEf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,uHAHvB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAeJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzBjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,oBAAoB;wBACpB,uBAAuB;qBACxB,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,uiDAAA,EAAA,MAAA,EAAA,CAAA,yXAAA,CAAA,EAAA;;;MESU,mBAAmB,CAAA;;AAE9B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IACzB,SAAS,GAAG,KAAK,CAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAErC,IAAA,OAAO;IAE9B,UAAU,GAAG,IAAI,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,IAAI,WAAW,CAAS,gBAAgB,CAAC,MAAM,CAAC,KAAK;AAChE,KAAA,CAAC;AAEF,IAAA,KAAK,GAAG;AACN,QAAA,GAAG,SAAS;KACb;;IAGD,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK;IACjH;AAEA,IAAA,IAAI,WAAW,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC,CAAC;AACxE,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAC,CAAC;IAEvE,YAAY,GAAwB,IAAI;IACxC,aAAa,GAAkB,IAAI;;AAGnC,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAErD,IAAI,CAAC,2BAA2B,EAAE;QAElC,IAAI,CAAC,eAAe,CAAC;aAClB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EACjC,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAmB,KAAI;AAC5C,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACzB,IAAI,CAAC,iBAAiB,EAAE;gBAC1B;YACF;AACF,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YACjD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACjC;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;QAC1B;aAAO;YACL,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACtG,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxB;QACF;QACA,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEA,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE;aAEX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAa,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACzB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;iBAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;gBAC9C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACtE,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;YACF;AACF,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAA;AAC3C,QAAA,OAAO,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IACpD;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAC3C,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAI;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe;AAC/B,SAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAExB,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC;AACnF,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;IACF;AAEQ,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,UAAU,CAAC,KAAyB,EAAA;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;YAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;kBACtF,KAAK,CAAC;AACR,kBAAE,IAAI,CAAC,eAAe,EAAE;AAE1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvB,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AAC7C,gBAAA,QAAQ,EAAE;AACX,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;QAC3C,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;YACpC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGAjKW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASU,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDvB,6iBAWM,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,8BACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFvB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAcJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA3B/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,6iBAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA;;sBASA,SAAS;uBAAC,UAAU;;;MEdV,mBAAmB,CAAA;;AAE9B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEhB,IAAA,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC3C,IAAA,UAAU,GAAG,IAAI,WAAW,CAAgB,IAAI,CAAC;AAEjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,uFAAC;IAEvB,eAAe,GAAG,KAAK;;AAGvB,IAAA,QAAQ,GAAwC,MAAK,EAAE,CAAC;;AAExD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAExC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChF;AAEQ,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,UAAU,CAAC,KAAyB,EAAA;;AAElC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1F;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD;QACF;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC7B;IAEA,WAAW,CAAC,SAAS,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAEpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC9B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAuC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEQ,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QAC5C,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,KAAK,IAAI,IAAI;AACpB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK;YACvC,IAAI,EAAE,YAAY,CAAC;AACpB,SAAA,CAAC;IACJ;wGA9DW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,oiBAYA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,6TACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,uHAHvB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAeJ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,qBAAqB;wBACrB,oBAAoB;wBACpB;qBACD,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,oiBAAA,EAAA,MAAA,EAAA,CAAA,qgCAAA,CAAA,EAAA;;;AEHH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAuB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvG;AACA,MAAM,cAAc,GAA2B;AAC7C,IAAA,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG;AACpC,IAAA,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG;AAC1C,IAAA,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG;AACvC,IAAA,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG;AACpC,IAAA,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG;CACjC;AAWD;;;;;AAKG;MAqBU,kBAAkB,CAAA;AACpB,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;AACnD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGrC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAY;AACpC,IAAA,OAAO,GAAG,KAAK,CAAe,EAAE,8EAAC;;AAEjC,IAAA,MAAM,GAAG,KAAK,CAAC,EAAE,6EAAC;IAClB,aAAa,GAAG,MAAM,EAAgB;IACtC,WAAW,GAAG,MAAM,EAAQ;IAEnB,YAAY,GAAG,YAAY;AAC3B,IAAA,SAAS,GAAwB;AACxC,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACvF,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;KACvF;AAEgB,IAAA,OAAO,GAAG,SAAS,CAAC,mBAAmB,8EAAC;AAEhD,IAAA,OAAO,GAAG,MAAM,CAAiD,IAAI,8EAAC;AACtE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,oFAAC;AAC3F,IAAA,OAAO,GAAG,IAAI,WAAW,CAAqB,IAAI,CAAC;AACnD,IAAA,IAAI;IAEK,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAClE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,qFAAC;;IAExF,KAAK,GAAG,QAAQ,CAAS,MAChC,IAAI,CAAC,WAAW;AACb,SAAA,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClC,GAAG,CAAC,MAAM,IAAG;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;QACzD,OAAO;YACL,MAAM;AACN,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI;YACvE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAC1C,YAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;SAC1D;IACH,CAAC,CAAC,4EACL;IACQ,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE9E,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;IAC1B;IAEA,IAAI,CAAC,MAAc,EAAE,MAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACvF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;YACtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;;AAEhC,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,EAAE;AAC7D,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAClB;AACF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtC;;IAGA,KAAK,CAAC,YAAY,GAAG,KAAK,EAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM;AACrC,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,YAAY,EAAE;YAChB,eAAe,CAAC,MAAM,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5F;IACF;;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE;AAC5H,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB;IACF;;IAGA,WAAW,GAAA;QACT,eAAe,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,aAAa,CAAc,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;YAC7G,QAAQ,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,CAAC,MAAc,EAAA;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,KAAK,MAAM,EAAE;YACrC,IAAI,CAAC,KAAK,EAAE;QACd;QACA,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;AACrC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC;;AAGA,IAAA,SAAS,CAAC,MAAc,EAAE,MAAmB,EAAE,KAAc,EAAA;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;QAC7E,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;AACpE,QAAA,QAAQ,MAAM,CAAC,MAAM,EAAE,IAAI;YACzB,KAAK,YAAY,CAAC,MAAM;gBACtB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YAC/C,KAAK,YAAY,CAAC,IAAI;gBACpB,OAAO,MAAM,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC;AAClD,sBAAE,CAAA,EAAG,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACvF,sBAAE,CAAA,EAAG,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,IAAI,EAAE;AACxG,YAAA;AACE,gBAAA,OAAO,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE;;IAE7G;;IAGA,SAAS,CAAC,QAA4B,EAAE,KAAa,EAAA;QACnD,QAAQ,QAAQ;AACd,YAAA,KAAK,gBAAgB,CAAC,QAAQ,CAAC,KAAK;gBAClC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG;AACrB,YAAA,KAAK,gBAAgB,CAAC,WAAW,CAAC,KAAK;gBACrC,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG;AACpB,YAAA,KAAK,gBAAgB,CAAC,SAAS,CAAC,KAAK;gBACnC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;AACpB,YAAA;AACE,gBAAA,OAAO,CAAA,EAAG,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE;;IAEtE;IAEA,WAAW,CAAC,MAAc,EAAE,KAAc,EAAA;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE;AAChG,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AACrD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAClH;;AAGA,IAAA,KAAK,CAAC,KAAuC,EAAA;QAC3C,OAAO,KAAK,GAAG,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE;IAChG;IAEA,OAAO,CAAC,IAAY,EAAE,KAAyB,EAAA;QAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;AACrC,QAAA,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC,OAAO,CAAC,KAAK;AACxG,QAAA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QAC1G,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;QACvB;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC;wGAlJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,aAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmBQ,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5F1D,q5GA+DA,+1DDJI,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,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,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,kIACrB,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EANnB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWJ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBApB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,eAAe,EAAE,aAAa,EAAE,EAAA,OAAA,EAC/B;wBACP,aAAa;wBACb,mBAAmB;wBACnB,aAAa;wBACb,aAAa;wBACb,6BAA6B;wBAC7B,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB;AACD,qBAAA,EAAA,QAAA,EAAA,q5GAAA,EAAA,MAAA,EAAA,CAAA,wyDAAA,CAAA,EAAA;0eAuBoC,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEvF1D;;;;;;;;AAQG;MAQU,mBAAmB,CAAA;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAClC;AACgG;AAChG,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;IACjC,MAAM,GAAG,MAAM,EAAQ;wGAPZ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,omBCrBhC,giBAiBA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAI9C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,giBAAA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA;;;AEZ5D;;;AAGG;MAQU,yBAAyB,CAAA;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;IAClC,OAAO,GAAG,MAAM,EAAQ;wGAHb,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,kXChBtC,4MASA,EAAA,MAAA,EAAA,CAAA,6FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,+TAAE,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAItD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,EAAA,QAAA,EAAA,4MAAA,EAAA,MAAA,EAAA,CAAA,6FAAA,CAAA,EAAA;;;MEJvD,kBAAkB,CAAA;AACpB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErD,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;QACrB,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAClE;wGANW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACCD;MASa,0BAA0B,CAAA;AACrC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAsB;;AAEjD,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;IAChC,cAAc,GAAG,MAAM,EAAU;IAExB,kBAAkB,GAAG,kBAAkB;IACvC,qBAAqB,GAAG,qBAAqB;wGAP3C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBvC,u0HA2FA,EAAA,MAAA,EAAA,CAAA,49EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9EY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAvB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAY,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIxE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,u0HAAA,EAAA,MAAA,EAAA,CAAA,49EAAA,CAAA,EAAA;;;AEEtF;MASa,iCAAiC,CAAA;AAC5C,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAA6B;;AAExD,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;IAChC,cAAc,GAAG,MAAM,EAAU;;IAEjC,aAAa,GAAG,MAAM,EAAwB;;AAG9C,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,oBAAoB;AAC5D,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;AAC9B,QAAA,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC;QACnC,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,QAAiB;AACxB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,sDAAsD;gBAC7D,KAAK,EAAE,OAAO,GAAG,SAAS;AAC1B,gBAAA,IAAI,EAAE,4DAA4D;AAClE,gBAAA,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS;AACjC,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,WAAoB;AAC3B,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,yDAAyD;AAChE,gBAAA,KAAK,EAAE,CAAC,EAAE,SAAS,IAAI,CAAC;AACxB,gBAAA,IAAI,EAAE,0DAA0D;AAChE,gBAAA,UAAU,EAAE;AACb;SACF;AACH,IAAA,CAAC,4EAAC;;AAGF,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,4EAAC;AAE/E,IAAA,IAAI,CAAC,KAAkB,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IACxE;wGAtCW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB9C,usFAsDA,EAAA,MAAA,EAAA,CAAA,ijHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA3C,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1C,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAR7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,cAChC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,usFAAA,EAAA,MAAA,EAAA,CAAA,ijHAAA,CAAA,EAAA;;;AEVtF;;AAEG;MASU,uBAAuB,CAAA;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErC,YAAY,GAAG,YAAY;IAC3B,eAAe,GAAG,eAAe;AAE1C,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAmB;AAC3C,IAAA,KAAK,GAAG,KAAK,CAAiB,EAAE,4EAAC;;AAEjC,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;IAChC,QAAQ,GAAG,MAAM,EAAU;IAC3B,cAAc,GAAG,MAAM,EAAU;;IAGjC,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3I,IAAA,cAAc,GAAG,MAAM,CAAC,EAAE,qFAAC;AAC3B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,IAAI,EAAE;AAC3C,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAC,KAAK,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACtF,IAAA,CAAC,gFAAC;;IAGF,QAAQ,CAAC,IAAmB,EAAE,EAAkB,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC;AACtC,QAAA,MAAM,KAAK,GAAuB;YAChC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACpC,YAAA,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5C,YAAA,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE;SACzB;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACjC,CAAC,CACF;AACD,QAAA,OAAO;AACJ,aAAA,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC;AACtB,aAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAA,CAAE,EAAE,EAAE,CAAC,EAAE,CAAC;aAC5F,IAAI,CAAC,GAAG,CAAC;IACd;wGA1CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpC,21SA6KA,EAAA,MAAA,EAAA,CAAA,s+LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5JY,aAAa,qLAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAsB,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA1E,aAAa,6CAAY,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI1F,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,6BAA6B,CAAC,EAAA,QAAA,EAAA,21SAAA,EAAA,MAAA,EAAA,CAAA,s+LAAA,CAAA,EAAA;;;MEU1H,sBAAsB,CAAA;AACxB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEpD,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4B;AACxC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,8EAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,4EAAC;IAE7C,cAAc,GAAG,cAAc;AAE/B,IAAA,KAAK,GAAG;AACN,QAAA,GAAG;KACJ;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;IAC5D;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;IAC5D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,iBAAiB,IAAI,EAAE;IAC5D;IAEA,aAAa,CAAC,IAAY,EAAE,QAAiB,EAAA;QAC3C,QAAQ,IAAI;AACV,YAAA,KAAK,YAAY;gBACf,OAAO,QAAQ,KAAK,IAAI,GAAG,YAAY,GAAG,YAAY;AACxD,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;AAC7B,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC5B,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;IAEA,cAAc,CAAC,IAAY,EAAE,QAAiB,EAAA;AAC5C,QAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACzB,YAAA,OAAO,QAAQ,KAAK,IAAI;gBACtB;kBACG,kEAAkE;QACzE;AACA,QAAA,OAAO,kDAAkD,IAAI,CAAC,WAAW,EAAE,EAAE;IAC/E;wGA7CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,iNC3BnC,mmHAsFA,EAAA,MAAA,EAAA,CAAA,w+KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvEI,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,eAAe,8BACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,6BAA6B,iEAD7B,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAMJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,mmHAAA,EAAA,MAAA,EAAA,CAAA,w+KAAA,CAAA,EAAA;;;AEbH;;;;AAIG;MASU,oBAAoB,CAAA;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAgB;IACrC,WAAW,GAAG,MAAM,EAAU;wGAFnB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBjC,q3HAwFA,EAAA,MAAA,EAAA,CAAA,47EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrEY,aAAa,qLAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAqC,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAxF,aAAa,6CAAE,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAIhF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,EAAA,QAAA,EAAA,q3HAAA,EAAA,MAAA,EAAA,CAAA,47EAAA,CAAA,EAAA;;;MEExI,wBAAwB,CAAA;AAC1B,IAAA,UAAU,GAAG,MAAM,EAAC,YAAsC,EAAC;AAC3D,IAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvB,IAAA,MAAM;IAE3B,OAAO,GAAA;QACL,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5C;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;wGAZW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBrC,yyBAcA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFI,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFR,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAOJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd;AACH,qBAAA,EAAA,QAAA,EAAA,yyBAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA;;sBAQE,SAAS;uBAAC,QAAQ;;;MEKR,0BAA0B,CAAA;AAC5B,IAAA,UAAU,GAAG,MAAM,EAAC,YAAwC,EAAC;AAC7D,IAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAA,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;IAEjC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AACvC,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC;IACF;wGAfW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BvC,kuBAcA,EAAA,MAAA,EAAA,CAAA,mNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCI,YAAY,8BACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,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,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,iGAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,qBAAqB,gLACrB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHlB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FASJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAlBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAC5B;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,qBAAqB;wBACrB,eAAe;wBACf;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,kuBAAA,EAAA,MAAA,EAAA,CAAA,mNAAA,CAAA,EAAA;;;MEYL,8BAA8B,CAAA;AAChC,IAAA,UAAU,GAAG,MAAM,EAAC,YAA4C,EAAC;AACjE,IAAA,IAAI,GAA8B,MAAM,CAAC,eAAe,CAAC;IAEzD,YAAY,GAAG,IAAI,WAAW,CACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAC/D;IAEQ,YAAY,GAAG,IAAI,WAAW,CACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAC/D;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAE1C,QAAA,MAAM,MAAM,GAAgC;AAC1C,YAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AAC9F,YAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG;SAC7F;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/B;wGAzBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,yFCtC3C,ikCAoBA,EAAA,MAAA,EAAA,CAAA,+QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,6TACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,qBAAqB,gLACrB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClBG,UAAQ,iDAJR,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FASJ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAjB1C,SAAS;+BACE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,qBAAqB;wBACrB,eAAe;wBACf,kBAAkB;wBAClBA;AACH,qBAAA,EAAA,QAAA,EAAA,ikCAAA,EAAA,MAAA,EAAA,CAAA,+QAAA,CAAA,EAAA;;;AEMD;;;;AAIG;MAoBU,gBAAgB,CAAA;AAClB,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,IAAA,QAAQ,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC5C,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAExB,IAAA,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE;IACxB,sBAAsB,GAAG,sBAAsB;IAC/C,eAAe,GAAG,eAAe;IACjC,iBAAiB,GAAG,iBAAiB;IACrC,kBAAkB,GAAG,kBAAkB;IACvC,YAAY,GAAG,YAAY;IAC3B,cAAc,GAAG,cAAc;IAC/B,eAAe,GAAG,eAAe;IACjC,kBAAkB,GAAG,kBAAkB;IACvC,qBAAqB,GAAG,qBAAqB;AAEtD,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAa;IACpC,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;;IAErC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;;AAEvC,IAAA,YAAY,GAAG,KAAK,CAAiB,EAAE,mFAAC;AACxC,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AACnB,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;AACpB,IAAA,UAAU,GAAG,KAAK,CAAgB,IAAI,iFAAC;;AAEvC,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;AAChC,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;IAChC,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;;IAG7C,OAAO,GAAG,MAAM,EAAsB;IACtC,QAAQ,GAAG,MAAM,EAAqC;IACtD,aAAa,GAAG,MAAM,EAAwB;IAErC,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,aAAa,GAAI,IAAI,CAAC,MAAM,EAAqC,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAC9H,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,aAAa,GAAI,IAAI,CAAC,MAAM,EAA4C,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAErI,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,aAAa;AAAE,YAAA,OAAO,SAAS;QACrD,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AAC1C,IAAA,CAAC,uFAAC;IACO,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,WAAW,GAAI,IAAI,CAAC,MAAM,EAAkC,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACtH,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,GAAI,IAAI,CAAC,MAAM,EAA+B,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE5G,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,iFAAC;AACpE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,GAAG,EAAE;AAC7C,IAAA,CAAC,kFAAC;AACO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qFAAC;;;AAIjE,IAAA,uBAAuB,CAAC,MAA8B,EAAA;AACpD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC1C,QAAA,IAAI,CAAC,UAAU;YAAE;AACjB,QAAA,MAAM,GAAG,GAAG,CAAA,2CAAA,EAA8C,MAAM,EAAE;AAClE,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,wBAAwB,EAAE;AAC9B,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,CAAC;gBAC9C,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAC;gBAC1D,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,+BAAA,CAAiC,CAAC;gBACjF,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,qBAAA,CAAuB;AACvE;SACF;AACA,aAAA,WAAW;AACX,aAAA,SAAS,CAAC,CAAC,gBAAqC,KAAI;YACnD,IAAI,gBAAgB,KAAK,SAAS;gBAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC;gBAC9F,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,QAAA,CAAU,CAAC,CAAC;;AAEtE,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3B,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;oBAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,MAAM,CAAA,uBAAA,CAAyB,EAAE,CAAC,CAAC;AACnE,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,CAAC,CAAC;gBACpE;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;;;AAIA,IAAA,oBAAoB,CAAC,MAA8B,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,GAAG,GAAG,CAAA,uCAAA,EAA0C,MAAM,EAAE;AAC9D,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,gBAAgB,EAAE;AACtB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,CAAC;gBAC9C,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAC;gBAC1D,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,qBAAA,CAAuB;AACvE;SACF;AACA,aAAA,WAAW;AACX,aAAA,SAAS,CAAC,CAAC,OAAgB,KAAI;AAC9B,YAAA,IAAI,CAAC,OAAO;gBAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;gBAC/D,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,QAAA,CAAU,CAAC,CAAC;;AAEtE,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3B,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;oBAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,MAAM,CAAA,YAAA,CAAc,EAAE,CAAC,CAAC;AACxD,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,CAAC,CAAC;gBACpE;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;;IAGA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AACrH,aAAA,WAAW;AACX,aAAA,SAAS,CAAC,CAAC,QAAgB,KAAI;YAC9B,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,oDAAoD,CAAC;YAC/F;AACF,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,gBAAgB,EAAE;AACtB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oDAAoD,CAAC;gBACpF,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,8DAA8D;AAChG;SACF;AACA,aAAA,WAAW;AACX,aAAA,SAAS,CAAC,CAAC,OAAgB,KAAI;YAC9B,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,sDAAsD,CAAC;YAC7F;AACF,QAAA,CAAC,CAAC;IACN;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,CAAC;aACF,IAAI,CAAC,8BAA8B,EAAE;AACpC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE;AACJ,gBAAA,YAAY,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AAChE,gBAAA,YAAY,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;AAChE;SACF;AACA,aAAA,WAAW;AACX,aAAA,SAAS,CAAC,CAAC,MAA+C,KAAI;YAC7D,IAAI,MAAM,KAAK,SAAS;gBAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;gBACzD,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;;AAE7G,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC9B,CAAC;AACD,gBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qDAAqD,CAAC;AACtH,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,eAAe,CAAC,MAAc,EAAE,QAAuB,EAAE,UAAkB,EAAA;QACzE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;YACnD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAQ,KAAI;gBAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,CAAC,CAAC;AAClE,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;YACxG;AACD,SAAA,CAAC;IACJ;wGAhMW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChE7B,6uLAwHA,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtEI,aAAa,qLAEb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,sBAAsB,gOACtB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,iCAAiC,wKACjC,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EARpB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,QAAQ;wBACR,sBAAsB;wBACtB,gBAAgB;wBAChB,0BAA0B;wBAC1B,iCAAiC;wBACjC,uBAAuB;wBACvB;AACD,qBAAA,EAAA,QAAA,EAAA,6uLAAA,EAAA,MAAA,EAAA,CAAA,w8BAAA,CAAA,EAAA;;;AEAH;;;;AAIG;MA+BU,yBAAyB,CAAA;AAC3B,IAAA,gBAAgB,GAAG,MAAM,GAAG,uBAAuB;IACnD,eAAe,GAAG,iBAAiB;;AAEnC,IAAA,mBAAmB,GAAmE;QAC7F,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QACzD,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;AAClI,QAAA,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;KACzE;AACQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,iFAAC;AAC1E,IAAA,UAAU,GAA0C;AAC3D,QAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAC7C,QAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;KAC9C;;IAEQ,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAW;AACzC,IAAA,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE;IACxB,WAAW,GAAG,eAAe;IAC7B,sBAAsB,GAAG,sBAAsB;IAC/C,eAAe,GAAG,eAAe;IACjC,kBAAkB,GAAG,kBAAkB;IACvC,YAAY,GAAG,YAAY;IAC3B,eAAe,GAAG,eAAe;IACjC,kBAAkB,GAAG,kBAAkB;IACvC,qBAAqB,GAAG,qBAAqB;AAE7C,IAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,QAAQ,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC1C,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGnD,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnD,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC;AAC1D,IAAA,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAe;;AAGpC,IAAA,SAAS,GAAG,SAAS,CAAC,kBAAkB,gFAAC;;IAGzC,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/D,kBAAkB,GAAG,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACtE,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAGzD,IAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAc,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,WAAwB,EAAE,CAAC;AACxH,IAAA,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;AAEpG,IAAA,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;;AAG5G,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACzB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,2EAAC;AAClD,IAAA,KAAK,GAAG,MAAM,CAAY,EAAE,4EAAC;;IAE7B,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjF,IAAA,KAAK,GAAG,MAAM,CAAC,CAAC,4EAAC;AACjB,IAAA,IAAI,GAAG,MAAM,CAAC,KAAK,2EAAC;AAEpB,IAAA,WAAW,GAAG,QAAQ,CAAc,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,kFAAC;AACxE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mFAAC;AAC3D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,oFAAC;AACrE;;;AAGG;AACM,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,aAAa,qFAAC;AAChE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;AAC/F,IAAA,CAAC,uFAAC;;AAGO,IAAA,MAAM,GAAG,MAAM,CAAsB,SAAS,6EAAC;AAC/C,IAAA,YAAY,GAAG,MAAM,CAAiB,EAAE,mFAAC;AACzC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAErC,IAAA,QAAQ;AACR,IAAA,UAAU;IACV,UAAU,GAAkB,IAAI;;IAEhC,OAAO,GAAG,KAAK;AAEf,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;;YAEhC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;AAC5F,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAChD,QAAA,CAAC,CAAC;;;QAGF,iBAAiB,CAAC,MAAK;AACrB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAAE;YACjC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAc,CAAA,wBAAA,EAA2B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,EAAA,CAAI,CAAC,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1I,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;AAEN,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO;AAC9G,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9C;;AAGA,IAAA,SAAS,CAAC,KAAyB,EAAE,SAAS,GAAG,IAAI,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7G;;AAGA,IAAA,aAAa,CAAC,KAAkB,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE;AACtC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC;QAC7H;IACF;AAEA,IAAA,OAAO,CAAC,KAA8B,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC;IAC3C;AAEA,IAAA,iBAAiB,CAAC,OAAqB,EAAA;QACrC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACvC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;IACzD;AAEA,IAAA,YAAY,CAAC,KAAgB,EAAA;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;;YAE3C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;QAClD;IACF;IAEA,YAAY,GAAA;;QAEV,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;;QAEvC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClC;;AAGA,IAAA,gBAAgB,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACrD;;AAGA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QAChC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;QAC9C;IACF;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;AAC5B,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;QAC9B;IACF;;;IAIA,QAAQ,CAAC,MAAiB,EAAE,EAAiB,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5B;AAEA,IAAA,yBAAyB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAwB,EAAA;QACrE,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;QACrH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAChK,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAClC;;;AAIA,IAAA,WAAW,CAAC,IAAa,EAAA;QACvB,OAAO,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;IACvD;AAEA,IAAA,YAAY,CAAC,IAAa,EAAA;AACxB,QAAA,OAAO,IAA0B;IACnC;AAEA,IAAA,YAAY,CAAC,IAAa,EAAA;AACxB,QAAA,OAAO,IAAiC;IAC1C;AAEA,IAAA,SAAS,CAAC,IAAa,EAAA;AACrB,QAAA,OAAO,IAAuB;IAChC;AAEA,IAAA,MAAM,CAAC,IAAa,EAAA;AAClB,QAAA,OAAO,IAAoB;IAC7B;;AAGA,IAAA,SAAS,CAAC,MAAiB,EAAE,EAAiB,EAAE,UAAU,GAAG,KAAK,EAAA;;AAEhE,QAAA,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;QAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACrE,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;AAChE,YAAA,mBAAmB,EAAE,OAAO;YAC5B;AACD,SAAA,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,MAAiB,EAAE,IAAe,EAAE,MAAc,EAAA;QAClE,MAAM,OAAO,GAAiB,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAClD,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;QACzG;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAClE;AACA,QAAA,OAAO,OAAO;IAChB;;IAGA,aAAa,CAAC,MAAiB,EAAE,KAAkB,EAAA;QACjD,QAAQ,MAAM;AACZ,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,KAAK,KAAK,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAAK,GAAG,SAAS;AACvI,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,KAAK,KAAK,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS;AACrH,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,KAAK,KAAK,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,KAAK,WAAW,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS;AAChJ,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAE,IAAe,EAAE,MAAc,EAAA;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;QAC5D,QAAQ,MAAM;AACZ,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACxJ,KAAK,aAAa,EAAE;gBAClB,MAAM,MAAM,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACjE,gBAAA,MAAM,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;AACvE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1H;AACA,YAAA,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;AACrH,oBAAA,EAAE,EAAE,IAAI,CAAC,MAAM,KAAK,eAAe,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;oBAC1E,KAAK,EAAE,IAAI,CAAC;AACb,iBAAA,CAAC;AACJ,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;IAEjK;AAEA;;;;;AAKG;IACH,SAAS,CAAC,MAAiB,EAAE,IAAe,EAAE,MAAc,EAAE,OAAwC,QAAQ,EAAA;AAC5G,QAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,EAAE,QAAQ,IAAG;gBACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;gBACpC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC;AAC9E,gBAAA,IAAI,UAAU,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;;oBAGvE,MAAM,EAAE,GAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/G,oBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,KAAK,aAAa,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;oBAClH;gBACF;;gBAEA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,gBAAA,IAAI,KAAK,KAAK,CAAC,UAAU,KAAK,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;oBAC5D,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;gBACxC;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAU,KAAI;gBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,EAAE,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;AACD,SAAA,CAAC;IACJ;IAEA,cAAc,CAAC,MAAiB,EAAE,EAAU,EAAA;QAC1C,QAAQ,MAAM;YACZ,KAAK,aAAa,EAAE;AAClB,gBAAA,MAAM,iBAAiB,GAAG,IAAI,uBAAuB,EAAE;AACvD,gBAAA,iBAAiB,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;AACvE,gBAAA,iBAAiB,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;AACxE,gBAAA,OAAO,QAAQ,CAAC;oBACd,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC3C,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,oBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AACrH,iBAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM;oBAC/C,IAAI,EAAE,UAAU,IAAI,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,IAAI,EAAE;iBACzG,CAAC,CAAC,CACJ;YACH;AACA,YAAA,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7E,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAC3G,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,CACpH;AACH,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;IAE3G;;IAGA,cAAc,CAA2C,IAAO,EAAE,EAAU,EAAA;AAC1E,QAAA,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAkB;AAChE,QAAA,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;IACjD;IAEA,YAAY,CAAC,MAAiB,EAAE,EAAiB,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,MAAM,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE;AACnC,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;;AAE3B,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B;QACA,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;YAC1D,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAI;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,CAAU,KAAI;gBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAA,QAAA,CAAU,EAAE,CAAC,CAAC;AACzD,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B;AACD,SAAA,CAAC;IACJ;;AAGS,IAAA,cAAc,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC;AAC/H,IAAA,cAAc,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC5F,EAAE,GAAG,CAAC,GAAW,KAAK,CAAA,8BAAA,EAAiC,GAAG,CAAA,CAAE;AAC5D,IAAA,OAAO,GAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;AAEzF,IAAA,QAAQ,GAAgC;AAC/C,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO;AAC3E,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;AACjH,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC9I,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;AAC3H,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,gDAAgD;AAC7D,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY,CAAC,MAAM;AACzB,oBAAA,iBAAiB,EAAE,KAAK;;AAExB,oBAAA,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACvE;AACF;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAClG,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;YACjI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;AAC/F,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;AAC7H,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AACxH,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAChE,YAAA,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;AAClG,YAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;YAC9F,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;YAC3F,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,EAAE;AACrF,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE;AAC/H,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;AACxH;KACF;wGAvaU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2CL,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1InD,05bAiQA,y7LD5LI,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,qLACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,gBAAgB,8TAEhB,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,kBAAkB,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,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,6dACd,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEtB,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,mBAAmB,sIACnB,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,kJAClB,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAfhB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EASb,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FAWT,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA9BrC,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP;wBACP,qBAAqB;wBACrB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,qBAAqB;wBACrB,aAAa;wBACb,kBAAkB;wBAClB,cAAc;wBACd,QAAQ;wBACR,kBAAkB;wBAClB,sBAAsB;wBACtB,kBAAkB;wBAClB,6BAA6B;wBAC7B,mBAAmB;wBACnB,yBAAyB;wBACzB,qBAAqB;wBACrB,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,05bAAA,EAAA,MAAA,EAAA,CAAA,k4LAAA,CAAA,EAAA;qHA+C8B,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AA+XnD,MAAM,SAAS,GAAG,CAAC,KAAa,MAAwC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA,4BAAA,EAA+B,KAAK,CAAA,CAAE,EAAE,CAAC;AAEjI,MAAM,YAAY,GAAG,CAAC,MAAiB,EAAE,GAAG,MAAqB,KAC/D,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA,oCAAA,EAAuC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,CAAC,CAAC;AAEnG,MAAM,aAAa,GAA+D;AAChF,IAAA,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;IACtE,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;IAClE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK;CACxD;;AE/gBD;;;AAGG;AACI,MAAM,sBAAsB,GAAY;IAC7C,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,gBAAgB,CAAC,EAAE;IAC/H,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,uBAAuB,CAAC,EAAE;AACtI,IAAA,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;AAC1F,IAAA,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;AAClF,IAAA,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,kBAAkB,CAAC;;;ACbhF;;AAEG;;"}
|