@shival99/z-ui 0.0.1 → 1.0.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/assets/css/animations.css +207 -0
- package/assets/css/base.css +76 -0
- package/assets/css/tailwind.css +53 -0
- package/assets/css/themes/gray.css +73 -0
- package/assets/css/themes/green.css +75 -0
- package/assets/css/themes/hospital.css +79 -0
- package/assets/css/themes/neutral.css +73 -0
- package/assets/css/themes/orange.css +73 -0
- package/assets/css/themes/slate.css +73 -0
- package/assets/css/themes/stone.css +73 -0
- package/assets/css/themes/violet.css +73 -0
- package/assets/css/themes/zinc.css +73 -0
- package/assets/images/avatar.svg +6 -0
- package/assets/images/logo.svg +6 -0
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs +148 -0
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +74 -0
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-button.mjs +155 -0
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +2335 -0
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +240 -0
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-code.mjs +139 -0
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +664 -0
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +55 -0
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +411 -0
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +794 -0
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +451 -0
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-input.mjs +804 -0
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +105 -0
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +351 -0
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +722 -0
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +131 -0
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +917 -0
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +154 -0
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-select.mjs +998 -0
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +139 -0
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +127 -0
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs +2628 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +259 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +335 -0
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +93 -0
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +660 -0
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +504 -0
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-i18n.mjs +258 -0
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-pipes.mjs +116 -0
- package/fesm2022/shival99-z-ui-pipes.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-providers.mjs +203 -0
- package/fesm2022/shival99-z-ui-providers.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-services.mjs +919 -0
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-utils.mjs +591 -0
- package/fesm2022/shival99-z-ui-utils.mjs.map +1 -0
- package/fesm2022/z-ui.mjs +3 -19924
- package/fesm2022/z-ui.mjs.map +1 -1
- package/package.json +129 -1
- package/types/shival99-z-ui-components-z-accordion.d.ts +55 -0
- package/types/shival99-z-ui-components-z-breadcrumb.d.ts +36 -0
- package/types/shival99-z-ui-components-z-button.d.ts +41 -0
- package/types/shival99-z-ui-components-z-calendar.d.ts +300 -0
- package/types/shival99-z-ui-components-z-checkbox.d.ts +84 -0
- package/types/shival99-z-ui-components-z-code.d.ts +35 -0
- package/types/shival99-z-ui-components-z-drawer.d.ts +232 -0
- package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +50 -0
- package/types/shival99-z-ui-components-z-editor.d.ts +115 -0
- package/types/shival99-z-ui-components-z-filter.d.ts +268 -0
- package/types/shival99-z-ui-components-z-icon.d.ts +291 -0
- package/types/shival99-z-ui-components-z-input.d.ts +188 -0
- package/types/shival99-z-ui-components-z-loading.d.ts +46 -0
- package/types/shival99-z-ui-components-z-menu.d.ts +116 -0
- package/types/shival99-z-ui-components-z-modal.d.ts +270 -0
- package/types/shival99-z-ui-components-z-pagination.d.ts +52 -0
- package/types/shival99-z-ui-components-z-popover.d.ts +134 -0
- package/types/shival99-z-ui-components-z-radio.d.ts +63 -0
- package/types/shival99-z-ui-components-z-select.d.ts +268 -0
- package/types/shival99-z-ui-components-z-skeleton.d.ts +55 -0
- package/types/shival99-z-ui-components-z-switch.d.ts +48 -0
- package/types/shival99-z-ui-components-z-table.d.ts +482 -0
- package/types/shival99-z-ui-components-z-tabs.d.ts +75 -0
- package/types/shival99-z-ui-components-z-timeline.d.ts +98 -0
- package/types/shival99-z-ui-components-z-toast.d.ts +61 -0
- package/types/shival99-z-ui-components-z-tooltip.d.ts +85 -0
- package/types/shival99-z-ui-components-z-upload.d.ts +136 -0
- package/types/shival99-z-ui-i18n.d.ts +50 -0
- package/types/shival99-z-ui-pipes.d.ts +36 -0
- package/types/shival99-z-ui-providers.d.ts +132 -0
- package/types/shival99-z-ui-services.d.ts +364 -0
- package/types/shival99-z-ui-utils.d.ts +145 -0
- package/types/z-ui.d.ts +3 -4977
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-filter.mjs","sources":["../../../../libs/core-ui/components/z-filter/z-filter.utils.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-field.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-input-pattern.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-is-between-operator.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-is-value-hidden.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-operator-label.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-operators.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-selected-options.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/z-filter-unselected-options.pipe.ts","../../../../libs/core-ui/components/z-filter/pipes/index.ts","../../../../libs/core-ui/components/z-filter/z-filter.types.ts","../../../../libs/core-ui/components/z-filter/z-filter.variants.ts","../../../../libs/core-ui/components/z-filter/z-filter.component.ts","../../../../libs/core-ui/components/z-filter/z-filter.component.html","../../../../libs/core-ui/components/z-filter/shival99-z-ui-components-z-filter.ts"],"sourcesContent":["import type {\n ZFilter,\n ZFilterFieldConfig,\n ZFilterFieldGroup,\n ZFilterFieldsConfig,\n ZFilterI18nConfig,\n ZFilterOperator,\n} from './z-filter.types';\n\nexport function generateFilterId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;\n}\n\nexport function createFilter<T = unknown>(field: string, operator = 'is', values: T[] = []): ZFilter<T> {\n return {\n id: generateFilterId(),\n field,\n operator,\n values,\n };\n}\n\nexport function isFieldGroup<T = unknown>(\n item: ZFilterFieldConfig<T> | ZFilterFieldGroup<T>\n): item is ZFilterFieldGroup<T> {\n return 'fields' in item && Array.isArray(item.fields);\n}\n\nexport function isGroupLevelField<T = unknown>(field: ZFilterFieldConfig<T>): boolean {\n return Boolean(field.group && field.fields);\n}\n\nexport function flattenFields<T = unknown>(fields: ZFilterFieldsConfig<T>): ZFilterFieldConfig<T>[] {\n return fields.reduce<ZFilterFieldConfig<T>[]>((acc, item) => {\n if (isFieldGroup(item)) {\n return [...acc, ...item.fields];\n }\n if (isGroupLevelField(item)) {\n return [...acc, ...item.fields!];\n }\n return [...acc, item];\n }, []);\n}\n\nexport function getFieldsMap<T = unknown>(fields: ZFilterFieldsConfig<T>): Record<string, ZFilterFieldConfig<T>> {\n const flatFields = flattenFields(fields);\n return flatFields.reduce(\n (acc, field) => {\n if (field.key) {\n acc[field.key] = field;\n }\n return acc;\n },\n {} as Record<string, ZFilterFieldConfig<T>>\n );\n}\n\nexport function createOperatorsFromI18n(i18n: ZFilterI18nConfig): Record<string, ZFilterOperator[]> {\n return {\n select: [\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n multiselect: [\n { value: 'is_any_of', label: i18n.operators.isAnyOf },\n { value: 'is_not_any_of', label: i18n.operators.isNotAnyOf },\n { value: 'includes_all', label: i18n.operators.includesAll },\n { value: 'excludes_all', label: i18n.operators.excludesAll },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n date: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n daterange: [\n { value: 'between', label: i18n.operators.between },\n { value: 'not_between', label: i18n.operators.notBetween },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n text: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n number: [\n { value: 'equals', label: i18n.operators.equals },\n { value: 'not_equals', label: i18n.operators.notEquals },\n { value: 'greater_than', label: i18n.operators.greaterThan },\n { value: 'less_than', label: i18n.operators.lessThan },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n numberrange: [\n { value: 'between', label: i18n.operators.between },\n { value: 'overlaps', label: i18n.operators.overlaps },\n { value: 'contains', label: i18n.operators.contains },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n boolean: [\n { value: 'is', label: i18n.operators.is },\n { value: 'is_not', label: i18n.operators.isNot },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n email: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n url: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n tel: [\n { value: 'contains', label: i18n.operators.contains },\n { value: 'not_contains', label: i18n.operators.notContains },\n { value: 'starts_with', label: i18n.operators.startsWith },\n { value: 'ends_with', label: i18n.operators.endsWith },\n { value: 'is', label: i18n.operators.isExactly },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n time: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n datetime: [\n { value: 'before', label: i18n.operators.before },\n { value: 'after', label: i18n.operators.after },\n { value: 'is', label: i18n.operators.is },\n { value: 'between', label: i18n.operators.between },\n { value: 'empty', label: i18n.operators.empty },\n { value: 'not_empty', label: i18n.operators.notEmpty },\n ],\n };\n}\n\nexport function getOperatorsForField<T = unknown>(\n field: ZFilterFieldConfig<T>,\n values: T[],\n i18n: ZFilterI18nConfig\n): ZFilterOperator[] {\n if (field.operators) {\n return field.operators;\n }\n\n const operators = createOperatorsFromI18n(i18n);\n let fieldType = field.type || 'select';\n\n if (fieldType === 'select' && values.length > 1) {\n fieldType = 'multiselect';\n }\n\n if (fieldType === 'multiselect' || field.type === 'multiselect') {\n return operators['multiselect'];\n }\n\n return operators[fieldType] || operators['select'];\n}\n\nexport function formatOperator(operator: string): string {\n return operator.replace(/_/g, ' ');\n}\n\nexport function getDefaultOperator(fieldType: string): string {\n switch (fieldType) {\n case 'daterange':\n case 'numberrange':\n return 'between';\n case 'boolean':\n return 'is';\n case 'multiselect':\n return 'is_any_of';\n default:\n return 'is';\n }\n}\n\nexport function getDefaultValues<T = unknown>(fieldType: string, field: ZFilterFieldConfig<T>): unknown[] {\n switch (fieldType) {\n case 'text':\n case 'number':\n case 'date':\n case 'email':\n case 'url':\n case 'tel':\n case 'time':\n case 'datetime':\n return [''];\n case 'daterange':\n return ['', ''];\n case 'numberrange':\n return [field.min || 0, field.max || 100];\n case 'boolean':\n return [false];\n default:\n return [];\n }\n}\n\nexport function getInputPattern(fieldType: string): string | undefined {\n switch (fieldType) {\n case 'email':\n return '^[^@\\\\s]+@[^@\\\\s]+\\\\.[^@\\\\s]+$';\n case 'url':\n return '^https?:\\\\/\\\\/(www\\\\.)?[-a-zA-Z0-9@:%._\\\\+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_\\\\+.~#?&//=]*)$';\n case 'tel':\n return '^[\\\\+]?[1-9][\\\\d]{0,15}$';\n default:\n return undefined;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldConfig, ZFilterFieldsConfig } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterField',\n standalone: true,\n pure: true,\n})\nexport class ZFilterFieldPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterFieldConfig | undefined {\n const fieldsMap = getFieldsMap(fields);\n return fieldsMap[filter.field];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilterFieldConfig } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterInputPattern',\n standalone: true,\n pure: true,\n})\nexport class ZFilterInputPatternPipe implements PipeTransform {\n transform(field: ZFilterFieldConfig): string {\n switch (field.type) {\n case 'email':\n return '[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,}$';\n case 'url':\n return 'https?://.+';\n case 'tel':\n return '[0-9+\\\\-\\\\s()]+';\n default:\n return field.pattern || '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterIsBetweenOperator',\n standalone: true,\n pure: true,\n})\nexport class ZFilterIsBetweenOperatorPipe implements PipeTransform {\n transform(filter: ZFilter): boolean {\n return filter.operator === 'between' || filter.operator === 'not_between';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter } from '../z-filter.types';\n\n@Pipe({\n name: 'zFilterIsValueHidden',\n standalone: true,\n pure: true,\n})\nexport class ZFilterIsValueHiddenPipe implements PipeTransform {\n transform(filter: ZFilter): boolean {\n const { operator } = filter;\n return operator === 'is_empty' || operator === 'is_not_empty';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterI18nConfig } from '../z-filter.types';\nimport { formatOperator, getFieldsMap, getOperatorsForField } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterOperatorLabel',\n standalone: true,\n pure: true,\n})\nexport class ZFilterOperatorLabelPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig, i18n: ZFilterI18nConfig): string {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field) {\n return '';\n }\n const operators = getOperatorsForField(field, filter.values, i18n);\n const op = operators.find(o => o.value === filter.operator);\n return op?.label || formatOperator(filter.operator);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterI18nConfig, ZFilterOperator } from '../z-filter.types';\nimport { getFieldsMap, getOperatorsForField } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterOperators',\n standalone: true,\n pure: true,\n})\nexport class ZFilterOperatorsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig, i18n: ZFilterI18nConfig): ZFilterOperator[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field) {\n return [];\n }\n return getOperatorsForField(field, filter.values, i18n);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterOption } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterSelectedOptions',\n standalone: true,\n pure: true,\n})\nexport class ZFilterSelectedOptionsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterOption[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => filter.values.includes(opt.value));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { ZFilter, ZFilterFieldsConfig, ZFilterOption } from '../z-filter.types';\nimport { getFieldsMap } from '../z-filter.utils';\n\n@Pipe({\n name: 'zFilterUnselectedOptions',\n standalone: true,\n pure: true,\n})\nexport class ZFilterUnselectedOptionsPipe implements PipeTransform {\n transform(filter: ZFilter, fields: ZFilterFieldsConfig): ZFilterOption[] {\n const fieldsMap = getFieldsMap(fields);\n const field = fieldsMap[filter.field];\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => !filter.values.includes(opt.value));\n }\n}\n","import { ZFilterFieldPipe } from './z-filter-field.pipe';\nimport { ZFilterInputPatternPipe } from './z-filter-input-pattern.pipe';\nimport { ZFilterIsBetweenOperatorPipe } from './z-filter-is-between-operator.pipe';\nimport { ZFilterIsValueHiddenPipe } from './z-filter-is-value-hidden.pipe';\nimport { ZFilterOperatorLabelPipe } from './z-filter-operator-label.pipe';\nimport { ZFilterOperatorsPipe } from './z-filter-operators.pipe';\nimport { ZFilterSelectedOptionsPipe } from './z-filter-selected-options.pipe';\nimport { ZFilterUnselectedOptionsPipe } from './z-filter-unselected-options.pipe';\n\nexport const Z_FILTER_PIPES = [\n ZFilterFieldPipe,\n ZFilterOperatorLabelPipe,\n ZFilterOperatorsPipe,\n ZFilterSelectedOptionsPipe,\n ZFilterUnselectedOptionsPipe,\n ZFilterInputPatternPipe,\n ZFilterIsValueHiddenPipe,\n ZFilterIsBetweenOperatorPipe,\n] as const;\n","import type { TemplateRef } from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\n\nexport type ZFilterSize = 'sm' | 'md' | 'lg';\n\nexport type ZFilterFieldType =\n | 'select'\n | 'multiselect'\n | 'date'\n | 'daterange'\n | 'text'\n | 'number'\n | 'numberrange'\n | 'boolean'\n | 'email'\n | 'url'\n | 'tel'\n | 'time'\n | 'datetime'\n | 'custom'\n | 'separator';\n\nexport interface ZFilterOption<T = unknown> {\n value: T;\n label: string;\n icon?: ZIcon;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ZFilterOperator {\n value: string;\n label: string;\n supportsMultiple?: boolean;\n}\n\nexport interface ZFilterCustomRendererContext<T = unknown> {\n field: ZFilterFieldConfig<T>;\n values: T[];\n operator: string;\n onChange: (values: T[]) => void;\n}\n\nexport interface ZFilterFieldConfig<T = unknown> {\n key?: string;\n label?: string;\n icon?: ZIcon;\n type?: ZFilterFieldType;\n group?: string;\n fields?: ZFilterFieldConfig<T>[];\n options?: ZFilterOption<T>[];\n operators?: ZFilterOperator[];\n customRenderer?: TemplateRef<ZFilterCustomRendererContext<T>>;\n customValueRenderer?: TemplateRef<{ values: T[]; options: ZFilterOption<T>[] }>;\n placeholder?: string;\n searchable?: boolean;\n maxSelections?: number;\n min?: number;\n max?: number;\n step?: number;\n prefix?: string;\n suffix?: string;\n pattern?: string;\n validation?: (value: unknown) => boolean;\n allowCustomValues?: boolean;\n className?: string;\n popoverContentClassName?: string;\n selectedOptionsClassName?: string;\n onLabel?: string;\n offLabel?: string;\n defaultOperator?: string;\n}\n\nexport interface ZFilterFieldGroup<T = unknown> {\n group?: string;\n fields: ZFilterFieldConfig<T>[];\n}\n\nexport type ZFilterFieldsConfig<T = unknown> = ZFilterFieldConfig<T>[] | ZFilterFieldGroup<T>[];\n\nexport interface ZFilter<T = unknown> {\n id: string;\n field: string;\n operator: string;\n values: T[];\n}\n\nexport interface ZFilterI18nConfig {\n addFilter: string;\n searchFields: string;\n noFieldsFound: string;\n noResultsFound: string;\n select: string;\n true: string;\n false: string;\n min: string;\n max: string;\n to: string;\n selected: string;\n selectedCount: string;\n addFilterTitle: string;\n operators: {\n is: string;\n isNot: string;\n isAnyOf: string;\n isNotAnyOf: string;\n includesAll: string;\n excludesAll: string;\n before: string;\n after: string;\n between: string;\n notBetween: string;\n contains: string;\n notContains: string;\n startsWith: string;\n endsWith: string;\n isExactly: string;\n equals: string;\n notEquals: string;\n greaterThan: string;\n lessThan: string;\n overlaps: string;\n includes: string;\n excludes: string;\n includesAllOf: string;\n includesAnyOf: string;\n empty: string;\n notEmpty: string;\n };\n placeholders: {\n enterField: string;\n selectField: string;\n searchField: string;\n enterKey: string;\n enterValue: string;\n };\n validation: {\n invalidEmail: string;\n invalidUrl: string;\n invalidTel: string;\n invalid: string;\n };\n}\n\nexport const DEFAULT_FILTER_I18N: ZFilterI18nConfig = {\n addFilter: 'Add filter',\n searchFields: 'Search fields...',\n noFieldsFound: 'No fields found.',\n noResultsFound: 'No results found.',\n select: 'Select...',\n true: 'True',\n false: 'False',\n min: 'Min',\n max: 'Max',\n to: 'to',\n selected: 'selected',\n selectedCount: 'selected',\n addFilterTitle: 'Add filter',\n operators: {\n is: 'is',\n isNot: 'is not',\n isAnyOf: 'is any of',\n isNotAnyOf: 'is not any of',\n includesAll: 'includes all',\n excludesAll: 'excludes all',\n before: 'before',\n after: 'after',\n between: 'between',\n notBetween: 'not between',\n contains: 'contains',\n notContains: 'does not contain',\n startsWith: 'starts with',\n endsWith: 'ends with',\n isExactly: 'is exactly',\n equals: 'equals',\n notEquals: 'not equals',\n greaterThan: 'greater than',\n lessThan: 'less than',\n overlaps: 'overlaps',\n includes: 'includes',\n excludes: 'excludes',\n includesAllOf: 'includes all of',\n includesAnyOf: 'includes any of',\n empty: 'is empty',\n notEmpty: 'is not empty',\n },\n placeholders: {\n enterField: 'Enter value...',\n selectField: 'Select...',\n searchField: 'Search...',\n enterKey: 'Enter key...',\n enterValue: 'Enter value...',\n },\n validation: {\n invalidEmail: 'Invalid email format',\n invalidUrl: 'Invalid URL format',\n invalidTel: 'Invalid phone format',\n invalid: 'Invalid input format',\n },\n};\n\nexport interface ZFilterControl<T = unknown> {\n addFilter: (fieldKey: string) => void;\n removeFilter: (filterId: string) => void;\n updateFilter: (filterId: string, updates: Partial<ZFilter<T>>) => void;\n clearAll: () => void;\n filters: ZFilter<T>[];\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zFilterContainerVariants = cva('flex flex-wrap items-center gap-2', {\n variants: {\n size: {\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const zFilterItemVariants = cva(\n 'inline-flex items-stretch rounded-[4px] border border-input bg-background shadow-xs overflow-hidden',\n {\n variants: {\n size: {\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterFieldLabelVariants = cva(\n 'flex items-center gap-1.5 bg-background font-medium text-muted-foreground border-r border-input',\n {\n variants: {\n size: {\n sm: 'px-2 text-xs',\n md: 'px-2.5 text-sm',\n lg: 'px-3 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterInputVariants = cva('flex items-center bg-background px-2 focus-within:bg-muted/50', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const zFilterRemoveButtonVariants = cva(\n 'flex items-center justify-center cursor-pointer bg-background text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus:outline-none border-l border-input',\n {\n variants: {\n size: {\n sm: 'px-1.5',\n md: 'px-2',\n lg: 'px-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const zFilterBetweenVariants = cva('text-muted-foreground flex items-center', {\n variants: {\n size: {\n sm: 'px-1 text-xs',\n md: 'px-1.5 text-xs',\n lg: 'px-2 text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type ZFilterContainerVariantsProps = VariantProps<typeof zFilterContainerVariants>;\nexport type ZFilterItemVariantsProps = VariantProps<typeof zFilterItemVariants>;\nexport type ZFilterFieldLabelVariantsProps = VariantProps<typeof zFilterFieldLabelVariants>;\nexport type ZFilterInputVariantsProps = VariantProps<typeof zFilterInputVariants>;\nexport type ZFilterRemoveButtonVariantsProps = VariantProps<typeof zFilterRemoveButtonVariants>;\nexport type ZFilterBetweenVariantsProps = VariantProps<typeof zFilterBetweenVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { Z_FILTER_PIPES } from './pipes';\nimport type {\n ZFilter,\n ZFilterFieldConfig,\n ZFilterFieldsConfig,\n ZFilterI18nConfig,\n ZFilterOperator,\n ZFilterOption,\n ZFilterSize,\n} from './z-filter.types';\nimport { DEFAULT_FILTER_I18N } from './z-filter.types';\nimport {\n createFilter,\n flattenFields,\n formatOperator,\n getDefaultOperator,\n getDefaultValues,\n getFieldsMap,\n getInputPattern,\n getOperatorsForField,\n} from './z-filter.utils';\nimport {\n zFilterBetweenVariants,\n zFilterContainerVariants,\n zFilterFieldLabelVariants,\n zFilterInputVariants,\n zFilterItemVariants,\n zFilterRemoveButtonVariants,\n} from './z-filter.variants';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZPopoverDirective } from '@shival99/z-ui/components/z-popover';\nimport { ZSwitchComponent } from '@shival99/z-ui/components/z-switch';\n\n@Component({\n selector: 'z-filter',\n imports: [ZIconComponent, NgTemplateOutlet, ZSwitchComponent, ZButtonComponent, ZPopoverDirective, ...Z_FILTER_PIPES],\n standalone: true,\n templateUrl: './z-filter.component.html',\n styleUrl: './z-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n 'data-slot': 'z-filter',\n },\n})\nexport class ZFilterComponent<T = unknown> {\n public readonly class = input<ClassValue>('');\n public readonly zFilters = input.required<ZFilter<T>[]>();\n public readonly zFields = input.required<ZFilterFieldsConfig<T>>();\n public readonly zSize = input<ZFilterSize>('md');\n public readonly zI18n = input<Partial<ZFilterI18nConfig>>({});\n public readonly zShowAddButton = input<boolean>(true);\n public readonly zAllowMultiple = input<boolean>(true);\n public readonly zAddButtonIcon = input<ZIcon>('lucidePlus');\n public readonly zAddButtonText = input<string>();\n\n public readonly zFiltersChange = output<ZFilter<T>[]>();\n public readonly zFilterAdd = output<ZFilter<T>>();\n public readonly zFilterRemove = output<ZFilter<T>>();\n public readonly zFilterUpdate = output<{ filter: ZFilter<T>; updates: Partial<ZFilter<T>> }>();\n\n public readonly addButtonTemplate = contentChild<TemplateRef<unknown>>('addButton');\n\n protected readonly addFilterOpen = signal(false);\n protected readonly searchQuery = signal('');\n protected readonly operatorPopoverOpen = signal<string | null>(null);\n protected readonly valuePopoverOpen = signal<string | null>(null);\n\n protected readonly addFilterSearchInput = viewChild<ElementRef<HTMLInputElement>>('addFilterSearchInput');\n\n protected focusSearchInput(): void {\n setTimeout(() => {\n this.addFilterSearchInput()?.nativeElement?.focus();\n }, 50);\n }\n\n protected focusSelectSearch(filterId: string): void {\n setTimeout(() => {\n const input = document.getElementById(`select-search-${filterId}`) as HTMLInputElement;\n input?.focus();\n }, 50);\n }\n\n protected readonly i18n = computed<ZFilterI18nConfig>(() => {\n const custom = this.zI18n();\n return {\n ...DEFAULT_FILTER_I18N,\n ...custom,\n operators: { ...DEFAULT_FILTER_I18N.operators, ...custom.operators },\n placeholders: { ...DEFAULT_FILTER_I18N.placeholders, ...custom.placeholders },\n validation: { ...DEFAULT_FILTER_I18N.validation, ...custom.validation },\n };\n });\n\n protected readonly fieldsMap = computed(() => getFieldsMap(this.zFields()));\n\n protected readonly selectableFields = computed(() => {\n const flatFields = flattenFields(this.zFields());\n const filters = this.zFilters();\n return flatFields.filter(field => {\n if (!field.key || field.type === 'separator') {\n return false;\n }\n if (this.zAllowMultiple()) {\n return true;\n }\n return !filters.some(filter => filter.field === field.key);\n });\n });\n\n protected readonly filteredFields = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n if (!query) {\n return this.selectableFields();\n }\n return this.selectableFields().filter(\n field => field.label?.toLowerCase().includes(query) || field.key?.toLowerCase().includes(query)\n );\n });\n\n protected readonly groupedFields = computed(() => {\n const allFields = this.zFields();\n const query = this.searchQuery().toLowerCase().trim();\n const filters = this.zFilters();\n const allowMultiple = this.zAllowMultiple();\n\n const filterField = (field: ZFilterFieldConfig<T>) => {\n if (!field.key || field.type === 'separator') {\n return false;\n }\n if (!allowMultiple && filters.some(f => f.field === field.key)) {\n return false;\n }\n if (query && !field.label?.toLowerCase().includes(query) && !field.key?.toLowerCase().includes(query)) {\n return false;\n }\n return true;\n };\n\n const groups: { group: string; fields: ZFilterFieldConfig<T>[] }[] = [];\n\n for (const item of allFields) {\n if ('fields' in item && Array.isArray(item.fields)) {\n const groupName = (item as { group?: string }).group || '';\n const filteredGroupFields = item.fields.filter(filterField);\n if (filteredGroupFields.length > 0) {\n groups.push({ group: groupName, fields: filteredGroupFields });\n }\n } else {\n const field = item as ZFilterFieldConfig<T>;\n if (filterField(field)) {\n const groupName = field.group || '';\n const existingGroup = groups.find(g => g.group === groupName);\n if (existingGroup) {\n existingGroup.fields.push(field);\n } else {\n groups.push({ group: groupName, fields: [field] });\n }\n }\n }\n }\n\n return groups;\n });\n\n protected readonly buttonSize = computed(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return 'sm';\n }\n if (size === 'lg') {\n return 'lg';\n }\n return 'default';\n });\n\n protected readonly hostClasses = computed(() =>\n zMergeClasses(zFilterContainerVariants({ size: this.zSize() }), this.class())\n );\n\n protected getItemClasses(): string {\n return zFilterItemVariants({ size: this.zSize() });\n }\n\n protected getLabelClasses(): string {\n return zFilterFieldLabelVariants({ size: this.zSize() });\n }\n\n protected getInputClasses(): string {\n return zFilterInputVariants({ size: this.zSize() });\n }\n\n protected getRemoveButtonClasses(): string {\n return zFilterRemoveButtonVariants({ size: this.zSize() });\n }\n\n protected getBetweenClasses(): string {\n return zFilterBetweenVariants({ size: this.zSize() });\n }\n\n protected getFieldForFilter(filter: ZFilter<T>): ZFilterFieldConfig<T> | undefined {\n return this.fieldsMap()[filter.field];\n }\n\n protected getOperatorsForFilter(filter: ZFilter<T>): ZFilterOperator[] {\n const field = this.getFieldForFilter(filter);\n if (!field) {\n return [];\n }\n return getOperatorsForField(field, filter.values, this.i18n());\n }\n\n protected getOperatorLabel(filter: ZFilter<T>): string {\n const operators = this.getOperatorsForFilter(filter);\n const op = operators.find(o => o.value === filter.operator);\n return op?.label || formatOperator(filter.operator);\n }\n\n protected getSelectedOptions(filter: ZFilter<T>): ZFilterOption<T>[] {\n const field = this.getFieldForFilter(filter);\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => filter.values.includes(opt.value));\n }\n\n protected getUnselectedOptions(filter: ZFilter<T>): ZFilterOption<T>[] {\n const field = this.getFieldForFilter(filter);\n if (!field?.options) {\n return [];\n }\n return field.options.filter(opt => !filter.values.includes(opt.value));\n }\n\n protected isValueHidden(filter: ZFilter<T>): boolean {\n return filter.operator === 'empty' || filter.operator === 'not_empty';\n }\n\n protected isBetweenOperator(filter: ZFilter<T>): boolean {\n return filter.operator === 'between';\n }\n\n protected getInputPattern(field: ZFilterFieldConfig<T>): string | undefined {\n return field.pattern || getInputPattern(field.type || '');\n }\n\n protected onFieldSelect(field: ZFilterFieldConfig<T>): void {\n if (!field.key) {\n return;\n }\n\n const defaultOperator = field.defaultOperator || getDefaultOperator(field.type || 'select');\n const defaultValues = getDefaultValues(field.type || 'select', field);\n\n const newFilter = createFilter<T>(field.key, defaultOperator, defaultValues as T[]);\n const newFilters = [...this.zFilters(), newFilter];\n this.zFiltersChange.emit(newFilters);\n this.zFilterAdd.emit(newFilter);\n this.addFilterOpen.set(false);\n this.searchQuery.set('');\n }\n\n protected updateFilterOperator(filter: ZFilter<T>, operator: string): void {\n const updates: Partial<ZFilter<T>> = { operator };\n if (operator === 'empty' || operator === 'not_empty') {\n updates.values = [] as T[];\n }\n\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, ...updates };\n }\n return f;\n });\n\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates });\n this.operatorPopoverOpen.set(null);\n }\n\n protected onSelectValueChange(filter: ZFilter<T>, option: ZFilterOption<T>): void {\n const field = this.getFieldForFilter(filter);\n const isMultiSelect = field?.type === 'multiselect';\n const isSelected = filter.values.includes(option.value);\n\n let newValues: T[];\n if (isMultiSelect) {\n newValues = isSelected ? filter.values.filter(v => v !== option.value) : [...filter.values, option.value];\n } else {\n newValues = isSelected ? [] : [option.value];\n }\n\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected removeFilter(filter: ZFilter<T>): void {\n const updatedFilters = this.zFilters().filter(f => f.id !== filter.id);\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterRemove.emit(filter);\n }\n\n protected onInputChange(filter: ZFilter<T>, event: Event, index = 0): void {\n const input = event.target as HTMLInputElement;\n const newValues = [...filter.values];\n newValues[index] = input.value as T;\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected onBooleanChange(filter: ZFilter<T>, checked: boolean): void {\n const newValues = [checked as unknown as T];\n const updatedFilters = this.zFilters().map(f => {\n if (f.id === filter.id) {\n return { ...f, values: newValues };\n }\n return f;\n });\n this.zFiltersChange.emit(updatedFilters);\n this.zFilterUpdate.emit({ filter, updates: { values: newValues } });\n }\n\n protected onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchQuery.set(input.value);\n }\n\n protected trackByFilterId(index: number, filter: ZFilter<T>): string {\n return filter.id;\n }\n\n protected trackByOptionValue(index: number, option: ZFilterOption<T>): unknown {\n return option.value;\n }\n\n protected trackByFieldKey(index: number, field: ZFilterFieldConfig<T>): string {\n return field.key || `field-${index}`;\n }\n}\n","<!-- Add Filter Button -->\n@if (zShowAddButton() && selectableFields().length > 0) {\n @if (addButtonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"addButtonTemplate()!\" />\n } @else {\n <button\n z-button\n zType=\"outline\"\n [zSize]=\"buttonSize()\"\n z-popover\n [zPopoverContent]=\"addFilterPopover\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"6\"\n (zShow)=\"addFilterOpen.set(true); focusSearchInput()\"\n (zHide)=\"addFilterOpen.set(false); searchQuery.set('')\">\n <z-icon [zType]=\"zAddButtonIcon()\" zSize=\"14\" />\n {{ zAddButtonText() || i18n().addFilter }}\n </button>\n }\n}\n\n<ng-template #addFilterPopover let-close=\"close\">\n <div class=\"w-[200px]\">\n <div class=\"border-border flex items-center border-b px-3\">\n <z-icon zType=\"lucideSearch\" zSize=\"16\" class=\"text-muted-foreground/50 mr-2 shrink-0\" />\n <input\n #addFilterSearchInput\n type=\"text\"\n [placeholder]=\"i18n().searchFields\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n class=\"placeholder:text-muted-foreground text-foreground flex h-10 w-full bg-transparent py-3 text-sm outline-none\" />\n </div>\n <div class=\"flex max-h-[300px] flex-col gap-0.5 overflow-y-auto p-1\">\n @for (group of groupedFields(); track group.group; let groupIndex = $index) {\n @if (group.group) {\n <div\n class=\"text-muted-foreground px-2 py-1.5 text-xs font-medium\"\n [class.border-border]=\"groupIndex > 0\"\n [class.mt-2]=\"groupIndex > 0\"\n [class.border-t]=\"groupIndex > 0\"\n [class.ml-1]=\"groupIndex > 0\">\n {{ group.group }}\n </div>\n }\n @for (field of group.fields; track trackByFieldKey($index, field)) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onFieldSelect(field); close()\">\n @if (field.icon) {\n <z-icon [zType]=\"field.icon\" zSize=\"14\" class=\"text-muted-foreground\" />\n }\n <span>{{ field.label }}</span>\n </button>\n }\n } @empty {\n <div class=\"text-muted-foreground py-6 text-center text-sm\">\n {{ i18n().noFieldsFound }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Filter Items -->\n@for (filter of zFilters(); track trackByFilterId($index, filter)) {\n @if (filter | zFilterField: $any(zFields()); as field) {\n <div [class]=\"getItemClasses()\" data-slot=\"filter-item\">\n <!-- Field Label -->\n <div [class]=\"getLabelClasses()\">\n @if (field.icon) {\n <z-icon [zType]=\"field.icon\" zSize=\"14\" />\n }\n {{ field.label }}\n </div>\n\n <!-- Operator Dropdown -->\n <button\n type=\"button\"\n z-popover\n [zPopoverContent]=\"operatorDropdown\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"4\"\n (zShow)=\"operatorPopoverOpen.set(filter.id)\"\n (zHide)=\"operatorPopoverOpen.set(null)\"\n class=\"text-muted-foreground hover:text-foreground hover:bg-muted flex cursor-pointer items-center px-2.5 text-sm transition-colors\"\n [class.text-foreground]=\"operatorPopoverOpen() === filter.id\"\n [class.bg-muted]=\"operatorPopoverOpen() === filter.id\">\n {{ filter | zFilterOperatorLabel: $any(zFields()) : i18n() }}\n <z-icon zType=\"lucideChevronDown\" zSize=\"12\" class=\"ml-1\" />\n </button>\n\n <ng-template #operatorDropdown let-close=\"close\">\n <div class=\"flex w-fit min-w-32 flex-col gap-0.5 p-1\">\n @for (op of filter | zFilterOperators: $any(zFields()) : i18n(); track op.value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center justify-between gap-4 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none\"\n (click)=\"updateFilterOperator(filter, op.value); close()\">\n <span>{{ op.label }}</span>\n @if (op.value === filter.operator) {\n <z-icon zType=\"lucideCheck\" zSize=\"14\" class=\"text-primary\" />\n }\n </button>\n }\n </div>\n </ng-template>\n\n <!-- Value Selector -->\n @if (!(filter | zFilterIsValueHidden)) {\n <!-- Boolean Field -->\n @if (field.type === 'boolean') {\n <div class=\"flex items-center gap-2 px-2.5\">\n <z-switch [zChecked]=\"filter.values[0] === true\" (zChange)=\"onBooleanChange(filter, $event)\" zSize=\"sm\" />\n @if (field.onLabel && field.offLabel) {\n <span class=\"text-muted-foreground text-xs\">\n {{ filter.values[0] === true ? field.onLabel : field.offLabel }}\n </span>\n }\n </div>\n }\n\n <!-- Text/Email/URL/Tel Input -->\n @else if (field.type === 'text' || field.type === 'email' || field.type === 'url' || field.type === 'tel') {\n <div [class]=\"getInputClasses()\" class=\"w-36\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"{{\n field.type === 'email' ? 'email' : field.type === 'url' ? 'url' : field.type === 'tel' ? 'tel' : 'text'\n }}\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"field.placeholder || i18n().placeholders.enterField\"\n [pattern]=\"field | zFilterInputPattern\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n }\n\n <!-- Number Input -->\n @else if (field.type === 'number') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-20\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"number\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"i18n().min\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-20\">\n <input\n type=\"number\"\n [value]=\"filter.values[1] || ''\"\n [placeholder]=\"i18n().max\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event, 1)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-24\">\n @if (field.prefix) {\n <span class=\"text-muted-foreground mr-1\">{{ field.prefix }}</span>\n }\n <input\n type=\"number\"\n [value]=\"filter.values[0] || ''\"\n [placeholder]=\"field.placeholder || i18n().placeholders.enterField\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n [step]=\"field.step\"\n class=\"w-full bg-transparent outline-none\"\n (blur)=\"onInputChange(filter, $event)\" />\n @if (field.suffix) {\n <span class=\"text-muted-foreground ml-1\">{{ field.suffix }}</span>\n }\n </div>\n }\n }\n\n <!-- Date Input -->\n @else if (field.type === 'date') {\n <div [class]=\"getInputClasses()\" class=\"w-36\">\n <input\n type=\"date\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n\n <!-- Date Range Input -->\n @else if (field.type === 'daterange') {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-32\">\n <input\n type=\"date\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-32\">\n <input\n type=\"date\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n }\n\n <!-- Time Input -->\n @else if (field.type === 'time') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-28\">\n <input\n type=\"time\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n }\n\n <!-- DateTime Input -->\n @else if (field.type === 'datetime') {\n @if (filter | zFilterIsBetweenOperator) {\n <div class=\"flex items-center\">\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 0)\" />\n </div>\n <div [class]=\"getBetweenClasses()\">{{ i18n().to }}</div>\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[1] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event, 1)\" />\n </div>\n </div>\n } @else {\n <div [class]=\"getInputClasses()\" class=\"w-44\">\n <input\n type=\"datetime-local\"\n [value]=\"filter.values[0] || ''\"\n class=\"w-full bg-transparent outline-none\"\n (change)=\"onInputChange(filter, $event)\" />\n </div>\n }\n }\n\n <!-- Select/Multiselect -->\n @else if (field.type === 'select' || field.type === 'multiselect' || field.options) {\n <button\n type=\"button\"\n z-popover\n [zPopoverContent]=\"selectPopover\"\n zTrigger=\"click\"\n zPosition=\"bottom-left\"\n [zOffset]=\"4\"\n (zShow)=\"valuePopoverOpen.set(filter.id); focusSelectSearch(filter.id)\"\n (zHide)=\"valuePopoverOpen.set(null)\"\n class=\"hover:bg-muted flex cursor-pointer items-center gap-1.5 px-2.5 text-sm transition-colors\"\n [class.bg-muted]=\"valuePopoverOpen() === filter.id\">\n @if (filter | zFilterSelectedOptions: $any(zFields()); as selectedOpts) {\n @if (selectedOpts.length > 0) {\n <div class=\"flex items-center -space-x-1.5\">\n @for (opt of selectedOpts.slice(0, 3); track $any(opt).value) {\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n }\n </div>\n @if (selectedOpts.length === 1) {\n {{ selectedOpts[0].label }}\n } @else {\n {{ selectedOpts.length }} {{ i18n().selectedCount }}\n }\n } @else {\n <span class=\"text-muted-foreground\">{{ i18n().select }}</span>\n }\n }\n <z-icon zType=\"lucideChevronDown\" zSize=\"12\" class=\"text-muted-foreground ml-1\" />\n </button>\n\n <ng-template #selectPopover let-close=\"close\">\n <div class=\"w-[200px]\">\n @if (field.searchable !== false) {\n <div class=\"border-border flex items-center border-b px-3\">\n <z-icon zType=\"lucideSearch\" zSize=\"16\" class=\"text-muted-foreground/50 mr-2 shrink-0\" />\n <input\n [id]=\"'select-search-' + filter.id\"\n type=\"text\"\n [placeholder]=\"i18n().placeholders.searchField\"\n class=\"placeholder:text-muted-foreground text-foreground flex h-9 w-full bg-transparent py-2 text-sm outline-none\" />\n </div>\n }\n <div class=\"flex max-h-[200px] flex-col gap-0.5 overflow-y-auto p-1\">\n <!-- Selected Options -->\n @for (opt of filter | zFilterSelectedOptions: $any(zFields()); track $any(opt).value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onSelectValueChange(filter, $any(opt)); field.type !== 'multiselect' && close()\">\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n <span class=\"truncate\">{{ opt.label }}</span>\n <z-icon zType=\"lucideCheck\" zSize=\"14\" class=\"text-primary ml-auto\" />\n </button>\n }\n\n <!-- Separator -->\n @if (\n (filter | zFilterSelectedOptions: $any(zFields())).length > 0 &&\n (filter | zFilterUnselectedOptions: $any(zFields())).length > 0\n ) {\n <div class=\"bg-border my-1 ml-1 h-px\"></div>\n }\n\n <!-- Unselected Options -->\n @for (opt of filter | zFilterUnselectedOptions: $any(zFields()); track $any(opt).value) {\n <button\n type=\"button\"\n class=\"hover:bg-accent flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors\"\n (click)=\"onSelectValueChange(filter, $any(opt)); field.type !== 'multiselect' && close()\">\n @if (opt.icon) {\n <z-icon [zType]=\"opt.icon\" zSize=\"14\" />\n }\n <span class=\"truncate\">{{ opt.label }}</span>\n </button>\n }\n\n @if (\n (filter | zFilterSelectedOptions: $any(zFields())).length === 0 &&\n (filter | zFilterUnselectedOptions: $any(zFields())).length === 0\n ) {\n <div class=\"text-muted-foreground py-6 text-center text-sm\">\n {{ i18n().noResultsFound }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n }\n }\n\n <!-- Remove Button -->\n <button type=\"button\" [class]=\"getRemoveButtonClasses()\" data-slot=\"filter-remove\" (click)=\"removeFilter(filter)\">\n <z-icon zType=\"lucideX\" zSize=\"14\" />\n </button>\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ZFilterFieldPipe","i2.ZFilterOperatorLabelPipe","i3.ZFilterOperatorsPipe","i4.ZFilterSelectedOptionsPipe","i5.ZFilterUnselectedOptionsPipe","i6.ZFilterInputPatternPipe","i7.ZFilterIsValueHiddenPipe","i8.ZFilterIsBetweenOperatorPipe"],"mappings":";;;;;;;;;;SASgB,gBAAgB,GAAA;IAC9B,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAE;AACvE;AAEM,SAAU,YAAY,CAAc,KAAa,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAA,GAAc,EAAE,EAAA;IACxF,OAAO;QACL,EAAE,EAAE,gBAAgB,EAAE;QACtB,KAAK;QACL,QAAQ;QACR,MAAM;KACP;AACH;AAEM,SAAU,YAAY,CAC1B,IAAkD,EAAA;AAElD,IAAA,OAAO,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD;AAEM,SAAU,iBAAiB,CAAc,KAA4B,EAAA;IACzE,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;AAC7C;AAEM,SAAU,aAAa,CAAc,MAA8B,EAAA;IACvE,OAAO,MAAM,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,IAAI,KAAI;AAC1D,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC;AACA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAO,CAAC;QAClC;AACA,QAAA,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC;AACR;AAEM,SAAU,YAAY,CAAc,MAA8B,EAAA;AACtE,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;IACxC,OAAO,UAAU,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,KAAK,KAAI;AACb,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE;AACb,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;QACxB;AACA,QAAA,OAAO,GAAG;IACZ,CAAC,EACD,EAA2C,CAC5C;AACH;AAEM,SAAU,uBAAuB,CAAC,IAAuB,EAAA;IAC7D,OAAO;AACL,QAAA,MAAM,EAAE;YACN,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,WAAW,EAAE;YACX,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACrD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC5D,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACjD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,SAAS,EAAE;YACT,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACnD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC1D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC1D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,MAAM,EAAE;YACN,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACjD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YACxD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACnD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,WAAW,EAAE;YACX,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACnD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,KAAK,EAAE;YACL,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC1D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,GAAG,EAAE;YACH,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC1D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,GAAG,EAAE;YACH,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACrD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC1D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtD,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACjD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACnD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;AACD,QAAA,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACjD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YACzC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACnD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,SAAA;KACF;AACH;SAEgB,oBAAoB,CAClC,KAA4B,EAC5B,MAAW,EACX,IAAuB,EAAA;AAEvB,IAAA,IAAI,KAAK,CAAC,SAAS,EAAE;QACnB,OAAO,KAAK,CAAC,SAAS;IACxB;AAEA,IAAA,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAC/C,IAAA,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ;IAEtC,IAAI,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/C,SAAS,GAAG,aAAa;IAC3B;IAEA,IAAI,SAAS,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/D,QAAA,OAAO,SAAS,CAAC,aAAa,CAAC;IACjC;IAEA,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC;AACpD;AAEM,SAAU,cAAc,CAAC,QAAgB,EAAA;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACpC;AAEM,SAAU,kBAAkB,CAAC,SAAiB,EAAA;IAClD,QAAQ,SAAS;AACf,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,SAAS;AAClB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,IAAI;AACb,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,WAAW;AACpB,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;AAEM,SAAU,gBAAgB,CAAc,SAAiB,EAAE,KAA4B,EAAA;IAC3F,QAAQ,SAAS;AACf,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,MAAM;AACX,QAAA,KAAK,UAAU;YACb,OAAO,CAAC,EAAE,CAAC;AACb,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC;AAC3C,QAAA,KAAK,SAAS;YACZ,OAAO,CAAC,KAAK,CAAC;AAChB,QAAA;AACE,YAAA,OAAO,EAAE;;AAEf;AAEM,SAAU,eAAe,CAAC,SAAiB,EAAA;IAC/C,QAAQ,SAAS;AACf,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,gCAAgC;AACzC,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,gHAAgH;AACzH,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,0BAA0B;AACnC,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;;MCrOa,gBAAgB,CAAA;IAC3B,SAAS,CAAC,MAAe,EAAE,MAA2B,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;AACtC,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IAChC;uGAJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCAY,uBAAuB,CAAA;AAClC,IAAA,SAAS,CAAC,KAAyB,EAAA;AACjC,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,yCAAyC;AAClD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC,OAAO,IAAI,EAAE;;IAEhC;uGAZW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,4BAA4B,CAAA;AACvC,IAAA,SAAS,CAAC,MAAe,EAAA;QACvB,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,aAAa;IAC3E;uGAHW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,wBAAwB,CAAA;AACnC,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AAC3B,QAAA,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,cAAc;IAC/D;uGAJW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,sBAAsB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCEY,wBAAwB,CAAA;AACnC,IAAA,SAAS,CAAC,MAAe,EAAE,MAA2B,EAAE,IAAuB,EAAA;AAC7E,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAClE,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC;QAC3D,OAAO,EAAE,EAAE,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrD;uGAVW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,sBAAsB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,oBAAoB,CAAA;AAC/B,IAAA,SAAS,CAAC,MAAe,EAAE,MAA2B,EAAE,IAAuB,EAAA;AAC7E,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;QACA,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IACzD;uGARW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,0BAA0B,CAAA;IACrC,SAAS,CAAC,MAAe,EAAE,MAA2B,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QACA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvE;uGARW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;MCCY,4BAA4B,CAAA;IACvC,SAAS,CAAC,MAAe,EAAE,MAA2B,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QACA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxE;uGARW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;ACCM,MAAM,cAAc,GAAG;IAC5B,gBAAgB;IAChB,wBAAwB;IACxB,oBAAoB;IACpB,0BAA0B;IAC1B,4BAA4B;IAC5B,uBAAuB;IACvB,wBAAwB;IACxB,4BAA4B;;;AC8HvB,MAAM,mBAAmB,GAAsB;AACpD,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,aAAa,EAAE,kBAAkB;AACjC,IAAA,cAAc,EAAE,mBAAmB;AACnC,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,cAAc,EAAE,YAAY;AAC5B,IAAA,SAAS,EAAE;AACT,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,cAAc;AACzB,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,UAAU,EAAE,gBAAgB;AAC7B,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,UAAU,EAAE,oBAAoB;AAChC,QAAA,UAAU,EAAE,sBAAsB;AAClC,QAAA,OAAO,EAAE,sBAAsB;AAChC,KAAA;;;ACnMI,MAAM,wBAAwB,GAAG,GAAG,CAAC,mCAAmC,EAAE;AAC/E,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAEM,MAAM,mBAAmB,GAAG,GAAG,CACpC,qGAAqG,EACrG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,MAAM;AACX,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGI,MAAM,yBAAyB,GAAG,GAAG,CAC1C,iGAAiG,EACjG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,cAAc;AACnB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGI,MAAM,oBAAoB,GAAG,GAAG,CAAC,+DAA+D,EAAE;AACvG,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAEM,MAAM,2BAA2B,GAAG,GAAG,CAC5C,+LAA+L,EAC/L;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,EAAE,EAAE,QAAQ;AACb,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGI,MAAM,sBAAsB,GAAG,GAAG,CAAC,yCAAyC,EAAE;AACnF,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,cAAc;AACnB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;;MCvBY,gBAAgB,CAAA;AACX,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAgB;AACzC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA0B;AAClD,IAAA,KAAK,GAAG,KAAK,CAAc,IAAI,iDAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAA6B,EAAE,iDAAC;AAC7C,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,IAAA,cAAc,GAAG,KAAK,CAAQ,YAAY,0DAAC;IAC3C,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAEhC,cAAc,GAAG,MAAM,EAAgB;IACvC,UAAU,GAAG,MAAM,EAAc;IACjC,aAAa,GAAG,MAAM,EAAc;IACpC,aAAa,GAAG,MAAM,EAAwD;AAE9E,IAAA,iBAAiB,GAAG,YAAY,CAAuB,WAAW,6DAAC;AAEhE,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,uDAAC;AACxB,IAAA,mBAAmB,GAAG,MAAM,CAAgB,IAAI,+DAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI,4DAAC;AAE9C,IAAA,oBAAoB,GAAG,SAAS,CAA+B,sBAAsB,gEAAC;IAE/F,gBAAgB,GAAA;QACxB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,oBAAoB,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;QACrD,CAAC,EAAE,EAAE,CAAC;IACR;AAEU,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QAC1C,UAAU,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA,cAAA,EAAiB,QAAQ,CAAA,CAAE,CAAqB;YACtF,KAAK,EAAE,KAAK,EAAE;QAChB,CAAC,EAAE,EAAE,CAAC;IACR;AAEmB,IAAA,IAAI,GAAG,QAAQ,CAAoB,MAAK;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;QAC3B,OAAO;AACL,YAAA,GAAG,mBAAmB;AACtB,YAAA,GAAG,MAAM;YACT,SAAS,EAAE,EAAE,GAAG,mBAAmB,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;YACpE,YAAY,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE;YAC7E,UAAU,EAAE,EAAE,GAAG,mBAAmB,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;SACxE;AACH,IAAA,CAAC,gDAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,qDAAC;AAExD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,IAAG;YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC5C,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC;AAC5D,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,4DAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;QACrD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;QAChC;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CACnC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChG;AACH,IAAA,CAAC,0DAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;AAE3C,QAAA,MAAM,WAAW,GAAG,CAAC,KAA4B,KAAI;YACnD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC5C,gBAAA,OAAO,KAAK;YACd;YACA,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE;AAC9D,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrG,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;QAED,MAAM,MAAM,GAAyD,EAAE;AAEvE,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAC5B,YAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,gBAAA,MAAM,SAAS,GAAI,IAA2B,CAAC,KAAK,IAAI,EAAE;gBAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3D,gBAAA,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;gBAChE;YACF;iBAAO;gBACL,MAAM,KAAK,GAAG,IAA6B;AAC3C,gBAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;AACnC,oBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;oBAC7D,IAAI,aAAa,EAAE;AACjB,wBAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClC;yBAAO;AACL,wBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD;gBACF;YACF;QACF;AAEA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,yDAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,sDAAC;IAEiB,WAAW,GAAG,QAAQ,CAAC,MACxC,aAAa,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC9E;IAES,cAAc,GAAA;QACtB,OAAO,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACpD;IAEU,eAAe,GAAA;QACvB,OAAO,yBAAyB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1D;IAEU,eAAe,GAAA;QACvB,OAAO,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACrD;IAEU,sBAAsB,GAAA;QAC9B,OAAO,2BAA2B,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5D;IAEU,iBAAiB,GAAA;QACzB,OAAO,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACvD;AAEU,IAAA,iBAAiB,CAAC,MAAkB,EAAA;QAC5C,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC;AAEU,IAAA,qBAAqB,CAAC,MAAkB,EAAA;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAChE;AAEU,IAAA,gBAAgB,CAAC,MAAkB,EAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACpD,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC;QAC3D,OAAO,EAAE,EAAE,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrD;AAEU,IAAA,kBAAkB,CAAC,MAAkB,EAAA;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QACA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvE;AAEU,IAAA,oBAAoB,CAAC,MAAkB,EAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QACA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxE;AAEU,IAAA,aAAa,CAAC,MAAkB,EAAA;QACxC,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW;IACvE;AAEU,IAAA,iBAAiB,CAAC,MAAkB,EAAA;AAC5C,QAAA,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS;IACtC;AAEU,IAAA,eAAe,CAAC,KAA4B,EAAA;AACpD,QAAA,OAAO,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3D;AAEU,IAAA,aAAa,CAAC,KAA4B,EAAA;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACd;QACF;AAEA,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC3F,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,KAAK,CAAC;AAErE,QAAA,MAAM,SAAS,GAAG,YAAY,CAAI,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,aAAoB,CAAC;QACnF,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B;IAEU,oBAAoB,CAAC,MAAkB,EAAE,QAAgB,EAAA;AACjE,QAAA,MAAM,OAAO,GAAwB,EAAE,QAAQ,EAAE;QACjD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,WAAW,EAAE;AACpD,YAAA,OAAO,CAAC,MAAM,GAAG,EAAS;QAC5B;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7C,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;AACtB,gBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE;YAC7B;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC;IAEU,mBAAmB,CAAC,MAAkB,EAAE,MAAwB,EAAA;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,MAAM,aAAa,GAAG,KAAK,EAAE,IAAI,KAAK,aAAa;AACnD,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAEvD,QAAA,IAAI,SAAc;QAClB,IAAI,aAAa,EAAE;AACjB,YAAA,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;QAC3G;aAAO;AACL,YAAA,SAAS,GAAG,UAAU,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9C;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7C,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;gBACtB,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;YACpC;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;IACrE;AAEU,IAAA,YAAY,CAAC,MAAkB,EAAA;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEU,IAAA,aAAa,CAAC,MAAkB,EAAE,KAAY,EAAE,KAAK,GAAG,CAAC,EAAA;AACjE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAA,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAU;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7C,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;gBACtB,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;YACpC;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;IACrE;IAEU,eAAe,CAAC,MAAkB,EAAE,OAAgB,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,CAAC,OAAuB,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7C,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;gBACtB,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;YACpC;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;IACrE;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;IACnC;IAEU,eAAe,CAAC,KAAa,EAAE,MAAkB,EAAA;QACzD,OAAO,MAAM,CAAC,EAAE;IAClB;IAEU,kBAAkB,CAAC,KAAa,EAAE,MAAwB,EAAA;QAClE,OAAO,MAAM,CAAC,KAAK;IACrB;IAEU,eAAe,CAAC,KAAa,EAAE,KAA4B,EAAA;AACnE,QAAA,OAAO,KAAK,CAAC,GAAG,IAAI,CAAA,MAAA,EAAS,KAAK,EAAE;IACtC;uGAjTW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChE7B,+hiBA8YA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzVY,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWtF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAC,EAAA,UAAA,EACzG,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,WAAW,EAAE,UAAU;AACxB,qBAAA,EAAA,QAAA,EAAA,+hiBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;AAkBsE,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,WAAW,8EAOA,sBAAsB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEvF1G;;AAEG;;;;"}
|